RobertCastagna commited on
Commit
c8d0000
·
verified ·
1 Parent(s): 338b15b

Update pages/portfolio_tracker.py

Browse files
Files changed (1) hide show
  1. pages/portfolio_tracker.py +52 -53
pages/portfolio_tracker.py CHANGED
@@ -92,57 +92,56 @@ with st.form(key="selecting columns"):
92
  symbols = st.multiselect(label='Select Tickers:', options=list_of_tickers, placeholder='MSFT, AAPL, ...')
93
  submit_button = st.form_submit_button(label='Evaluate')
94
 
95
- if submit_button:
96
- st.write(symbols)
97
-
98
- # if submit_button and symbols:
99
- # beta_dfs = []
100
- # gains_data = {}
101
- # hash_map = {}
102
-
103
- # for ticker in symbols:
104
- # # make all the API calls and capture return json
105
- # basic_info = get_industry(ticker)
106
- # metric_data, annual_series_data, quarterly_series_data = get_company_metrics(ticker)
107
-
108
- # # reformat all JSON returns to be flattened dictionaries
109
- # roe_dict = {'roe': annual_series_data['roe'][0]['v']}
110
- # totalDebtToTotalCapital_y_dict = {'totalDebtToTotalCapital_y' : annual_series_data['totalDebtToTotalCapital'][0]['v']}
111
- # totalDebtToEquity_y_dict = {'totalDebtToEquity_y' : annual_series_data['totalDebtToEquity'][0]['v']}
112
- # eps_dict = {'eps' : annual_series_data['eps'][0]['v']}
113
- # totalDebtToTotalCapital_q_dict = {'totalDebtToTotalCapital_q' : quarterly_series_data['totalDebtToTotalCapital'][0]['v']}
114
- # totalDebtToEquity_q_dict = {'totalDebtToEquity_q' : quarterly_series_data['totalDebtToEquity'][0]['v']}
115
-
116
- # # merge all dictionary keys per ticker
117
- # combined_info = basic_info.copy() # Make a copy of the basic info
118
- # combined_info = combined_info | metric_data | roe_dict | totalDebtToTotalCapital_y_dict | totalDebtToEquity_q_dict |totalDebtToEquity_y_dict | eps_dict | totalDebtToTotalCapital_q_dict
119
-
120
- # hash_map[ticker] = combined_info
121
-
122
- # # beta calculations
123
- # df_b = calc_beta(ticker)
124
- # beta_dfs.append(df_b)
125
-
126
- # # equity gains
127
- # _, div = get_equity_gains(ticker=ticker, period=1810)
128
- # gains_data[ticker] = div
129
-
130
- # # Now, create a DataFrame from the hash_map
131
- # df_1 = pd.DataFrame.from_dict(hash_map, orient='index')[['finnhubIndustry','eps','roe','dividendGrowthRate5Y','epsGrowth5Y','payoutRatioAnnual','payoutRatioTTM','roeTTM','totalDebtToEquity_y','totalDebtToEquity_q', 'totalDebtToTotalCapital_y','totalDebtToTotalCapital_q']]
132
- # # Create beta df
133
- # beta_df = pd.concat(beta_dfs)
134
- # df_2 = pd.DataFrame(list(gains_data.items()), columns=['symbol', 'recent_dividend']).set_index('symbol')
135
-
136
- # df_apis = df_1.join(beta_df)
137
- # df_final = df_apis.join(df_2)
138
-
139
- # # calculate additional columns
140
- # df_final['5Y_SP500_growth'], _ = get_equity_gains(ticker= '^GSPC', period=1810)
141
-
142
- # df_final['90_day_tbill'] = 4.06
143
-
144
- # df_final['CAPM'] = df_final['90_day_tbill']/100 + df_final['Beta']*(df_final['5Y_SP500_growth'] - df_final['90_day_tbill']/100)
145
-
146
- # df_final['DDM'] = (df_final['recent_dividend'] * (1+df_final['dividendGrowthRate5Y']/100)) / (df_final['CAPM'] - df_final['dividendGrowthRate5Y']/100)
147
 
148
- # st.write(df_final)
 
92
  symbols = st.multiselect(label='Select Tickers:', options=list_of_tickers, placeholder='MSFT, AAPL, ...')
93
  submit_button = st.form_submit_button(label='Evaluate')
94
 
95
+ if submit_button and symbols:
96
+ beta_dfs = []
97
+ gains_data = {}
98
+ hash_map = {}
99
+
100
+ for ticker in symbols:
101
+ st.spinner(text=f"Loading {ticker} Data...", *, cache=False)
102
+ # make all the API calls and capture return json
103
+ basic_info = get_industry(ticker)
104
+ metric_data, annual_series_data, quarterly_series_data = get_company_metrics(ticker)
105
+
106
+ # reformat all JSON returns to be flattened dictionaries
107
+ roe_dict = {'roe': annual_series_data['roe'][0]['v']}
108
+ totalDebtToTotalCapital_y_dict = {'totalDebtToTotalCapital_y' : annual_series_data['totalDebtToTotalCapital'][0]['v']}
109
+ totalDebtToEquity_y_dict = {'totalDebtToEquity_y' : annual_series_data['totalDebtToEquity'][0]['v']}
110
+ eps_dict = {'eps' : annual_series_data['eps'][0]['v']}
111
+ totalDebtToTotalCapital_q_dict = {'totalDebtToTotalCapital_q' : quarterly_series_data['totalDebtToTotalCapital'][0]['v']}
112
+ totalDebtToEquity_q_dict = {'totalDebtToEquity_q' : quarterly_series_data['totalDebtToEquity'][0]['v']}
113
+
114
+ # merge all dictionary keys per ticker
115
+ combined_info = basic_info.copy() # Make a copy of the basic info
116
+ combined_info = combined_info | metric_data | roe_dict | totalDebtToTotalCapital_y_dict | totalDebtToEquity_q_dict |totalDebtToEquity_y_dict | eps_dict | totalDebtToTotalCapital_q_dict
117
+
118
+ hash_map[ticker] = combined_info
119
+
120
+ # beta calculations
121
+ df_b = calc_beta(ticker)
122
+ beta_dfs.append(df_b)
123
+
124
+ # equity gains
125
+ _, div = get_equity_gains(ticker=ticker, period=1810)
126
+ gains_data[ticker] = div
127
+
128
+ # Now, create a DataFrame from the hash_map
129
+ df_1 = pd.DataFrame.from_dict(hash_map, orient='index')[['finnhubIndustry','eps','roe','dividendGrowthRate5Y','epsGrowth5Y','payoutRatioAnnual','payoutRatioTTM','roeTTM','totalDebtToEquity_y','totalDebtToEquity_q', 'totalDebtToTotalCapital_y','totalDebtToTotalCapital_q']]
130
+ # Create beta df
131
+ beta_df = pd.concat(beta_dfs)
132
+ df_2 = pd.DataFrame(list(gains_data.items()), columns=['symbol', 'recent_dividend']).set_index('symbol')
133
+
134
+ df_apis = df_1.join(beta_df)
135
+ df_final = df_apis.join(df_2)
136
+
137
+ # calculate additional columns
138
+ df_final['5Y_SP500_growth'], _ = get_equity_gains(ticker= '^GSPC', period=1810)
139
+
140
+ df_final['90_day_tbill'] = 4.06
141
+
142
+ df_final['CAPM'] = df_final['90_day_tbill']/100 + df_final['Beta']*(df_final['5Y_SP500_growth'] - df_final['90_day_tbill']/100)
143
+
144
+ df_final['DDM'] = (df_final['recent_dividend'] * (1+df_final['dividendGrowthRate5Y']/100)) / (df_final['CAPM'] - df_final['dividendGrowthRate5Y']/100)
145
+
146
+ st.write(df_final)
147