NIKKHAH CAPITAL
Layer 2 — the lab

Backtests

This is where the rules get tested against history before they touch money. The systems are my own mixture of known strategies — no gurus, no borrowed names.

Status

The Layer 2 engine is built and running — a clean rewrite after the first backtester turned up bugs (shared trade objects getting costed twice, a breakout box that let the breakout day define itself, dropped volume data). 34 unit tests prove the mechanics before any number below gets quoted. Execution is modeled honestly: stop-entries fill the next day (never the signal close), gap-through-stop fills at the open, and each day's low is checked against the trailing stop before its high can raise it. Options prices are Black-Scholes estimates with constant volatility, labeled as estimates everywhere.

Current rankings — 20 tickers × 10 years, ranked after the fact

Costs modeled ($2.60 commission + $5.00 slippage per trade), 5-position cap enforced, no lookahead. A separate money backtest re-prices everything at IBKR's actual tiered commissions — the numbers below use engine costs; the verdicts use both. Every trade ranked best → worst by realized P&L.

Failed rally → bear call spread (risk-off only)

114 trades · profit factor 0.84 · expectancy −$8.16/contract. Rejected. An earlier 28-trade sample looked profitable — the larger sample says it was noise. The regime gate still filters worse trades, but it filters losers into smaller losers, not winners.

Failed rally → stock short (risk-off only)

97 trades · profit factor 0.79 · expectancy −$104.39. Rejected. Built to test whether the spread was the problem (the D→DS lesson applied to A: stock keeps the full fade instead of capping it). It wasn't the instrument — the thesis itself loses in both forms. Fading rallies on this universe is dead; both versions stay dead.

Momentum → bull call spread

445 trades · profit factor 1.09 · expectancy +$9.82. Rejected. Statistically zero, with a ~$7.2k max drawdown against $4.4k total profit. The spread clips the fat right tail that makes momentum work — which is why the stock version exists.

Momentum → stock (relative-strength filter, ATR trailing stop)

233 trades · profit factor 2.05 · expectancy +$262.02. Promising but unproven. Honest execution (stop-entry, gap fills) shaved the earlier 2.16/239-trade print down to this — the edge survived honesty, which is the point. Caveats stand: the 20-ticker universe is hand-picked large-cap winners (selection bias). The position cap audits itself now: 26 skipped trades averaged $165 vs $262 traded — the cap filters below-average trades, keep it.

Momentum + earnings catalyst → stock

63 trades · profit factor 1.28 · expectancy +$194.75. Unproven. Breakouts within ±7 days of earnings — the cross-reference suggested this filter (61% win in the first cut), but the full engine run with honest execution lands below the 1.5 bar on too few trades. A research lead, not a system.

Pullback mean-reversion → stock

409 trades · profit factor 0.88 · expectancy −$57.71. Rejected. 52% win rate, negative expectancy — the classic mean-reversion trap: wins are small, losers are big. Built as the uncorrelated companion to momentum; it didn't earn the slot. Rejected honestly, like the rest.

Value buy → stock at 50% margin of safety

4 signals in 5 years — untestable with available data. Free fundamentals aren't point-in-time (filing dates unknown), so no honest historical backtest exists. This one gets scored live, forward, in the prediction ledger — or not at all.

Overnight gap continuation → stock

460 trades · profit factor 1.11 · expectancy +$51.88. Rejected. Chased the most documented anomaly in equities (overnight returns) with a pre-committed 2% gap trigger — and it still failed. PF 1.11 is statistically zero, and the $54k max drawdown dwarfs the $24k total profit. The anomaly exists; it's just not tradeable this way.

Close-location momentum → stock

464 trades · profit factor 1.26 · expectancy +$106.36. Unproven. Up days closing in the top 10% of their range, entered on a stop above the high. Same neighborhood as the earnings system (1.28) — below the 1.5 bar, above zero. A research lead, not a system.

The system watches itself

A quant's system has a kill switch: rolling 20-trade profit factor ≥ 1.5 → full size; 1.0–1.5 → half size; below 1.0 → flat, stop trading it. Current reading: 0.61 — the switch is engaged. The long-run numbers clear the bar, but the last 20 closed trades say the edge is cold right now. The system says what it says: stand down until the gauge recovers. Sizing follows quarter-Kelly math — $1,000 risk per trade on a $25k account is 4%, inside the professional band.

The bar to clear

Before any setup graduates to paper trading: profit factor above 1.5, across 100+ historical trades per setup. Anything less stays in the lab. Right now, everything is in the lab.


Full engine audit with the unit tests and the retraction of the earlier v1 numbers lives in the repo at engine/ENGINE-AUDIT.md. Losing results stay published — a lab that only shows winners is marketing, not research.

Nikkhah Capital — a private trading practice. Nothing here is financial advice.