# METHOD · Umar Punjabi LIVE record audit + rules backtest (DRAFT, 30 Oct 2026)

Two separate questions, never mixed: **(A) does his published list match his own live streams?** and **(B) do the rules he states on
stream make money on history?** Neither tests the trades he takes with his own "key level" indicator, which is not public.

## Sources (his first, ours second)

1. **His live streams** ("Umar Punjabi Live", 140 numbered public streams, #1 14 Jan → #140 29 Oct 2026, plus 4 renamed videos). Audio
   supplied by our download agent; every quote carries stream number, date and time. Readings: YouTube Hindi captions (one reading; the
   English caption track is a machine translation of it and is never used as his words) and our Whisper large-v3-turbo transcripts in
   Hindi and English (the second reading). A quote reaches the screen only with two agreeing readings or an owner listen.
2. **His pages**, read 29 Oct 2026: umarslivetradingrecord.manus.space (61 rows) and umarsviptrackrecord.manus.space (124 rows; two Aug 25 BE rows carry realizedR 0.5); the rows
   are hard-coded in the pages' JavaScript, exported here verbatim (`data/his_record/`). Wayback copies of 14 Oct 2026 exist; the 14 Oct
   list (56 rows) is a strict subset of today's. 116 live descriptions (24 Mar → 23 Oct 2026) and his VIP-access video (`_QOO33JjC7A`,
   29 Oct 2026) for the money trail.
3. **Price data:** Dukascopy 1-minute BID + ASK. Gold (XAUUSD) 1 Jan 2015 23:00 → 28 Oct 2026 23:59 UTC (4,189,024 minutes); EURUSD
   1 Jan → 28 Oct 2026. HistData (BID only) as a cross-check on the record replays (agrees on the first event in 39 of 40).

## (A) The list vs his streams

- **Stream layer:** every public stream read for trades; one row per trade (`trades_called.csv`): side, kind (LIVE, PRE_STREAM, VIP_REVIEW,
  REVIEW, OPTIONAL, NOT_TRIGGERED, HYPOTHETICAL), entry / stop / target as spoken, partials, break-even moves, his stated outcome, his words.
- **Time:** stream time → UTC from the stream's start timestamp; checked against three spoken order prices (within about a minute).
  One gold pip = $0.10 as he uses it.
- **Price layer** (`trades_checked.csv`): a buy fills at the ASK and exits on the BID, a sell the reverse; pending orders fill when price
  crosses the spoken level; time entries fill at the next minute's open and are re-run at −2…+2 minutes ("robust" = same outcome in all
  five). Stop counted first when stop and target share a minute.
- **Label standard (one rule for every row, computed, not typed):** `reconcile.py` derives each label from the per-row evidence table
  `data/record_audit/record_v2_evidence.csv` (what he said, when, which reading). His words on THAT day's public stream decide (or his first
  review next stream if the trade was open at stream end); price never decides a label for his own trade. **MATCH** = he took that side and his
  final stated outcome equals the list (RR within his own partial convention) · **LISTED DIFFERENTLY** = on stream, listed differently (bigger
  result / other side / other outcome / against himself) · **NOT ON THAT DAY'S PUBLIC STREAM** (no stream that day / stream not public: #64,
  #124, the 17 Jun FOMC live / setup left for viewers, not taken / "unofficial", "won't add" / he says no trade) · **PENDING FRAME** (needs his
  chart, or he never states the RR / exit). Never "false" or "invented". Direction = "in the page's own data" (the public page shows no
  Buy/Sell column). Readings: W+C (Whisper + captions agree) or C (captions only, Whisper pending); rules in RECORD_AUDIT.md §1.
- **Fair side, always next to the count:** wins he took live that are not on the list either, rows listed against himself, levels he left for
  viewers that were reached later.
- **Sources for the money trail and the page** (live descriptions, VIP rules, "Verified" wording, FortressFX's published specs, the stream
  index): RECORD_AUDIT.md §7, so every number in this pack traces to a file inside it.
- **His list's arithmetic** as published: SL = −1R, BE = 0, TP = the listed RR. 133.5R over about 9.23 months = 14.46R a month; × 2% = 28.9% a
  month, simple, before costs. No single "real R per month" is published: it depends on the standard (signal vs his own exit), 5.7–12.7 R/month.

## (B) His stated rules, coded

- **Pre-registered** before the first run: `data/backtest/prereg_2026-10-29_S1_S2.md`, git commit `4d4b85c` (29 Oct 2026); code frozen in
  `a8f8082` before the first full-history run. No parameter changed after results were seen.
- **S1 Asia sweep** (his #136 strategy) and **S2 London sweep → BOS → retest, New York** ("his checklist without his key level"): his words next
  to every rule in `backtest/strategies/sweep.py`; ambiguities are named variants, all published.
- **His session and time zone** (`backtest/structure.py`, zoneinfo per day): Asia box 20:00–02:00 New York, London box 08:00 London → 08:00 New
  York, NY open 08:00 New York, flat 17:00 New York; UK / NYSE holidays; FOMC days and 30 minutes before NFP / CPI skipped (S2). The calendars
  are in `data/backtest/calendar/` (federalreserve.gov, bls.gov via the Internet Archive, gov.uk).
- **Costs:** the real Dukascopy spread at each fill + $0.05 slippage on market/stop fills + commission $0.07/oz round trip ($7/lot); EURUSD 0.1-pip
  slippage, 0.7-pip commission. Inside FortressFX's own published account specifications (read 30 Oct 2026; no gold-specific spread stated),
  so worded "costs like a raw-spread account", never "his broker's exact costs". Zero-cost and optimistic-fill lines are published too.
- **Money:** fixed $10,000, 2% = $200 a trade, no compounding (the compounded 2%-of-balance path is shown separately).
- **Proof:** 38 hand-built tests (one rule each) + a second, separately written implementation (`backtest/strategies/sweep_simple.py`, imports
  nothing from the engine) that gives identical trades on every run (both presets × 3 cost cases, all variants; EURUSD 25 runs). Same author,
  so this shows the code = the written rules, "two separately written programs agree on every trade", not independent verification.
- **What could not be tested:** his key level (his own indicator, not public), his discretionary bias overrides, the London continuation
  sold in his course, news trades. Said on screen.

## Re-run (from the realshyt reel-engine repo)

```
.venv/bin/python tools/umar_live_calendar.py          # calendars
.venv/bin/python tools/umar_live_backtest.py          # gold: results JSON, trades/, tables.md (~10 s)
.venv/bin/python tools/umar_live_eurusd.py            # EURUSD S1 2026
.venv/bin/python tools/proofrun/umar_live_run.py      # the on-screen run; exit 1 if any number differs from the JSON
.venv/bin/python -m pytest tests/test_structure.py tests/test_sweep.py
.venv/bin/python projects/.research/umar-live/tools/reconcile.py   # the record audit tables (research tree)
```

Our test, our opinion. Historical tests depend on rules, data and costs and do not guarantee future results. Not financial advice.
