Blog

Notes from the strategy factory

Your Backtest's Dollar Was USDC. On March 11 It Traded at 87 Cents.
November 2, 2026 · research

Your Backtest's Dollar Was USDC. On March 11 It Traded at 87 Cents.

We labeled the equity curve in dollars. The account was in USDC, and that Saturday USDC was not a dollar.

Read the post →
How do you warm up a backtest without counting the lookback as performance?
November 1, 2026 · research

How do you warm up a backtest without counting the lookback as performance?

Unfinished indicators, cropped curves that keep their positions, and 30-day warmups on 8-hour features. The restart check that catches them.

Read the post →
We Backtested on Binance and Paper-Traded on Bybit. The Edge Was the Lag.
October 31, 2026 · microstructure

We Backtested on Binance and Paper-Traded on Bybit. The Edge Was the Lag.

We researched BTC on Binance and paper-traded it on Bybit. The backtest wasn't optimistic. It was watching a faster tape.

Read the post →
The Hedge That Doubled Our Backtest’s Trading Costs
October 30, 2026 · research

The Hedge That Doubled Our Backtest’s Trading Costs

The option trades were sparse. The hedge traded every time the underlying twitched. Here’s how we found the missing costs in an options backtest.

Read the post →
Your Backtest's Short Was Winning. Auto-Deleveraging Closed It Anyway.
October 29, 2026 · backtesting

Your Backtest's Short Was Winning. Auto-Deleveraging Closed It Anyway.

Liquidation is what happens when your margin runs out. ADL is what happens when theirs does, and you were the one making money.

Read the post →
The Signal Was Right. Our Options Backtest Bought the Wrong Expiration.
October 28, 2026 · options

The Signal Was Right. Our Options Backtest Bought the Wrong Expiration.

The signal called for a call spread. The backtest picked an expiration that looked liquid in hindsight. We traced the mismatch to one quiet calendar join.

Read the post →
Your Options Backtest Used a Midprice That Never Traded
October 27, 2026 · research

Your Options Backtest Used a Midprice That Never Traded

A midpoint can be a sensible estimate of value and a lousy assumption for execution. Here are three ways that difference quietly manufactures options backtest performance.

Read the post →
Why Does My Backtest Keep Replacing Its Options Data?
October 26, 2026 · data

Why Does My Backtest Keep Replacing Its Options Data?

The same options strategy can produce different results on “the same” history. Here’s how to tell whether the market changed in your archive, and what to save so the next run is explainable.

Read the post →
Your Backtest’s Sharpe Can Rise When You Add More Markets
October 25, 2026 · research

Your Backtest’s Sharpe Can Rise When You Add More Markets

A broader market universe looks like diversification. During strategy search, it can also be another batch of trials. Here’s how to tell the difference.

Read the post →
Why Does My Backtest Look Better With More Frequent Rebalancing?
October 24, 2026 · research

Why Does My Backtest Look Better With More Frequent Rebalancing?

A daily rebalance can capture a signal sooner, and spend the edge doing it. Here’s how to measure whether extra trading earns its keep.

Read the post →
Your Strategy’s Sharpe Ratio Can Improve When Its Data Gets Worse
October 23, 2026 · research

Your Strategy’s Sharpe Ratio Can Improve When Its Data Gets Worse

A suspicious tick can be a bad print, or the one observation that exposes your strategy’s fragility. Data cleaning needs an audit trail, not just a prettier equity curve.

Read the post →
We Rebuilt a Backtest After a Data Vendor Changed Its History
October 22, 2026 · data

We Rebuilt a Backtest After a Data Vendor Changed Its History

The same strategy code and date range produced a different equity curve six weeks later. We traced the drift to revised market data, then rebuilt the experiment so we could tell what had changed.

Read the post →
Your Strategy Ran 240 Trials. How Many Backtests Did You Really Run?
October 21, 2026 · research

Your Strategy Ran 240 Trials. How Many Backtests Did You Really Run?

You tried 240 parameter sets and kept the winner. Its Sharpe is 2.1. The important question is how many chances you gave noise to look like an edge.

Read the post →
The Strategy Worked Until We Charged It for Rolling a Futures Position
October 20, 2026 · research

The Strategy Worked Until We Charged It for Rolling a Futures Position

Our calendar spread looked clean until the front contract expired. Then the backtest rolled a position at a price nobody could trade.

Read the post →
The Rebalance Looked Cheap Until We Counted the Spread
October 19, 2026 · execution

The Rebalance Looked Cheap Until We Counted the Spread

The backtest charged 4 basis points in fees. The spread and market impact took the rebalance past 20. Here’s how we found the missing cost.

Read the post →
How do I backtest a strategy that trades on a daily signal?
October 18, 2026 · research

How do I backtest a strategy that trades on a daily signal?

A daily bar gives you a price and a date, but it doesn’t tell you when your strategy knew the close. Here’s how to backtest daily signals without granting them an impossible fill.

Read the post →
We Let an AI Research Agent Optimize a Strategy. The Diary Was Less Impressive.
October 17, 2026 · research

We Let an AI Research Agent Optimize a Strategy. The Diary Was Less Impressive.

The agent found a strategy with a 4.1 Sharpe. Then we counted the attempts, froze the search, and watched the result shrink into something we could actually evaluate.

Read the post →
Your AI Research Agent Has Seen the Test Set: Three Ways the Score Gets Tainted
October 16, 2026 · research

Your AI Research Agent Has Seen the Test Set: Three Ways the Score Gets Tainted

A test set stops being a test when its results steer the next experiment. Here are three ways research agents quietly learn from it, and how to keep the score honest.

Read the post →
How do you test whether a strategy’s edge survives higher trading costs?
October 15, 2026 · research

How do you test whether a strategy’s edge survives higher trading costs?

Don’t ask whether your strategy survives “realistic costs.” Measure how much cost it can absorb, which assumptions matter, and where the edge disappears.

Read the post →
Why Your Backtest Needs a Delisting Ledger
October 14, 2026 · data

Why Your Backtest Needs a Delisting Ledger

If a company disappears from your backtest, its final return may have disappeared too. Three common shortcuts turn dead stocks into invisible winners.

Read the post →
Your Backtest Found a 20% Edge. How Much Came From One Bad Timestamp?
October 13, 2026 · research

Your Backtest Found a 20% Edge. How Much Came From One Bad Timestamp?

A 20% backtest edge can come from a number that nobody could have known at the time. Here’s how to find out whether revisions, late releases, or vendor backfills are doing the trading for you.

Read the post →
We Took Apart a Prediction Market Backtest That Bought the Wrong Contract
October 12, 2026 · research

We Took Apart a Prediction Market Backtest That Bought the Wrong Contract

The backtest bought “Will the bill pass?” But which bill, by what deadline, and according to whose resolution? We dissect the contract identity failures that turn a tidy prediction market replay into a different bet.

Read the post →
The Funding Payment That Made a Winning Perp Trade Lose Money
October 11, 2026 · research

The Funding Payment That Made a Winning Perp Trade Lose Money

A BTC perpetual trade bought the right direction and still lost money. Here’s the ledger, payment by payment, and the accounting checks that explain why.

Read the post →
How do you tell whether a strategy’s edge survives a different market regime?
October 10, 2026 · research

How do you tell whether a strategy’s edge survives a different market regime?

A strategy’s average return can hide a fragile bargain with one kind of market. Here’s how to find out whether its edge travels across regimes.

Read the post →
A Better Backtest Can Make Your Strategy Research Worse
October 9, 2026 · research

A Better Backtest Can Make Your Strategy Research Worse

A backtest can help you reject a bad idea. Use it to pick the best of 500 ideas, and the winner may be the luckiest one. Here’s how to keep the research process honest.

Read the post →
Why Does My Backtest’s Limit Order Fill When the Market Never Reached It?
October 8, 2026 · research

Why Does My Backtest’s Limit Order Fill When the Market Never Reached It?

Your limit price appeared inside the bar, so the backtest marked a fill. That’s a price touch, not evidence you got the trade.

Read the post →
Your Strategy Passed Walk-Forward. Why Did the Paper Results Drift?
October 7, 2026 · research

Your Strategy Passed Walk-Forward. Why Did the Paper Results Drift?

A strategy passed walk-forward validation, then paper trading diverged. The first suspect may be the handoff between research and execution, not the market.

Read the post →
Why did my backtest trade at a price the market never showed?
October 6, 2026 · research

Why did my backtest trade at a price the market never showed?

If your simulated fill is better than every price in the bar, the problem may be your execution assumptions, not the signal. Here’s how to trace where that price came from.

Read the post →
The Backtest Found 12% Annual Turnover. The Account Traded 38%.
October 5, 2026 · research

The Backtest Found 12% Annual Turnover. The Account Traded 38%.

A backtest can say 12% annual turnover while the account trades 38%. The gap often starts with what “turnover” means in code.

Read the post →
How do you keep an AI strategy agent from leaking tomorrow into today?
October 4, 2026 · research

How do you keep an AI strategy agent from leaking tomorrow into today?

A strategy can pass every syntax check and still know the future. Here are the quiet ways research agents leak information, and the checks that catch them.

Read the post →
How do you backtest a strategy that trades around a market halt?
October 3, 2026 · research

How do you backtest a strategy that trades around a market halt?

A halt is not a zero-volume bar. It is a change in what the market will let your strategy do, with a reopening auction that can redraw the price you thought you were trading.

Read the post →
Your edge vanished after the fee tier changed. Did the strategy break, or the account?
October 2, 2026 · research

Your edge vanished after the fee tier changed. Did the strategy break, or the account?

Your strategy’s gross trades stayed the same, but its fee tier changed with your account’s volume. Here’s how to tell whether the edge moved or the account did.

Read the post →
The Rebalance That Sold Tomorrow’s Winners: A Turnover Teardown
October 1, 2026 · research

The Rebalance That Sold Tomorrow’s Winners: A Turnover Teardown

A ranking table is not a trading strategy until you turn it into orders. Follow one monthly rebalance from target weights through turnover, fees, and the assumptions that can make its backtest look too clean.

Read the post →
Your Backtest Loved the Best Hour. Can You Trade It After the Clock Changes?
September 30, 2026 · research

Your Backtest Loved the Best Hour. Can You Trade It After the Clock Changes?

Your strategy makes money in the first hour—until that hour moves. A practical guide to testing intraday seasonality across daylight saving changes and venue schedules.

Read the post →
Your Backtest Spent the Same Cash Twice: A Guide to Portfolio Accounting
September 29, 2026 · research

Your Backtest Spent the Same Cash Twice: A Guide to Portfolio Accounting

A position can be profitable on paper and still leave your next order unfundable. Three common accounting shortcuts explain how backtests quietly spend the same cash twice.

Read the post →
Your Paper Strategy Restarted With a Different Position: A Letter About State Recovery
September 28, 2026 · research

Your Paper Strategy Restarted With a Different Position: A Letter About State Recovery

You restarted the process, but did it restart the strategy? Here’s how to find out whether its memory of positions, pending orders, and signals matches the paper account.

Read the post →
The Backtest Passed. The Paper Strategy Missed 37% of Its Orders.
September 27, 2026 · research

The Backtest Passed. The Paper Strategy Missed 37% of Its Orders.

Our paper strategy submitted 100 orders and got 63 fills. The backtest counted 91. The gap came from order state, timing and assumptions that a Sharpe ratio could not show.

Read the post →
We Tried to Reproduce a Strategy’s Backtest. Here’s Where the Numbers Drifted.
September 26, 2026 · research

We Tried to Reproduce a Strategy’s Backtest. Here’s Where the Numbers Drifted.

We reran a saved strategy and got a different equity curve. Over a few days, we traced the drift through data revisions, dependency versions and a surprisingly small default setting.

Read the post →
How do I know whether a backtest’s market data was actually tradable?
September 25, 2026 · research

How do I know whether a backtest’s market data was actually tradable?

Correct prices don’t guarantee an honest backtest. Check when each observation became usable, which market it represents, and whether your strategy could have acted on it.

Read the post →
We Replayed a Paper Strategy After a Restart. Its Orders Changed.
September 24, 2026 · research

We Replayed a Paper Strategy After a Restart. Its Orders Changed.

We restarted a paper strategy in the middle of a position and got a different sequence of orders. The signal was fine. Its memory wasn't.

Read the post →
What does an options backtest actually do at expiration?
September 23, 2026 · research

What does an options backtest actually do at expiration?

At expiration, the last option quote is often the least useful number in your P&L. Here’s how to model settlement, exercise, and delivery without inventing a fill.

Read the post →
Your continuous futures chart is a contract nobody could trade
September 22, 2026 · futures

Your continuous futures chart is a contract nobody could trade

On April 20, 2020, two WTI contracts settled $58.06 apart. Splice them together carelessly and your backtest books $58,060 that no position earned.

Read the post →
Restart your strategy halfway through the backtest. Does it remember what it owns?
September 21, 2026 · engineering

Restart your strategy halfway through the backtest. Does it remember what it owns?

A strategy can survive every market in your dataset and still break when its process restarts. Stop the replay halfway through and find out what it forgot.

Read the post →
Your Paper Account Rejected the Backtest’s Fill: A Letter About Exchange Filters
September 20, 2026 · execution

Your Paper Account Rejected the Backtest’s Fill: A Letter About Exchange Filters

You sized the order correctly in your backtest, but the paper venue rejected it. Here’s how to make precision rules part of the strategy’s execution model.

Read the post →
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 →
The Rebalance That Ate the Signal: A Strategy’s First Walk Through the Real Market
September 18, 2026 · research

The Rebalance That Ate the Signal: A Strategy’s First Walk Through the Real Market

The signal was right about direction. The portfolio still lost its edge at the rebalance, one shallow book and one oversized order at a time.

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 Backtest’s Slippage Model Should Be Wrong on Purpose
September 15, 2026 · research

Your Backtest’s Slippage Model Should Be Wrong on Purpose

The goal of a slippage model isn’t to guess the fill you would have got. It’s to find out whether your strategy survives plausible fills you can’t know from historical bars.

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 →
Your Sharpe Ratio Survived Every Test. It Still Might Be a Coincidence.
September 10, 2026 · research

Your Sharpe Ratio Survived Every Test. It Still Might Be a Coincidence.

A Sharpe of 2 can look extraordinary after a thousand attempts. The surprising number is how many ways you tried to get there.

Read the post →
Why Your Backtest’s Volatility Target Misses the Risk It’s Supposed to Control
September 9, 2026 · research

Why Your Backtest’s Volatility Target Misses the Risk It’s Supposed to Control

A 10% volatility target is a sizing instruction, not a risk guarantee. Take one BTC perpetual strategy apart and see where the number stops describing what the account can lose.

Read the post →
The funding rate looked cheap. The position still bled.
September 8, 2026 · research

The funding rate looked cheap. The position still bled.

A perpetual paid 0.01% funding every eight hours. The trade still lost money. Here’s where the backtest’s attractive carry went.

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 →
Why Your Backtest Treats a Volatility Spike Like a New Regime
August 28, 2026 · research

Why Your Backtest Treats a Volatility Spike Like a New Regime

Volatility targeting sounds adaptive. A stale estimate, a bad floor, or a hidden rebalance rule can turn one rough week into months of missed exposure. Here’s how to spot the damage.

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 →
Your backtest has 100 trades. Why is the average fill still a guess?
August 25, 2026 · research

Your backtest has 100 trades. Why is the average fill still a guess?

One hundred trades, 0.04% fees, and a 0.02% slippage assumption can look precise. But the fill is still a guess until you ask what size the market could absorb.

Read the post →
Why Does My Backtest Trade More Often Than My Paper Strategy?
August 24, 2026 · research

Why Does My Backtest Trade More Often Than My Paper Strategy?

A signal can say “buy” once while the order system tries three times and fills twice. Here’s how to model the gap between a backtest’s trades and a paper account’s order history.

Read the post →
Your Backtest Has a Clock Problem, Even When Every Timestamp Is Right
August 23, 2026 · research

Your Backtest Has a Clock Problem, Even When Every Timestamp Is Right

A quote and a signal can share a timestamp while arriving in different orders. That tiny ambiguity can decide whether your strategy traded at all.

Read the post →
Why Your Backtest’s Open Orders Need a Clock
August 22, 2026 · research

Why Your Backtest’s Open Orders Need a Clock

A limit order can outlive the signal that created it. Three common ways backtests lose track of open orders, and a practical model that keeps them honest.

Read the post →
Why Your Backtest Gets the Dividend Wrong
August 21, 2026 · data

Why Your Backtest Gets the Dividend Wrong

A dividend can look like a sudden loss, a free return, or a cash balance your strategy never received. Three common modeling mistakes explain why.

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 →