|
9 | 9 | print("🧪 CREATE PORTFOLIO TABLES ") |
10 | 10 | print("=" * 60) |
11 | 11 | query = f""" |
12 | | -CREATE TABLE portfolio_positions ( |
13 | | - date DATE NOT NULL, |
14 | | - ticker VARCHAR(10) NOT NULL, |
15 | | - |
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) |
21 | | - |
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 |
27 | | - |
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 |
31 | | - |
32 | | - -- Metadata |
33 | | - created_at TIMESTAMP DEFAULT NOW(), |
34 | | - |
35 | | - -- Chiavi |
36 | | - PRIMARY KEY (date, ticker), |
37 | | - FOREIGN KEY (date) REFERENCES portfolio_snapshots(date) ON DELETE CASCADE |
38 | | -); |
| 12 | +ALTER TABLE portfolio_snapshots |
| 13 | + ADD COLUMN portfolio_name VARCHAR(50) DEFAULT 'default'; |
39 | 14 |
|
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); |
| 15 | +ALTER TABLE portfolio_positions |
| 16 | + ADD COLUMN portfolio_name VARCHAR(50) DEFAULT 'default'; |
| 17 | +
|
| 18 | +ALTER TABLE portfolio_positions |
| 19 | + DROP CONSTRAINT portfolio_positions_pkey, |
| 20 | + ADD PRIMARY KEY (date, ticker, portfolio_name); |
44 | 21 |
|
45 | 22 | """ |
46 | 23 | db.execute_query(query, fetch=False) |
|
0 commit comments