How to Test a Trading Strategy: From Observation to Challenge Rules
Write down what you observed, turn it into a rule, test it with costs and check how its path behaves under explicit challenge rules. Work through an interactive example before choosing replay, manual execution or an armed strategy.
Senzoukria · Learn · Updated September 2026
A green equity curve answers one narrow question: what happened under the assumptions that produced it? It does not tell you whether your rule was defined before the test, whether the fills were achievable, or whether the account survived the path. Keep those questions separate.
Your output: one written hypothesis, one versioned rule, a test with explicit costs, a challenge-rule report and a decision about what to investigate next. A losing result is useful when it tells you which assumption failed.
Start with an observation you can verify
For example: “At a previously marked level, aggressive selling increased while the next closed bar did not extend the low.” Record the instrument, exchange, session, bar size, time zone and available coverage. Save the surrounding bars, not just the attractive moment.
The footprint groups executed trades by price and aggressor side. A liquidity heatmap requires separate depth observations. Trades alone do not show the orders that waited, disappeared or replenished. Heavy selling with limited downward progress can be an absorption candidate; it does not identify a participant or prove the next direction.
- Available: closed-bar prices, executed bid/ask volume, timestamps and the coverage actually loaded.
- Not established: hidden reserve, a participant’s intention, future price, or historical queue position.
- Control: mark the level using information available before the signal. A level discovered with tomorrow’s profile introduces look-ahead.
Ask for a testable rule, not a winning answer
Supply the observation and its limits. Ask the assistant to distinguish the evidence from an explanation, then list the fields a rule would require. The footprint assistant can propose chart configuration for you to apply; the heatmap assistant explains recorded evidence for a selected zone. Their contexts are different.
“Here are the instrument, session, closed bars and my pre-marked level. Describe what is observed without assigning hidden intent. Propose a deterministic entry condition using only these fields. State the lookback, invalidation, entry timing, exit conditions and missing data that could invalidate the test.”
This is a sample prompt, not a recorded model response. Check the proposal against the data. The Scripts assistant can help edit and execute a draft, but an executable draft is not evidence of profitable trading.
Write the complete rule before looking at results
A minimal research specification might say: evaluate a pre-marked level only on a closed bar; require that bar to close back above the level; enter at the next bar’s open; use a fixed stop and target; permit one position and no new entry after a defined session cutoff. Add the exact lookback and signal threshold before testing. This is a research template, not a recommended setup.
Research specification — pseudocode, not a Senzoukria API
On a newly closed bar:
confirm required data is present
use only the level fixed before this bar
evaluate the declared signal and session filter
if flat and every condition is met:
request entry at the NEXT bar open
attach the declared stop, target and size
Record every change as a new strategy version.JavaScript and Python strategies have historical backtest paths in the desktop. Python needs its embedded runtime. C++ scripts use a WebAssembly runtime with a limited interface and do not have historical backtests. Choose the language for the operation you need; they are not interchangeable execution environments.
First use Run to catch syntax errors, missing fields and invalid outputs on synthetic bars. Then save a version and test it on a declared historical interval. Do not label that first synthetic run a backtest.
Make costs and rule limits visible
Historical results depend on the fill model. The desktop strategy backtest makes decisions on closed bars, enters at the following open and models exits using bar prices with configured costs. It does not reconstruct an exchange queue. Document the assumption when both stop and target could be touched within the same bar.
The example below isolates the next question: what happens when daily outcomes meet account constraints? Its eight days were deliberately invented. They are not generated by the rule above or taken from a real account.
Hypothetical teaching example
Same days. Different constraints.
Eight invented days, two round trips per day. Change the size, costs or rules. The path stops at its first pass or breach.
- Net result
- $2,190
- Max close drawdown
- $670
- Costs charged
- $160
- Days evaluated
- 8 / 8
Inspect the inputs and day-by-day arithmetic
Gross P&L per one contract: Day 1: $500; Day 2: $450; Day 3: -$650; Day 4: $800; Day 5: -$200; Day 6: $650; Day 7: $350; Day 8: $450. Each day contains two completed round trips. No market data or fitted strategy produced this sample.
| Day | Gross | Costs | Net | Balance | Floor |
|---|---|---|---|---|---|
| Day 1 | $500 | $20 | $480 | $50,480 | $49,730 |
| Day 2 | $450 | $20 | $430 | $50,910 | $50,160 |
| Day 3 | -$650 | $20 | -$670 | $50,240 | $50,160 |
| Day 4 | $800 | $20 | $780 | $51,020 | $50,270 |
| Day 5 | -$200 | $20 | -$220 | $50,800 | $50,270 |
| Day 6 | $650 | $20 | $630 | $51,430 | $50,680 |
| Day 7 | $350 | $20 | $330 | $51,760 | $51,010 |
| Day 8 | $450 | $20 | $430 | $52,190 | $51,440 |
Fictional $50,000 account; at least three trading days. Equality with a loss limit is a breach. Drawdown uses closed daily balances, with no intraday excursions or trailing-floor freeze. This is a teaching model, not a firm’s rules, a backtest, or a probability of future success.
Three experiments to run
- Reset, then reduce maximum drawdown to $600. Day 3 crosses the trailing-close floor. Switch to a fixed floor: the same first three days remain above it. The rule changed; the market outcomes did not.
- Reset, then increase contracts. Both gross outcomes and per-contract costs grow. A larger position can reach a loss threshold before it ever reaches the target.
- Reset, then change the order of days. A reordering can change the first breach or qualification day. It is a sensitivity check using existing results, not a forecast or a calibrated probability.
Check the arithmetic
With one contract and $10 per round trip, each two-trade day costs $20. The first three net days are $480, $430 and −$670. Balance reaches $50,910, then $50,240: a close-to-close peak drawdown of $670. With a $600 trailing allowance the floor is $50,310 and the third day breaches it. A fixed $49,400 floor does not.
A daily-close model cannot detect an intraday breach that recovered before the close. A real rule may use unrealized equity, a trailing-floor cap, different session boundaries, minimum activity, consistency clauses or payout restrictions. Enter only verified rules and label every missing clause before interpreting a desktop challenge report.
Challenge the result before changing the rule
- Hold out later data. Pick development and evaluation periods before adjusting parameters. Repeatedly optimizing on the holdout turns it into training data.
- Change one assumption at a time. Raise costs, alter the session filter, examine nearby parameter values and inspect losing trades.
- Keep the denominator. Record how many strategy variants you tried, not just the one you kept. A striking result after many attempts needs stronger evidence.
- Separate balance from cash flow. Evaluation fees, resets, funded phases and payout timing need their own rules. The small teaching model above does not model them.
The desktop includes parameter search, walk-forward and robustness reports for supported historical tests, plus a challenge simulator with modeled lifecycle and costs. These reports summarize their protocol and supplied data. A favorable label is not a certification of future edge.
Choose execution deliberately
Use replay to inspect decisions and simulated account behavior before deciding whether a strategy belongs in a connected account. Analysis-only, manual execution and an armed strategy are different operating choices.
Senzoukria supports order routing and optional strategy automation through a compatible Rithmic account. Autopilot requires explicit arming, account permissions, configured limits, a mounted chart and the running desktop. Confirm the current rules of your firm and account. The general AI agent cannot arm it for you. Crypto analysis feeds do not imply Binance or Bybit order routing.
STOP disarms the strategy and requests flattening; check the broker response and actual positions. A request is not a guaranteed fill, and application limits do not remove slippage or connection risk. Keep a written procedure for disconnects and rejected orders.
Keep a research record
Save the rule version, source and coverage, test dates, costs, fill assumptions, account rules, failed checks and the reason for your next decision. Then change one thing you can name. That record is more useful than a screenshot with a large final P&L.
Continue with checking software and account permissions, or return to the learning path to strengthen the observation behind your rule.
Frequently asked questions
- Is the interactive example a real strategy backtest?
- No. Its eight daily results are invented for teaching. It applies visible costs and fictional rules to those results. It does not use historical prices, fit a strategy, identify a prop firm or estimate future success.
- Can I backtest JavaScript, Python and C++ strategies in Senzoukria?
- Historical strategy backtests support JavaScript and Python in the desktop. C++ scripting uses WebAssembly and does not have a historical backtest path. Running an editor draft on synthetic bars is a separate execution check, not a performance test.
- What does a simulated challenge pass mean?
- It means the supplied outcomes satisfied the rules actually modeled for that run. Missing intraday data, unmodeled firm clauses, costs or execution assumptions can change the conclusion. It is not a future pass probability, an account status or a payout guarantee.
- Can the AI place orders or arm my strategy?
- The general AI agent reads application context and can use configured web tools; it does not place orders or arm autopilot. A saved strategy can use the separate Rithmic autopilot path after explicit user arming, with the desktop open, a compatible connection and account permissions.