Composizione del portafoglio e backtesting

Introduzione alla gestione del rischio di portafoglio in Python

Dakota Wixom

Quantitative Analyst | QuantCourse.com

Calcolare i rendimenti del portafoglio

Formula del rendimento del portafoglio:

$$ R_p = R_{a_1} w_{a_1} + R_{a_2} w_{a_2} + ... + R_{a_n} w_{a_1} $$

  • $ R_p$: Rendimento del portafoglio
  • $ R_{a_n}$: Rendimento dell'asset n
  • $ w_{a_n}$: Peso dell'asset n
Introduzione alla gestione del rischio di portafoglio in Python

Supponendo che StockReturns sia un DataFrame pandas con i rendimenti azionari, puoi calcolare il rendimento del portafoglio per un set di pesi così:

import numpy as np
portfolio_weights = np.array([0.25, 0.35, 0.10, 0.20, 0.10])
port_ret = StockReturns.mul(portfolio_weights, axis=1).sum(axis=1)
port_ret
Date
2017-01-03    0.008082
2017-01-04    0.000161
2017-01-05    0.003448
         ...
StockReturns["Portfolio"] = port_ret
Introduzione alla gestione del rischio di portafoglio in Python

Portafogli a pesi uguali in Python

Supponendo che StockReturns sia un DataFrame pandas con i rendimenti azionari, puoi calcolare il rendimento di un portafoglio a pesi uguali così:

import numpy as np
numstocks = 5
portfolio_weights_ew = np.repeat(1/numstocks, numstocks)
StockReturns.iloc[:,0:numstocks].mul(portfolio_weights_ew, axis=1).sum(axis=1)
Date
2017-01-03    0.008082
2017-01-04    0.000161
2017-01-05    0.003448
         ...
Introduzione alla gestione del rischio di portafoglio in Python

Grafico dei rendimenti del portafoglio in Python

Per tracciare i rendimenti giornalieri in Python:

StockPrices["Returns"] = StockPrices["Adj Close"].pct_change()
StockReturns = StockPrices["Returns"]
StockReturns.plot()

Introduzione alla gestione del rischio di portafoglio in Python

Grafico dei rendimenti cumulati del portafoglio

Per tracciare i rendimenti cumulati di più portafogli:

import matplotlib.pyplot as plt
CumulativeReturns = ((1 + StockReturns).cumprod() - 1)
CumulativeReturns[["Portfolio","Portfolio_EW"]].plot()

Introduzione alla gestione del rischio di portafoglio in Python

Capitalizzazione di mercato

Introduzione alla gestione del rischio di portafoglio in Python

Capitalizzazione di mercato

Capitalizzazione di mercato: Il valore delle azioni quotate di una società.

Chiamata anche Market cap.

Introduzione alla gestione del rischio di portafoglio in Python

Portafogli ponderati per market cap

Per calcolare il peso per market cap di un'azione n:

$$ w_{mcap_n} = \frac{mcap_n}{ \sum_{i=1}^n mcap_i } $$

Introduzione alla gestione del rischio di portafoglio in Python

Pesi per market cap in Python

Per calcolare i pesi per market cap in Python, supponendo di avere i dati sulle capitalizzazioni di ogni azienda:

import numpy as np
market_capitalizations = np.array([100, 200, 100, 100])
mcap_weights = market_capitalizations/sum(market_capitalizations)
mcap_weights
array([0.2, 0.4, 0.2, 0.2])
Introduzione alla gestione del rischio di portafoglio in Python

Esercitiamoci!

Introduzione alla gestione del rischio di portafoglio in Python

Preparing Video For Download...