विकल्पी पोर्टफोलियो ऑप्टिमाइज़ेशन

Python में Portfolio Analysis परिचय

Charlotte Werger

Data Scientist

Historic डेटा पर आधारित expected risk और return

$$

  • Mean historic returns या historic portfolio variance, mu और Sigma के सटीक अनुमान नहीं हैं
  • इसलिए portfolio optimization से निकले weights भविष्य के डेटा पर अच्छा काम करने की गारंटी नहीं देते

$$ अगर इतिहास खुद को दोहराए तो मज़ाक

Python में Portfolio Analysis परिचय

Historic डेटा

समय के साथ बदलता टाइम-सीरीज़ डेटा

Python में Portfolio Analysis परिचय

Exponentially weighted returns

$$

  • Risk और return के लिए बेहतर measures चाहिए
  • Exponentially weighted risk और return, सबसे हाल के डेटा को ज़्यादा वज़न देता है
  • ग्राफ़ में exponential moving average: सबसे ज़्यादा weight t-1 observation पर

Exponentially weighted returns की गणना में वज़न

Python में Portfolio Analysis परिचय

Exponentially weighted covariance

$$

  • Exponential covariance matrix: हाल के डेटा को ज़्यादा weight देता है
  • ग्राफ़ में: काला exponential weighted volatility, नीली standard volatility से असली volatility को बेहतर फ़ॉलो करता है

$$ Exponentially weighted covariance और normal covariance की actual covariance से तुलना

1 Source: https://systematicinvestor.github.io/Exponentially-Weighted-Volatility-RCPP
Python में Portfolio Analysis परिचय

Exponentially weighted returns

from pypfopt import expected_returns
# Exponentially weighted moving average
mu_ema = expected_returns.ema_historical_return(df, 
                         span=252, frequency=252)
print(mu_ema)
symbol
XOM     0.103030
BBY     0.394629
PFE     0.186058
Python में Portfolio Analysis परिचय

Exponentially weighted covariance

from pypfopt import risk_models
# Exponentially weighted covariance
Sigma_ew = risk_models.exp_cov(df, span=180, frequency=252)
Python में Portfolio Analysis परिचय

Optimization में downside risk का उपयोग

$ $

  • Sortino ratio याद करें: यह केवल नकारात्मक returns की variance लेता है
  • PyPortfolioOpt आपको optimization में semicovariance इस्तेमाल करने देता है, जो downside risk का माप है:

$ $ Downside risk की गणना

Python में Portfolio Analysis परिचय

PyPortfolioOpt में semicovariance

Sigma_semi = risk_models.semicovariance(df,     
                        benchmark=0, frequency=252)

print(Sigma_semi)
         XOM         BBY          MA         PFE
XOM     0.018939    0.008505    0.006568    0.004058
BBY     0.008505    0.016797    0.009133    0.004404
MA      0.006568    0.009133    0.018711    0.005373
PFE     0.004058    0.004404    0.005373    0.008349
Python में Portfolio Analysis परिचय

अभ्यास करते हैं!

Python में Portfolio Analysis परिचय

Preparing Video For Download...