[This article was first published on Yet Another Blog in Statistical Computing » S+/R, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
In the operational loss calculation, it is important to use CPI (Consumer Price Index) adjusting historical losses. Below is an example showing how to download CPI data online directly from Federal Reserve Bank of St. Louis and then to calculate monthly and quarterly CPI adjustment factors with Python.
In [1]: import pandas_datareader.data as web In [2]: import pandas as pd In [3]: import numpy as np In [4]: import datetime as dt In [5]: # SET START AND END DATES OF THE SERIES In [6]: sdt = dt.datetime(2000, 1, 1) In [7]: edt = dt.datetime(2015, 9, 1) In [8]: cpi = web.DataReader("CPIAUCNS", "fred", sdt, edt) In [9]: cpi.head() Out[9]: CPIAUCNS DATE 2000-01-01 168.8 2000-02-01 169.8 2000-03-01 171.2 2000-04-01 171.3 2000-05-01 171.5 In [10]: df1 = pd.DataFrame({'month': [dt.datetime.strftime(i, "%Y-%m") for i in cpi.index]}) In [11]: df1['qtr'] = [str(x.year) + "-Q" + str(x.quarter) for x in cpi.index] In [12]: df1['m_cpi'] = cpi.values In [13]: df1.index = cpi.index In [14]: grp = df1.groupby('qtr', as_index = False) In [15]: df2 = grp['m_cpi'].agg({'q_cpi': np.mean}) In [16]: df3 = pd.merge(df1, df2, how = 'inner', left_on = 'qtr', right_on = 'qtr') In [17]: maxm_cpi = np.array(df3.m_cpi)[-1] In [18]: maxq_cpi = np.array(df3.q_cpi)[-1] In [19]: df3['m_factor'] = maxm_cpi / df3.m_cpi In [20]: df3['q_factor'] = maxq_cpi / df3.q_cpi In [21]: df3.index = cpi.index In [22]: final = df3.sort_index(ascending = False) In [23]: final.head(12) Out[23]: month qtr m_cpi q_cpi m_factor q_factor DATE 2015-09-01 2015-09 2015-Q3 237.945 238.305000 1.000000 1.000000 2015-08-01 2015-08 2015-Q3 238.316 238.305000 0.998443 1.000000 2015-07-01 2015-07 2015-Q3 238.654 238.305000 0.997029 1.000000 2015-06-01 2015-06 2015-Q2 238.638 237.680667 0.997096 1.002627 2015-05-01 2015-05 2015-Q2 237.805 237.680667 1.000589 1.002627 2015-04-01 2015-04 2015-Q2 236.599 237.680667 1.005689 1.002627 2015-03-01 2015-03 2015-Q1 236.119 234.849333 1.007733 1.014714 2015-02-01 2015-02 2015-Q1 234.722 234.849333 1.013731 1.014714 2015-01-01 2015-01 2015-Q1 233.707 234.849333 1.018134 1.014714 2014-12-01 2014-12 2014-Q4 234.812 236.132000 1.013343 1.009202 2014-11-01 2014-11 2014-Q4 236.151 236.132000 1.007597 1.009202 2014-10-01 2014-10 2014-Q4 237.433 236.132000 1.002156 1.009202
To leave a comment for the author, please follow the link and comment on their blog: Yet Another Blog in Statistical Computing » S+/R.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.