import%20marimo%0A%0A__generated_with%20%3D%20%220.15.2%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%23%20Ibovespa%20Performance%20by%20the%20Federal%20Government%20%F0%9F%87%A7%F0%9F%87%B7%0A%0A%20%20%20%20%2F%2F%2F%20details%20%7C%20*References%3A*%0A%0A%20%20%20%20-%20https%3A%2F%2Fwilsonfreitas.github.io%2Fposts%2Fvariacao-do-ibovespa-por-governo-federal.html%0A%20%20%20%20-%20https%3A%2F%2Fgithub.com%2FBDonadelli%2FFinance-playground%2Fblob%2Fmain%2FB3_Ibov_desde_68.ipynb%0A%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%201.%20Library%20Imports%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20os%0A%20%20%20%20from%20datetime%20import%20datetime%2C%20date%0A%20%20%20%20import%20yfinance%20as%20yf%0A%20%20%20%20import%20pandas%20as%20pd%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20seaborn%20as%20sns%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20import%20quantstats%20as%20qs%0A%20%20%20%20from%20bcb%20import%20sgs%0A%20%20%20%20return%20date%2C%20datetime%2C%20np%2C%20os%2C%20pd%2C%20plt%2C%20qs%2C%20sgs%2C%20sns%2C%20yf%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%23%23%202.%20Ibovespa%20daily%20closing%20prices%0A%0A%20%20%20%20%23%23%23%20From%201968%20-%201997%0A%20%20%20%20The%20Ibovespa%20closing%20values%20for%20all%20trading%20session%20as%20of%20January%201998%20can%20be%20accessed%20bt%20the%20following%20URL%3A%20%0A%0A%20%20%20%20-%20https%3A%2F%2Fwww.b3.com.br%2Fen_us%2Fmarket-data-and-indices%2Findexes%2Fbroad-indexes%2Findice-ibovespa-ibovespa-historic-statistics.htm%0A%0A%20%20%20%20%23%23%23%20From%201998%20-%20Nowadays%0A%20%20%20%20We%20can%20get%20Ibovespa%20prices%20using%20%60yfinance%60%20library%0A%0A%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(datetime%2C%20os%2C%20pd)%3A%0A%20%20%20%20%23%20Utility%20Function%20to%20get%20Ibovespa%20Daily%20Data%20from%201968%20-%201997%0A%20%20%20%20def%20read_ibovespa_excel(file_path)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20Read%20Ibovespa%20daily%20closing%20prices%20from%20Excel%20file%20and%20return%20a%20DataFrame.%0A%0A%20%20%20%20%20%20%20%20Parameters%3A%0A%20%20%20%20%20%20%20%20-----------%0A%20%20%20%20%20%20%20%20file_path%20%3A%20str%0A%20%20%20%20%20%20%20%20%20%20%20%20Path%20to%20the%20Excel%20file%20containing%20Ibovespa%20data%0A%0A%20%20%20%20%20%20%20%20Returns%3A%0A%20%20%20%20%20%20%20%20--------%0A%20%20%20%20%20%20%20%20pd.DataFrame%0A%20%20%20%20%20%20%20%20%20%20%20%20DataFrame%20with%20date%20index%20(YYYY-MM-DD%20format)%20and%20'Valor'%20column%20containing%20prices%0A%20%20%20%20%20%20%20%20%22%22%22%0A%0A%20%20%20%20%20%20%20%20%23%20Portuguese%20month%20names%20to%20numbers%20mapping%0A%20%20%20%20%20%20%20%20month_mapping%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20'JAN'%3A%201%2C%20'FEV'%3A%202%2C%20'MAR'%3A%203%2C%20'ABR'%3A%204%2C%20'MAIO'%3A%205%2C%20'JUN'%3A%206%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20'JUL'%3A%207%2C%20'AGO'%3A%208%2C%20'SET'%3A%209%2C%20'OUT'%3A%2010%2C%20'NOV'%3A%2011%2C%20'DEZ'%3A%2012%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%23%20Read%20all%20sheet%20names%20(years)%0A%20%20%20%20%20%20%20%20excel_file%20%3D%20pd.ExcelFile(file_path)%0A%20%20%20%20%20%20%20%20all_data%20%3D%20%5B%5D%0A%0A%20%20%20%20%20%20%20%20for%20sheet_name%20in%20excel_file.sheet_names%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20try%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Read%20the%20sheet%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20df_sheet%20%3D%20pd.read_excel(file_path%2C%20sheet_name%3Dsheet_name%2C%20index_col%3D0%2C%20thousands%3D'.'%2C%20decimal%3D'%2C'%2C%20skiprows%3D1%2C%20skipfooter%3D4)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Get%20the%20year%20from%20sheet%20name%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20year%20%3D%20int(sheet_name)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Iterate%20through%20each%20month%20column%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20month_name%20in%20df_sheet.columns%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20month_name.upper()%20in%20month_mapping%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20month_num%20%3D%20month_mapping%5Bmonth_name.upper()%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Get%20the%20month%20data%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20month_data%20%3D%20df_sheet%5Bmonth_name%5D.dropna()%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Create%20dates%20for%20each%20day%20in%20the%20month%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20day%20in%20month_data.index%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Create%20date%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20date%20%3D%20datetime(year%2C%20month_num%2C%20int(day))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%20%3D%20month_data%5Bday%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Only%20add%20if%20value%20is%20not%20NaN%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20pd.notna(value)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20all_data.append(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20'Date'%3A%20date%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20'Value'%3A%20float(value)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20except%20(ValueError%2C%20TypeError)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20Skip%20invalid%20dates%20or%20values%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20except%20(ValueError%2C%20TypeError)%20as%20e%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20print(f%22Skipping%20sheet%20'%7Bsheet_name%7D'%3A%20%7Be%7D%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%0A%0A%20%20%20%20%20%20%20%20%23%20Create%20DataFrame%0A%20%20%20%20%20%20%20%20if%20all_data%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20result_df%20%3D%20pd.DataFrame(all_data)%0A%20%20%20%20%20%20%20%20%20%20%20%20result_df.set_index('Date'%2C%20inplace%3DTrue)%0A%20%20%20%20%20%20%20%20%20%20%20%20result_df.sort_index(inplace%3DTrue)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20result_df%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20pd.DataFrame(columns%3D%5B'Value'%5D)%0A%0A%20%20%20%20%23%20Usage%20example%3A%0A%20%20%20%20def%20load_ibovespa_data()%3A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20Convenience%20function%20to%20load%20Ibovespa%20data%20from%20the%20default%20location.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20file_path%20%3D%20os.path.join('data'%2C%20'IBOVDIA.XLS')%0A%20%20%20%20%20%20%20%20return%20read_ibovespa_excel(file_path)%0A%20%20%20%20return%20(load_ibovespa_data%2C)%0A%0A%0A%40app.cell%0Adef%20_(load_ibovespa_data)%3A%0A%20%20%20%20old_data%20%3D%20load_ibovespa_data()%0A%20%20%20%20old_data%0A%20%20%20%20return%20(old_data%2C)%0A%0A%0A%40app.cell%0Adef%20_(pd%2C%20yf)%3A%0A%20%20%20%20new_data%20%3D%20pd.DataFrame()%0A%20%20%20%20new_data%5B'Value'%5D%20%3D%20yf.download('%5EBVSP'%2C%20period%3D'max'%2C%20auto_adjust%3DTrue)%5B'Close'%5D%0A%20%20%20%20new_data.loc%5B'1998-01-01'%3A%5D%0A%20%20%20%20return%20(new_data%2C)%0A%0A%0A%40app.cell%0Adef%20_(new_data%2C%20old_data%2C%20pd)%3A%0A%20%20%20%20df%20%3D%20pd.concat(%5Bold_data%2C%20new_data.loc%5B'1998-01-01'%3A%5D%5D)%0A%20%20%20%20df%0A%20%20%20%20return%20(df%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%203.%20Visualize%20Data%20(from%201968%20-%20Today)%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20df.plot()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df%2C%20plt)%3A%0A%20%20%20%20fig%2C%20axes%20%3D%20plt.subplots(nrows%3D3%2C%20ncols%3D2%20%2Cfigsize%3D(15%2C7))%0A%0A%20%20%20%20df.loc%5B%3A'1980'%5D.plot(ax%3Daxes%5B0%2C0%5D)%3B%20axes%5B0%2C0%5D.set_title('%3C1980')%0A%20%20%20%20df.loc%5B'1980'%3A'1982'%5D.plot(ax%3Daxes%5B0%2C1%5D)%3B%20axes%5B0%2C1%5D.set_title('1980-1982')%0A%20%20%20%20df.loc%5B'1983'%3A'1985'%5D.plot(ax%3Daxes%5B1%2C0%5D)%3B%20axes%5B1%2C0%5D.set_title('1983-1985')%0A%20%20%20%20df.loc%5B'1986'%3A'1988'%5D.plot(ax%3Daxes%5B1%2C1%5D)%3B%20axes%5B1%2C1%5D.set_title('1986-1988')%0A%20%20%20%20df.loc%5B'1989'%3A'1991'%5D.plot(ax%3Daxes%5B2%2C0%5D)%3B%20axes%5B2%2C0%5D.set_title('1989-1991')%0A%20%20%20%20df.loc%5B'1992'%3A'1997'%5D.plot(ax%3Daxes%5B2%2C1%5D)%3B%20axes%5B2%2C1%5D.set_title('1992-1997')%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%204.%20Monthly%20Returns%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20monthly_df%20%3D%20df.copy().resample('ME').ffill()%0A%20%20%20%20monthly_df%5B'Return'%5D%20%3D%20monthly_df.pct_change()%0A%20%20%20%20monthly_df%0A%20%20%20%20return%20(monthly_df%2C)%0A%0A%0A%40app.cell%0Adef%20_(monthly_df)%3A%0A%20%20%20%20returns_table%20%3D%20monthly_df.pivot_table(values%3D'Return'%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20index%3Dmonthly_df.index.year%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20columns%3Dmonthly_df.index.month%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aggfunc%3D'mean')%0A%20%20%20%20returns_table%0A%20%20%20%20return%20(returns_table%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%205.%20Motnhly%20Returns%20Heatmap%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(plt%2C%20returns_table%2C%20sns)%3A%0A%20%20%20%20fig_2%20%3D%20plt.figure()%0A%0A%20%20%20%20ax%20%3D%20plt.gca()%0A%0A%20%20%20%20sns.heatmap(returns_table.fillna(0)*100.0%2Cannot%3DTrue%2Cannot_kws%3D%7B%22size%22%3A%209%7D%2Ccmap%3D'RdYlGn'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alpha%3D1.0%2Ccenter%3D0.0%2Ccbar%3DFalse%2Cax%3Dax%2C%20fmt%3D'.4g')%0A%20%20%20%20ax.set_ylabel('Year')%0A%20%20%20%20ax.set_xlabel('Month')%0A%20%20%20%20ax.set_title(%22Montlhy%20Return%20(%25)%22)%0A%20%20%20%20fig_2.set_size_inches(11%2C20)%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(returns_table)%3A%0A%20%20%20%20returns_table.mean().plot.bar(figsize%3D(6%2C4))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%206.%20Quantstats%20Report%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df%2C%20qs)%3A%0A%20%20%20%20returns%20%3D%20df.pct_change()%0A%20%20%20%20qs.reports.full(returns.Value)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%207.%20Monthly%20Inflation%20Data%20(IPCA)%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(mo%2C%20pd%2C%20sgs)%3A%0A%20%20%20%20ipca%20%3D%20sgs.get(%7B'IPCA'%3A%20433%7D%2C%20start%3D'1968-01-01'%2C%20end%3Dpd.to_datetime('today'))%0A%20%20%20%20mo.hstack(%5Bipca%2C%20ipca.plot()%5D)%0A%20%20%20%20return%20(ipca%2C)%0A%0A%0A%40app.cell%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%208.%20Calculate%20Ibovespa%20Returns%20and%20Deflated%20Returns%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(ipca%2C%20mo%2C%20monthly_df%2C%20pd)%3A%0A%20%20%20%20ipca_from_1994%20%3D%20ipca.loc%5B'1994-12-01'%3A%5D%0A%20%20%20%20ipca_from_1994%20%3D%20ipca_from_1994.resample('ME').last()%0A%0A%20%20%20%20ibov_from_1994%20%3D%20monthly_df%5B'Value'%5D.rename(%22IBOV%22).loc%5B'1994-12-01'%3A%5D%0A%20%20%20%20data%20%3D%20pd.concat(%5Bipca_from_1994%2C%20ibov_from_1994%5D%2C%20axis%3D1)%0A%0A%20%20%20%20data%5B'IBOV_RET'%5D%20%3D%20data%5B'IBOV'%5D.diff()%20%2F%20data%5B'IBOV'%5D.shift(1)%0A%20%20%20%20data%5B'IBOV_DEFL'%5D%20%3D%20(1%20%2B%20data%5B'IBOV_RET'%5D)%20%2F%20(1%20%2B%20data%5B'IPCA'%5D%2F100)%20-%201%0A%20%20%20%20mo.hstack(%5Bdata%2C%20data%5B%5B'IBOV_RET'%2C%20'IBOV_DEFL'%5D%5D.plot()%5D)%0A%20%20%20%20return%20(data%2C)%0A%0A%0A%40app.cell%0Adef%20_(date%2C%20pd)%3A%0A%20%20%20%20def%20get_president(input_date)%3A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20Maps%20a%20given%20date%20to%20the%20corresponding%20Brazilian%20president%20in%20office.%0A%0A%20%20%20%20%20%20%20%20Parameters%3A%0A%20%20%20%20%20%20%20%20-----------%0A%20%20%20%20%20%20%20%20input_date%20%3A%20datetime.date%2C%20datetime.datetime%2C%20pd.Timestamp%2C%20or%20datetime-like%0A%20%20%20%20%20%20%20%20%20%20%20%20The%20date%20to%20check%0A%0A%20%20%20%20%20%20%20%20Returns%3A%0A%20%20%20%20%20%20%20%20--------%0A%20%20%20%20%20%20%20%20str%20or%20None%0A%20%20%20%20%20%20%20%20%20%20%20%20President%20name%20and%20term%20number%20(if%20applicable)%2C%20or%20None%20if%20date%20is%20outside%20covered%20periods%0A%20%20%20%20%20%20%20%20%22%22%22%0A%0A%20%20%20%20%20%20%20%20%23%20Convert%20to%20date%20if%20it's%20a%20datetime%2C%20Timestamp%2C%20or%20string%0A%20%20%20%20%20%20%20%20if%20hasattr(input_date%2C%20'date')%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20input_date%20%3D%20input_date.date()%0A%20%20%20%20%20%20%20%20elif%20isinstance(input_date%2C%20str)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20input_date%20%3D%20pd.to_datetime(input_date).date()%0A%20%20%20%20%20%20%20%20elif%20hasattr(input_date%2C%20'to_pydatetime')%3A%20%20%23%20Handle%20pandas%20Timestamp%0A%20%20%20%20%20%20%20%20%20%20%20%20input_date%20%3D%20input_date.to_pydatetime().date()%0A%0A%20%20%20%20%20%20%20%20%23%20New%20Republic%20(1985-present)%0A%20%20%20%20%20%20%20%20if%20input_date%20%3E%3D%20date(1985%2C%203%2C%2015)%20and%20input_date%20%3C%20date(1990%2C%203%2C%2015)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'SARNEY'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1990%2C%203%2C%2015)%20and%20input_date%20%3C%20date(1992%2C%2012%2C%2029)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'COLLOR'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1992%2C%2012%2C%2029)%20and%20input_date%20%3C%20date(1995%2C%201%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'ITAMAR'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1995%2C%201%2C%201)%20and%20input_date%20%3C%20date(1999%2C%201%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'FHC%201'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1999%2C%201%2C%201)%20and%20input_date%20%3C%20date(2003%2C%201%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'FHC%202'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(2003%2C%201%2C%201)%20and%20input_date%20%3C%20date(2007%2C%201%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'LULA%201'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(2007%2C%201%2C%201)%20and%20input_date%20%3C%20date(2011%2C%201%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'LULA%202'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(2011%2C%201%2C%201)%20and%20input_date%20%3C%20date(2015%2C%201%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'DILMA%201'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(2015%2C%201%2C%201)%20and%20input_date%20%3C%20date(2016%2C%208%2C%2031)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'DILMA%202'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(2016%2C%208%2C%2031)%20and%20input_date%20%3C%20date(2019%2C%201%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'TEMER'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(2019%2C%201%2C%201)%20and%20input_date%20%3C%20date(2023%2C%201%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'BOLSONARO'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(2023%2C%201%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'LULA%203'%0A%0A%20%20%20%20%20%20%20%20%23%20Fourth%20Republic%20(1946-1964)%20-%20Additional%20coverage%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1946%2C%201%2C%2031)%20and%20input_date%20%3C%20date(1951%2C%201%2C%2031)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'DUTRA'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1951%2C%201%2C%2031)%20and%20input_date%20%3C%20date(1954%2C%208%2C%2024)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'VARGAS%202'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1954%2C%208%2C%2024)%20and%20input_date%20%3C%20date(1955%2C%2011%2C%208)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'CAF%C3%89%20FILHO'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1955%2C%2011%2C%208)%20and%20input_date%20%3C%20date(1956%2C%201%2C%2031)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'NEREU%20RAMOS'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1956%2C%201%2C%2031)%20and%20input_date%20%3C%20date(1961%2C%201%2C%2031)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'KUBITSCHEK'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1961%2C%201%2C%2031)%20and%20input_date%20%3C%20date(1961%2C%208%2C%2025)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'J%C3%82NIO%20QUADROS'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1961%2C%208%2C%2025)%20and%20input_date%20%3C%20date(1963%2C%201%2C%2023)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'RANIERI%20MAZZILLI%201'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1963%2C%201%2C%2023)%20and%20input_date%20%3C%20date(1964%2C%204%2C%201)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'JO%C3%83O%20GOULART'%0A%0A%20%20%20%20%20%20%20%20%23%20Military%20Dictatorship%20(1964-1985)%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1964%2C%204%2C%201)%20and%20input_date%20%3C%20date(1964%2C%204%2C%2015)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'RANIERI%20MAZZILLI%202'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1964%2C%204%2C%2015)%20and%20input_date%20%3C%20date(1967%2C%203%2C%2015)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'CASTELO%20BRANCO'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1967%2C%203%2C%2015)%20and%20input_date%20%3C%20date(1969%2C%208%2C%2031)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'COSTA%20E%20SILVA'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1969%2C%208%2C%2031)%20and%20input_date%20%3C%20date(1974%2C%203%2C%2015)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'M%C3%89DICI'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1974%2C%203%2C%2015)%20and%20input_date%20%3C%20date(1979%2C%203%2C%2015)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'GEISEL'%0A%20%20%20%20%20%20%20%20elif%20input_date%20%3E%3D%20date(1979%2C%203%2C%2015)%20and%20input_date%20%3C%20date(1985%2C%203%2C%2015)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20'FIGUEIREDO'%0A%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20None%0A%20%20%20%20return%20(get_president%2C)%0A%0A%0A%40app.cell%0Adef%20_(data%2C%20get_president)%3A%0A%20%20%20%20data%5B'PRESIDENT'%5D%20%3D%20data.index.map(get_president)%0A%20%20%20%20data%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(data%2C%20np)%3A%0A%20%20%20%20data_gov%20%3D%20data.groupby('PRESIDENT')%0A%20%20%20%20data_gov_agg%20%3D%20data_gov%5B%5B'IBOV_RET'%2C%20'IBOV_DEFL'%5D%5D.aggregate(lambda%20x%3A%20100*(np.prod(1%20%2B%20x)%20-%201))%0A%20%20%20%20data_gov_agg%0A%20%20%20%20return%20data_gov%2C%20data_gov_agg%0A%0A%0A%40app.cell%0Adef%20_(data_gov_agg)%3A%0A%20%20%20%20def%20sort_by_govern(dx)%3A%0A%20%20%20%20%20%20%20%20governs%20%3D%20%5B'ITAMAR'%2C%20'FHC%201'%2C%20'FHC%202'%2C%20'LULA%201'%2C%20'LULA%202'%2C%20'DILMA%201'%2C%20'DILMA%202'%2C%20'TEMER'%2C%20'BOLSONARO'%2C%20'LULA%203'%5D%0A%20%20%20%20%20%20%20%20mapping%20%3D%20%7Bgov%3A%20i%20for%20i%2C%20gov%20in%20enumerate(governs)%7D%0A%20%20%20%20%20%20%20%20key%20%3D%20dx.index.map(lambda%20x%3A%20mapping%5Bx%5D)%0A%20%20%20%20%20%20%20%20return%20dx.iloc%5Bkey.argsort()%5D%0A%0A%20%20%20%20sorted_data_gov_agg%20%3D%20sort_by_govern(data_gov_agg)%0A%20%20%20%20sorted_data_gov_agg%0A%20%20%20%20return%20sort_by_govern%2C%20sorted_data_gov_agg%0A%0A%0A%40app.cell%0Adef%20_(sorted_data_gov_agg)%3A%0A%20%20%20%20ax2%20%3D%20sorted_data_gov_agg%5B%5B'IBOV_RET'%2C%20'IBOV_DEFL'%5D%5D.plot(kind%3D'bar'%2C%20figsize%3D(10%2C6)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22%25%20Variation%20of%20IBOVESPA%20under%20Federal%20Governments%22)%0A%20%20%20%20ax2.set_xlabel(%22Govern%22)%0A%20%20%20%20ax2.set_ylabel(%22Variation%20(%25)%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(data_gov%2C%20sorted_data_gov_agg)%3A%0A%20%20%20%20sorted_data_gov_agg%5B'Months'%5D%20%3D%20data_gov%5B'PRESIDENT'%5D.count()%0A%20%20%20%20sorted_data_gov_agg%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(sorted_data_gov_agg)%3A%0A%20%20%20%20sorted_data_gov_agg%5B'IBOV_RET_ANNUAL'%5D%20%3D%20((1%20%2B%20sorted_data_gov_agg%5B'IBOV_RET'%5D%2F100)**(12.%2Fsorted_data_gov_agg%5B'Months'%5D)%20-%201)*100%0A%20%20%20%20sorted_data_gov_agg%5B'IBOV_DEFL_ANNUAL'%5D%20%3D%20((1%20%2B%20sorted_data_gov_agg%5B'IBOV_DEFL'%5D%2F100)**(12.%2Fsorted_data_gov_agg%5B'Months'%5D)%20-%201)*100%0A%20%20%20%20sorted_data_gov_agg%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(sorted_data_gov_agg)%3A%0A%20%20%20%20ax3%20%3D%20sorted_data_gov_agg%5B%5B'IBOV_RET_ANNUAL'%2C%20'IBOV_DEFL_ANNUAL'%5D%5D.plot(kind%3D'bar'%2C%20figsize%3D(10%2C6)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22%25%20Variation%20of%20IBOVESPA%20under%20Federal%20Governments%22)%0A%20%20%20%20ax3.set_xlabel(%22Govern%22)%0A%20%20%20%20ax3.set_ylabel(%22Variation%20(%25)%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(data_gov%2C%20np%2C%20sort_by_govern)%3A%0A%20%20%20%20data_infl%20%3D%20data_gov%5B'IPCA'%5D.aggregate(lambda%20x%3A%20100*(np.prod(1%20%2B%20x%2F100)**(12.%2Flen(x))%20-%201))%0A%20%20%20%20data_infl%20%3D%20sort_by_govern(data_infl)%0A%20%20%20%20ax4%20%3D%20data_infl.plot(kind%3D'bar'%2C%20figsize%3D(10%2C6)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22IPCA%20under%20Federal%20Governments%22)%0A%20%20%20%20ax4.set_xlabel(%22Govern%22)%0A%20%20%20%20ax4.set_ylabel(%22IPCA%20(%25)%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
941a7ed19f3bbc0f372d1353e711f63daf06acdce057bf6678230b220058b170