28 Οκτώβριος 2026 · options

Το σήμα ήταν σωστό. Το backtest options αγόρασε λάθος λήξη.

Το σήμα ήταν σωστό. Το backtest options αγόρασε λάθος λήξη.

Στις 10:07 μια Τρίτη, ο ερευνητικός μας agent εντόπισε μια βραχυπρόθεσμη ανοδική ευκαιρία σε ένα index ETF. Το υποκείμενο σήμα ήταν συνηθισμένο: η τιμή είχε ανακτήσει τον μέσο όρο 20 bars, η πραγματοποιηθείσα μεταβλητότητα υποχωρούσε και για την επόμενη συνεδρίαση ήταν προγραμματισμένη μια μακροοικονομική ανακοίνωση. Η προτεινόμενη συναλλαγή ήταν ένα call spread με περίπου δύο εβδομάδες μέχρι τη λήξη.

Το backtest την αξιολόγησε θετικά. Η paper στρατηγική δεν την εκτέλεσε. Όταν συγκρίναμε τις εντολές, οι χρονοσημάνσεις των σημάτων ταίριαζαν και οι τιμές του υποκείμενου απείχαν μόλις λίγα σεντς. Τα συμβόλαια ήταν διαφορετικά: το backtest είχε αγοράσει τη λήξη της Παρασκευής που φαινόταν καλύτερη στην ιστορική αλυσίδα· η paper διαδικασία επέλεξε την επόμενη εισηγμένη λήξη, μία εβδομάδα αργότερα.

Η απόκλιση προερχόταν από ένα calendar join. Είχαμε αντιμετωπίσει τις «ημέρες μέχρι τη λήξη» ως ιδιότητα μιας ημερομηνίας και κατόπιν επιλέγαμε το συμβόλαιο του οποίου η λήξη πλησίαζε περισσότερο τον στόχο. Στα ιστορικά δεδομένα, το ημερολόγιο λήξεων περιλάμβανε μια εβδομαδιαία λήξη που είχε προστεθεί μετά την ημερομηνία που εξετάζαμε. Το backtest είχε χρησιμοποιήσει ένα συμβόλαιο από το μέλλον, με τρόπο που έμοιαζε με αθώα διευκόλυνση.

Αρχικά υποψιαστήκαμε πρόβλημα ζώνης ώρας. Οι ημερομηνίες λήξης των options είναι ιδιαίτερα επιρρεπείς σε τέτοια προβλήματα: η συνεδρίαση της αγοράς τελειώνει στη Νέα Υόρκη, οι χρονοσημάνσεις του χρηματιστηρίου μπορεί να αποθηκεύονται σε UTC και μια ημερομηνία τα μεσάνυχτα μπορεί να μετατοπιστεί αν ένα pipeline τη μετατρέψει απρόσεκτα. Το ελέγξαμε. Οι χρονοσημάνσεις ήταν σωστές. Απλώς, εκείνη την Τρίτη το συμβόλαιο δεν υπήρχε στο ιστορικό σύνολο διαθέσιμων συμβολαίων.

Αυτό ήταν το πρώτο μάθημα: μια ιστορική αλυσίδα options χρειάζεται ένα σύνολο εισηγμένων συμβολαίων ορισμένο point-in-time. Η ημερομηνία λήξης ενός συμβολαίου σού λέει πότε λήγει. Δεν σου λέει πότε εισήχθη, πότε έγινε διαπραγματεύσιμο ή αν το σύστημά σου θα μπορούσε να το επιλέξει εκείνη τη στιγμή.

Ξαναφτιάξαμε το βήμα επιλογής με βάση τις πληροφορίες που ήταν διαθέσιμες τη χρονική στιγμή της απόφασης. Για κάθε υποψήφιο συμβόλαιο απαιτήσαμε χρονοσήμανση εισαγωγής όχι μεταγενέστερη της απόφασης, έγκυρο quote όχι παλαιότερο από το όριο φρεσκάδας μας και συνεδρίαση αγοράς κατά την οποία η στρατηγική μπορούσε να υποβάλει εντολή. Καταγράψαμε επίσης το σύνολο των υποψηφίων πριν από την κατάταξή τους. Αυτή η τελευταία αλλαγή είχε σημασία, επειδή το παλιό backtest κρατούσε μόνο τον νικητή· δεν μπορούσαμε να ξέρουμε αν είχε συγκρίνει πέντε επιλέξιμα συμβόλαια ή αν είχε επιλέξει σιωπηρά από ένα ημερολόγιο που δεν είχε ακόμη δημιουργηθεί.

10:07ώρα απόφασης σήματος
1 εβδομάδαασυμφωνία λήξης
0επιλέξιμες ιστορικές εισαγωγές για το επιλεγμένο συμβόλαιο

Έπειτα εξετάσαμε το quote που χρησιμοποιήθηκε για την τιμολόγηση του spread. Το backtest είχε πάρει ανεξάρτητα το πιο πρόσφατο quote για κάθε σκέλος. Το ask του call ήταν από τις 10:06:58· το bid του short call ήταν από τις 10:04:11. Και τα δύο θεωρούνταν πρόσφατα σύμφωνα με την ευρεία πολιτική δεδομένων, όμως η αγορά είχε κινηθεί στο μεταξύ. Ένα midpoint spread υπολογισμένο από ασύγχρονα σκέλη μπορεί να περιγράφει μια αγορά που δεν υπήρξε ποτέ.

Αλλάξαμε τον κανόνα των quotes ώστε οι χρονοσημάνσεις και των δύο σκελών να απέχουν το πολύ δύο δευτερόλεπτα και να απορρίπτονται οι σταυρωμένες αγορές ή όσες είχαν μηδενικό μέγεθος. Έτσι μειώθηκε ο αριθμός των αξιοποιήσιμων ιστορικών παρατηρήσεων. Τα quotes που απέμειναν, όμως, ήταν πιο αξιόπιστα. Όταν δεν υπήρχε συγχρονισμένο quote, χαρακτηρίζαμε τον υποψήφιο μη διαθέσιμο αντί να καλύπτουμε το κενό με παλιά τιμή.

Μετά ήρθε ο κανόνας κατάταξης. Ο agent είχε επιλέξει τη λήξη με το χαμηλότερο quoted κόστος spread. Αυτό ακούγεται λογικό, μέχρι το spread να έχει πλάτος ενός συμβολαίου και το quote να είναι παλιό. Ορίσαμε ρητά τον στόχο: μεγιστοποίηση της αναμενόμενης απόδοσης ανά μονάδα καθορισμένου κινδύνου, μεταξύ συμβολαίων που περνούν τους ελάχιστους ελέγχους μεγέθους quote, φρεσκάδας και εισαγωγής. Σε αυτό το παράδειγμα, η κοντινότερη επιλέξιμη λήξη είχε quoted πλάτος $0.42 στα δύο σκέλη, ενώ η μεταγενέστερη λήξη είχε πλάτος $0.31. Η επιλογή που φαινόταν φθηνότερη είχε επίσης μόλις ένα συμβόλαιο διαθέσιμο στο short σκέλος.

ΥποψήφιοΉταν διαθέσιμη τότε η λήξη;Ηλικία quoteΜέγεθος στο short σκέλοςΑπόφαση
Εβδομαδιαία λήξη ΠαρασκευήςΌχιΔεν εφαρμόζεταιΔεν εφαρμόζεταιΑποκλεισμός
Επόμενη ΠαρασκευήΝαι1.4 δευτερόλεπτα18 συμβόλαιαΕπιλέξιμο
Τρίτη ΠαρασκευήΝαι9.8 δευτερόλεπτα1 συμβόλαιοΑποκλεισμός ως παλιό και ρηχό

Αναπαράγαμε το περιστατικό με αυτούς τους κανόνες. Το backtest επέλεξε πλέον την ίδια λήξη με την paper διαδικασία και κατέγραψε τους λόγους απόρριψης των άλλων συμβολαίων. Η τιμή εισόδου του spread ήταν χειρότερη από την αρχική ιστορική εκτέλεση κατά $0.11. Αυτό δεν σήμαινε ότι η στρατηγική δεν είχε αξία· σήμαινε ότι ο παλιός αριθμός απόδοσης περιλάμβανε μια επιλογή συναλλαγής που η ζωντανή διαδικασία δεν μπορούσε να αναπαραγάγει.

Μια μικρή ενόχληση: οι μορφές συμβόλων των χρηματιστηρίων κάνουν τα σφάλματα λήξης να μοιάζουν με προβλήματα ποιότητας δεδομένων. Βρήκαμε ότι ο εβδομαδιαίος κωδικός ενός προμηθευτή διέφερε από τον μηνιαίο κατά έναν χαρακτήρα. Εξακολουθώ να κρατώ το ακατέργαστο σύμβολο δίπλα στο κανονικοποιημένο κλειδί συμβολαίου στα audit logs. Δεν είναι κομψό, αλλά μας έχει γλιτώσει από το να εμπιστευτούμε υπερβολικά γρήγορα ένα τακτοποιημένο join.

Αν φτιάχνετε backtest options, αποθηκεύστε ολόκληρο το σύνολο υποψηφίων σε κάθε απόφαση, μαζί με την κατάσταση εισαγωγής κάθε συμβολαίου, τις χρονοσημάνσεις των quotes, τα μεγέθη και τον λόγο απόρριψης. Έπειτα, ορίστε την επιλογή συμβολαίου ως ντετερμινιστική συνάρτηση αυτού του στιγμιότυπου. Η επιλογή λήξης είναι μέρος της στρατηγικής. Αν το backtest βλέπει ένα συμβόλαιο που δεν μπορούσε να δει η paper διαδικασία, η σύγκριση των σημάτων ξεκινά αφού έχει ήδη αλλάξει η απάντηση.

backtesting optionsεπιλογή λήξηςδεδομένα point-in-timeμοντελοποίηση εκτέλεσης
ΚοινοποίησηXLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← Όλα τα άρθρα