def coronavirus(): my_key = "5d898dd8f945e9190745a8e4f666f64c" fred = Fred(api_key=my_key) import pandas as pd goldData = fred.get_series_latest_release('GOLDAMGBD228NLBM') dowData = fred.get_series_latest_release('DJIA') result = pd.concat([goldData, dowData], axis=1, sort=False) dgdata = result.apply (pd.to_numeric, errors='coerce') df = dgdata.dropna(how='any',axis=0) df['dowoverGold'] = df[1] / df[0] resultdata = df.tail(90) resultdata = resultdata.round(2) resultdata.drop(resultdata.columns[0], axis=1, inplace=True) resultdata.drop(resultdata.columns[0], axis=1, inplace=True) #resultdata.index.name = 'date' resultdata['date'] = resultdata.index resultdata['date'] = resultdata['date'].astype(str) rdata = resultdata.to_json(orient='records') #resultresultdata.itterrows() return render_template('coronavirus.html', data = rdata)
def _risk_free_calc(self, date): try: fred = Fred(api_key=self._fred_api_key) except: print( "YOU NEED TO SET THE FRED API KEY USING THE SET_FRED_API_KEY METHOD" ) # Obtain the yield curve CMT data from FRED one_month = fred.get_series_latest_release('DGS1MO').iloc[-1] three_month = fred.get_series_latest_release('DGS3MO').iloc[-1] six_month = fred.get_series_latest_release('DGS6MO').iloc[-1] one_year = fred.get_series_latest_release('DGS1').iloc[-1] two_year = fred.get_series_latest_release('DGS2').iloc[-1] three_year = fred.get_series_latest_release('DGS3').iloc[-1] five_year = fred.get_series_latest_release('DGS5').iloc[-1] days_array = [30.4167, 91.2501, 182.5, 365, 730, 1095, 1825] yield_array = [ one_month, three_month, six_month, one_year, two_year, three_year, five_year ] # Cubic spline interpolation to derive the CMT rates for the near and next term maturities. tck = interpolate.splrep(days_array, yield_array, s=0) # Calculate days from date today = dt.datetime.now() day_delta = date - today days = day_delta.days # Back out interpolated yield y_new = interpolate.splev(days, tck) return y_new
class FredClass: def __init__(self, FRED_API): self.fred = Fred(api_key=FRED_API) def search(self, search_text): self.search_df = self.fred.search(search_text) self.search_df['popularity'] = self.search_df['popularity'].astype(int) self.search_df = self.search_df.sort_values(by=['popularity'], ascending=False) return self.search_df def fetch(self, metrics, start_date): self.metrics_df = pd.DataFrame() for metric in metrics: print(f'Fetch metric: {metric}') try: metrics_df_sub = self.fred.get_series_latest_release( metric).to_frame() # TODO: append first then reset_index? metrics_df_sub.reset_index(drop=False, inplace=True) metrics_df_sub.columns = ['activity_date', 'value'] metrics_df_sub[ 'activity_date'] = metrics_df_sub.activity_date.dt.date metrics_df_sub['metric'] = metric print(metrics_df_sub.dtypes) self.metrics_df = self.metrics_df.append(metrics_df_sub) except ValueError: print(f'Skip metric: {metric}') continue self.metrics_df = self.metrics_df.loc[ self.metrics_df.activity_date >= start_date] self.metrics_df = self.metrics_df[['metric', 'activity_date', 'value']] return self.metrics_df def get_metrics_info(self, metrics): info_df = pd.DataFrame() for metric in metrics: info_df_sub = self.fred.get_series_info(metric) info_df = info_df.append(info_df_sub, ignore_index=True) info_df = info_df[[ 'id', 'title', 'frequency', 'units', 'seasonal_adjustment', 'popularity', 'notes' ]] info_df = info_df.rename(columns={'id': 'metric'}) info_df['source'] = 'FRED' info_df['deprecated'] = False return info_df
'NewOrders', 'NewOrders_NoDef', 'Real_PCE', 'Real_Imports', 'Imports', 'Wk_hrs_manu', 'Wk_hrs_priv', 'Tot_veh_sales', 'Lt_wght_veh', 'Heavy_trucks', ] d = {} #dict of data for code, name in indics.items(): d[name] = fred.get_series_latest_release(code) d[name] = d[name].resample('M').last() d[name] = d[name].interpolate(method='linear') for i in non_stat: d[i] = d[i].diff(12) frames = [d[i] for i in indics.values()] columns = [i for i in indics.values()] baf = pd.concat(frames, keys=columns, join='outer', axis=1) baf = baf.fillna(method='ffill') #ISM Manufacturing PMI Composite Index start_date = '01/01/1980' vendor_ticker = 'ISM/MAN_PMI'
# NBER based Recession Indicator: `USRECP` # # We form the list of economic series to pull from FRED: us_unemploy_api = ["UNRATE"] state_unemploy_api_list = state_code_df['state_abbrev'].astype(str) + "UR" state_unemploy_api_list = state_unemploy_api_list.tolist() all_unemploy_api = us_unemploy_api + state_unemploy_api_list other_api_list = ["IRLTLT01USM156N", "CSUSHPISA", "GDPC1", "CPIAUCSL", "USRECP"] all_api = other_api_list + all_unemploy_api # Upon setting up the API credentials, we pull data from FRED and nest it in DICTIONARY with format `{series_id : series_data_df}`. A dictionary is much preferred to dynamically creating objects through a loop since they are unnecessary, hard to create (use exec or globals()), and I can't use them dynamically anyway. But if you really want to, use `globals()`. # # Sometimes the API reaches 504 Gateway Timeout error and yells at you. Just keep trying: api_key = "85482ff982c94bb52ca2ae28568ee970" fred = Fred(api_key=api_key) dict_series_values = {series: fred.get_series_latest_release(series).to_frame() for series in all_api} # We clean the dataframes and drop all observations that are not between 2001 and 2012: for series, df in dict_series_values.items(): df.columns = [series] df.reset_index(level=0, inplace=True) df.rename(columns={"index": "date"}, inplace = True) pd.to_datetime(df['date'], format = "%Y-%m-%d") dict_series_values[series] = df.loc[(df['date'] >= "2001-01-01") & (df['date'] <= "2012-12-31")] econ_df = pd.concat([df.set_index('date') for (series, df) in dict_series_values.items()], axis=1, join='outer').reset_index() # Merge IRI week number ID's with economic dataframe econ_df = pd.merge_asof(econ_df, week_df, direction='nearest') econ_df.rename(columns={"week_id": "econ_week_id"}, inplace = True) # Import into MySQL server
import matplotlib.pyplot, pandas from fredapi import Fred import urllib, urllib2 fred = Fred(api_key='f04a131fa269983c05a15f54edf809d5') gdp_data = fred.get_series_latest_release('GDP') data.tail() def economicGraph(): #print(result)