60% right and still losing. That's forecasting.
90 trades, a 60% win rate, and a book half a trade from flat. Why I swapped open-ended forecasts for 300-second windows.
Being right most of the time is not a business
90 trades closed. 54 of them won. I still made no money.
The reason is what a loss cost. My average loss ran 1.54 times my average win, so a winner paid me a dollar and a loser took a dollar fifty-four back. At those sizes, being right 60% of the time is not enough. I needed 60.61% and was 0.61% short.
A win rate on its own tells you nothing. It is also the only number anybody ever quotes.
What a five-minute window actually is
So I stopped forecasting the world and started trading a clock.
The market is an up/down binary on Bitcoin. It pays a dollar if you were right, nothing if you were wrong. The window is 300 seconds. At the open, Bitcoin’s price is stamped from Chainlink, a feed that publishes about once a second, and that number is the strike the close is measured against. Chainlink settles it at the end.
The contracts in the previous episode carried a deadline, not a settlement date, which is how a December contract resolved in June. A window that ends on a clock cannot surprise you about when it ends.
One dollar, one bet
One dollar per trade. One position open at a time.
The size is not the point. One dollar is what I am willing to lose per trade while I find out whether any of this works. The count is the point.
The damage in the previous episode was six tickets that were secretly one bet, and every one of them sat inside its own limit. Nothing was checking the total. Hold one position at a time and that failure is not available.
To test a strategy you first have to record the market
Trading the next five minutes needs the live price and nothing else. Finding out whether the strategy works at all needs history, second by second, and a lot of it. That second job is where the database went.
Everything used to go into QuestDB, a database built for market data. Then the backtests started hanging before they had tested anything, stuck on the step that loads the history in.
So I asked what the database was doing for me. Market data gets written once and never touched again. A database earns its money by managing changes, and nothing here ever changed. What it gave me instead was one more machine that had to stay up, that I reached through a tunnel, and that could time out on its own.
Two recorders and a folder replaced it. One sits in Dublin, one in Helsinki, and both write straight to Parquet files in cloud storage. A nightly job on my laptop throws away the duplicates and packs what is left. After that, the code just opens the files. There is no server in the middle anymore, and nothing left to time out.
166GB of raw recording. Most of it is the same market captured twice, once from each site. 3GB once the duplicates go. The part the model actually reads is 90MB.
Every part of this was about removing things that could surprise me.
The takeaways
-
Ask what a loss costs, not just how often you win. Win 40% of the time with wins twice the size of your losses and you make money. Win 60% with losses bigger than your wins and you do not. I was the second one.
-
Cap how many positions can be open, not just how big each one is. All six that blew up the old book sat inside their own limits. Nothing was checking the total, and the total is the number that decides the damage.
-
Data that never changes does not need a database. If nothing gets edited after it is written, the server is being paid to hand back the files you gave it.
-
Grep for the hostname, not the service. The process was gone on 17 July and something was still dialling it on 4 August. A decommission is finished when nothing calls the address.
What comes next
No profit and loss to show on the new setup yet. The deadline has not moved: 31 August.
A binary pays a dollar if you are right and nothing if you are wrong, so the value of one trade is your own probability minus the price you paid for it. Buy at 55 cents while being right 55% of the time and all of this earns exactly nothing. Win rate is not edge. The next episode is the number that is.
What did you delete and never miss?
Get the next episode first
Every week: the progress unfiltered, plus what I can't post publicly. The build, the number, green or red.