Professional Documents
Culture Documents
Portfolio Construction & Optimization (Python) Simulator Analytics
Portfolio Construction & Optimization (Python) Simulator Analytics
gine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 1/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 2/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
Out[5]: Out[6]:
Prev Deliverable Open High Low Close Volume Turnover %Change
Symbol Series Open High Low Last Close VWAP Volume Turnover Trades %Deliverble %Chang
Close Volume
Date
Date
2017-01-02 8210.10 8212.00 8133.80 8179.50 122016111 5.255490e+10 0.000000
2017-
HDFCLIFE EQ 290.00 310.0 369.00 307.00 343.90 344.60 327.26 168836552 5.525288e+15 1177530 82044782 0.4859 0.00000 2017-01-03 8196.05 8219.10 8148.60 8192.25 131186021 6.053670e+10 0.001559
11-17
2019-
HDFCLIFE EQ 625.30 627.9 639.00 623.10 636.60 635.60 631.25 3006668 1.897949e+14 58982 1433743 0.4769 0.01647
12-26 739 rows × 7 columns
2019-
HDFCLIFE EQ 635.60 639.0 639.00 628.55 630.05 631.40 631.79 2494965 1.576282e+14 72563 1514619 0.6071 -0.00660
12-27
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 3/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 4/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 5/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 6/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 7/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 8/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
Investment : 1000000
Portfolio Return: 142926.03665209853
Portfolio SD : 120693.27749207916
Investment : 1000000
Portfolio Return: 157623.43471432617
Portfolio SD : 126338.35300157545
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 11/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 12/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
Out[43]:
Mean SD
In [44]: 1 df = rr_profile.append(s_ticker_rr_profile_df)
2 df['SR'] = (df['Mean'] - rf) / df["SD"]
3 df
Out[44]:
Mean SD SR
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 13/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 14/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
In [45]: 1 plt.figure(figsize=(20,10))
2 plt.scatter(df["SD"], df["Mean"])
3
4 plt.scatter(df.loc["Simulated Portfolio", "SD"], df.loc["Simulated Portfolio", "Mean"], color='b', s=250)
5 plt.annotate("---Portfolio", (df.loc["Simulated Portfolio", "SD"], df.loc["Simulated Portfolio", "Mean"]), f
6
7 plt.scatter(df.loc["Benchmark Portfolio", "SD"], df.loc["Benchmark Portfolio", "Mean"], color='r', s=250)
8 plt.annotate("---Benchmark", (b_sd, b_ret), fontsize=12, color='black')
9
10 plt.suptitle('Risk-Return Profile - Stocks | Portfolio | Benchamrk', fontsize=12)
11 plt.xlabel("Standard Deviation")
12 plt.ylabel("Mean Return")
13 plt.show()
Analytics
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 15/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 16/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
In [46]: 1 df_higher_mean = df[df['Mean'] >= df.loc["Simulated Portfolio", "Mean"]].sort_values(by=['Mean'], ascending= In [47]: 1 1 - (df.loc["Simulated Portfolio", "SD"] / df.loc["ICICIBANK", "SD"])
2 df_lower_sd = df[df['SD'] <= df.loc["Simulated Portfolio", "SD"]].sort_values(by=['SD'], ascending=False)
3 print(df_higher_mean) Out[47]: 0.575618753706364
4 print(df_lower_sd)
In [48]: 1 df['DRatio'] = df.loc["Simulated Portfolio", "SD"] / df['SD']
Mean SD SR
2 df
BAJFINANCE 0.593202 0.327144 1.629869
TITAN 0.485473 0.327154 1.300530 Out[48]:
BAJAJFINSV 0.438334 0.294133 1.286268 Mean SD SR DRatio
TATACONSUM 0.379408 0.327609 0.974965
DIVISLAB 0.347802 0.350771 0.820483 Simulated Portfolio 0.157623 0.126338 0.772714 1.000000
NESTLEIND 0.332469 0.216543 1.258269 Benchmark Portfolio 0.142926 0.120693 0.687081 1.046772
HDFCLIFE 0.331218 0.291921 0.929080
KOTAKBANK 0.316419 0.219698 1.167144 ADANIPORTS 0.146732 0.308613 0.281038 0.409375
HINDUNILVR 0.307279 0.194055 1.274275
ASIANPAINT 0.254572 0.214106 0.908763 0.590073
ICICIBANK 0.302969 0.297700 0.816153
HDFC 0.258261 0.223339 0.887712 AXISBANK 0.216748 0.279921 0.559973 0.451336
ASIANPAINT 0.254572 0.214106 0.908763
AXISBANK 0.216748 0.279921 0.559973 BAJAJ-AUTO 0.093869 0.221231 0.153092 0.571070
RELIANCE 0.214392 0.393515 0.392340 BAJAJFINSV 0.438334 0.294133 1.286268 0.429528
TECHM 0.188675 0.270197 0.476226
BHARTIARTL 0.186642 0.337235 0.375531 BAJFINANCE 0.593202 0.327144 1.629869 0.386185
SBILIFE 0.177249 0.274036 0.427860
BHARTIARTL 0.186642 0.337235 0.375531 0.374631
SBIN 0.163963 0.343142 0.302973
HINDALCO 0.158421 0.327037 0.300949 BPCL 0.001328 0.412570 -0.142211 0.306223
Simulated Portfolio 0.157623 0.126338 0.772714
BRITANNIA 0.103488 0.362333 0.120023 0.348681
Mean SD SR
Simulated Portfolio 0.157623 0.126338 0.772714
Benchmark Portfolio 0.142926 0.120693 0.687081
Variance-Covariance & Correlation
Diversification Ratio
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 17/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 18/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
Out[57]: Out[50]:
BAJAJ- BAJAJ-
ADANIPORTS ASIANPAINT AXISBANK BAJAJFINSV BAJFINANCE BHARTIARTL BPCL BRITANNIA CIPLA ... SUN ADANIPORTS ASIANPAINT AXISBANK BAJAJFINSV BAJFINANCE BHARTIARTL BPCL BRITANNIA CIPLA ... SUNPHAR
AUTO AUTO
ADANIPORTS 0.095242 0.016780 0.023662 0.017421 0.029928 0.035363 0.018885 0.030657 0.015196 0.016857 ... ADANIPORTS 1.0000 0.2539 0.2739 0.2552 0.3297 0.3503 0.1815 0.2408 0.1359 0.2246 ... 0.1
ASIANPAINT 0.016780 0.045842 0.017222 0.013581 0.022076 0.020405 0.014065 0.023600 0.010962 0.004859 ... ASIANPAINT 0.2539 1.0000 0.2873 0.2867 0.3506 0.2913 0.1948 0.2672 0.1413 0.0933 ... 0.0
AXISBANK 0.023662 0.017222 0.078356 0.014836 0.027235 0.029090 0.017151 0.023607 0.013149 0.013001 ... AXISBANK 0.2739 0.2873 1.0000 0.2396 0.3308 0.3177 0.1817 0.2044 0.1296 0.1910 ... 0.1
BAJAJ-AUTO 0.017421 0.013581 0.014836 0.048943 0.019691 0.019647 0.012686 0.020663 0.003877 0.010520 ... BAJAJ-AUTO 0.2552 0.2867 0.2396 1.0000 0.3026 0.2715 0.1700 0.2264 0.0484 0.1956 ... 0.1
BAJAJFINSV 0.029928 0.022076 0.027235 0.019691 0.086514 0.067627 0.020797 0.031098 0.017283 0.012088 ... BAJAJFINSV 0.3297 0.3506 0.3308 0.3026 1.0000 0.7028 0.2097 0.2563 0.1622 0.1690 ... 0.1
BAJFINANCE 0.035363 0.020405 0.029090 0.019647 0.067627 0.107023 0.020166 0.034381 0.015309 0.014264 ... BAJFINANCE 0.3503 0.2913 0.3177 0.2715 0.7028 1.0000 0.1828 0.2547 0.1292 0.1793 ... 0.1
BHARTIARTL 0.018885 0.014065 0.017151 0.012686 0.020797 0.020166 0.113727 0.017786 0.005648 0.012786 ... BHARTIARTL 0.1815 0.1948 0.1817 0.1700 0.2097 0.1828 1.0000 0.1278 0.0462 0.1559 ... 0.0
BPCL 0.030657 0.023600 0.023607 0.020663 0.031098 0.034381 0.017786 0.170214 0.004947 0.008205 ... BPCL 0.2408 0.2672 0.2044 0.2264 0.2563 0.2547 0.1278 1.0000 0.0331 0.0818 ... 0.0
BRITANNIA 0.015196 0.010962 0.013149 0.003877 0.017283 0.015309 0.005648 0.004947 0.131285 0.005811 ... BRITANNIA 0.1359 0.1413 0.1296 0.0484 0.1622 0.1292 0.0462 0.0331 1.0000 0.0660 ... 0.0
CIPLA 0.016857 0.004859 0.013001 0.010520 0.012088 0.014264 0.012786 0.008205 0.005811 0.059125 ... CIPLA 0.2246 0.0933 0.1910 0.1956 0.1690 0.1793 0.1559 0.0818 0.0660 1.0000 ... 0.3
Data Cleaning
In [ ]: 1 s_ticker_ret_hist_df.transpose()
In [ ]: 1 s_ticker_ret_hist_df.isnull().sum()
In [ ]: 1 s_ticker_ret_hist_df.fillna(0).transpose()
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 19/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 20/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook 05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
Out[67]:
In [53]: 1 s_ticker_close_hist_df BAJAJ-
ADANIPORTS ASIANPAINT AXISBANK BAJAJFINSV BAJFINANCE BHARTIARTL BPCL BRITANNIA CIPLA ... SUN
AUTO
Out[53]:
BAJAJ- ADANIPORTS 0.095371 0.016802 0.023694 0.017445 0.029968 0.035411 0.018911 0.030699 0.015216 0.016879 ...
ADANIPORTS ASIANPAINT AXISBANK BAJAJFINSV BAJFINANCE BHARTIARTL BPCL BRITANNIA CIPLA ... SUNPHARMA TATA
AUTO
ASIANPAINT 0.016802 0.045903 0.017245 0.013600 0.022106 0.020431 0.014084 0.023632 0.010977 0.004866 ...
Date
AXISBANK 0.023694 0.017245 0.078462 0.014856 0.027271 0.029129 0.017174 0.023639 0.013167 0.013018 ...
2017-
273.80 904.65 447.75 2598.50 2949.65 870.05 311.00 640.50 2886.45 566.00 ... 634.05 BAJAJ-AUTO 0.017445 0.013600 0.014856 0.049009 0.019718 0.019674 0.012703 0.020691 0.003883 0.010535 ...
01-02
2017- BAJAJFINSV 0.029968 0.022106 0.027271 0.019718 0.086631 0.067718 0.020825 0.031140 0.017306 0.012104 ...
273.95 896.60 455.25 2619.20 3016.65 884.00 304.45 650.55 2872.25 573.65 ... 636.10
01-03
BAJFINANCE 0.035411 0.020431 0.029129 0.019674 0.067718 0.107167 0.020193 0.034428 0.015330 0.014284 ...
2017-
274.90 906.60 453.10 2684.10 2960.85 871.90 313.90 655.45 2852.40 568.25 ... 637.35 BHARTIARTL 0.018911 0.014084 0.017174 0.012703 0.020825 0.020193 0.113881 0.017810 0.005655 0.012804 ...
01-04
BPCL 0.030699 0.023632 0.023639 0.020691 0.031140 0.034428 0.017810 0.170445 0.004954 0.008216 ...
2017-
287.50 916.50 458.05 2723.35 3018.45 899.75 321.10 672.70 2865.80 579.85 ... 643.45
01-05 BRITANNIA 0.015216 0.010977 0.013167 0.003883 0.017306 0.015330 0.005655 0.004954 0.131463 0.005819 ...
2017- CIPLA 0.016879 0.004866 0.013018 0.010535 0.012104 0.014284 0.012804 0.008216 0.005819 0.059205 ...
286.05 929.50 455.20 2707.35 2978.55 878.45 319.75 664.85 2894.95 582.85 ... 640.75
01-06
... ... ... ... ... ... ... ... ... ... ... ... ...
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 21/23 localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 22/23
05/09/2021 Portfolio Construction & Optimization { Python } | Simulator | Analytics | Engine - Jupyter Notebook
In [70]: 1 efficient_frontier.portfolio_performance(verbose=True)
localhost:8888/notebooks/Desktop/Projects/Programming/Python/Portfolio Construction %26 Optimization %7B Python %7D %7C Simulator %7C Analytics %7C Engine.ipynb 23/23