reboot: replace vision pipeline with Excel-first manual journal

Pipeline-ul vision (screenshot extraction + CSV append + Python stats) era
greoi pentru backtest semi-manual. Înlocuit cu un singur template Excel
generat din openpyxl + Dashboard cu comparație 5 strategii management pe
aceleași semnale blackbox.

- Strategii: TP0 only / TP1 only / TP2 only / Hybrid+BE / Hybrid no BE
- Input minim (12 coloane galbene); Sesiune și Zi derivate auto din Data+Ora
- Dashboard cu coloana "Cum citesc" + secțiune Glosar cu exemple concrete
- Breakdowns PER SESIUNE / STRATEGIE / INDICATOR / DIRECȚIE
- Equity curve cu 5 linii

Eliminat: m2d-extractor agent, /backtest, /batch, /m2d-log, /stats slash
commands, scripts/{append_row,pl_calc,stats,manual_log,regenerate_md,
vision_schema,calendar_parse}.py, tests/, screenshots/, data/extractions/.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Marius
2026-05-13 18:30:33 +03:00
parent a73ec30c13
commit 017921794e
40 changed files with 906 additions and 4391 deletions

View File

@@ -1,6 +1,6 @@
# STOPPING_RULE — M2D Backtesting
# STOPPING_RULE — Backtesting jurnal Excel
**Versiune**: 1
**Versiune**: 2
**Data**: 2026-05-13
**Status**: SIGNED — Marius
@@ -8,34 +8,35 @@
## Întrebarea de decis
Pentru fiecare Set candidat (A1, A2, A3, B), decidem una din trei:
Pentru fiecare combinație (Indicator × Sesiune) candidată, decidem una din trei:
- **GO LIVE** — pornesc forward paper trading cu 0.25R per trade (validare reală)
- **EXTEND COLLECTION** — mai colectez screenshot-uri, încă nu sunt date suficiente
- **ABANDON** — strategia nu are edge măsurabil pe acest Set; renunț la Set sau la întreaga strategie
- **EXTEND COLLECTION** — mai colectez trade-uri, încă nu sunt date suficiente
- **ABANDON** — strategia nu are edge măsurabil pe această combinație
Decizia se ia separat pentru fiecare strategie de management (Hybrid 50/50+BE / TP1-only OCO / TP2-only OCO) — Dashboard-ul din `data/backtest.xlsx` afișează metrici side-by-side.
---
## Threshold-uri obligatorii pentru GO LIVE pe un Set
## Threshold-uri obligatorii pentru GO LIVE pe o combinație Indicator × Sesiune
Toate condițiile trebuie satisfăcute simultan:
Toate condițiile trebuie satisfăcute simultan, pentru cel puțin o strategie de management:
1. **N ≥ 40** trade-uri non-pending pe acel Set
2. **WR ≥ 55%** (Wilson 95% CI lower bound ≥ 45%)
3. **Expectancy ≥ +0.20R** pe overlay-ul `pl_marius` (50% TP0 + BE + close ~TP1)
4. **Calibration P4 PASS** — pe primele 10 trade-uri double-extracted (manual + vision), mismatch rate ≤10% pe câmpuri core (`entry`, `sl`, `tp0/1/2`, `outcome_path`, `max_reached`, `directie`)
1. **N ≥ 40** trade-uri pe acea combinație (vezi Dashboard → PER SESIUNE / PER INDICATOR)
2. **WR ≥ 55%** (rule-of-thumb: 95% CI lower bound trebuie să fie ≥ 45% — calculează manual sau folosește calculator Wilson extern)
3. **Expectancy ≥ +0.20R** pe strategia aleasă (Hybrid 50/50+BE implicit; alternativ TP1-only OCO sau TP2-only OCO)
Dacă oricare condiție pică → **EXTEND COLLECTION** sau **ABANDON** (vezi mai jos).
Dacă oricare condiție pică → **EXTEND COLLECTION** sau **ABANDON**.
---
## Threshold-uri pentru ABANDON pe un Set
## Threshold-uri pentru ABANDON
Oricare e suficient:
- N ≥ 40 și WR < 45% edge negativ; ABANDON acest Set
- N 40 și Expectancy 0.10R ABANDON
- Wilson 95% CI lower bound stabil sub 50% după N 60 ABANDON
- N ≥ 40 și WR < 45% pe toate cele 3 strategii edge negativ; ABANDON combinația
- N 40 și Expectancy 0.10R pe toate cele 3 strategii ABANDON
- WR observat stabil sub 50% după N 60 ABANDON
---
@@ -45,23 +46,44 @@ Oricare e suficient:
1. **N=40 = directional evidence, NU scientific proof**. Intervalul de încredere 95% pentru WR la N=40, WR observat 55%, este aproximativ [40%, 70%]. "Validated" la N=40 înseamnă "merită tradez cu 0.25R", NU "edge confirmat statistic". Confirmarea reală vine din forward paper trading.
2. **Selection bias rezidual**. Chiar și cu scroll protocol (vezi `WORKFLOW.md`), eu am ales perioada pe care scroll-uiesc. Acest bias e parțial mitigat, NU eliminat.
2. **Selection bias rezidual**. Chiar dacă păstrez disciplina loghez toate trigger-urile (inclusiv loss-urile clare), eu aleg ce perioadă scroll-uiesc. Acest bias e parțial mitigat prin trade-by-trade logging, NU eliminat.
3. **Lookahead bias pe `calitate`**. Câmpul `calitate ∈ {Clară, Mai mare ca impuls, Slabă}` este clasificat post-outcome (am văzut chart-ul întreg). DECI: NU folosesc `calitate` ca filtru în stopping rule. Rămâne descriptor în jurnal, NU criteriu de tradare.
3. **Lookahead bias pe calitate subiectivă**. Nu mai există coloană `calitate` în jurnalul Excel clasificarea subiectivă post-outcome a fost eliminată ca sursă de bias. Note-urile rămân pentru context, dar NU sunt folosite ca filtru de decizie.
4. **Backtest = upper bound al expectancy real**. Execuția live va avea slippage, latențe, emoții. Expectancy real probabil 0.05-0.15R sub backtest. De aceea pragul `+0.20R` în backtest = aproximativ break-even-cu-edge-mic în live.
4. **Backtest = upper bound al expectancy real**. Execuția live va avea slippage, latențe, emoții, mouse-trip-uri. Expectancy real probabil 0.050.15R sub backtest. De aceea pragul `+0.20R` în backtest break-even-cu-edge-mic în live.
5. **Indicator drift**. Dacă indicatorul blackbox se update-ează, trade-urile vechi devin istoric irelevant. Trackuit prin coloana `indicator_version` în CSV; reset stat-uri la schimbare.
5. **Indicator drift**. Dacă indicatorul blackbox se update-ează, trade-urile vechi devin istoric irelevant. Trackează manual versiunea indicatorului în coloana Notes; reset stats la schimbare semnificativă.
---
## Comparația de strategii — context
Cele 5 overlay-uri calculate automat per trade în `Trades` sheet:
| Strategie | Descriere |
|---|---|
| **TP0 only** | 100% poziție, close la TP0. Maxim conservator. |
| **TP1 only** | 100% poziție, OCO la SL sau TP1, fără intervenție manuală. |
| **TP2 only** | 100% poziție, OCO la SL sau TP2 (let it ride). |
| **Hybrid + BE** | 50% close la TP0, mut SL la BE, 50% close la TP1. Recomandat de trader. |
| **Hybrid no BE** | 50% close la TP0, fără BE, 50% close la TP1. Control pentru izolarea valorii BE-ului. |
**Decizie de management se ia DUPĂ ce ai N≥40 trade-uri**: alegi strategia cu cel mai bun Expectancy + Profit Factor pe combinația de Indicator × Sesiune care a trecut gate-urile.
**Asumpții de simulare**:
- `TP1 only` și `TP2 only` simulează OCO pur, fără intervenție; Outcome=`TP0 only` se închide la SL.
- `TP2 only` cu Outcome=`TP1`: TP2 nu a fost atins presupunem , în lipsa time-stop-ului, SL ar fi venit ulterior; tratat ca 1R. Asumpția subestimează ușor TP2-only dacă în realitate trade-ul s-ar fi închis profitabil prin alt mecanism, dar e prudent.
- BE este parametru teoretic nu un input per trade. Hybrid + BE vs Hybrid no BE diferă strict când Outcome=`TP0 only` (diferența = +0.5R în favoarea BE).
---
## Post-GO LIVE protocol
După un Set primește GO LIVE:
După o combinație Indicator × Sesiune × Strategie primește GO LIVE:
1. Forward paper trading cu 0.25R per trade pe acel Set.
1. Forward paper trading cu 0.25R per trade.
2. Minimum 20 trade-uri live înainte de a urca sizing-ul la 0.5R sau full.
3. Dacă WR live diverge >10pp de backtest în prima 20 trade-uri → review (probabil execuție defectă sau bias subestimat).
3. Dacă WR live diverge >10pp de backtest în primele 20 trade-uri → review (probabil execuție defectă sau bias subestimat).
---
@@ -71,4 +93,4 @@ După un Set primește GO LIVE:
Marius — semnat prin commit git — data: 2026-05-13
```
Toate cele 5 caveats înțelese și acceptate. Procedez cu calibrarea P4 pe `dia-1min-example.png`.
Toate cele 5 caveats înțelese și acceptate.