Compoziția portofoliului și backtesting

Introducere în gestionarea riscului de portofoliu în Python

Dakota Wixom

Quantitative Analyst | QuantCourse.com

Calculul randamentului portofoliului

Formula randamentului portofoliului:

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

  • $ R_p$: Randamentul portofoliului
  • $ R_{a_n}$: Randamentul activului n
  • $ w_{a_n}$: Ponderea activului n
Introducere în gestionarea riscului de portofoliu în Python

Presupunând că StockReturns este un DataFrame pandas cu randamentele acțiunilor, puteți calcula randamentul portofoliului pentru un set de ponderi astfel:

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
Introducere în gestionarea riscului de portofoliu în Python

Portofolii egal ponderate în Python

Presupunând că StockReturns este un DataFrame pandas cu randamentele acțiunilor, puteți calcula randamentul unui portofoliu egal ponderat astfel:

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
         ...
Introducere în gestionarea riscului de portofoliu în Python

Reprezentarea grafică a randamentelor în Python

Pentru a reprezenta grafic randamentele zilnice în Python:

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

Introducere în gestionarea riscului de portofoliu în Python

Reprezentarea grafică a randamentelor cumulate

Pentru a reprezenta grafic randamentele cumulate ale mai multor portofolii:

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

Introducere în gestionarea riscului de portofoliu în Python

Capitalizarea bursieră

Introducere în gestionarea riscului de portofoliu în Python

Capitalizarea bursieră

Capitalizarea bursieră: Valoarea acțiunilor listate ale unei companii.

Denumită și capitalizare de piață.

Introducere în gestionarea riscului de portofoliu în Python

Portofolii ponderate după capitalizare

Pentru a calcula ponderea după capitalizare a unui titlu n:

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

Introducere în gestionarea riscului de portofoliu în Python

Ponderi după capitalizare în Python

Pentru a calcula ponderile după capitalizare în Python, presupunând că dețineți datele privind capitalizarea fiecărei companii:

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])
Introducere în gestionarea riscului de portofoliu în Python

Să exersăm!

Introducere în gestionarea riscului de portofoliu în Python

Preparing Video For Download...