// framework study VC-001 · ICT unicorn model · SSOT v1.1 · published in full

The Unicorn, given the full institutional treatment.

We froze a literal reading of the public "Unicorn" tutorial — Breaker overlapping Fair Value Gap — into a testable specification, primed five years of data across five instruments, pre-registered every criterion, and pushed 991 trades through the pipeline with worst-case fills. This page publishes the methodology and the verdict together — including the parts a marketing department would delete.

NOT VALIDATED — under specification v1.1 Publishing a failed validation is the point. It is what makes a passed one worth something.
SEND ME THE STUDY » Validate your strategy
Opens an email to studies@vannacharm.org — tell us who you are and what you teach. We reply with the full PDF and start a conversation. No forms, no funnel, no commitment.
991
Filled trades
5 × 5
Instruments × years
30.5%
Win rate
0.80
Profit factor
−0.17R
Avg trade
16
Configs tested
// visual proof

Sample trades from the actual archived log — exactly what the engine qualified.

These are not illustrations. Each chart below is a real trade from the 991-row baseline log, reconstructed from the warehouse bars and the detector’s own zone geometry. The exact same engine that produced every statistic on this page also drew these annotations.

2024-11-01 · NQ 15M · LONGWIN +3.17R
1234523:4501:3003:1505:0006:4508:30TP 20,127.00IN 20,085.50SL 20,072.63
  • 1. Sell-side sweep takes the most recent unswept SSL
  • 2. Bullish MSS — displacement body-closes above the prior swing high
  • 3. Unicorn zone = Breaker fresh FVG overlap
  • 4. Limit fill at the zone near edge
  • 5. DOL target hit — unswept 15m swing high · +3.17R
2024-02-08 · EURUSD 15M · SHORTLOSS −1.25R
1234519:4521:1522:4500:1501:45TP 1.07754IN 1.07828SL 1.07869
  • 1. Buy-side sweep takes the most recent unswept BSL
  • 2. Bearish MSS — displacement body-closes below the prior swing low
  • 3. Unicorn zone = Breaker fresh FVG overlap
  • 4. Limit fill at the zone near edge
  • 5. Price reverses; stop hit · −1.25R

No cherry-picking. The wins and losses above are the first clean examples matching broad criteria (compact hold, typical R-multiple) at the top of the search. Both trades were identified and filled by the same detector that produced every statistic in this study — anything in either direction, we publish both.

// the methodology

From tutorial prose to a frozen, hash-stamped specification.

You cannot backtest an adjective. Tutorials are written to teach, not to specify — so the first and hardest work is converting prose into rules a machine can execute without anyone quietly deciding anything along the way.

01 — Establish the single source of truthCollect primary sources, resolve precedence, build algorithm-ready definitions

We collected four primary sources — the Unicorn tutorial, the Breaker Block guide, the Fair Value Gap guide, and the Order Block guide — and rebuilt them into one internally consistent document set: 14 algorithm-ready definitions (swing, sweep, MSS, displacement, Breaker, FVG, Unicorn zone, premium/discount, bias, targets, buffers), a frozen rule sequence, and a parameter table.

A strict precedence hierarchy governed every decision: the strategy document is authoritative for the strategy’s trade parameters; each component document is authoritative for its own component. Where sources still disagreed, the ambiguity was parameterized rather than silently resolved. The finished spec was version-stamped and SHA-256 hashed.

02_Canonical Definitions.md — D1–D1403_Strategy Specification.mdSPEC_HASHES.txt · SHA-256v1.0 → v1.1 frozen
02 — Resolve every documented conflict14 conflicts logged, each with a disposition — on the record

Read carefully, the source material contradicts itself. We logged 14 conflicts in a public Conflict Register. Three stop-loss rules at materially different prices. Buffers in "pips" for index futures that don’t have pips. A take-profit — "the next draw on liquidity" — never algorithmically defined anywhere.

  • RESOLVED (7) — one canonical reading chosen, rationale given.
  • PARAMETERIZED (5) — genuine ambiguity; both readings kept as baseline/variant so the backtest measures the difference. This is the philosophical core of the method.
  • ASSUMPTION (2) — sources under-specified; SSOT supplies a proxy definition flagged for owner sign-off.
01_Conflict Register.md — C1–C14C3 stop rules · C7 breaker width · C9 entry level · C11 DOL · C12 bias · C14 session
03 — Visual confluence — before a single backtestHuman and algorithm must agree on what a Unicorn is before the machine judges how it performs

A detector that finds the "wrong" setups produces precise numbers about nothing. Before any statistics, we built the detection engine and put its output on charts: annotated 2024 setups on MNQ and EURUSD — every sweep, structure shift, Breaker and FVG overlap drawn by the machine and checked by eye against the source material’s own examples.

That review surfaced eight micro-degrees of freedom no tutorial ever mentions — may the Breaker candle be the broken-swing candle itself? which FVG forms the zone when the leg prints several? how long may a sweep wait for its MSS? Each was frozen as a written decision (FD-1…FD-8) before the backtest ran. Left unfrozen, these become silent researcher degrees of freedom — the raw material of overfitting.

05_Frozen Implementation Decisions.md — FD-1…FD-8POC visual artifact · six annotated setupsPOC → pipeline deltas logged
04 — Prime the data — where most backtests silently dieQuality-gate every bar before the pipeline sees it. The gates caught a fatal dataset on first run.

All five timeframes (1D → 5m) are built from one underlying series per instrument — continuous, back-adjusted futures and institutional FX feeds — with every timestamp normalized to New York. The data must pass quality gates: OHLC integrity, duplicate-bar removal, missing-session limits, and a session-coverage floor (≥ 60% median weekday bars).

The gates earned their keep immediately. The first gold dataset was a far-month contract averaging ∼17 bars a day — sparse enough to silently produce degenerate structure, monstrous ATR stops, and false signals. The coverage gate failed loudly; gold was remapped to a dense micro-gold feed (∼95% coverage) with correct contract economics. An unprimed backtest would simply have reported wrong numbers with full confidence.

1m/5m/15m/1H/4H/D from one seriesAmerica/New_York normalizationCoverage gate: median weekday bar coverage ≥ 60%10 residual interpretations (IN-1…IN-10)
05 — Build the pipeline — parameterize everything10-parameter matrix, no lookahead enforced structurally, pre-registered pass/fail criteria

Every ambiguity from Phase 02 became a switch in a 10-parameter table — swing width, breaker zone width, entry level, stop rule, ATR buffer, target logic, bias filter, HTF-array filter, session filter, order expiry. The baseline was frozen by spec before any run; then single-parameter sweeps measured the cost of each documented ambiguity.

  • No lookahead, enforced structurally: swings confirm only after right-side closes; MSS on body close only; entry orders placed only after the zone-completing bar closes; bias/HTF from already-closed bars.
  • Worst-case execution: when stop and target land in the same bar, stop assumed first (both readings reported — affected 2.4% of fills). Slippage and commissions on every trade; fixed-fractional 0.5% risk; futures contracts rounded down.
  • Pre-registered pass/fail: ≥ 100 pooled trades · profit factor ≥ 1.25 after costs · positive out-of-sample expectancy · drawdown < 2× Monte-Carlo median. In/out-of-sample split fixed by spec to measure regime stability, not optimizer luck.
  • Reproducible: 15 unit tests on synthetic candles; version-pinned environment; raw trade logs archived.
04_Validation Protocol.md10-parameter matrix · 16 configurationsCriteria pre-registered before first run1,000-path Monte Carlo
// results

Then we ran it — and published exactly what came out.

Five instruments, 2021–2025, 15m identification with lower-timeframe fills, worst-case execution. The frozen rule set is not validated.

Pre-registered checks

agreed before the first run · spec 04 §6
✔ PASS
Sample floor ≥ 100 trades
991 pooled
✘ FAIL
Profit factor ≥ 1.25 after costs
0.80
✘ FAIL
OOS expectancy > 0
PF 0.88 IS → 0.60 OOS
✔ PASS
DD < 2× MC median
−58.4% vs −61% median

Cumulative performance, 2021–2025

running total of per-trade R multiples · pooled across instruments · worst-case fills
No daily-bias filter — 3,276 trades, −608R Frozen baseline — 991 trades, −166R NY-AM killzone only — 55 trades, −4R
0R−100 −200−300 −400−500 −600 20212022 20232024 20252026 −608R −166R −4R

No documented variant reaches profit factor 1.0 — let alone the pre-registered 1.25. Removing the daily-bias filter more than triples the trade count and nearly quadruples the bleed. The killzone flattens the curve but collapses to 55 trades in five years.

// what the data says

A failed validation is not an empty result — it is a map of where the edge isn’t, and where it might be.

This is what gurus rarely get to see about their own material: not whether it feels right on a chart, but which of its components carry weight, which are decorative, and which are actively harmful.

1 — The negative edge is structural, not an interpretation artifact

Sixteen configurations spanning every documented reading of the rules land in a tight PF band of 0.77–0.90, all unprofitable after costs. The endless comment-section wars — stop at the FVG candle or the swept extreme? single-candle breaker or the full sequence? edge entry or 50%? — are arguments about ±0.03 of profit factor on a losing proposition.

EVIDENCE — All structural sweeps: PF 0.77–0.80 · same-bar ambiguity affects only 2.4% of fills

2 — One filter saves drawdown, one adds nothing, one is the signal

The daily-bias filter cuts the bleed by 63% (−608R → −166R) without much improving profit factor. HTF confluence adds nothing (PF 0.81 without it). The NY-AM killzone is the only strong conditioner in the entire rule set (PF 0.90), but collapses the sample to 55 trades in five years — still unprofitable, but directionally the only component that lifts the numbers.

EVIDENCE — BF-0: PF 0.77, −96% DD · HTF-0: PF 0.81 · SF-1: PF 0.90 on n=55

3 — DOL exits beat every fixed-R target. And 1:1 is the worst documented variant.

The fuzzily-defined "next draw on liquidity" hierarchy — once forced into an explicit 3-tier algorithm — beats every fixed-R alternative (PF 0.80 vs 0.51–0.77). The worst documented configuration is a fixed 1R target: PF 0.51. The intuition embedded in the exit logic is real; it just cannot rescue an entry with no edge.

EVIDENCE — DOL hierarchy 0.80 · fixed 1R: 0.51 · 2R: 0.77 · 3R: 0.75

4 — What little performance exists is regime-dependent

In-sample PF 0.88 → out-of-sample PF 0.60 with −0.36R per trade. The split was frozen by spec before running — this is not an optimizer artifact, it is the strategy telling you its behaviour drifts with market regime. Any honest deployment needs a regime condition, which the public material never supplies.

EVIDENCE — IS PF 0.88 → OOS PF 0.60 · OOS win rate 27.0% · split pre-registered at 70/30
What a validated curriculum could have taught

None of this is trading advice — it is what the data would have handed an educator who validated this exact rule set before teaching it:

a

Teach the window, not just the shape. The overlap geometry concentrates whatever quality it has inside the NY-AM killzone. PF 0.90 vs 0.77 unfiltered — a course that says "this is a 09:30–11:00 ET pattern, expect roughly one setup per month per instrument" is telling students the truth.

b

Sell the bias filter as drawdown control, not win-rate magic. It barely moves profit factor but cuts the account bleed by two thirds. −166R vs −608R cumulative; −58% vs −96% drawdown.

c

Cut the HTF confluence homework. The PD-array requirement added nothing here — PF 0.81 without it. A validated curriculum could simplify its checklist and lose no measurable quality.

d

Never teach fixed 1:1 targets on this model. It is the single most destructive documented configuration. PF 0.51 — wins 43% of the time, which is precisely why it feels good and bleeds fastest.

e

End the stop-placement debate. FVG-candle stops vs swept-extreme stops: PF 0.79 either way. The feud is noise. Spend the teaching hours on the session filter instead, where the signal actually lives.

f

Say the honest headline out loud. As a literal, mechanical rule set this model does not survive costs — so if a trader using it profits, the edge lives in the discretionary layer. That is exactly the thing a mentorship claims to add. It is also exactly the thing we can measure next.

This study validates one frozen, literal reading of the public material (spec v1.1, SHA-256 hashes published), under worst-case execution. It does not speak for any individual trader’s variant — your bias method, your session windows, your setup selection are different strategies. That is the point. If your variant is better than this mechanical floor, the difference is measurable. If it isn’t, you want to be the first to know — not your students.

// private validation studies · limited concurrent engagements

Your strategy. Our rigour. Your proof.

The exact same process — SSOT, conflict register, visual confluence, primed data, pre-registered pipeline — runs as a private, NDA-backed engagement for your strategy, exactly as you trade and teach it. Not our reading of your rules: yours, frozen and signed off.

NDA FIRST · YOUR RULES, FROZEN & SIGNED OFF · PRE-REGISTERED CRITERIA · RESULTS CONFIDENTIAL, BOTH WAYS