Blog

Notes from the strategy factory

Tick data won't save your backtest — for most strategies it makes things worse
September 19, 2026 · backtesting

Tick data won't save your backtest — for most strategies it makes things worse

More resolution isn't more truth. For most strategies, tick data trades a real problem — bad fill and cost assumptions — for a fake one: the illusion that finer-grained data means a more honest backtest.

Read the post →
How do you backtest an inverse perpetual without mixing up BTC and dollars?
September 17, 2026 · accounting

How do you backtest an inverse perpetual without mixing up BTC and dollars?

A trade earns $10,000. The account gains $15,000. Both numbers are correct. Your backtest needs to explain the missing $5,000.

Read the post →
Your equity backtest found a short. Could you actually borrow it?
September 16, 2026 · backtesting

Your equity backtest found a short. Could you actually borrow it?

Your gap-fade strategy shorts every name it selects. Your broker has a smaller menu. A letter about the missing transaction before your entry.

Read the post →
Your macro backtest traded the revised jobs report
September 14, 2026 · data

Your macro backtest traded the revised jobs report

You downloaded the historical jobs series correctly. Your strategy still traded numbers that wouldn't exist for another two months. Here's how to rebuild its information set.

Read the post →
How much latency should you add to a backtest? We measured every millisecond of ours
September 13, 2026 · execution

How much latency should you add to a backtest? We measured every millisecond of ours

195 ms median. 2,970 ms at the 99th percentile. 840 ms median on the minutes your signal actually fires. Only one of those numbers is interesting.

Read the post →
Five sizing rules, one signal: the part of your backtest doing the real work
September 12, 2026 · risk

Five sizing rules, one signal: the part of your backtest doing the real work

Most of the variance in your backtest result comes from how big you hold, not from when you enter. Here's the same signal under six sizing rules, with the fee bill and the peak leverage the report forgot to print.

Read the post →
Same code, same data, two different Sharpes: the nondeterminism audit your backtest needs
September 11, 2026 · reproducibility

Same code, same data, two different Sharpes: the nondeterminism audit your backtest needs

11,205 bars bit-identical, then a tie in a ranking, then a 0.15 Sharpe gap. If you don't know your backtest's jitter band, you don't know whether your best parameter set won anything.

Read the post →
The row your options backtest is built on: one Deribit BTC call, field by field
September 7, 2026 · options

The row your options backtest is built on: one Deribit BTC call, field by field

The ticker has about twenty fields. Two of them are prices nobody traded at, three are in units your backtest probably misreads, and the number that kills most options strategies isn't in the payload at all.

Read the post →
You backtested $2,000 a clip and now you want $50,000: a letter about capacity
September 6, 2026 · execution

You backtested $2,000 a clip and now you want $50,000: a letter about capacity

Your edge is 22 bps gross per trade. At $2,000 you pay about 2 bps of impact. At $50,000 you pay 11. The arithmetic that follows decides whether you have a strategy or a screenshot.

Read the post →
Your backtest never got liquidated: margin, mark price and the leverage line you skipped
September 5, 2026 · risk

Your backtest never got liquidated: margin, mark price and the leverage line you skipped

The equity curve dips 63% in April and recovers by June. On the venue, the account was closed on day 41 and there was nothing left to recover with.

Read the post →
Both your stop and your target were inside the same bar. Which one did your backtest pick?
September 4, 2026 · backtesting

Both your stop and your target were inside the same bar. Which one did your backtest pick?

The bar's low is below your stop. Its high is above your target. One of those happened first, the bar doesn't say which, and something in your code decided anyway.

Read the post →
The minutes that don't exist: gaps, halts and zero-volume bars in OHLCV history
September 3, 2026 · data engineering

The minutes that don't exist: gaps, halts and zero-volume bars in OHLCV history

Missing bars aren't randomly scattered through your history. They cluster in exactly the minutes your strategy cares about, and the standard fixes make the damage invisible.

Read the post →
Your limit order didn't fill: a letter about queue position, maker backtests and the Sharpe you invented
September 2, 2026 · microstructure

Your limit order didn't fill: a letter about queue position, maker backtests and the Sharpe you invented

Your fill rule is one line long: if the bar's low is at or below my limit, I'm filled. That line is doing more work than your entire alpha, and it's doing it wrong.

Read the post →
Split-adjusted data, taken apart: what NVDA's 10-for-1 does to every row behind it
September 1, 2026 · corporate actions

Split-adjusted data, taken apart: what NVDA's 10-for-1 does to every row behind it

The row says the close was $120.8781. The tape that day said $1,208.88. Six columns separate those two numbers, and most backtests misread at least three of them.

Read the post →
What breaks when you backtest prediction markets: an eight-day diary
August 31, 2026 · prediction markets

What breaks when you backtest prediction markets: an eight-day diary

The instrument dies. It pays one dollar or nothing, once, on a date you don't control. Almost every assumption baked into a returns-based backtester is wrong here, and here's the order in which we found that out.

Read the post →
How many trades does a backtest need before the Sharpe means anything?
August 30, 2026 · statistics

How many trades does a backtest need before the Sharpe means anything?

The standard error of an annualized Sharpe is roughly 1 over the square root of your years of data. Everything uncomfortable follows from that one line.

Read the post →
You built a strategy that only trades at 00:00 UTC — a letter about funding-time artifacts
August 29, 2026 · funding

You built a strategy that only trades at 00:00 UTC — a letter about funding-time artifacts

Your Sharpe is 2.9 and every dollar of it arrives within four minutes of a funding settlement. I've seen this exact result maybe a dozen times. Here's how to find out which kind you have.

Read the post →
Your symbol universe is a time machine: survivorship bias in crypto perp backtests
August 27, 2026 · data engineering

Your symbol universe is a time machine: survivorship bias in crypto perp backtests

You built your universe by calling exchangeInfo once, today, and filtering for status == TRADING. That single line quietly deleted every coin that died.

Read the post →
Anatomy of one 1-minute bar: everything OHLCV doesn't tell your backtest
August 26, 2026 · market data

Anatomy of one 1-minute bar: everything OHLCV doesn't tell your backtest

Twelve values in a JSON array. At least four of them mean something different from what your fill engine assumes. Here's the whole bar, taken apart.

Read the post →
Three ways to fail walk-forward optimization without noticing
August 20, 2026 · Optimization

Three ways to fail walk-forward optimization without noticing

Walk-forward testing is sold as the antidote to overfitting. Done casually, it's just overfitting with better paperwork. Three failure modes and their tells.

Read the post →
How an AI agent team takes a trading idea from sentence to paper money
August 19, 2026 · AI agents

How an AI agent team takes a trading idea from sentence to paper money

Ten agents, one pipeline, and a funnel that's designed to kill ideas. A walkthrough of what actually happens between "funding momentum" and a live paper node.

Read the post →
Paper trading is the only benchmark your backtest answers to
August 18, 2026 · Paper trading

Paper trading is the only benchmark your backtest answers to

We replay every paper strategy's window through the backtest engine every day and diff the trades. Here's what that ritual keeps catching.

Read the post →
What a round trip really costs on nine venues
August 17, 2026 · Economics

What a round trip really costs on nine venues

Fee pages are marketing. Here's the two-way arithmetic that decides whether your strategy is a business or a donation, venue by venue.

Read the post →
Why most backtests lie, and the four line items that fix them
August 16, 2026 · Backtesting

Why most backtests lie, and the four line items that fix them

A strategy that backtests at +40% a year and loses money live isn't unlucky. It was measured wrong. Four line items separate the two numbers.

Read the post →