# πŸ“‹ Verbale Riunione - Validazione Empirica Algoritmo Warren AI **Data**: 3 Dicembre 2024 **Partecipanti**: Mauro Gagliardi, Claude (AI Assistant) **Oggetto**: Framework validazione parametri algoritmo e strategia calibration empirica --- ## 🎯 Tema Centrale Discusso **Domanda iniziale di Mauro**: "Come faremo a capire se dovremo adeguare l'algoritmo? Se inseguiamo il mercato saremo sempre dietro a fare fine tuning..." **Risposta sintetica**: Non inseguiamo il mercato. Misuriamo se i nostri PRINCIPI funzionano tramite validazione empirica su 2 livelli. --- ## πŸ“Š FRAMEWORK VALIDAZIONE DEFINITO ### Principio Guida Warren AI non cerca di "battere" o "predire" il mercato. Cerca business quality con margin of safety. Se questi principi smettono di funzionare β†’ problema strutturale (bubble), non algoritmo. ### Due Livelli di Validazione #### LIVELLO 1: Quality Metrics Validation (ogni 3 mesi) **Domanda**: "I business che scorano alto sono davvero quality?" **Test Empirici**: ```sql -- High scorers davvero hanno FCF sostenibile? SELECT ticker, score, fcf_3yr_avg, fcf_yield FROM opportunity_detailed WHERE score >= 80 AND scan_date >= date('now', '-3 months') ORDER BY fcf_yield DESC; -- High scorers davvero hanno ROE stabile? SELECT ticker, score, roe_3yr_avg, roe_stability FROM opportunity_detailed WHERE score >= 80 ORDER BY roe_stability DESC; ``` **Criteri Accettazione**: - βœ… TOP 10% scores β†’ TOP 20% ROE 3yr avg - βœ… Score β‰₯80 β†’ FCF yield medio β‰₯4% - βœ… Score β‰₯80 β†’ Debt coverage ratio <3x (eccetto utilities) **Se fallisce** β†’ Problema nell'algoritmo (es. quality weight troppo basso) --- #### LIVELLO 2: Margin of Safety Validation (ogni 6 mesi) **Domanda**: "Comprare con margin 20%+ ha dato upside?" **Test Empirico**: ```python # Analisi performance acquisti for stock in buys_6_months_ago: if stock.margin_at_buy >= 20%: price_change_6m = (current_price - buy_price) / buy_price mean_return = avg(price_change_6m) ``` **Criteri Accettazione**: - βœ… Cluster "margin 20-30%" β†’ Return medio β‰₯0% a 6 mesi - βœ… Cluster "margin 30%+" β†’ Return medio β‰₯+5% a 6 mesi - ❌ Se entrambi cluster negativi β†’ Fair value calculation broken **Se fallisce** β†’ Problema nella fair value (es. country penalty troppo aggressiva, growth cap troppo conservativo) --- ## πŸ” PARAMETRI: OGGETTIVO vs SOGGETTIVO ### βœ… Parametri Oggettivi (70%) - NON TOCCARE Questi sono **time-tested principles** (80+ anni Buffett/Graham): | Parametro | Threshold | Rationale | Difendibile? | |-----------|-----------|-----------|--------------| | **ROE** | β‰₯15% | Capital efficiency (moat) | βœ… 80 anni dati | | **D/E** | <1.0 | Financial stability | βœ… Debt math | | **P/E** | <15x | Warren's sweet spot | βœ… DCF math | | **Margin of Safety** | β‰₯20% | Buy below intrinsic value | βœ… Valuation theory | | **FCF Yield** | β‰₯4% | Cash generation reality | βœ… Cash is king | **Filosofia**: Se questi parametri falliscono β†’ STOP algorithm (structural market break) --- ### βš™οΈ Parametri Soggettivi (30%) - CALIBRABILI Questi richiedono **validazione empirica** (6-12 mesi dati): | Parametro | Current Setting | Validation Method | Tunable? | |-----------|-----------------|-------------------|----------| | **Country Penalty** | IT: -20%, FR/DE: -10%, USA: 0% | Backtest 3yr return per country | βœ… SΓ¬ | | **Growth Cap** | Mature: 4%, Others: 5% | Miss rate analysis (ignoriamo winners?) | βœ… SΓ¬ | | **Graham Multiplier** | Banks: 15x, Luxury: 30x, Others: 22.5x | Sector return comparison | βœ… SΓ¬ | **Filosofia**: Calibra con dati empirici ogni 6-12 mesi, modifiche incrementali (Β±5-10%) --- ## 🚫 COSA NON MISURIAMO ### 1. Correlazione Score vs Price Movement Breve Termine **PerchΓ©**: Deep Value β‰  momentum. Score alto oggi puΓ² restare flat 12 mesi, poi +30% anno 2. **Errore da evitare**: "Ferrari score 72 ma -5% YTD β†’ algoritmo sbagliato" **RealtΓ **: Ferrari overvalued (margin -15%), score dice "great business wrong price" β†’ aspetta correzione ### 2. "Hit Rate" Buy Recommendations (con sample size <20) **PerchΓ©**: Con 20k satellite β†’ max 3-5 BUY/anno. Sample troppo piccolo per significanza statistica. ### 3. Benchmark S&P/MSCI World Anno-su-Anno **PerchΓ©**: Deep Value puΓ² underperform 2 anni, outperform 3-5. Non cerchiamo tracking index. --- ## πŸ”§ TRIGGER MODIFICHE ALGORITMO ### Decision Tree ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Osservazione anomala (es. 0 BUY da 6 mesi) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ STEP 1: Quality Check β”‚ β”‚ High scorers = high ROE? β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β” β”‚ YES β”‚ NO β†’ FIX algorithm (quality weights) β–Ό β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ STEP 2: Margin Check β”‚ β”‚ Margin 20%+ β†’ upside 6m? β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β” β”‚ YES β”‚ NO β†’ FIX fair value (country penalty? growth cap?) β–Ό β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ STEP 3: Market Context β”‚ β”‚ Siamo in bubble generale? β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β” β”‚ YES β”‚ NO β†’ UNKNOWN (serve piΓΉ tempo/dati) β”‚ β”‚ β–Ό β–Ό Algoritmo OK Possibile falso negativo (conservativo (wait & see) by design) ``` ### Red Flags Sistemici (trigger immediato review) | Red Flag | Significato | Action | |----------|-------------|--------| | **Quality Inversion** | Score 85 MA ROE 3yr avg = 8% | FIX quality weights | | **Fair Value Drift** | 40/40 stocks margin >30% (tutti) | FIX country penalty o Graham multiplier | | **Sector Blind Spot** | Settore performa MA 0 BUY mai | FIX growth cap o P/E threshold | --- ## πŸ“… PIANO OPERATIVO CONFERMATO ### FASE 1: Accumulo Dati (Gen-Giu 2026) **Obiettivo**: Popolare database con 6 mesi tracking post-Schema v4 **Action items**: - βœ… Scan settimanali automatici (domenica 19:00) - βœ… Enhanced tracking (78 colonne) attivo - βœ… JSON reports mantengono trasparenza algoritmo - ❌ **NO modifiche algoritmo** β†’ Osservazione pura --- ### FASE 2: First Review (Marzo 2026) **Checkpoint 3 mesi** - Quality Validation **Query da eseguire**: ```sql SELECT AVG(roe_3yr_avg) as avg_roe, AVG(fcf_yield) as avg_fcf_yield, AVG(debt_coverage_ratio) as avg_debt_coverage FROM opportunity_detailed WHERE score >= 80 AND scan_date >= date('now', '-3 months'); ``` **Target atteso**: - avg_roe β‰₯18% (sopra threshold 15%) - avg_fcf_yield β‰₯4% - avg_debt_coverage <3x **Decision tree**: - βœ… Tutti target OK β†’ Continue osservazione - ⚠️ 1 target miss β†’ Investigate (anomaly o trend?) - ❌ 2+ target miss β†’ RED FLAG (quality inversion) --- ### FASE 3: Mid Review (Giugno 2026) **Checkpoint 6 mesi** - Margin Validation **Condizione trigger**: Se abbiamo fatto β‰₯3 acquisti con margin β‰₯20% **Analisi**: ```python for buy in purchases_6m_ago: price_change = (current - buy_price) / buy_price # Target: mean(price_change) >= 0% ``` **Se NON abbiamo acquisti** (scenario probabile con mercati alti): - Query alternativa: Quanti stocks con margin β‰₯20% sono saliti comunque? - Rationale: Se ignoriamo opportunitΓ  che salgono β†’ country penalty troppo alta --- ### FASE 4: Annual Review (Dicembre 2026) **Checkpoint 12 mesi** - Full Calibration **3 Domande Chiave**: 1. **Quality check passed?** (ROE, FCF, Debt) - βœ… Yes β†’ Principles solidi, mantieni - ❌ No β†’ **STOP algorithm** (structural break) 2. **Margin check passed?** (o sufficient data?) - βœ… Yes β†’ Fair value accuracy OK - ❌ No β†’ Calibra parametri soggettivi 3. **Buy opportunity rate reasonable?** - 0 BUY da 12 mesi MA quality+margin OK β†’ Market overvalued (atteso) - 10+ BUY ma tutti AVOID dopo 3 mesi β†’ Threshold troppo laschi --- ## πŸ”§ PARAMETRI SOGGETTIVI - CALIBRATION TABLE Se serve tuning (Dicembre 2026): | Osservazione Empirica | Parametro | Direction | New Value | Rationale | |----------------------|-----------|-----------|-----------|-----------| | Italian stocks margin 20%+ battono market | **Country Penalty IT** | ⬇️ Riduci | -20% β†’ -10% | Penalty troppo severa | | Ignoriamo luxury (Ferrari, Moncler) che salgono | **Growth Cap** | ⬆️ Aumenta | 5% β†’ 7% | Cap troppo conservativo | | Banks P/B <1.2 battono market | **Graham Multiplier Banks** | ⬆️ Aumenta | 15x β†’ 18x | Sector undervalued sistematicamente | | Italian stocks margin 20%+ underperform | **Country Penalty IT** | ⬆️ Aumenta | -20% β†’ -30% | Rischio Italia sottostimato | | Growth stocks overvalued MA salgono | **Forward Bonuses** | ⬆️ Aumenta | PEG +5 β†’ +8 | Compensare P/E alto growth quality | **Filosofia modifiche**: Incrementali (Β±5-10%), mai stravolgimenti (Β±50%) --- ## πŸ“Š METRICHE SUCCESSO SATELLITE (2025-2026) **Anno 1 = R&D Phase** (non performance chase) | Metrica | Target Anno 1 | Rationale | |---------|---------------|-----------| | **Capital preservation** | β‰₯0% return | Priority #1 in R&D | | **Quality accuracy** | Top 20% scores β†’ Top 30% ROE | Algorithm identifica quality | | **Thesis breaker rate** | ≀20% holdings | Pochi errori gravi | | **Portfolio concentration** | ≀5 holdings | Deep conviction only | | **Avg holding period** | β‰₯12 mesi | Long-term, non trading | **NON misuriamo** (troppo presto): - ❌ Sharpe ratio vs S&P 500 - ❌ Alpha/Beta - ❌ Win rate % (sample 3-5 stock non significativo) --- ## 🎯 CASO STUDIO: Schema v3 β†’ v4 (Nov-Dic 2025) ### Problema Osservato Schema v3 aveva **0 BUY** su 126 stocks (4 mercati). ### Decision Tree Applicato **1. Quality Check**: βœ… PASS - Top scorers (70-90) avevano ROE >15%, margins >20% - Nessuna quality inversion **2. Margin Check**: ❓ INCONCLUSIVO - 0 BUY β†’ 0 purchases β†’ no 6-month test possibile - MA: Tutti titoli margin β‰₯20% avevano score 60-75 (HOLD, non BUY) - Ipotesi: Growth cap 4-5% troppo severo β†’ penalizza score **3. Market Context**: βœ… Mercati a massimi storici - DAX 20k, S&P 6k, FTSE MIB 36k - Fair value conservativo = atteso in bull market ### Conclusione Algoritmo v3 funzionante MA troppo conservativo. ### Fix Implementato (Schema v4) - βœ… Aggiunte metriche forward-looking (PEG, EV/EBITDA, Piotroski F-Score) - βœ… Score normalization 130β†’100 (evita penalizzare growth) - βœ… Mantenuto conservativismo su fair value (NO touching country penalty) ### Risultato Atteso Vedremo nei prossimi 3 mesi se schema v4 genera BUY candidate senza abbassare quality bar. --- ## πŸ’Ύ AUTOMATION SUPPORT ### File da Creare: `audit_queries.sql` ```sql -- QUERY 1: Quality Check (run ogni 3 mesi) CREATE VIEW quality_validation AS SELECT score_bucket, COUNT(*) as num_stocks, ROUND(AVG(roe_3yr_avg), 2) as avg_roe, ROUND(AVG(fcf_yield), 2) as avg_fcf_yield, ROUND(AVG(debt_coverage_ratio), 2) as avg_debt_coverage FROM ( SELECT CASE WHEN score >= 80 THEN '80-100' WHEN score >= 60 THEN '60-79' WHEN score >= 40 THEN '40-59' ELSE '0-39' END as score_bucket, roe_3yr_avg, fcf_yield, debt_coverage_ratio FROM opportunity_detailed WHERE scan_date >= date('now', '-3 months') ) GROUP BY score_bucket ORDER BY score_bucket DESC; -- Expected: Gap evidente tra clusters -- 80-100: avg_roe ~20%, fcf_yield ~5% -- 60-79: avg_roe ~12%, fcf_yield ~3% -- QUERY 2: Country Penalty Check (run annuale) CREATE VIEW country_performance AS SELECT CASE WHEN ticker LIKE '%.MI' THEN 'Italy' WHEN ticker LIKE '%.PA' THEN 'France' WHEN ticker LIKE '%.DE' THEN 'Germany' ELSE 'USA' END as country, COUNT(*) as num_high_margin, ROUND(AVG(margin_of_safety), 2) as avg_margin, ROUND(AVG(score), 2) as avg_score FROM opportunity_detailed WHERE margin_of_safety >= 20 AND scan_date >= date('now', '-12 months') GROUP BY country; -- Se Italy avg_margin ~25% ma score basso β†’ penalty troppo severa -- Se Italy avg_margin ~25% e score alto β†’ penalty corretta ``` --- ## βœ… ACCORDI FINALI ### Framework Validazione Confermato - **70% Oggettivo**: Principles (ROE, D/E, P/E, Margin, FCF) β†’ NON TOCCARE - **30% Soggettivo**: Assumptions (Country risk, Growth cap, Graham multiplier) β†’ CALIBRARE empiricamente ### Approccio Operativo **Observe 6-12 mesi β†’ Validate β†’ Calibrate se necessario β†’ Expand se successo** ### Filosofia > "Difendiamo i principles (ROE, FCF, P/E). Calibriamo le assumptions (country risk, growth cap). Se i principles falliscono β†’ stop. Se le assumptions falliscono β†’ adjust." ### Parametri "Frozen" (non toccare mai) - ROE threshold (15%) - D/E threshold (1.0) - P/E preference (<15x) - Margin of safety (20%+) - FCF yield (4%+) ### Parametri "Tunable" (review annuale) - Country penalty (Italia -20%?) - Growth cap (4-5%?) - Graham multiplier per sector (banks 15x?) - Forward bonuses (PEG +5, EV/EBITDA +5?) --- ## πŸ“‹ PROSSIMI STEP ### Immediati (Dicembre 2025) - [x] Framework validazione definito βœ… - [x] Schema v4 in production βœ… - [x] Enhanced tracking attivo βœ… - [ ] Acquisition freeze fino Gen 2026 (confermato) ### Short-term (Gen-Mar 2026) - [ ] Gennaio: Riprendi valutazioni acquisti - [ ] Marzo: First checkpoint (quality validation) - [ ] Crea file `audit_queries.sql` ### Mid-term (Giu 2026) - [ ] Mid checkpoint (margin validation se acquisti) - [ ] Considera espansione satellite a 30k se performance + ### Long-term (Dic 2026) - [ ] Annual review completo - [ ] Decision: Continue v4, Calibrate parametri soggettivi, o Expand satellite 60-70k --- ## 🎬 CITAZIONI CHIAVE > "Non inseguiamo il mercato. Misuriamo se i nostri PRINCIPI funzionano." - Framework filosofico > "70% oggettivo (principles) + 30% soggettivo (assumptions). Avere 70% di oggettivo Γ¨ giΓ  molto buono." - Mauro (approvazione framework) > "Misuriamo la robustezza dei principles (ROE, FCF, P/E), non la velocitΓ  dei risultati. Se i principles tengono, il resto si aggiusta. Se i principles falliscono, l'algoritmo va fermato." - Filosofia validazione > "Modifiche incrementali (Β±5-10%), mai stravolgimenti (Β±50%)." - Approccio calibration --- **Fine Verbale** - 3 Dicembre 2024 **Status**: βœ… Framework confermato, sistema production-ready, R&D phase attivo **Next Checkpoint**: Marzo 2026 (Quality Validation) --- ## πŸ“Ž DOCUMENTI DI RIFERIMENTO - `DIARIO_DI_BORDO.md`: Architettura completa Warren AI - `SCORING_ENGINE.md`: Formula scoring completa (proprietaria) - `reports/latest/json/warren_scan_XX_latest.json`: Ultimi scan per mercato - `audit_queries.sql`: Query validazione (da creare)