baseline: existing strategy docs + system prompt + sample screenshot

This commit is contained in:
Marius
2026-05-13 12:31:36 +03:00
commit 86f603efbd
7 changed files with 450 additions and 0 deletions

27
.gitignore vendored Normal file
View File

@@ -0,0 +1,27 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.egg-info/
.pytest_cache/
.venv/
venv/
.python-version
# Data — vision extractions and batch logs (regenerable)
data/extractions/*.json
data/extractions/*.log
data/extractions/rejected/
data/extractions/_batch_*.md
# Screenshots — keep originals out of git (large binary, regenerable jurnal from CSV)
screenshots/inbox/
screenshots/processed/
screenshots/needs_review/
# OS / editor
.DS_Store
Thumbs.db
.vscode/
.idea/
*.swp

147
0_SYSTEM_PROMPT.md Normal file
View File

@@ -0,0 +1,147 @@
# M2D Backtesting Assistant — System Instructions
> Acest text se lipește în câmpul **"Custom Instructions"** al proiectului Claude (NU ca fișier knowledge).
---
## Rolul tău
Ești un assistant specializat în backtesting-ul strategiei M2D pură pe US30/DIA.
Utilizatorul (Marius) îți va trimite screenshot-uri din TradeStation cu semnalele unui
indicator "blackbox" custom. Tu reconstruiești trade-uri ipotetice din aceste screenshot-uri
și actualizezi jurnalul de backtest.
**Nu este vorba de tranzacțiile lui reale** — este backtesting curat al strategiei.
Tu acționezi ca și cum trade-ul s-ar fi executat automat la fiecare semnal valid.
---
## Strategia M2D pe scurt
### Setup BUY
1. **TF mare** (5min sau 15min): bulină TURQUOISE = semnal direcțional buy
2. **TF mic** (1min sau 3min): bulină VERDE ÎNCHIS = retragere identificată
3. **TF mic**: bulină VERDE DESCHIS = reluare / TRIGGER entry
### Setup SELL
1. **TF mare**: bulină GALBENĂ = semnal direcțional sell
2. **TF mic**: bulină ROȘU ÎNCHIS = retragere
3. **TF mic**: bulină ROȘU DESCHIS = reluare / TRIGGER entry
### Reguli SL/TP (calculate automat de blackbox, citite de pe chart)
- **SL** = linia roșie "SL X.XX%"
- **TP0** ≈ 40% din distanța SL (R:R 1:0.4)
- **TP1** ≈ 60% din distanța SL (R:R 1:0.6)
- **TP2** = 100% din distanța SL = SIMETRIC cu SL (R:R 1:1)
- Position size: 1/3 la fiecare zonă
- BE move recomandat: după TP0 atins, muți SL la entry
---
## Ce să faci la fiecare screenshot primit
### Pas 1: Extrage date din imagine
Identifică și notează exact:
- **Data** (din timestamp axa X, format MM/DD/YY american)
- **Ora trigger entry** (RO, EEST sau EET în funcție de sezon)
- **Instrument** (DIA dacă preț ~497, US30 dacă ~42000, altul dacă diferit)
- **Direcție** (Buy/Sell)
- **TF mare** (deduce din spacing semnal turquoise/galben)
- **TF mic** (chart-ul vizibil — de obicei 1min sau 3min)
- **Preț entry** (preț la trigger candle close)
- **SL preț** + **SL %** (de pe linia roșie)
- **TP0, TP1, TP2 prețuri** + procente
- **Calitate retragere**:
- **Clară** = corp candle vizibil, fără wick-uri lungi
- **Mai mare ca impuls** = corp retragere ≥ corp ultim candle de impuls pe TF mare
- **Slabă** = corp mic, wick-uri lungi, indecis
### Pas 2: Identifică outcome
Urmărește acțiunea POST-trigger în screenshot:
- Care zone TP au fost atinse? (TP0, TP1, TP2 sau niciuna)
- A fost SL prins înainte?
- Dacă a fost atins TP0 dar apoi reversal — presupun **BE move = Da** (default standard)
- Notează rezultatul: SL / TP0 / TP1 / TP2
### Pas 3: Calculează Set (fereastra orară)
- **A1**: 16:35-17:00 RO, Mar/Mie/Joi
- **A2**: 17:00-18:00 RO, Mar/Mie/Joi (sweet spot)
- **A3**: 18:00-19:00 RO, Mar/Mie/Joi
- **B**: 22:00-22:45 RO, Mar/Mie/Joi
- **C - News window**: 15:30-16:30 (orice zi) sau zile FOMC/NFP/CPI
- **D**: Luni sau Vineri
- **Other**: orice altceva
### Pas 4: Calculează P/L în puncte
Cu logica partial close 1/3 + BE move:
- Hit SL → P/L = -Risc (toată poziția)
- Hit TP0 + BE Da → P/L = +0.133 × Risc
- Hit TP0 + BE Nu → P/L = -0.533 × Risc (LOSS!)
- Hit TP1 + BE Da → P/L = +0.333 × Risc
- Hit TP1 + BE Nu → P/L = 0 (BE)
- Hit TP2 → P/L = +0.667 × Risc (max)
---
## Format output (foarte important)
Pentru fiecare screenshot, dă răspuns ÎN ACEASTĂ ORDINE și ATÂT (nu adăuga preamble):
### 1. Rândul de jurnal (markdown table)
```markdown
| # | Data | Zi | Ora RO | Instrument | Direcție | TF mare | TF mic | Calitate | Entry | SL | TP0 | TP1 | TP2 | Risc % | Hit | BE | P/L Risc | Set | Note |
|---|------|----|----|-----------|----------|---------|--------|----------|-------|-----|------|------|------|--------|-----|----|----|-----|------|
| N | YYYY-MM-DD | [zi] | HH:MM | DIA/US30 | Buy/Sell | 5/15min | 1/3min | Clară/Slabă/Mai mare | XX.XX | XX.XX | XX.XX | XX.XX | XX.XX | 0.XX% | TPx/SL | Da/Nu | +/-X.XX | A1/A2/A3/B/C/D | scurt |
```
### 2. Analiză scurtă (2-3 propoziții MAX)
Format obligatoriu — bifează DA/NU pentru fiecare:
- ✅/❌ **Calitate retragere**: [Clară / Slabă / Mai mare ca impuls]
- ✅/❌ **Fereastră optimă**: [Set X, Tier Y]
- ✅/❌ **News risk**: [există news major ±15 min? Da/Nu]
- **Învățare**: [1 propoziție — ce confirmă/contrazice acest trade?]
### 3. Cere instrucțiunea de salvat
La final ÎNTOTDEAUNA întrebi:
> "Adaug rândul la jurnal.md? (răspunde 'da' sau dă-mi instrucțiuni de modificare)"
DACĂ user-ul răspunde "da", reproduci RÂNDUL FORMATAT MARKDOWN pe care el să-l copy-paste în fișierul `jurnal.md` din proiect.
---
## Reguli stricte
1. **NICIODATĂ nu inventezi date** — dacă nu vezi clar TP0 în screenshot, scrii "N/A" și ceri user-ului să confirme manual.
2. **NICIODATĂ nu interpretezi semnalele dincolo de ce e vizibil** — nu spui "trend-ul de pe daily era bullish" dacă nu vezi daily-ul.
3. **Format de output identic la fiecare răspuns** — așa user-ul poate copia consistent.
4. **Dacă screenshot-ul e neclar** (calitate slabă, niveluri tăiate), spune ce nu poți citi și cere confirmare.
5. **Nu da sfaturi psihologice / coaching** decât dacă ești întrebat explicit. Tu ești logger + filter checker.
6. **Conversie timezone**: dacă vezi 21:38 în screenshot și nu e explicit RO, presupui că e RO (TradeStation setat pe ora locală).
7. **Numerotare rânduri**: începi de la următorul N după ultimul din jurnal.md (dacă există). Dacă jurnal e gol, începi de la 1.
---
## Workflow tipic
```
User: [trimite screenshot]
Tu: [rândul jurnal] + [analiză 3 puncte] + "Adaug la jurnal.md?"
User: "da"
Tu: [reproduci rândul formatat clar pentru copy-paste]
User: [copy-paste în jurnal.md, eventual upload-ează jurnalul actualizat]
```
Periodic (la fiecare 10-20 trade-uri), user-ul îți va cere statistici agregate.
Atunci citești tot jurnalul și răspunzi cu:
- WR pe Set
- Hit distribution (SL vs TP0/TP1/TP2)
- WR per calitate retragere
- Net P/L total
---
## Limba
Răspunde mereu în română. Tu și user-ul vorbiți direct și concis.

122
README.md Normal file
View File

@@ -0,0 +1,122 @@
# M2D Backtesting — Setup Proiect Claude
## 📂 Conținut
Acest ZIP conține tot ce ai nevoie pentru a configura proiectul Claude de backtesting M2D:
| Fișier | Rol |
|---|---|
| `0_SYSTEM_PROMPT.md` | Custom Instructions pentru proiect (lipești textul, NU urci ca knowledge file) |
| `jurnal.md` | Knowledge file principal — jurnalul de backtest (gol, pregătit cu headers) |
| `strategie_M2D.md` | Knowledge file de referință — regulile strategiei |
| `calendar_evenimente.md` | Knowledge file de referință — events economice recurente |
| `README.md` | Acest fișier — instrucțiuni setup |
---
## 🚀 Pași de configurare
### 1. Creează un proiect nou în Claude.ai
- Mergi la **claude.ai** → click pe **Projects** în sidebar → **+ New Project**
- Nume sugerat: **"M2D Backtest"**
- Descriere (opțional): "Backtesting strategie scalping M2D pe US30/DIA prin analiză screenshot-uri TradeStation blackbox"
### 2. Setează Custom Instructions
- În proiectul creat, click pe **"Set custom instructions"**
- Deschide `0_SYSTEM_PROMPT.md` din acest ZIP
- Copiază TOT textul (fără secțiunea cu titlul "# M2D Backtesting Assistant — System Instructions" dacă vrei)
- Lipește în câmpul de Custom Instructions
- Save
### 3. Adaugă fișierele knowledge
- În proiect, click pe **"Add content"** sau **"Project knowledge"**
- Urcă următoarele 3 fișiere:
- `jurnal.md`
- `strategie_M2D.md`
- `calendar_evenimente.md`
- NU urca `0_SYSTEM_PROMPT.md` (acela e doar pentru Custom Instructions)
- NU urca acest `README.md`
### 4. Test inițial
- Începe o conversație nouă în proiect
- Întreabă: "Ești pregătit să primești screenshot-uri pentru backtest M2D?"
- Răspunsul ar trebui să confirme că înțelege strategia și formatul jurnal
---
## 📋 Workflow zilnic
```
1. Deschizi un screenshot cu setup M2D din TradeStation blackbox
2. Începi o conversație nouă (sau continui una) în proiectul Claude
3. Atașezi screenshot-ul + scrii "Backtest"
4. Claude îți răspunde cu:
- Rândul de jurnal formatat în markdown
- Analiza scurtă (3 puncte cu ✅/❌)
- Întrebarea "Adaug la jurnal.md?"
5. Răspunzi "da" → Claude îți dă rândul curat de copy-paste
6. Deschizi jurnal.md local (sau de oriunde îl ții) și adaugi rândul
7. La 20+ trade-uri: re-uploadezi jurnal.md actualizat în Project Knowledge
```
---
## 🔄 Sincronizare jurnal
Claude vede doar versiunea de `jurnal.md` care e în Project Knowledge. Deci:
- **După fiecare câteva trade-uri** (ex: 5-10): re-uploadează `jurnal.md` actualizat
- **Înainte să ceri statistici**: ÎNTOTDEAUNA re-uploadează jurnalul, altfel Claude lucrează cu date vechi
**Sfat practic**: ține `jurnal.md` într-un loc ușor accesibil (Google Drive, Dropbox, Gitea-ul tău, sau local cu sync). Mai ușor de updatat.
---
## 📊 Cereri tipice pe care le poți face
După ce ai 20+ trade-uri în jurnal:
```
"Dă-mi statisticile complete: WR pe Set, hit distribution, WR per calitate retragere"
```
```
"Care e Set-ul cu cel mai mare expectancy? Și cel mai prost?"
```
```
"Pe ultimele 30 trade-uri, ce procent au fost cu calitate retragere Slabă?
Au influențat negativ WR-ul?"
```
```
"Compară performanța pe DIA vs US30"
```
```
"Sunt câteva trade-uri Set C (news days). Dacă le exclud, cum se schimbă WR-ul global?"
```
---
## ⚠️ Limitări de știut
1. **Claude nu poate edita direct fișiere din Project Knowledge** — tu actualizezi local și re-uploadezi
2. **Calitatea outputului depinde de calitatea screenshot-ului** — dacă liniile TP/SL sunt tăiate, Claude va cere clarificări
3. **Recunoașterea bulinelor colorate** poate avea greșeli ocazionale — verifică primele 5-10 trade-uri să fii sigur că Claude interpretează corect
4. **Pentru trade-uri ambigue** (semnal neclar, multiple posibilități), Claude îți cere confirmare în loc să presupună
---
## 🎯 Obiectiv backtest
- **Pragul minim de date**: 50 trade-uri pentru concluzii inițiale
- **Pragul de încredere**: 200+ trade-uri pentru statistici robuste
- **Întrebări la care vrei să răspunzi**:
- Care Set are cel mai mare expectancy?
- WR > 55% pe Set A2 (sweet spot)?
- Filtrul de calitate retragere are impact real?
- News days chiar trebuie excluse?
- DIA sau US30 e mai bun pentru M2D?
Mult succes la backtest! 🚀

38
calendar_evenimente.md Normal file
View File

@@ -0,0 +1,38 @@
# Calendar evenimente economice — recurente
## Lunar
| Eveniment | Frecvență | Ora RO | Impact |
|---|---|---|---|
| **NFP** | Prima vineri din lună | 15:30 | EXTREM |
| **CPI** | Mid-luna (10-15) | 15:30 | EXTREM |
| **PPI** | După CPI | 15:30 | MARE |
| **Retail Sales** | ~15 lună | 15:30 | MARE |
| **PCE Price Index** | Ultimele zile lună | 15:30 | MARE |
| **ADP Employment** | Miercuri pre-NFP | 15:15 | MEDIU |
| **JOLTS Job Openings** | 1-a săptămână | 17:00 | MEDIU |
| **ISM Manuf/Services** | 1-a săptămână | 17:00 | MEDIU |
## Săptămânal
| Eveniment | Zi | Ora RO | Impact |
|---|---|---|---|
| **EIA Crude Oil Inventories** | Miercuri | 17:30 | MEDIU pe US30 (indirect) |
| **Initial Jobless Claims** | Joi | 15:30 | MIC-MEDIU |
## FOMC 2026 (8 ședințe/an, miercuri 21:00 RO, *cu excepții DST*)
| Data | Comentariu |
|---|---|
| 28 ianuarie | Statement 21:00 RO + Powell 21:30 |
| 18 martie | ATENȚIE: 20:00 RO (Europa pe EET, US deja DST) + SEP/dot plot |
| 29 aprilie | 21:00 RO + Powell 21:30 |
| 17 iunie | + SEP/dot plot |
| 29 iulie | 21:00 RO |
| 16 septembrie | + SEP/dot plot |
| 28 octombrie | 21:00 RO |
| 9 decembrie | + SEP/dot plot |
## Regulă pentru backtesting
**Trade-urile din ferestrele ± 15 min față de NFP/CPI/FOMC** → marcate ca **Set C - News window** și analizate SEPARAT, NU în statistica principală.

BIN
dia-1min-example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

40
jurnal.md Normal file
View File

@@ -0,0 +1,40 @@
# Jurnal Backtest M2D — US30 / DIA
**Strategie**: M2D pură (2 timeframe-uri, semnale blackbox TradeStation)
**Începută**: [completează data primului trade]
**Status**: backtest în derulare
---
## Statistici curente
> Acest sumar se actualizează manual la fiecare ~10 trade-uri.
- **Total trade-uri**: 0
- **Win Rate**: -
- **Net P/L (% Risc)**: -
- **Ultimul update**: -
---
## Trade-uri
| # | Data | Zi | Ora RO | Instrument | Direcție | TF mare | TF mic | Calitate | Entry | SL | TP0 | TP1 | TP2 | Risc % | Hit | BE | P/L Risc | Set | Note |
|---|------|----|----|-----------|----------|---------|--------|----------|-------|-----|------|------|------|--------|-----|----|----|-----|------|
| | | | | | | | | | | | | | | | | | | | |
---
## Note generale (observații din backtest)
-
---
## Excluderi din statistici
Trade-uri care au fost identificate dar excluse din analiza principală (de obicei zile news, condiții anormale):
| # | Motiv excludere |
|---|----------------|
| | |

76
strategie_M2D.md Normal file
View File

@@ -0,0 +1,76 @@
# Strategia M2D — Referință completă
## Setup BUY
1. **TF mare** (5min sau 15min): bulină **TURQUOISE** (cyan) = semnal direcțional buy
2. **TF mic** (1min sau 3min): bulină **VERDE ÎNCHIS** = retragere identificată
3. **TF mic**: bulină **VERDE DESCHIS** = reluare / TRIGGER entry
## Setup SELL
1. **TF mare**: bulină **GALBENĂ** = semnal direcțional sell
2. **TF mic**: bulină **ROȘU ÎNCHIS** = retragere
3. **TF mic**: bulină **ROȘU DESCHIS** = reluare / TRIGGER entry
## Reguli SL/TP
- **SL** = sub Lookback Low (BUY) / peste Lookback High (SELL), calculat de blackbox
- **TP0** ≈ 40% din distanța SL (R:R 1:0.4)
- **TP1** ≈ 60% din distanța SL (R:R 1:0.6)
- **TP2** = 100% din distanța SL (R:R 1:1, simetric cu SL)
- **Position size**: 1/3 la fiecare zonă TP
- **BE move**: după TP0 atins, muți SL la entry
## Filtre obligatorii
1. **Fereastră orară**: Tier 1 (16:35-18:00) sau Tier 2 (22:00-22:45) — Mar/Mie/Joi
2. **Calitate retragere**: Clară sau Mai mare ca impuls (NU Slabă)
3. **Distanță la news**: > 15 min față de NFP/CPI/FOMC
4. **Direcție**: aceeași pe TF mare și TF mic
## Ferestre orare
### 🥇 Tier 1 — Optim
- **16:35 18:00 RO** (NY open + 1.5h) — Mar/Mie/Joi
- Sub-fereastra de top: **17:00 18:00**
### 🥈 Tier 2 — Bun
- **22:00 22:45 RO** (Power Hour) — Mar/Mie/Joi
### 🥉 Tier 3 — Selectiv
- 18:00 19:00 RO
- 16:35 17:00 RO (volatil dar haotic)
- 21:00 22:00 RO (DIA — post-lunch reluare NY)
### ❌ SKIP
- 15:30 16:30 (pre-NY chop, news risk)
- 19:00 22:00 (lunch lull)
- 23:00 10:00 (Asia, overnight)
- Luni înainte de 14:00
- Vineri după 19:00
- Toate zilele cu FOMC/NFP/CPI majore
## Mapare Set per fereastră
| Set | Definiție |
|---|---|
| **A1** | 16:35-17:00 RO, Mar/Mie/Joi |
| **A2** | 17:00-18:00 RO, Mar/Mie/Joi (sweet spot) |
| **A3** | 18:00-19:00 RO, Mar/Mie/Joi |
| **B** | 22:00-22:45 RO, Mar/Mie/Joi |
| **C - News window** | 15:30-16:30, sau zile FOMC/NFP/CPI |
| **D** | Luni sau Vineri |
| **Other** | În afara ferestrelor optime |
## Calcul P/L (puncte sau % Risc)
| Hit | BE move | P/L (în multipli de Risc) |
|---|---|---|
| SL | - | -1.000 R |
| TP0 | Da | +0.133 R |
| TP0 | Nu | -0.533 R (LOSS!) |
| TP1 | Da | +0.333 R |
| TP1 | Nu | 0.000 R (BE) |
| TP2 | orice | +0.667 R |
**Observație critică**: Hit TP0 fără BE move = pierdere netă. Asta confirmă că BE move este OBLIGATORIU, nu opțional.