Στα πληροφοριακά συστήματα υπάρχει μια πολύ βασική και βολική υπόθεση: Αν κάτι είναι λάθος, το διορθώνουμε. Στα Capital Markets τα πράγματα δεν είναι πάντα τόσο απλά. Ας υποθέσουμε ότι μια εισηγμένη εταιρεία ανακοινώνει μια εταιρική πράξη. Ένα μέρισμα, μια επιστροφή κεφαλαίου, μια αύξηση μετοχικού κεφαλαίου ή μια διανομή νέων τίτλων.
Η διαδικασία ξεκινά.
Οι δικαιούχοι προσδιορίζονται. Τα ποσά υπολογίζονται. Δημιουργούνται αρχεία. Στέλνονται πληροφορίες σε άλλα συστήματα. Ενημερώνονται θεματοφύλακες, τράπεζες, χρηματιστηριακές εταιρείες ή άλλοι συμμετέχοντες. Και τότε ανακαλύπτεται ότι κάτι ήταν λάθος.
Τι κάνεις;
Η πρώτη σκέψη ενός developer μπορεί να είναι: UPDATE. Αλλά αυτή ίσως είναι η χειρότερη δυνατή απάντηση. Γιατί η Corporate Action δεν είναι πλέον απλώς μία εγγραφή σε μια βάση δεδομένων. Έχει ήδη παράγει συνέπειες. Και αυτές οι συνέπειες μπορεί να έχουν ήδη μεταφερθεί έξω από το σύστημα.
Ας πάρουμε ένα απλό παράδειγμα. Μια εταιρεία πρόκειται να διανείμει €0,50 ανά μετοχή. Υπάρχουν 100.000.000 επιλέξιμες μετοχές. Το σύστημα υπολογίζει: €50.000.000 συνολική διανομή. Λίγο αργότερα διαπιστώνεται ότι το σωστό ποσό είναι €0,48. Σε ένα απλό πληροφοριακό σύστημα θα άλλαζες το 0,50 σε 0,48 και θα εκτελούσες ξανά τον υπολογισμό.
Όμως τι γίνεται αν: οι δικαιούχοι έχουν ήδη προσδιοριστεί; τα entitlement records έχουν δημιουργηθεί; έχουν παραχθεί payment instructions; κάποια αρχεία έχουν ήδη αποσταλεί; κάποιος downstream participant έχει ήδη επεξεργαστεί τα δεδομένα; Εδώ εμφανίζεται μια από τις βασικές αρχές των mission-critical financial systems: Δεν αρκεί να γνωρίζεις ποια είναι η σωστή κατάσταση τώρα. Πρέπει να γνωρίζεις και πώς έφτασες σε αυτήν. Η διόρθωση λοιπόν δεν είναι πάντα αντικατάσταση. Μπορεί να είναι reversal και rebooking. Μπορεί να απαιτεί ακύρωση προηγούμενων αποτελεσμάτων και δημιουργία νέων. Μπορεί να απαιτεί versioning της Corporate Action. Και, κυρίως, πρέπει να αφήνει πίσω της ένα πλήρες audit trail. Ποια ήταν η αρχική οδηγία; Πότε άλλαξε; Ποιος την άλλαξε; Ποιοι υπολογισμοί είχαν ήδη πραγματοποιηθεί; Ποια αποτελέσματα ακυρώθηκαν; Ποια δημιουργήθηκαν ξανά; Αυτές δεν είναι λεπτομέρειες για τον auditor. Είναι μέρος του business model.
Υπάρχει όμως και ένα ακόμη δυσκολότερο πρόβλημα. Μέχρι ποιο σημείο επιτρέπεται μια Corporate Action να αλλάξει; Πριν τον υπολογισμό των δικαιωμάτων; Μετά τον υπολογισμό αλλά πριν την αποστολή των payment instructions; Μετά την αποστολή; Μετά την πληρωμή; Κάθε στάδιο αλλάζει δραματικά το είδος της διόρθωσης που μπορεί να γίνει. Γι' αυτό ένα σοβαρό Corporate Actions system δεν χρειάζεται μόνο statuses. Χρειάζεται state transitions με επιχειρηματικούς κανόνες. Η μετάβαση από: Draft → Announced → Calculated → Confirmed → Executed δεν πρέπει να είναι απλώς αλλαγή μιας τιμής σε ένα πεδίο. Κάθε μετάβαση σημαίνει ότι ορισμένες ενέργειες πλέον επιτρέπονται και άλλες όχι. Και κάποιες φορές δεν υπάρχει δρόμος προς τα πίσω. Υπάρχει μόνο ένας νέος δρόμος προς τα εμπρός που διορθώνει αυτό που συνέβη.
Μετά από χρόνια ανάπτυξης enterprise εφαρμογών έχω καταλήξει σε κάτι που θεωρώ ιδιαίτερα σημαντικό: Τα δύσκολα συστήματα δεν είναι δύσκολα επειδή έχουν πολλά δεδομένα. Είναι δύσκολα επειδή ο πραγματικός κόσμος δεν ακολουθεί πάντα την ιδανική ροή που σχεδιάσαμε στο πρώτο διάγραμμα. Το happy path είναι εύκολο.
Η πραγματική ποιότητα ενός financial system φαίνεται όταν κάτι αλλάξει: μετά το Record Date, μετά τον υπολογισμό, μετά την έγκριση, ή ακόμη χειρότερα, μετά την εκτέλεση. Εκεί φαίνεται αν έχουμε κατασκευάσει απλώς μια εφαρμογή. Ή αν έχουμε κατασκευάσει πραγματική χρηματοοικονομική υποδομή.

Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου