Here is the uncomfortable thing about backtesting: it is extraordinarily easy to produce a beautiful equity curve, and extraordinarily hard to produce an honest one. The chart looks the same either way — a smooth line going up and to the right. The difference is invisible until real money is on the line.

Να το δυσάρεστο με το backtesting: είναι εξαιρετικά εύκολο να φτιάξεις μια όμορφη equity curve, και εξαιρετικά δύσκολο να φτιάξεις μια ειλικρινή. Το γράφημα μοιάζει ίδιο και στις δύο περιπτώσεις — μια ομαλή γραμμή που ανεβαίνει. Η διαφορά είναι αόρατη μέχρι να μπουν πραγματικά λεφτά στο τραπέζι.

Almost every failed retail system we've looked at made at least one of the same five mistakes. None of them are exotic. All of them are avoidable. Let's walk through them, then rebuild the discipline that closes the gap between paper and reality.

Σχεδόν κάθε αποτυχημένο retail σύστημα που έχουμε δει έκανε τουλάχιστον ένα από τα ίδια πέντε λάθη. Κανένα δεν είναι εξωτικό. Όλα αποφεύγονται. Ας τα δούμε ένα-ένα, και μετά ας ξαναχτίσουμε την πειθαρχία που κλείνει το χάσμα ανάμεσα στο χαρτί και την πραγματικότητα.

§ 01 · The leak§ 01 · Η διαρροή

Mistake 1 — Look-ahead bias

Λάθος 1 — Look-ahead bias

Look-ahead bias is using information at decision time that you wouldn't actually have had yet. It is the single most common way a backtest lies to you, and it usually slips in through the back door.

Το look-ahead bias είναι το να χρησιμοποιείς, τη στιγμή της απόφασης, πληροφορία που στην πραγματικότητα δεν θα την είχες ακόμα. Είναι ο πιο συνηθισμένος τρόπος με τον οποίο ένα backtest σού λέει ψέματα, και συνήθως μπαίνει από την πίσω πόρτα.

The classic version: your strategy decides to buy "when the candle closes above the moving average" — but your code evaluates that on the closing price and then assumes it filled at that same close. In live trading you can't know the close until the bar is over, by which point the price has moved. A subtler version: you compute an indicator, a normalization, or a feature scaler over the entire dataset before splitting into train and test. Now every "past" bar secretly carries a whisper of the future, because the mean and variance you scaled with were computed using data that hadn't happened yet.

Η κλασική εκδοχή: η στρατηγική σου αποφασίζει να αγοράσει «όταν το κερί κλείσει πάνω από τον κινητό μέσο» — αλλά ο κώδικάς σου το ελέγχει στην τιμή κλεισίματος και μετά υποθέτει ότι γέμισε σε εκείνο ακριβώς το κλείσιμο. Στο live trading δεν ξέρεις το κλείσιμο μέχρι να τελειώσει το κερί, και ως τότε η τιμή έχει ήδη κινηθεί. Μια πιο ύπουλη εκδοχή: υπολογίζεις έναν δείκτη, μια κανονικοποίηση ή έναν scaler πάνω σε ολόκληρο το dataset πριν το χωρίσεις σε train και test. Τώρα κάθε «παρελθοντικό» κερί κουβαλάει κρυφά έναν ψίθυρο του μέλλοντος, επειδή ο μέσος και η διακύμανση που χρησιμοποίησες υπολογίστηκαν με δεδομένα που δεν είχαν συμβεί ακόμα.

If your backtest knows even a little about the future, it will exploit it ruthlessly — and you will mistake that leak for skill.
Αν το backtest σου ξέρει έστω λίγο για το μέλλον, θα το εκμεταλλευτεί αδίστακτα — και εσύ θα περάσεις αυτή τη διαρροή για ικανότητα.
§ 02 · The thousand tries§ 02 · Οι χίλιες προσπάθειες

Mistake 2 — Fitting on the test set

Λάθος 2 — Fitting στο test set

You hold out the last two years as a "test set." Good. Then you run a backtest, tweak a parameter, run it again, tweak again — two hundred times — always checking against that same test set. The test set is no longer a test. You have just fit your parameters to it by hand, one decision at a time.

Κρατάς τα δύο τελευταία χρόνια ως «test set». Ωραία. Μετά τρέχεις ένα backtest, αλλάζεις μια παράμετρο, ξανατρέχεις, ξανα-αλλάζεις — διακόσιες φορές — ελέγχοντας πάντα στο ίδιο test set. Το test set δεν είναι πια test. Μόλις προσάρμοσες τις παραμέτρους σου σε αυτό με το χέρι, μία απόφαση τη φορά.

This is the quiet killer, because it doesn't feel like cheating. It feels like iterating. But every look at the test set spends a little of its credibility, and after enough looks there is nothing left. The result is a strategy tuned to the precise shape of one specific slice of history that will never repeat.

Αυτός είναι ο σιωπηλός δολοφόνος, γιατί δεν μοιάζει με κλεψιά. Μοιάζει με βελτίωση. Αλλά κάθε ματιά στο test set ξοδεύει λίγη από την αξιοπιστία του, και μετά από αρκετές ματιές δεν μένει τίποτα. Το αποτέλεσμα είναι μια στρατηγική κουρδισμένη στο ακριβές σχήμα μιας συγκεκριμένης φέτας ιστορικού που δεν θα ξανασυμβεί ποτέ.

§ 03 · The survivors§ 03 · Οι επιζώντες

Mistake 3 — Survivorship bias

Λάθος 3 — Survivorship bias

Backtest a stock strategy on today's index members and you are only testing the companies that survived. The ones that went to zero are no longer in your dataset, so your strategy never has the chance to hold them on the way down. The same applies to crypto: backtesting on the coins that exist today silently deletes the hundreds that died.

Κάνε backtest μια μετοχική στρατηγική στα σημερινά μέλη ενός δείκτη και δοκιμάζεις μόνο τις εταιρείες που επέζησαν. Αυτές που πήγαν στο μηδέν δεν υπάρχουν πια στα δεδομένα σου, οπότε η στρατηγική σου δεν έχει ποτέ την ευκαιρία να τις κρατήσει στην κατρακύλα. Το ίδιο ισχύει και στο crypto: κάνοντας backtest στα νομίσματα που υπάρχουν σήμερα, σβήνεις σιωπηλά τα εκατοντάδες που πέθαναν.

The fix is to use point-in-time data — the universe as it actually was on each historical date, delistings and all — not the universe as it looks in hindsight.

Η λύση είναι να χρησιμοποιείς point-in-time δεδομένα — το σύμπαν όπως ήταν πραγματικά σε κάθε ιστορική ημερομηνία, με delistings και όλα — όχι όπως φαίνεται εκ των υστέρων.

§ 04 · The illusion of significance§ 04 · Η ψευδαίσθηση της σημαντικότητας

Mistake 4 — Overlapping labels and fake statistical confidence

Λάθος 4 — Επικαλυπτόμενα labels και ψεύτικη στατιστική σιγουριά

This one is more technical, and it's where most retail backtests quietly fall apart. If you label each bar by "what happened over the next 24 hours," then consecutive labels overlap — they share most of the same future. Overlapping labels are highly autocorrelated, which means your thousands of "independent" samples are nothing of the sort. Your strategy looks statistically robust because it appears to have been validated across an enormous number of trades. In reality it was validated across a handful of genuinely independent events.

Αυτό είναι πιο τεχνικό, και εδώ διαλύονται σιωπηλά τα περισσότερα retail backtests. Αν δίνεις σε κάθε κερί label με βάση «τι έγινε τις επόμενες 24 ώρες», τότε διαδοχικά labels επικαλύπτονται — μοιράζονται σχεδόν το ίδιο μέλλον. Τα επικαλυπτόμενα labels είναι έντονα αυτοσυσχετισμένα, που σημαίνει ότι τα χιλιάδες «ανεξάρτητα» δείγματά σου δεν είναι καθόλου ανεξάρτητα. Η στρατηγική σου δείχνει στατιστικά ανθεκτική επειδή φαίνεται να επικυρώθηκε σε τεράστιο αριθμό trades. Στην πραγματικότητα επικυρώθηκε σε μια χούφτα γνήσια ανεξάρτητων γεγονότων.

The remedy comes from Marcos López de Prado's work: purging (drop training samples whose label window overlaps the validation set) and an embargo (skip a small buffer of bars immediately after each validation block, so leakage can't creep across the seam). Without these, cross-validation on financial time series systematically overstates how good a model is.

Η θεραπεία έρχεται από τη δουλειά του Marcos López de Prado: purging (πέτα τα δείγματα εκπαίδευσης των οποίων το παράθυρο label επικαλύπτεται με το validation set) και embargo (παράλειψε ένα μικρό buffer από κεριά αμέσως μετά από κάθε validation block, ώστε η διαρροή να μην τρυπώνει στη ραφή). Χωρίς αυτά, το cross-validation σε χρηματοοικονομικές χρονοσειρές υπερεκτιμά συστηματικά το πόσο καλό είναι ένα μοντέλο.

§ 05 · The costs you forgot§ 05 · Τα κόστη που ξέχασες

Mistake 5 — Pretending trading is free

Λάθος 5 — Να κάνεις πως το trading είναι δωρεάν

Spread, commission, slippage, and financing all quietly subtract from every trade. A high-frequency strategy that looks profitable at zero cost can be deeply negative once you subtract a realistic spread — especially on instruments like gold or crypto where the spread widens exactly when you most want to trade. If your backtest doesn't model execution costs, it isn't modeling trading. It's modeling a fantasy.

Spread, προμήθεια, slippage και κόστος χρηματοδότησης αφαιρούν σιωπηλά από κάθε trade. Μια high-frequency στρατηγική που φαίνεται κερδοφόρα με μηδενικό κόστος μπορεί να είναι βαθιά αρνητική μόλις αφαιρέσεις ένα ρεαλιστικό spread — ειδικά σε προϊόντα όπως ο χρυσός ή το crypto, όπου το spread ανοίγει ακριβώς όταν θες πιο πολύ να μπεις. Αν το backtest σου δεν μοντελοποιεί τα κόστη εκτέλεσης, δεν μοντελοποιεί trading. Μοντελοποιεί μια φαντασίωση.

§ 06 · The fix§ 06 · Η λύση

Walk-forward and purged cross-validation

Walk-forward και purged cross-validation

The cure for almost all of the above is a single principle: never let the model see anything it couldn't have seen in real time. Two techniques enforce it.

Η θεραπεία για σχεδόν όλα τα παραπάνω είναι μία αρχή: μην αφήνεις ποτέ το μοντέλο να δει κάτι που δεν θα μπορούσε να δει σε πραγματικό χρόνο. Δύο τεχνικές το επιβάλλουν.

Pair those with point-in-time data, a train/test split you only look at once, and a cost model that reflects your real broker, and the gap between your backtest and your live results shrinks from a chasm to a margin.

Συνδύασέ τα με point-in-time δεδομένα, ένα train/test split που το κοιτάς μόνο μία φορά, και ένα μοντέλο κόστους που αντικατοπτρίζει τον πραγματικό σου broker, και το χάσμα ανάμεσα στο backtest και τα live αποτελέσματα συρρικνώνεται από άβυσσος σε περιθώριο.

HOW WE APPLY THIS IN ATLAS ΠΩΣ ΤΟ ΕΦΑΡΜΟΖΟΥΜΕ ΣΤΟ ATLAS This isn't theory for us — it's the unglamorous plumbing. Models are validated with purged, embargoed cross-validation and walk-forward windows; features are computed point-in-time so a value is never available before the bar that produced it; and execution costs are modeled before any signal is judged. None of it makes the equity curve prettier. That's exactly the point — it makes it honest. Για εμάς δεν είναι θεωρία — είναι η αφανής υδραυλική. Τα μοντέλα επικυρώνονται με purged, embargoed cross-validation και walk-forward παράθυρα· τα features υπολογίζονται point-in-time, ώστε μια τιμή να μην είναι ποτέ διαθέσιμη πριν από το κερί που την παρήγαγε· και τα κόστη εκτέλεσης μοντελοποιούνται πριν κριθεί οποιοδήποτε σήμα. Τίποτα από αυτά δεν κάνει την equity curve ομορφότερη. Αυτό ακριβώς είναι το νόημα — την κάνει ειλικρινή.
§ 07 · The takeaway§ 07 · Το συμπέρασμα

A backtest is not a promise. At best it is a carefully constructed argument that a strategy might have an edge — and the entire value of that argument depends on how ruthlessly you prevented it from cheating. When a result looks too good, the right instinct isn't excitement. It's suspicion. Go hunting for the leak. It's almost always there.

Ένα backtest δεν είναι υπόσχεση. Στην καλύτερη περίπτωση είναι ένα προσεκτικά δομημένο επιχείρημα ότι μια στρατηγική ίσως έχει edge — και όλη η αξία αυτού του επιχειρήματος εξαρτάται από το πόσο αδίστακτα την εμπόδισες να κλέψει. Όταν ένα αποτέλεσμα δείχνει υπερβολικά καλό, το σωστό ένστικτο δεν είναι ενθουσιασμός. Είναι καχυποψία. Πήγαινε να ψάξεις τη διαρροή. Σχεδόν πάντα είναι εκεί.

Treat the numbers as a hypothesis to be attacked, not a fortune to be counted, and you'll already be ahead of most of the people running systems with real money.

Αντιμετώπισε τα νούμερα ως υπόθεση προς επίθεση, όχι ως περιουσία προς μέτρημα, και θα είσαι ήδη μπροστά από τους περισσότερους που τρέχουν συστήματα με πραγματικά λεφτά.