Trading Book · crypto research / 28 September 2026
Can code reproduce
the April crypto trades?
An exact nine-position fill reconciliation, a symbol-blind three-mode strategy with 100% April candidate recall, and the six-month test that shows what the archive still cannot recover.
As of 28 September 2026. The broad exact-recall strategy remains research.
The narrower manual_tis_automatic_8_5r profile is deployed in production.
Both trading agents remain at zero dynos; its scheduled lifecycle runs inside
cryptoo-service.
What “exact” can and cannot mean
The Delta fill export can be replayed exactly. It contains nine April positions with at least $100 entry notional: five winners, four losers and +$561.34 net after recorded commissions. At ₹84/$ that is about ₹47,152. The eight limit-entry positions made +$647.18 (about ₹54,363) with five winners. This is the closest archived cohort to the reported ₹60,000 manual result; a different FX rate, venue, cohort boundary or omitted funding can explain the remaining difference, but the archive does not prove which one.
The decision rule cannot be recovered exactly from that export. The archive does not contain rejected watchlist names, the operator's ranking notes, theme scores, or the sequence of every stop amendment. The five persisted conditional orders also used chart pivots with different lookbacks. Treating the nine coin names and dates as a rule would produce a perfect replay by lookup, not a tradable strategy.
I implemented the strongest falsifiable version instead:
- an exact fill-tape reconciliation for the nine recorded positions;
- a symbol- and date-blind entry-family classifier which includes every one of those positions from its pre-entry daily information;
- an hourly six-month execution replay with $100 planned stop risk, 5R or 8R targets, fees, slippage, funding, cash, contract multipliers, simultaneous positions and open-position marks.
The recovered entry family
The archive shows three entry modes rather than one threshold:
| mode | observed April use | deterministic recovered envelope |
|---|---|---|
| leader recovery | VVV, ARB, SWARMS, BIO, NEIRO, PNUT | BTC above EMA50; EMA20 above EMA50; price above EMA50; momentum ≥30%; RS vs BTC ≥10pp; volume5/20 ≤0.45; close within −5% to +5% of EMA10 |
| resting breakout | ENA, PENDLE | same market/trend checks; momentum ≥5%; RS ≥−6pp; volume5/20 ≤0.35; close within −5% to +4% of EMA10; nearest confirmed hourly resistance becomes the pending trigger |
| deep pullback | M | same market/trend checks; momentum ≥50%; RS ≥30pp; close at least 8% below EMA10; volume5/20 ≤1.0 |
All modes require at least $25,000 mean daily turnover. Stops are structural five-day lows with a historical-at-signal ADR floor. The replay sizes from the actual simulated fill, requires 5R or 8R at that fill, uses no breakeven rule, and exits at the planned target, daily EMA20 invalidation, protective stop or 21-day cap.
These are recovery bounds, not independently discovered optimal values. They were set to contain the known April book and therefore are in-sample.
April parity test
The classifier emits a candidate for 9/9 manual positions (100% recall). It never reads a coin name or calendar date. The mode assignment is:
- leader recovery: ARB, BIO, NEIRO, PNUT, SWARMS, VVV;
- resting breakout: ENA, PENDLE;
- deep pullback: M.
That is candidate parity, not unique trade parity. The same rules admit 28 additional distinct April symbols. Once mechanical order timing, cash and capacity are applied, the $6,000 5R simulation enters five of the nine manual names; false-positive candidates consume cash or slots before four others. This is direct evidence that the missing human ranking decision matters.
The recovered rules therefore answer “would the strategy have found every manual trade?” with yes, and “would it have taken only those trades?” with no. No available archived field separates the nine from every other candidate without using their identities or later returns.
Six-month backtest
Period: 27 March through 26 September 2026, 91 surviving perpetuals with complete frozen inputs. Risk is $100 per trade. Maximum entry notional is $1,200, eight simultaneous positions are allowed, and aggregate initial risk is capped at 8 × $100. Entry and exit each pay 5 bps fees and 5 bps slippage; funding is charged at 3 bps per day. Pending triggers use mark OHLC and fills use the next trade-bar open, so a trigger cannot fill inside the same hourly bar.
| variant | capital | closed | wins | win rate | closed P&L | open P&L | total P&L | PF | max drawdown |
|---|---|---|---|---|---|---|---|---|---|
| 5R, 0.25 ADR stop floor | $6,000 | 168 | 45 | 26.8% | $3,209.24 | $926.07 | $4,135.31 | 1.56 | 24.3% |
| 8R, 0.25 ADR stop floor | $6,000 | 151 | 38 | 25.2% | $1,970.87 | $1,111.87 | $3,082.74 | 1.39 | 26.0% |
| 5R, 0.50 ADR stop floor | $6,000 | 151 | 40 | 26.5% | $3,023.68 | $1,397.54 | $4,421.22 | 1.50 | 23.4% |
| 5R, 0.25 ADR stop floor | $12,000 | 168 | 45 | 26.8% | $3,744.00 | $1,343.08 | $5,087.07 | 1.53 | 15.3% |
The $6,000 5R/0.25-ADR version made $840.68 in the first three months and $3,189.77 in the second three. The 5R/0.50-ADR version made $1,720.88 and $2,462.78 respectively. The split is a robustness diagnostic, not untouched out-of-sample validation: the April trades used to define the envelope sit in the first half, and this market history has already been researched repeatedly.
More capital does not scale profit linearly here. Doubling cash from $6,000 to $12,000 raises total marked P&L from $4,135 to $5,087 because the $1,200 per-position notional cap, contract granularity and signal ordering still bind.
Higher-win, $4,000 automatic profile
The exact-recall rule is intentionally broad, so it is the wrong rule to automate. A separate profile narrows admission to dry pullbacks in leaders:
- BTC must be above its completed daily EMA50;
- EMA20 must be above EMA50 and the coin must close above EMA50;
- 30-day momentum must be at least 5%;
- 30-day relative strength versus BTC must be at least +10 percentage points;
- five-day mean volume divided by twenty-day mean volume must be at most 0.28;
- the completed daily close must be 4%–8% below EMA10;
- the structural stop must be 0.1%–15% away and at least 0.25 historical ADR;
- the proposed fill must still offer at least 8.5R;
- choose at most one new plan per day, ranked nearest to a 4% pullback, with a three-day cooldown per symbol.
At $12,000 research capital, a $5,000 maximum notional, and $100 planned stop risk, the exact hourly portfolio replay entered 19 positions and closed 18. Nine closed as winners: 50.0% win rate. Closed trades made $4,074.44; one open ZORA position added $473.43 at the final mark, for $4,547.88 total marked P&L. Profit factor was 4.76 and maximum drawdown was 6.99%. The engine charged fees, slippage and funding and made no breakeven stop move.
This profile was selected after comparing pullback depth, dryness, ranking and target thresholds on the same history. The dry-volume ceiling of 0.28 removes one losing selection compared with 0.35; the 8.5R target is the smallest tested nearby target for which closed P&L exceeded $4,000. Those facts make the result in-sample and vulnerable to selection bias.
It also fails a temporal stability test. The first half closed 11 positions, won four (36.4%) and made $354.99. The second half closed seven, won five (71.4%) and made $4,192.89 including the open final mark. Most profit came from the later regime, so this is not evidence that a stable 50% win rate has been recovered.
manual_tis_automatic_8_5r now has a dedicated production workflow. At 00:45
UTC the planner reads completed daily candles, calculates the same candidate
bracket, ranks at most one candidate and persists a 48-hour plan with the
three-day symbol cooldown. At minute 06 of every UTC hour the executor reads the
last completed H1 candle, invalidates a stop touch or BTC EMA50 failure, and
arms a crossed trigger. It submits only while the current mark is between stop
and limit, using an IOC limit bracket with the structural stop and 8.5R target
attached. An unfilled order cannot rest and an unknown venue outcome is not
retried automatically.
Production sizes from $30 planned stop risk, with a $5,000 notional cap, $240 aggregate/long risk cap and a $12,000 capital envelope after a 2% reserve. The historical replay above remains the measured $100-risk result. Production records the confirmed average fill and filled contracts. It applies no breakeven or generic chandelier move; positions also close after a completed daily close below EMA20 or 21 elapsed days. The historical headline remains in-sample and is not a production return forecast.
Why this does not produce the manual win rate
The exact tape is 5/9 (55.6%), or 5/8 (62.5%) for the limit-entry cohort. The mechanical rule is about 26% because it trades the whole recovered envelope, including candidates the human did not choose. Large targets make that win rate economically possible—the 5R version remains profitable despite roughly three losers per winner—but it does not satisfy a demand for both the manual selection rate and mechanical 5R exits.
The prior leader_pullback rule is a cleaner winner-profile strategy: it keeps
the momentum, RS, EMA10 and dry-volume traits and deliberately rejects ARB,
ENA and M. That improves selectivity by ceasing to reproduce every manual trade.
The two goals conflict in this nine-trade sample.
Implementation and decision
The reusable classifier and hourly pivot function are in
recovered_manual_tis.py; nine feature-level tests
pin every April position without symbol/date lookup. The complete replay is
crypto-exact-manual-2026-09-28/study.py, with full event and trade ledgers in
the variant JSON files.
The exact-recall strategy is not enabled for automatic trading. Its 26% win rate, 23–26% drawdowns, 28 extra April symbols, survivor-universe limitation and in-sample recovery prevent an honest claim that it recreates the manual selection skill. The narrower 50% / $4,000 profile is deployed as an automatic production algorithm at the user's direction. Its 36.4% first-half win rate and seven closed later-half trades remain material limitations. Production plans, submissions, fills and exits now provide the forward evidence needed to verify or revise the final ranking rule.
Reproduction
cd /Users/divyanshjain/Documents/my_repos/crypto-exact-manual-2026-09-28
/Users/divyanshjain/Documents/my_repos/crypto-service/.venv/bin/python study.py
cd /Users/divyanshjain/Documents/my_repos/crypto-service
.venv/bin/pytest -q tests/strategies/test_recovered_manual_tis.py
.venv/bin/ruff check crypto_service/strategies/recovered_manual_tis.py tests/strategies/test_recovered_manual_tis.py
.venv/bin/mypy crypto_service/strategies/recovered_manual_tis.py