Το πιο επικίνδυνο σφάλμα χρονισμού σε ένα backtest μπορεί να περάσει απαρατήρητο ακόμα κι από έναν τέλειο έλεγχο χρονοσημάνσεων. Δύο συμβάντα μπορεί να γράφουν και τα δύο 10:00:00.000, αλλά να συνέβησαν με σειρά διαφορετική από εκείνη που υπέθεσε ο προσομοιωτής σας.
Αυτό έχει σημασία κάθε φορά που μια στρατηγική αντιδρά σε κάτι πέρα από ολοκληρωμένες μπάρες: μια ενημέρωση προσφοράς, μια συναλλαγή, μια ειδοποίηση χρηματοδότησης, μια αλλαγή κατάστασης του χρηματιστηρίου ή μια επιβεβαίωση της δικής της εντολής. Η χρονοσήμανση δείχνει πότε επισημάνθηκε ένα συμβάν. Δεν δείχνει απαραίτητα πότε μπορούσε να ενεργήσει η στρατηγική σας βάσει αυτού.
Τι αλλάζει η σειρά των συμβάντων;
Φανταστείτε μια στρατηγική που αγοράζει όταν η καλύτερη τιμή πώλησης πέφτει κάτω από $100.00. Στο ίδιο χιλιοστό του δευτερολέπτου, η ροή δεδομένων καταγράφει ενημέρωση της τιμής πώλησης στα $99.99 και μια συναλλαγή στα $99.99. Αν το backtest επεξεργαστεί πρώτα τη συναλλαγή και μετά την προσφορά, η στρατηγική βλέπει τη νέα τιμή πώλησης και υποβάλλει εντολή. Αν επεξεργαστεί πρώτα την προσφορά, αυτό μπορεί επίσης να είναι σωστό, εφόσον το συμβάν ήταν πράγματι διαθέσιμο. Αν όμως η συναλλαγή εξάντλησε τη διαθέσιμη ρευστότητα πριν φτάσει η εντολή, η εκτέλεση στα $99.99 είναι φανταστική.
Η ταξινόμηση των γραμμών μόνο βάσει χρονοσήμανσης αφήνει τον προσομοιωτή να επιλέξει σειρά για τα συμβάντα με ίδια ώρα. Η σειρά στο αρχείο, η σειρά των συμβόλων ή το πλάνο εκτέλεσης ενός ερωτήματος στη βάση δεδομένων μπορεί να γίνει κατά λάθος κανόνας εκτέλεσης. Η καμπύλη κεφαλαίου μπορεί να αλλάξει, παρότι τα αρχικά δεδομένα έμειναν ίδια.
Να ένας καλός τρόπος να δείτε πόσο αυθαίρετο μπορεί να γίνει αυτό: ταξινομήστε τα συμβάντα με ίδια ώρα βάσει ονόματος συμβόλου αντί για τη σειρά άφιξής τους. Μια στρατηγική πολλών περιουσιακών στοιχείων μπορεί τότε να συμπεριφερθεί διαφορετικά απλώς και μόνο επειδή ένα ticker ταξινομείται πριν από κάποιο άλλο.
Ποιες ώρες πρέπει να παρακολουθεί ένα backtest;
Τα δεδομένα αγοράς και η διαχείριση εντολών συχνά περιλαμβάνουν αρκετές διαφορετικές χρονικές στιγμές. Διατηρήστε τα πεδία που παρέχει η πηγή σας και ορίστε με ακρίβεια τι σημαίνουν. Σε πολλές ροές δεδομένων, είναι χρήσιμες τόσο η χρονοσήμανση του χρηματιστηρίου όσο και η τοπική χρονοσήμανση λήψης· καμία τους δεν αποτελεί καθολική αλήθεια για το τι είδαν όλοι οι συμμετέχοντες.
| Ώρα | Τι καταγράφει | Τι δεν μπορεί να αποδείξει από μόνη της |
|---|---|---|
| Ώρα συμβάντος στο χρηματιστήριο | Πότε αναφέρει ο χώρος συναλλαγών ότι συνέβη ένα συμβάν | Με ποια σειρά το παρατήρησε μια άλλη ροή δεδομένων ή η διεργασία σας |
| Ώρα λήψης | Πότε έλαβε το μήνυμα ο συλλέκτης σας | Πότε ολοκλήρωσε η στρατηγική σας την επεξεργασία του |
| Ώρα απόφασης | Πότε αξιολόγησε ο κώδικάς σας το σήμα | Ότι η αναφερόμενη τιμή παρέμεινε διαθέσιμη |
| Ώρα άφιξης εντολής | Πότε μπορούσε ο χώρος συναλλαγών να ενεργήσει βάσει της εντολής | Μια εκτέλεση, εκτός αν οι κανόνες αντιστοίχισης και η ρευστότητα την υποστηρίζουν |
Για ιστορικά δεδομένα χωρίς ώρες λήψης, δηλώστε τις παραδοχές σας. Ένα backtest μπορεί να επεξεργάζεται διαδοχικά τα συμβάντα του χρηματιστηρίου και να επιβάλλει σταθερή καθυστέρηση 5 ms από την απόφαση μέχρι την άφιξη της εντολής. Αυτό είναι μοντέλο, όχι ανακτημένο ιστορικό. Αν δεν έχετε αριθμούς ακολουθίας για συμβάντα με την ίδια χρονοσήμανση του χρηματιστηρίου, και ο κανόνας επίλυσης ισοπαλιών είναι επίσης παραδοχή.
Πώς μοντελοποιώ συμβάντα με ίδια ώρα;
Πρώτα, διατηρήστε τους αριθμούς ακολουθίας της πηγής, όπου υπάρχουν. Ένας αριθμός ακολουθίας ορίζει ισχυρότερα τη σειρά μέσα στη ροή δεδομένων απ’ ό,τι μια χρονοσήμανση, αν και οι χώροι αρίθμησης μπορεί να είναι ξεχωριστοί για διαφορετικά κανάλια ή προϊόντα.
Στη συνέχεια, ορίστε ρητά τον κανόνα επεξεργασίας του προσομοιωτή. Για κάθε συμβάν, αποφασίστε αν μπορεί να ενημερώσει τις πληροφορίες που έχει η στρατηγική, να αλλάξει τη διαθέσιμη ρευστότητα, να ενεργοποιήσει μια εντολή ή να επιβεβαιώσει μια εντολή. Πρόκειται για διαφορετικές ενέργειες· όταν τις συμπτύσσουμε όλες σε «επεξεργασία γραμμής», περνούν λαθραία οι αδύνατες εκτελέσεις.
- Εφαρμόστε μόνο τις πληροφορίες αγοράς που έχουν φτάσει έως τη στιγμή λήψης της απόφασης από τη στρατηγική.
- Δημιουργήστε την εντολή και μετά προωθήστε την έως την εκτιμώμενη ώρα άφιξής της στον χώρο συναλλαγών.
- Επιτρέψτε την εκτέλεση μόνο έναντι επιλέξιμης ρευστότητας μετά την άφιξη, σύμφωνα με τις παραδοχές εκτέλεσης για αυτόν τον τύπο εντολής.
- Καταγράψτε τις εισόδους, τη σειρά των συμβάντων και την καθυστέρηση που χρησιμοποιήθηκαν για κάθε προσομοιωμένη εκτέλεση.
Για μια στρατηγική που βασίζεται σε μπάρες, αυτό μπορεί να είναι περισσότερη πολυπλοκότητα απ’ όση απαιτεί το ερώτημα. Αν το σήμα χρησιμοποιεί ολοκληρωμένες μπάρες 1-minute και οι εντολές εκτελούνται στο άνοιγμα της επόμενης μπάρας με συντηρητικό μοντέλο κόστους, η σειρά συμβάντων σε επίπεδο χιλιοστού του δευτερολέπτου πιθανότατα δεν θα αλλάξει το ερευνητικό συμπέρασμα. Στόχος είναι η λεπτομέρεια χρονισμού να ταιριάζει με τον ισχυρισμό του backtest.
Μπορώ να εμπιστευτώ ένα backtest χωρίς δεδομένα ώρας άφιξης;
Μπορείτε και πάλι να το χρησιμοποιήσετε, αρκεί να είναι σαφές το όριο των δεδομένων. Αν η στρατηγική συναλλάσσεται αργά και έχει ευρέα όρια κινδύνου, μερικά χιλιοστά του δευτερολέπτου μπορεί να μην έχουν σημασία. Αν αντιδρά σε φευγαλέες προσφορές, ανταγωνίζεται για θέση στην ουρά ή εξαρτάται από ένα σήμα προπορείας-υστέρησης μεταξύ χρηματιστηρίων, η απουσία ωρών άφιξης μπορεί να επηρεάζει καθοριστικά το αποτέλεσμα.
Οι επικριτές έχουν δίκιο ότι ο ακριβής χρονισμός συμβάντων μπορεί να δημιουργήσει ψευδή ακρίβεια. Οι ιστορικές ροές δεδομένων είναι ελλιπείς, τα ρολόγια αποκλίνουν και οι χρονοσημάνσεις των χώρων συναλλαγών δεν αποκαλύπτουν κάθε δικτυακό άλμα. Ένας προσομοιωτής με πεδία νανοδευτερολέπτων μπορεί και πάλι να βασίζεται σε χονδροειδή παραδοχή εκτέλεσης.
Γι’ αυτό, ελέγξτε πόσο ευαίσθητο είναι το αποτέλεσμα αντί να ισχυρίζεστε ότι είστε βέβαιοι: επαναλάβετε την προσομοίωση με εύλογους κανόνες επίλυσης ισοπαλιών για συμβάντα και καθυστερήσεις εντολών και, στη συνέχεια, συγκρίνετε τον αριθμό συναλλαγών, την τιμή εκτέλεσης και ποια σήματα εξακολουθούν να αποδίδουν. Αν το αποτέλεσμα εξαρτάται από μια σειρά που τα δεδομένα δεν μπορούν να τεκμηριώσουν, αυτή η εξάρτηση πρέπει να αναφερθεί στην ερευνητική έκθεση. Ένα backtest μπορεί να είναι χρήσιμο ακόμα και με ατελές ρολόι. Αρκεί να αναγνωρίζει ποια ώρα γνωρίζει πραγματικά.
← Όλα τα άρθρα


