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:
@@ -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ă să 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 să 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.05–0.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 că, î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.
|
||||
|
||||
Reference in New Issue
Block a user