● Toolkit

Test your own trading idea. Get a verdict in numbers.

A free Claude Skill that takes your idea and your price file and returns GO, NO-GO or INCONCLUSIVE with the figures behind it. It carries the method and the scripts and leaves the idea to you: there are no signals in it and no strategy.

Download the skill ↓ Free · MIT licence · no signup · zip, 161 KB, 33 files Also on GitHub: apexstoa/strategy-tester

What it does

You bring the idea and a CSV of price bars. Claude asks up to four questions, then runs the same steps every time with the Python scripts in the download, so every figure you are shown comes from a script.

  1. Writes the test down before any result exists. Claude drafts the declarations from your words: the idea, the trade, your fee and spread, and any grid of values you name. The method settings arrive filled in and tagged [default], and you accept the draft or change any line. One command then freezes it with a hash, and the later scripts check that hash before they run.
  2. Checks the data. Gaps, duplicates, out-of-order rows and impossible bars are reported and listed. Nothing is filled or repaired for you.
  3. Builds the events without look-ahead. A clock time is converted from local time to UTC for each date, so daylight saving is handled. A rule on past bars only ever receives bars that have closed, and a replay test looks for hidden state. You can also bring your own list of event times.
  4. Measures the raw effect against random entries. The same trade is started at random times and the event has to beat it. Fee plus half the spread is charged on every fill, at three cost levels, with the break-even cost printed. The position size calculator on this site shows the same cost arithmetic for a single trade.
  5. Runs every cell you declared. The whole grid is reported, and the best cell is compared with the best cell the same search finds on random entries.
  6. Deflates the best cell. Probabilistic and Deflated Sharpe Ratio (Bailey and López de Prado) at the trial count frozen in the declarations, which also counts earlier versions you say you looked at.
  7. Reads the out-of-sample segment once. The later part of your data is held back, opened a single time for the chosen cell, and a second look is refused by the script.
  8. Writes the verdict either way. A FINDINGS.md that opens with GO, NO-GO or INCONCLUSIVE, the number that decided it, every gate, the declared grid and the backtest figures by year. An INCONCLUSIVE says how many event days the test would need.

How to install it

  1. Download the zip with the button above.
  2. Unzip it into ~/.claude/skills/ to have it in every project, or into .claude/skills/ inside one project to keep it there. Either way you end up with a folder called strategy-tester holding SKILL.md.
  3. Open Claude Code and say what you want checked, for example: “I think this happens after that. Can you check? My data is at this path.” Claude picks the skill up from there, or you can call it by name with /strategy-tester.

The folder is plain text, 33 files in all: one SKILL.md, 9 reference files, an empty rule template, 10 Python scripts, 10 test files for them and the generator of the synthetic bars those tests use. Read all of it before you use it. The scripts need Python 3.9 or later and nothing else: standard library only, nothing to install, and they open no network connection. If your idea is a rule on past bars, Claude writes it as a small Python file, rule.py, which the scripts then run on your machine, so read that file before you accept the draft. The scripts test one instrument at a time with a market entry, a fixed hold and an optional fixed stop and target. If you use the Claude app in place of Claude Code, the same zip can be added there as a custom skill.

A worked example, and it is a NO-GO

The folder carries one real test from our own research archive, start to finish. We picked one that came back negative, because that is what most honest tests do and it shows the method earning its keep. It was run before the scripts in this download existed, and the walkthrough says which script does each step now.

The idea: go long BTC between 19:00 and 21:00 when a 15-minute candle closes green and above the day’s VWAP, stop at the last swing low, take profit at a fixed multiple of the risk. Before any result was looked at, the declarations fixed the data (1-minute bars, 2020-01 to 2026-05), a grid of 600 cells, a set of controls including a random-candle entry, and a pass mark that had to hold in both the development and the out-of-sample period.

TargetWin rateBreak-evenNet per trade
1R51.4%50.0%−0.31R
2R34.4%33.3%−0.30R
3R25.9%25.0%−0.29R
5R16.9%16.7%−0.25R

1,394 trades in the primary cell. Net is after an 8bp round trip. R is the distance from entry to stop. Backtest, 2020-01 to 2026-05.

  • The entry was a coin flip. At every target the win rate sat about one point above what an entry with no information gets, and the random-candle control matched it.
  • The development period looked like a result. At 5R, 2020 to 2023 showed +0.234R per trade before costs with a t of 2.8. The out-of-sample period, 2024 to 2026, showed −0.104R. The pass mark asked for both.
  • Costs were measured against risk. The median stop was 33bp away, so costs took 0.24R from every loss (8bp) and 0.17R from every win (5.5bp).
  • The whole grid was counted. 0 of 600 declared cells were net-positive. The strongest window in the grid by t-statistic was still net negative after costs.

Verdict: NO-GO, written up and closed the same day. The full walkthrough, with every table, is in references/worked-example-no-go.md inside the download.

What it is, plainly

The skill is a method for testing your own ideas. It holds no trading signals and no strategy, and nothing in it or on this page is financial advice. A GO from the method means an idea passed the tests you declared in a backtest. It is not a forecast, and trading carries the risk of loss.