Versione del 24 novembre 2002
autore: Massimo Coletti
copyright Massimo Coletti 2002
Sperimento il modello nella realizzazione di una routine per il calcolo della disponibilità su un conto Cliente per un'operazione di Borsa.
Si tratta di un calcolo complesso, se il requisito posto è di una discreta affidabilità nell'uso real-time a mercato aperto, ed a fronte di tipologie diverse di strumenti finanziari.
Iniziamo a rappresentare le "interfacce esterne" del sistema che vogliamo realizzare:

Il front-end del nostro sistema di negoziazione inoltrerà la richiesta, ed iniziamo a definirne il parametri:
La risposta che ci attendiamo è solo un si/no, eventualmente con una motivazione per il no.
Come viene determinata la capienza?
Costruiremo tale algoritmo per gradi, in modo da verificare anche l'effettiva
capacità del modello a subire modifiche anche profonde.
Nel caso di acquisto di un titolo "semplice" (coma un'azione o un bond), si deve semplicemente controllare se la liquidità alla data di regolamento dell'operazione è sufficente a coprire il controvalore presunto dell'ordine.
Il narrative del processo può essere il seguente:
- l'interfaccia emette la richiesta;
- il componente TipoTitolo verifica se il titolo è trattabile nel sistema, e determina i giorni per il regolamento. Nel caso di Bond determina anche il rateo;
- il componente ControlloDisponibilitaLiquida ricerca sul c/c la disponibilità liquida alla data di regolamento e successive. Se tale capienza fosse già negativa, o il conto inesistente, ritorna subito l'errore;
- il componente PrezzoMercato individua un prezzo per l'operazione: se c'è un prezzo limite sull'ordine usa questo, altrimenti ricerca l'ultimo prezzo sul mercato, correggendolo con eventuali fattori prudenziali;
- il componente CommissioniSpese aggiunge al controvalore l'importo delle commissioni e spese da addebitare al Cliente;
- il componente ControlloLimiteConto ha ora tutti gli elementi per verificare se l'operazione è ammissibile.
Ora, dato che stiamo "iniziando" a disegnare l'applicazione, dobbiamo quindi disegnare l'infrastruttura di comunicazione fra i componenti: per ora stiamo in fase prototipale, quindi posso benissimo connettere i componenti mediante semplici chiamate fra oggetti java. Per rappresentare anche l'intrinseca asincronicità del modello, faremo in modo che ogni componente giri in un thread separato, in un altro thread opera il controller, in un altro il router.