Rules I follow
Rules
These are not good intentions. I wrote each one down after something specific went wrong, and each is enforced somewhere: in code, in a written test plan, or in a build that refuses to run.
Fix the bar before you see the score.
If I choose the pass mark after seeing the score, I am not testing anything, I am just describing what happened. So every idea gets written into a dated commit first: what I am measuring, the pass mark, the time horizon, and what would make the test invalid.
DR-26
One run, and the result stands.
Each idea gets one run against its pass mark. If you keep re-running with a slightly different setting, sooner or later a dead result turns into a discovery. Where a retry is allowed at all, I allow exactly one, decide it in advance, and think hard before spending it.
DR-27
Metric first, engine second. Never the reverse.
I do not build the strategy until the idea behind it has beaten trading costs on data it has not seen. Build the machinery first and you end up with something you want to believe in before you have any reason to.
DR-24
A safety mechanism coupled to the thing it protects is not a safety mechanism.
A position once sat open overnight because the thing that was supposed to close it was the same thing that had crashed. Now the safety net runs on its own, separately, and it does not wait for me to remember to check.
DR-8, DR-11
A verification that cannot fail loudly has not verified anything.
A test once passed because the script it was meant to run was empty. It proved nothing and looked exactly like success. Now I make every check fail on purpose once, so I know it can.
DR-35
Verify your own findings as harshly as someone else’s.
The best result I ever got turned out to be a bug, and fixing it reversed the answer. Someone else found it by reading my code. Now a result that tells me what I was hoping for gets checked harder, not less.
DR-19
History is append-only.
When I get something wrong I add the correction, I do not quietly edit the old one. Two results here were withdrawn after I fixed a data problem, and both versions are still up. If you can edit it freely, it is not really a record.
DR-27
Pooled effect is not harvestable return.
One idea measured several times bigger than my trading costs, and then lost to simply buying everything once I ran it as a real portfolio. Overlapping test windows, picking the top few names, and monthly churn ate the whole gap.
DR-29
The instrument gets tested against real data, including the data you trust.
I wrote tests to catch bad stock-split adjustments. They found an eight-month hole in my own data instead, which nobody had noticed. Tests run against real data catch the problem you never thought to look for.
DR-25
Allocate on evidence, never on prediction.
If I ever split money across several strategies, I will weight them by what is actually working, not by guessing which kind of market is coming next. Models that try to predict the market regime have too many knobs and fit the past beautifully.
DR-16