-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproc_FigureOut_eff.py
More file actions
129 lines (105 loc) · 4.36 KB
/
proc_FigureOut_eff.py
File metadata and controls
129 lines (105 loc) · 4.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 27 12:24:16 2025
@author: youngskim
"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import pickle
from PIL import Image
def figureout_eff(muar, riskar, titlestr, xaxisstr, savefilename):
idx = (muar>(min(muar))) & (muar<max(muar))
plt.plot(riskar[idx]*100, muarG[idx]*10000)
plt.title(titlestr)
plt.xlabel(xaxisstr)
plt.ylabel('Expected Excess Return')
plt.savefig(savefilename+".eps", format="eps") # Save as EPS
plt.savefig(savefilename+".pdf", format="pdf") # Save as PDF
plt.savefig(savefilename+".png", format="png") # Save as PDF
plt.show()
image = Image.open(savefilename+".png").convert('L')
image.save(savefilename+"gray.png")
def figureout_weightvec(muar, xmtx, bloombergtickers, titlestr, savefilename, legfla = True):
idx = (muar>(min(muar))) & (muar<max(muar))
df = pd.DataFrame(data = xmtx[:,idx])
df.index = bloombergtickers
df.columns = muar[idx]*10000
df.columns = df.columns.map('${:,.4f}$'.format)
df_sorted = df.transpose()
ax = df_sorted.plot( kind='bar', stacked=True, width=1, colormap = "Pastel1",
figsize=(6, 10), title=titlestr, legend = legfla)
ax.set_xlabel('Expected Excess Return')
ax.set_ylabel('Proportion')
hatches = [ '//', 'oo', '\\\\', '..', '||', '','--', 'xx', 'OO', '++','**' ]
# Iterating through bars and assigning hatches
for i, container in enumerate(ax.containers):
hatch = hatches[i % len(hatches)]
for patch in container.patches:
patch.set_hatch(hatch)
if (legfla == True) :
ax.legend(bbox_to_anchor=(1.04, 0.5), borderaxespad=0, fontsize="20")
selected_indices = list(range(0, len(df.columns), 10)) # Show every 2nd label
ax.set_xticks(selected_indices)
ax.set_xticklabels(df.columns[selected_indices])
plt.savefig(savefilename+".eps", format="eps", bbox_inches='tight') # Save as EPS
plt.savefig(savefilename+".pdf", format="pdf", bbox_inches='tight') # Save as PDF
plt.savefig(savefilename+".png", format="png", bbox_inches='tight') # Save as PDF
plt.show()
image = Image.open(savefilename+".png").convert('L')
image.save(savefilename+"gray.png")
return ax
with open('data/saveddata_Portopt_BL_NTS.pickle', 'rb') as f:
loaded_data = pickle.load(f)
xG = loaded_data['xG']
xC = loaded_data['xC']
xN = loaded_data['xN']
muarG = loaded_data['muarG']
muarC = loaded_data['muarC']
muarN = loaded_data['muarN']
riskarG = loaded_data['riskarG']
riskarC = loaded_data['riskarC']
riskarN = loaded_data['riskarN']
bloombergtickers = loaded_data['bloombergtickers']
figureout_eff(muarG, riskarG,
"Mean-Variance Optimization",
'Postfolio Standard Deviation',
'fig/effMV')
figureout_eff(muarC, riskarC,
"Mean-CVaR Optimization",
'CVaR',
'fig/effMCVaR')
figureout_eff(muarN, riskarN,
"Mean-CVaR-NTS Optimization",
'CVaR',
'fig/effMCVaRNTS')
figureout_weightvec(muarG, xG, bloombergtickers,
"Mean-Variance Optimization",
'fig/AllWeightMV', False)
figureout_weightvec(muarC, xC, bloombergtickers,
"Mean-CVaR Optimization",
'fig/AllWeightCVaR', False)
figureout_weightvec(muarN, xN, bloombergtickers,
"Mean-CVaR-NTS Optimization",
'fig/AllWeightCVaRNTS', True)
with open('data/saveddata_Portopt_Prior_BL_NTS.pickle', 'rb') as f:
loaded_data = pickle.load(f)
xG = loaded_data['xG']
xC = loaded_data['xC']
xN = loaded_data['xN']
muarG = loaded_data['muarG']
muarC = loaded_data['muarC']
muarN = loaded_data['muarN']
riskarG = loaded_data['riskarG']
riskarC = loaded_data['riskarC']
riskarN = loaded_data['riskarN']
bloombergtickers = loaded_data['bloombergtickers']
figureout_weightvec(muarG, xG, bloombergtickers,
"Mean-Variance Optimization",
'fig/AllWeightMV_prior', False)
figureout_weightvec(muarC, xC, bloombergtickers,
"Mean-CVaR Optimization",
'fig/AllWeightCVaR_prior', False)
figureout_weightvec(muarN, xN, bloombergtickers,
"Mean-CVaR-NTS Optimization",
'fig/AllWeightCVaRNTS_prior', False)