aggiunto file con mappa improvements
This commit is contained in:
39
TRACCIA_IMPROVEMENTS.md
Normal file
39
TRACCIA_IMPROVEMENTS.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Traccia improvements Ottimizzatore
|
||||
|
||||
## Struttura e stack
|
||||
- Repository piatto con script versionati (2.6, 2.5.2, Lite 1.0, 2.2 UK); nessun package/moduli, logica procedurale.
|
||||
- Stack: Python, pandas, numpy, matplotlib; SQLAlchemy/pyodbc (MSSQL); PyPortfolioOpt; opzionale cvxpy; Excel I/O via pandas; nessun requirements/lockfile.
|
||||
- IO: Excel input (universo titoli, template), output Excel pesi/metriche in `Output/`, grafici PNG in `Plot/`; credenziali DB in `connection.txt`.
|
||||
|
||||
## Flusso v2.6 (principale)
|
||||
- Setup cartelle e target volatilita' (`volatility_targets`), costanti (`days_per_year`, `riskfree_rate`, `mu_heal_floor`).
|
||||
- Utility metriche: R2 equity, drawdown (profondita', durata, TTR), Heal index (AAW/AUW), H_min_100, serie/metriche portafoglio.
|
||||
- Connessione MSSQL via `connection.txt`, stored proc `opt_RendimentoGiornaliero1_ALL` per ciascun ISIN; missing riempiti con 0.
|
||||
- Per target: metriche per-asset (ann return/vol, CAGR, R2, drawdown, Heal, H_min_100 su 5Y); ottimizzazione EfficientFrontier con vincoli PesoFisso/PesoMax, per Categoria e Asset Class; export Excel gestionale (peso*99) e pie chart.
|
||||
- Riepilogo portafogli: return/vol attesi, Sharpe, diversificazione, path metrics (Heal, TTR, H_min_100); overlay equity/underwater 5Y.
|
||||
- Variante PH1+HealProxy (se cvxpy): obiettivo massimizzare Heal proxy con floor rendimento >=85% del baseline; grafici comparativi.
|
||||
|
||||
## Pattern e criticita'
|
||||
- Script monolitici, funzioni locali solo utility; forte duplicazione tra versioni (2.5.x, Lite, 2.6).
|
||||
- Config hard-coded (target vol, vincoli per categoria/asset class, naming file); nessuna parametrizzazione esterna.
|
||||
- Credenziali DB in chiaro (`connection.txt`); host/porta/db esposti.
|
||||
- Dati: scarsa validazione; `fillna(0)` su rendimenti distorce metriche; assenza di controllo su duplicati/tipi/periodi mancanti.
|
||||
- Performance: chiamata stored proc per ogni ISIN in serie; calcolo covarianze/ottimizzazioni per ogni target; niente caching/parallelismo.
|
||||
- Resilienza: gestione errori minima; cvxpy opzionale ma fallback silenzioso; logging solo via print; niente test.
|
||||
- Codice morto: alcune utility (path metrics) non usate altrove.
|
||||
- Output: scrittura massiva di Excel/PNG senza controllo overwrite/versioning.
|
||||
|
||||
## Collo di bottiglia
|
||||
- IO/DB: loop sequenziale sugli ISIN per fetch rendimenti.
|
||||
- CPU: covarianze e Solvers EfficientFrontier per ogni combinazione durata/volatilita'.
|
||||
- IO file: generazione multipla di Excel e plot per portafoglio.
|
||||
|
||||
## Direzioni di miglioramento (linee guida, non implementate)
|
||||
- Sicurezza: rimuovere/securizzare `connection.txt`, usare variabili ambiente o secret store; separare credenziali dal repo.
|
||||
- Configurazione: estrarre target/vincoli in file di config (yaml/json); centralizzare costanti.
|
||||
- Gestione dipendenze: aggiungere requirements/lockfile e script setup.
|
||||
- Architettura: modularizzare (data fetch, metriche, optimizer, export), riuso tra versioni, eliminare duplicati.
|
||||
- Dati: validazione input, gestione missing diversa da fillna(0), log warning sui buchi/ISIN mancanti.
|
||||
- Performance: fetch batch/caching, eventuale parallelizzazione o memoization di covarianze/metriche.
|
||||
- Testing/qualita': introdurre test per metriche e vincoli, logging strutturato, controlli su overwrite output.
|
||||
- Observability: report riepilogo a schermo/logs strutturati piu' dei soli print.
|
||||
Reference in New Issue
Block a user