Robert Castagna commited on
Commit
641a9e4
1 Parent(s): 4ad15ae

meeting updates

Browse files
Files changed (2) hide show
  1. fin_data.db +0 -0
  2. pages/2_Portfolio_Builder.py +20 -13
fin_data.db CHANGED
Binary files a/fin_data.db and b/fin_data.db differ
 
pages/2_Portfolio_Builder.py CHANGED
@@ -69,18 +69,14 @@ obb.account.login(pat=os.environ['open_bb_pat'])
69
 
70
  if 'tickers' not in st.session_state:
71
  tickers = [
72
- "XLE", "XLF", "XLU", "XLI", "GDX",
73
- "XLK", "XLV", "XLY", "XLP", "XLB",
74
- "XOP", "IYR", "XHB", "ITB", "VNQ",
75
- "GDXJ", "IYE", "OIH", "XME", "XRT",
76
- "SMH", "IBB", "KBE", "KRE", "XTL",
77
  ]
78
  st.session_state['tickers'] = tickers
79
 
80
  if not platform.processor(): # take inputs from the user for hosted application
81
  tickers = st.session_state['tickers']
82
 
83
- elif re.search('AuthenticAMD', platform.processor()): # use live ibkr portfolio if ran from local machine
84
  try:
85
  # Initialize IB connection here
86
  open_nested_event_loop()
@@ -132,8 +128,8 @@ with st.form(key="selecting columns"):
132
  # Step 2: Set portfolio optimization model
133
  port.assets_stats(model='hist') # Using historical data for estimation
134
  # Step 3: Configure the optimization model and calculate the efficient frontier
135
- ef = port.efficient_frontier(model='Classic', rm='MSV', points=50, rf=0.0406, hist=True)
136
- w1 = port.optimization(model='Classic', rm='MSV', obj='Sharpe', rf=0.0, hist=True)
137
 
138
  mu = port.mu # Expected returns
139
  cov = port.cov # Covariance matrix
@@ -148,7 +144,7 @@ with st.form(key="selecting columns"):
148
  # Ensure you're using the adjusted close prices for accurate return calculation
149
  benchmark_returns = spy_prices['close'].pct_change().dropna()
150
 
151
- port.rf = 0.0406 # Risk-free rate
152
  portfolio_return = np.dot(w1, mu)
153
 
154
  # market return
@@ -225,12 +221,13 @@ with st.form(key="selecting columns"):
225
 
226
  st.pyplot(fig1)
227
 
228
- port = rp.HCPortfolio(returns=returns)
229
  w = port.optimization(
230
  model="HRP",
231
  codependence="pearson",
232
- rm="MV", # minimum variance
233
- rf=0.05,
 
234
  linkage="single",
235
  max_k=10,
236
  leaf_order=True,
@@ -273,7 +270,7 @@ with st.form(key="selecting columns"):
273
  # Ensure you're using the adjusted close prices for accurate return calculation
274
  benchmark_returns = spy_prices['close'].pct_change().dropna()
275
 
276
- port.rf = 0.0406 # Risk-free rate
277
  portfolio_return = np.dot(w, mu)
278
 
279
  # market return
@@ -308,3 +305,13 @@ with st.form(key="selecting columns"):
308
  w=w,
309
  )
310
  st.write('Sharpe Ratio: ', np.round(sharpe_ratio, 3))
 
 
 
 
 
 
 
 
 
 
 
69
 
70
  if 'tickers' not in st.session_state:
71
  tickers = [
72
+ "SPY", "QQQ","BND","GLD","VTI"
 
 
 
 
73
  ]
74
  st.session_state['tickers'] = tickers
75
 
76
  if not platform.processor(): # take inputs from the user for hosted application
77
  tickers = st.session_state['tickers']
78
 
79
+ elif not re.search('AuthenticAMD', platform.processor()): # use live ibkr portfolio if ran from local machine
80
  try:
81
  # Initialize IB connection here
82
  open_nested_event_loop()
 
128
  # Step 2: Set portfolio optimization model
129
  port.assets_stats(model='hist') # Using historical data for estimation
130
  # Step 3: Configure the optimization model and calculate the efficient frontier
131
+ ef = port.efficient_frontier(model='Classic', rm='MV', points=50, rf=0.0406, hist=True)
132
+ w1 = port.optimization(model='Classic', rm='MV', obj='Sharpe', rf=0.0, hist=True)
133
 
134
  mu = port.mu # Expected returns
135
  cov = port.cov # Covariance matrix
 
144
  # Ensure you're using the adjusted close prices for accurate return calculation
145
  benchmark_returns = spy_prices['close'].pct_change().dropna()
146
 
147
+ port.rf = 0.000406 # Risk-free rate
148
  portfolio_return = np.dot(w1, mu)
149
 
150
  # market return
 
221
 
222
  st.pyplot(fig1)
223
 
224
+ port = rp.HCPortfolio(returns=returns)#, w_max=0.3, w_min=0.05)
225
  w = port.optimization(
226
  model="HRP",
227
  codependence="pearson",
228
+ obj='Sharpe',
229
+ rm='vol', # minimum variance
230
+ rf=0.000406,
231
  linkage="single",
232
  max_k=10,
233
  leaf_order=True,
 
270
  # Ensure you're using the adjusted close prices for accurate return calculation
271
  benchmark_returns = spy_prices['close'].pct_change().dropna()
272
 
273
+ port.rf = 0.000406 # Risk-free rate
274
  portfolio_return = np.dot(w, mu)
275
 
276
  # market return
 
305
  w=w,
306
  )
307
  st.write('Sharpe Ratio: ', np.round(sharpe_ratio, 3))
308
+
309
+ # -------------------------- (Report) -------------------------------- #
310
+ # fig_report = rp.jupyter_report(returns,
311
+ # w=w1,
312
+ # rm='MV',
313
+ # rf=0.0406,
314
+ # nrow=25
315
+ # )
316
+
317
+ # st.pyplot(fig_report)