Ένα backtest που αναπαράγεται τέλεια μπορεί να είναι λιγότερο αξιόπιστο από ένα που παρουσιάζει μικρές διακυμάνσεις. Η επαναληψιμότητα αποδεικνύει ότι μπορείτε να πάρετε την ίδια απάντηση δύο φορές· δεν λέει τίποτα για το αν η απάντηση εξαρτάται από ένα αυθαίρετο στιγμιότυπο δεδομένων, μια ιδιομορφία βιβλιοθήκης ή μια κρυφή προεπιλογή.
Αυτό ακούγεται σαν επιχείρημα κατά της αναπαραγωγιμότητας, αλλά δεν είναι. Παγώστε την εκτέλεση ώστε να μπορείτε να την εξηγήσετε. Έπειτα μεταβάλετε σκόπιμα τις παραδοχές που δεν θα έπρεπε να καθορίζουν το αποτέλεσμα. Το πρώτο βήμα κάνει το αποτέλεσμα ελέγξιμο· το δεύτερο δείχνει αν έχει ουσιαστικό νόημα.
Τι αποδεικνύει στην πράξη ένα αναπαραγώγιμο backtest;
Αν ο ίδιος κώδικας, τα ίδια δεδομένα, η ίδια διαμόρφωση και το ίδιο τυχαίο seed παράγουν τις ίδιες συναλλαγές και μετρικές, έχετε ελέγξει μια σημαντική πηγή σύγχυσης. Μπορείτε να συγκρίνετε τη «βελτίωση» ενός agent με την αρχική του εκτέλεση. Μπορείτε να ξεχωρίσετε μια διόρθωση σφάλματος από μια αλλαγή στο πρόγραμμα χρεώσεων. Ένας συνάδελφος μπορεί να ελέγξει το ίδιο καθολικό και να βρει τις ίδιες εκτελέσεις.
Όμως το αποτέλεσμα εξαρτάται από όλα όσα παγώσατε. Ας υποθέσουμε ότι ένα crypto στρατηγικό μοντέλο βασίζεται σε ιστορικό αρχείο με μπάρες ενός λεπτού. Αποθηκεύετε το hash του αρχείου, καρφιτσώνετε την έκδοση του κώδικα και παίρνετε Sharpe 1.4 σε κάθε επανάληψη. Αν ο πάροχος διορθώσει αργότερα ορισμένα κεριά, αυτή η καθαρή αναπαραγωγιμότητα εξακολουθεί να περιγράφει το παλιό αρχείο. Δεν σας λέει αν το σήμα αντέχει στο διορθωμένο ιστορικό ή αν εκείνα τα κεριά ήταν διαθέσιμα σε αυτή τη μορφή τότε.
Το hash είναι χρήσιμο: κάνει την εξάρτηση ορατή. Δεν αποδεικνύει ότι η εξάρτηση είναι ακίνδυνη.
Κρατήστε σταθερή την εκτέλεση· δοκιμάστε το εύρημα
Μου αρέσει να ξεχωρίζω δύο ερωτήματα. Μπορούμε να ανασυνθέσουμε αυτήν ακριβώς την εκτέλεση; Και αντέχει το ερευνητικό συμπέρασμα σε εύλογες αλλαγές; Το πρώτο απαιτεί ένα αμετάβλητο αρχείο· το δεύτερο απαιτεί ελεγχόμενες μεταβολές, μία κάθε φορά.
| Τι καταγράφουμε | Τι μεταβάλλουμε στη συνέχεια | Τι μπορεί να αποκαλύψει |
|---|---|---|
| Έκδοση ακατέργαστων δεδομένων και checksums | Αναθεώρηση παρόχου ή δεύτερη πηγή | Εξάρτηση από διορθωμένες ή ειδικές για τον πάροχο τιμές |
| Commit κώδικα και εκδόσεις πακέτων | Αριθμητικά ισοδύναμη υλοποίηση | Ευαισθησία στη σειρά, στη στρογγυλοποίηση ή στη βιβλιοθήκη |
| Χρεώσεις, funding και παραδοχές εκτέλεσης | Ένα εύλογο εύρος κόστους | Αν ένα οριακό πλεονέκτημα απαιτεί ασυνήθιστα ευνοϊκή εκτέλεση |
| Σύμπαν και σύνθεση σε κάθε χρονική στιγμή | Εναλλακτικοί κανόνες επιλεξιμότητας αγορών | Εξάρτηση από αποφάσεις συμπερίληψης ή αποκλεισμού |
Για παράδειγμα, ας υποθέσουμε ότι μια στρατηγική futures εμφανίζει ετησιοποιημένη υπερβάλλουσα απόδοση 8% σε μια βασική αναπαραγωγή. Εκτελέστε την ξανά με κόστος taker αυξημένο κατά 25%, με το funding μετατοπισμένο στον επόμενο καταγεγραμμένο διακανονισμό και αφαιρώντας διαδοχικά τις δύο μεγαλύτερες συνεισφορές. Αυτά δεν είναι τρεις τρόποι να βελτιώσετε το μοντέλο. Είναι δοκιμές: καθεμία εξετάζει αν μια εύλογη λεπτομέρεια στηρίζει τον βασικό ισχυρισμό.
Κρατήστε κάθε δοκιμή ξεχωριστή. Αν αλλάξετε ταυτόχρονα τα δεδομένα, το πρόγραμμα χρεώσεων και τον χρόνο εκτέλεσης, ένα χειρότερο αποτέλεσμα σάς λέει ελάχιστα για την αιτία. Και αν μια δοκιμή είναι μη ρεαλιστική, χαρακτηρίστε την ως ακραίο σενάριο αντί να την παρουσιάσετε ως το πιθανότερο αποτέλεσμα.
Μην εκλαμβάνετε την ταυτότητα byte προς byte ως αριθμητική αλήθεια
Ορισμένοι υπολογισμοί είναι ευαίσθητοι στη σειρά. Η πρόσθεση αριθμών κινητής υποδιαστολής δεν είναι προσεταιριστική, επομένως η άθροιση πολλών μικρών τιμών P&L με διαφορετική σειρά μπορεί να αλλάξει τα τελευταία ψηφία. Οι παράλληλες αναγωγές, το υλικό και οι εκδόσεις βιβλιοθηκών μπορούν επίσης να επηρεάσουν το ακριβές αποτέλεσμα. Συνήθως αυτό είναι ακίνδυνο· μερικές φορές, όμως, μια μικροσκοπική αριθμητική αλλαγή περνά ένα όριο, αλλάζει μια θέση και οδηγεί το υπόλοιπο της προσομοίωσης σε διαφορετική πορεία.
Γι’ αυτό θα διατηρούσα τόσο τα ακριβή τεχνουργήματα όσο και τις ανοχές για τις συγκρίσεις. Καταγράψτε το καθολικό συναλλαγών, όχι μόνο το τελικό Sharpe. Συγκρίνετε πρώτα τις αποφάσεις και τις ταμειακές ροές και έπειτα τις μετρικές εντός μιας δηλωμένης ανοχής. Αν μια διαφορά ενός λεπτού αλλάζει το αν θα υποβληθεί μια εντολή, εξετάστε ρητά αυτό το όριο.
Ένα χρήσιμο αρχείο εκτέλεσης περιλαμβάνει την ταυτότητα των δεδομένων και του κώδικα, τη διαμόρφωση, το τυχαίο seed, το περιβάλλον εκτέλεσης και αρκετά ενδιάμεσα αποτελέσματα ώστε να μπορείτε να ακολουθήσετε μια μετρική πίσω στις εκτελέσεις και στις ταμειακές ροές. Μια τελική βαθμολογία από μόνη της δεν είναι αναπαραγώγιμο ερευνητικό τεκμήριο.
Πότε η μεταβολή είναι θόρυβος και πότε εύρημα
Δεν αποτελεί κάθε αλλαγμένος αριθμός κρίση. Μια μικρή μετατόπιση της μετρικής λόγω διαφορετικής σειράς αναγωγής μπορεί να αφήσει τις συναλλαγές αμετάβλητες. Μια αλλαγμένη συναλλαγή κοντά σε ένα όριο μπορεί να αξίζει έλεγχο. Αν μια στρατηγική χάσει το μεγαλύτερο μέρος του αποτελέσματός της όταν ένας πάροχος αναθεωρήσει ένα μικρό τμήμα του ιστορικού, αυτό σας έχει μάθει κάτι για την ευθραυστότητά της, ακόμη κι αν η αρχική εκτέλεση εξακολουθεί να αναπαράγεται τέλεια.
Οι επικριτές των ελέγχων ανθεκτικότητας έχουν δίκιο σε ένα σημείο: είναι εύκολο να αλλάζουμε παραδοχές μέχρι μια στρατηγική που προτιμάμε να φαίνεται ανθεκτική ή να απορρίπτουμε ένα έγκυρο αποτέλεσμα επειδή το ανατρέπει ένα σκόπιμα ακραίο σενάριο. Ορίστε εκ των προτέρων τις εύλογες μεταβολές, αναφέρετε το σύνολο των αποτελεσμάτων και ξεχωρίστε τις συνηθισμένες εναλλακτικές από τα ακραία σενάρια. Έπειτα διατηρήστε τη βασική εκτέλεση ώστε ένας άλλος ερευνητής να μπορεί να αναπαράγει ακριβώς ό,τι είδατε.
Η αναπαραγωγιμότητα σάς δίνει ένα αξιόπιστο σημείο εκκίνησης. Το χρήσιμο ερώτημα έρχεται μετά: ποια μέρη της απάντησης παραμένουν σταθερά όταν ο κόσμος γύρω από εκείνη την εκτέλεση αλλάζει με τρόπους που θα μπορούσατε εύλογα να περιμένετε;
← Όλα τα άρθρα


