|
9 | 9 | print("🧪 CREATE PORTFOLIO TABLES ") |
10 | 10 | print("=" * 60) |
11 | 11 | query = f""" |
12 | | - CREATE TABLE portfolio_snapshots ( |
13 | | - date DATE PRIMARY KEY, |
| 12 | +CREATE TABLE portfolio_positions ( |
| 13 | + date DATE NOT NULL, |
| 14 | + ticker VARCHAR(10) NOT NULL, |
14 | 15 | |
15 | | - -- Valori base portafoglio |
16 | | - total_value DECIMAL(12,2) NOT NULL, -- valore totale portafoglio (posizioni + cash) |
17 | | - cash_balance DECIMAL(12,2) NOT NULL, -- cash disponibile |
18 | | - positions_count INTEGER DEFAULT 0, -- numero posizioni aperte |
| 16 | + -- Dati posizione base |
| 17 | + shares INTEGER NOT NULL, -- numero azioni possedute |
| 18 | + avg_cost DECIMAL(10,4) NOT NULL, -- costo medio di acquisto |
| 19 | + current_price DECIMAL(10,4) NOT NULL, -- prezzo corrente |
| 20 | + current_value DECIMAL(12,2) NOT NULL, -- valore corrente (shares * current_price) |
19 | 21 | |
20 | | - -- Metriche di performance |
21 | | - daily_return_pct DECIMAL(8,4), -- rendimento giornaliero % |
22 | | - portfolio_volatility DECIMAL(8,4), -- volatilità rolling 30 giorni |
23 | | - portfolio_sharpe DECIMAL(8,4), -- sharpe ratio rolling 30 giorni |
| 22 | + -- Metriche posizione |
| 23 | + position_weight_pct DECIMAL(8,4), -- peso % nel portafoglio totale |
| 24 | + position_pnl_pct DECIMAL(8,4), -- P&L % dalla media acquisti |
| 25 | + position_volatility DECIMAL(8,4), -- volatilità rolling 30 giorni della posizione |
| 26 | + position_sharpe DECIMAL(8,4), -- sharpe ratio rolling 30 giorni della posizione |
24 | 27 | |
25 | | - -- Metriche di rischio |
26 | | - max_drawdown_pct DECIMAL(8,4), -- max drawdown storico % |
27 | | - current_drawdown_pct DECIMAL(8,4), -- drawdown corrente da picco % |
28 | | - peak_value DECIMAL(12,2), -- valore picco storico |
29 | | - consecutive_loss_days INTEGER DEFAULT 0, -- giorni perdita consecutiva |
| 28 | + -- Metriche di rischio posizione |
| 29 | + position_var_95 DECIMAL(12,2), -- Value at Risk 95% (1 giorno) |
| 30 | + beta_vs_portfolio DECIMAL(6,4), -- beta rispetto al portafoglio |
30 | 31 | |
31 | 32 | -- Metadata |
32 | 33 | created_at TIMESTAMP DEFAULT NOW(), |
33 | | - updated_at TIMESTAMP DEFAULT NOW() |
| 34 | + |
| 35 | + -- Chiavi |
| 36 | + PRIMARY KEY (date, ticker), |
| 37 | + FOREIGN KEY (date) REFERENCES portfolio_snapshots(date) ON DELETE CASCADE |
34 | 38 | ); |
35 | 39 |
|
36 | | --- Indici per performance |
37 | | -CREATE INDEX idx_portfolio_snapshots_date ON portfolio_snapshots(date); |
| 40 | +-- Indici per performance |
| 41 | +CREATE INDEX idx_portfolio_positions_date ON portfolio_positions(date); |
| 42 | +CREATE INDEX idx_portfolio_positions_ticker ON portfolio_positions(ticker); |
| 43 | +CREATE INDEX idx_portfolio_positions_weight ON portfolio_positions(position_weight_pct DESC); |
38 | 44 |
|
39 | 45 | """ |
40 | 46 | db.execute_query(query, fetch=False) |
|
0 commit comments