Στις εταιρικές πράξεις, υπάρχουν ημερομηνίες που φαίνονται απλές μέχρι τη στιγμή που πρέπει να τις μετατρέψεις σε λογική συστήματος. Το Record Date είναι μία από αυτές.
Σε ένα οικονομικό ημερολόγιο εμφανίζεται ως μία ακόμη ημερομηνία: ex-date, record date, payment date. Στην πραγματικότητα όμως το Record Date δεν είναι απλώς ένα σημείο στο ημερολόγιο. Είναι η στιγμή κατά την οποία το σύστημα πρέπει να μπορεί να απαντήσει με ακρίβεια σε μία κρίσιμη ερώτηση: ποιοι είναι οι δικαιούχοι;
Αυτό ακούγεται εύκολο. Δεν είναι.
Ας υποθέσουμε ότι μια εισηγμένη εταιρεία διανέμει μέρισμα. Την ημέρα του Record Date πρέπει να προσδιοριστεί ποιοι μέτοχοι δικαιούνται το ποσό που αντιστοιχεί στη συμμετοχή τους. Για να γίνει αυτό σωστά, δεν αρκεί να έχουμε μια λίστα με τα σημερινά υπόλοιπα. Πρέπει να γνωρίζουμε ποια ήταν η πραγματική κατάσταση της μετοχικής βάσης στη συγκεκριμένη χρονική στιγμή, με βάση τους κανόνες της αγοράς και τα δεδομένα που έχουν οριστικοποιηθεί.
Εδώ ακριβώς αρχίζει η διαφορά ανάμεσα σε μια απλή εφαρμογή και σε ένα σύστημα κεφαλαιαγοράς.
Ένα σωστά σχεδιασμένο shareholder system δεν πρέπει να γνωρίζει μόνο «ποιος έχει πόσες μετοχές». Πρέπει να γνωρίζει πότε αποκτήθηκε ή χάθηκε ένα δικαίωμα, ποια κίνηση είχε ήδη καταστεί αποτελεσματική, ποια βρισκόταν ακόμη σε εκκρεμότητα, ποιο υπόλοιπο θεωρείται έγκυρο για τη συγκεκριμένη εταιρική πράξη και ποια έκδοση της πληροφορίας ήταν γνωστή τη δεδομένη στιγμή.
Με άλλα λόγια, το Record Date μετατρέπει τον χρόνο σε επιχειρισιακό κανόνα.
Και αυτό έχει αρχιτεκτονικές συνέπειες. Αν ένα σύστημα κρατά μόνο την τρέχουσα κατάσταση και ενημερώνει συνεχώς τις εγγραφές του, χάνει ουσιαστικά τη δυνατότητα να ανακατασκευάσει με βεβαιότητα το παρελθόν. Αν όμως το παρελθόν καθορίζει οικονομικά δικαιώματα, τότε η ιστορικότητα δεν είναι “nice to have”. Είναι μέρος της ορθότητας του συστήματος.
Το ίδιο ισχύει και για τις διορθώσεις. Τι γίνεται αν μετά το Record Date εντοπιστεί λάθος σε μια θέση; Αλλάζουμε απλώς το σημερινό υπόλοιπο; Δημιουργούμε διορθωτική κίνηση; Επανυπολογίζουμε τα entitlements; Ποια στοιχεία πρέπει να παραμείνουν αμετάβλητα για λόγους audit; Ποιος εγκρίνει την αλλαγή;
Σε ένα απλό πληροφοριακό σύστημα, μια διόρθωση δεδομένων μπορεί να είναι ένα UPDATE στη βάση. Σε ένα σύστημα που διαχειρίζεται δικαιώματα μετόχων, το ίδιο UPDATE μπορεί να αλλάξει ποιος δικαιούται χρήματα και αξίες.
Γι’ αυτό θεωρώ ότι η έννοια του Record Date είναι ένα πολύ καλό παράδειγμα του πόσο παραπλανητική μπορεί να είναι η φαινομενική απλότητα στο enterprise software.
Ο χρήστης βλέπει μια ημερομηνία.
Ο analyst βλέπει έναν επιχειρηματικό κανόνα.
Ο developer βλέπει ένα πεδίο.
Ο architect όμως πρέπει να βλέπει μια χρονική τομή της πραγματικότητας που πρέπει να μπορεί να αναπαραχθεί, να αποδειχθεί και να ελεγχθεί.
Και ίσως αυτό είναι ένα από τα σημαντικότερα μαθήματα που μου έχουν δώσει τα συστήματα κεφαλαιαγοράς όλα αυτά τα χρόνια: στα mission-critical συστήματα, ο χρόνος δεν είναι metadata. Είναι δεδομένο. Είναι κανόνας. Και μερικές φορές είναι το ίδιο το δικαίωμα.
