diff --git a/bpfin/prelim/prelimfuncs.py b/bpfin/prelim/prelimfuncs.py index f4e31c0a7d1e1047e9490c7d69e1763605ab9a39..d6b688bdfc891a775ff9b175cc3305dfd8aedf2d 100644 --- a/bpfin/prelim/prelimfuncs.py +++ b/bpfin/prelim/prelimfuncs.py @@ -292,7 +292,7 @@ matplotlib.use('TkAgg') # new_dict[term]=cal_inflation_product(inflation_rate_dict,term)/cal_inflation_product(inflation_rate_dict,present_date) # return new_dict #return (2016,2,29 : 99.86%; present_date: 100%) -# # form inflated items, based on a 12 month list, present time is the last month of 12 months list +# form inflated items, based on a 12 month list, present time is the last month of 12 months list # def form_inflated_item(base_list,target_terms,inflation_coeff_dict,present_date): # pre_year_date=datetime.date(present_date.year-1,present_date.month+1,cal_last_day(present_date.year-1,present_date.month+1)) # base_terms=form_date_calendar(pre_year_date,present_date)[1] diff --git a/bpfin/tests/test_utilbills/test_bill_lib.py b/bpfin/tests/test_utilbills/test_bill_lib.py index 32670f13b0b78953184973037606687076f56430..fa288f25f8071dfb2d5285b8c3331401f4cd5ad9 100644 --- a/bpfin/tests/test_utilbills/test_bill_lib.py +++ b/bpfin/tests/test_utilbills/test_bill_lib.py @@ -3,8 +3,10 @@ from bpfin.utilbills.bill_lib import add_list def test_add_list(): input_list = [1, 2] - output = [3, 4] - result = add_list(input_list, 2) + output_list = [3, 4] + result_list = add_list(input_list, 2) + + for i in range(len(result_list)): + assert result_list[i] == output_list[i] + - for i in range(len(result)): - assert result[i] == output[i] diff --git a/bpfin/tests/test_utilbills/test_bill_prior_proj_rough.py b/bpfin/tests/test_utilbills/test_bill_prior_proj_rough.py new file mode 100644 index 0000000000000000000000000000000000000000..d03166504cf8240ca668ebb53d106aada7890806 --- /dev/null +++ b/bpfin/tests/test_utilbills/test_bill_prior_proj_rough.py @@ -0,0 +1,21 @@ +from bpfin.utilbills.bill_prior_proj_rough import bill_prior_proj_rough +from bpfin.tests.testdata import sample_data as db + + +def test_bill_prior_proj_rough(): + month_norm_bill = db.monthly_normalized_bill + raw_bill = db.raw_bill + analysis_date = db.analysis_date + inflation_coeff_dict = db.inflation_coeff_dict + + output_dict = { + 'date_from': db.proforma_date_from, + 'date_to': db.proforma_date_to, + 'usage': db.prior_proj_rough_usage, + 'charge': db.prior_proj_rough_charge, + 'price': db.prior_proj_rough_price + } + result_dict = bill_prior_proj_rough(month_norm_bill, raw_bill, + analysis_date, inflation_coeff_dict) + + assert result_dict == output_dict diff --git a/bpfin/tests/test_utilbills/test_month_normalize_rough.py b/bpfin/tests/test_utilbills/test_month_normalize_rough.py index 6cb619c170de9c895ab973784c3e7b18f387898d..29f21d5ddb33d77b52f6a2829e3af71674b0e208 100644 --- a/bpfin/tests/test_utilbills/test_month_normalize_rough.py +++ b/bpfin/tests/test_utilbills/test_month_normalize_rough.py @@ -1,51 +1,12 @@ -from bpfin.utilbills.bill_month_normalize_rough import bill_month_normalize_rough import datetime +from bpfin.utilbills.bill_month_normalize_rough import bill_month_normalize_rough +from bpfin.tests.testdata import sample_data as db def test_month_normalization_rough(): - test_raw_bill = {} - test_raw_bill['utility_type'] = 'electricity' - test_raw_bill['date_from'] = [ - datetime.date(2014, 4, 17), datetime.date(2014, 5, 16), datetime.date(2014, 6, 17), - datetime.date(2014, 7, 17), datetime.date(2014, 8, 15), datetime.date(2014, 9, 16), - datetime.date(2014, 10, 16), datetime.date(2014, 11, 14), datetime.date(2014, 12, 17), - datetime.date(2015, 1, 16), datetime.date(2015, 2, 18), datetime.date(2015, 3, 19), - datetime.date(2015, 4, 17), datetime.date(2015, 5, 18), datetime.date(2015, 6, 17), - datetime.date(2015, 7, 17), datetime.date(2015, 8, 17), datetime.date(2015, 9, 16), - datetime.date(2015, 10, 16), datetime.date(2015, 11, 16), datetime.date(2015, 12, 17), - datetime.date(2016, 1, 19), datetime.date(2016, 2, 18), datetime.date(2016, 3, 18)] - test_raw_bill['date_to'] = [ - datetime.date(2014, 5, 16), datetime.date(2014, 6, 17), datetime.date(2014, 7, 17), - datetime.date(2014, 8, 15), datetime.date(2014, 9, 16), datetime.date(2014, 10, 16), - datetime.date(2014, 11, 14), datetime.date(2014, 12, 17), datetime.date(2015, 1, 16), - datetime.date(2015, 2, 18), datetime.date(2015, 3, 19), datetime.date(2015, 4, 17), - datetime.date(2015, 5, 18), datetime.date(2015, 6, 17), datetime.date(2015, 7, 17), - datetime.date(2015, 8, 17), datetime.date(2015, 9, 16), datetime.date(2015, 10, 16), - datetime.date(2015, 11, 16), datetime.date(2015, 12, 17), datetime.date(2016, 1, 19), - datetime.date(2016, 2, 18), datetime.date(2016, 3, 18), datetime.date(2016, 4, 18)] - test_raw_bill['charge'] = [ - 2601.6289696969693, 2642.1740261508003, 3437.551946607342, 2930.5070588449826, - 2514.1242835094554, 2804.4448749999997, 3237.7359972191325, 3289.4155027808674, - 2796.5700000000002, 2463.5113047830923, 2370.0007392051775, 2479.081440860215] - test_raw_bill['usage'] = [ - 0.094265231101663627, 0.10175446346513953, 0.12248981352003527, 0.11229655777596657, - 0.092170964664193167, 0.094173672324921492, 0.095187070309577237, 0.097177529967719486, - 0.095676831493476874, 0.091583582602530869, 0.089122740090923164, 0.091516956021057888] - input_dict = test_raw_bill - output_dict = { - 'monthly_usage': [ - 0.092656544646156233, 0.081407077375199768, 0.096259845999318444, 0.095904698506193486, - 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, - 0.090033196083726619, 0.099460650112727964, 0.093068756936307756, 0.094710339831841669], - 'monthly_charge': [ - 2611.2818658104966, 2180.2694934775395, 2578.5859081110675, 2619.5021069201466, - 2673.9005752806534, 2893.2607949224612, 3362.6736487267954, 2772.8416549504082, - 2565.8030834213941, 3170.3949663777121, 3157.9130867351737, 2999.6133802204467], - 'monthly_price': [ - 28182.379083772827, 26782.308906986349, 26787.762657851385, 27313.595138938686, - 26817.901843564676, 27005.501339712977, 27201.030152373722, 26618.451410257541, - 28498.41164180508, 31875.872144254135, 33930.968787907128, 31671.445647289031]} + input_dict = db.raw_bill + output_dict = db.monthly_normalized_bill result_dict = bill_month_normalize_rough(input_dict) assert result_dict == output_dict diff --git a/bpfin/tests/testdata/__inti__.py b/bpfin/tests/testdata/__inti__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/bpfin/tests/testdata/sample_data.py b/bpfin/tests/testdata/sample_data.py new file mode 100644 index 0000000000000000000000000000000000000000..16191994832ba2e6f9627258c64c5f7e96809f6a --- /dev/null +++ b/bpfin/tests/testdata/sample_data.py @@ -0,0 +1,1928 @@ +import datetime +import pprint +from bpfin.utilbills import bill_lib as bl + +# pp = pprint.PrettyPrinter(width=120, indent=4, compact=True) +# pp.pprint(inflation_coeff_dict) + +# writein = str(prior_monthly_charge) +# f = open('data_generation.py', 'w') +# f.write(writein) +# f.close() + +# raw energy bill. will need oil and other types for test +raw_bill = {} +raw_bill['utility_type'] = 'electricity' +raw_bill['date_from'] = [ + datetime.date(2014, 4, 17), datetime.date(2014, 5, 16), datetime.date(2014, 6, 17), + datetime.date(2014, 7, 17), datetime.date(2014, 8, 15), datetime.date(2014, 9, 16), + datetime.date(2014, 10, 16), datetime.date(2014, 11, 14), datetime.date(2014, 12, 17), + datetime.date(2015, 1, 16), datetime.date(2015, 2, 18), datetime.date(2015, 3, 19), + datetime.date(2015, 4, 17), datetime.date(2015, 5, 18), datetime.date(2015, 6, 17), + datetime.date(2015, 7, 17), datetime.date(2015, 8, 17), datetime.date(2015, 9, 16), + datetime.date(2015, 10, 16), datetime.date(2015, 11, 16), datetime.date(2015, 12, 17), + datetime.date(2016, 1, 19), datetime.date(2016, 2, 18), datetime.date(2016, 3, 18)] +raw_bill['date_to'] = [ + datetime.date(2014, 5, 16), datetime.date(2014, 6, 17), datetime.date(2014, 7, 17), + datetime.date(2014, 8, 15), datetime.date(2014, 9, 16), datetime.date(2014, 10, 16), + datetime.date(2014, 11, 14), datetime.date(2014, 12, 17), datetime.date(2015, 1, 16), + datetime.date(2015, 2, 18), datetime.date(2015, 3, 19), datetime.date(2015, 4, 17), + datetime.date(2015, 5, 18), datetime.date(2015, 6, 17), datetime.date(2015, 7, 17), + datetime.date(2015, 8, 17), datetime.date(2015, 9, 16), datetime.date(2015, 10, 16), + datetime.date(2015, 11, 16), datetime.date(2015, 12, 17), datetime.date(2016, 1, 19), + datetime.date(2016, 2, 18), datetime.date(2016, 3, 18), datetime.date(2016, 4, 18)] +raw_bill['charge'] = [ + 2601.6289696969693, 2642.1740261508003, 3437.551946607342, 2930.5070588449826, + 2514.1242835094554, 2804.4448749999997, 3237.7359972191325, 3289.4155027808674, + 2796.5700000000002, 2463.5113047830923, 2370.0007392051775, 2479.081440860215] +raw_bill['usage'] = [ + 0.094265231101663627, 0.10175446346513953, 0.12248981352003527, 0.11229655777596657, + 0.092170964664193167, 0.094173672324921492, 0.095187070309577237, 0.097177529967719486, + 0.095676831493476874, 0.091583582602530869, 0.089122740090923164, 0.091516956021057888] + + +monthly_normalized_bill = { + 'monthly_usage': [ + 0.092656544646156233, 0.081407077375199768, 0.096259845999318444, 0.095904698506193486, + 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, + 0.090033196083726619, 0.099460650112727964, 0.093068756936307756, 0.094710339831841669], + 'monthly_charge': [ + 2611.2818658104966, 2180.2694934775395, 2578.5859081110675, 2619.5021069201466, + 2673.9005752806534, 2893.2607949224612, 3362.6736487267954, 2772.8416549504082, + 2565.8030834213941, 3170.3949663777121, 3157.9130867351737, 2999.6133802204467], + 'monthly_price': [ + 28182.379083772827, 26782.308906986349, 26787.762657851385, 27313.595138938686, + 26817.901843564676, 27005.501339712977, 27201.030152373722, 26618.451410257541, + 28498.41164180508, 31875.872144254135, 33930.968787907128, 31671.445647289031]} + +# pro-forma projection +analysis_date = { + 'proforma_start': datetime.date(2012, 1, 15), + 'proforma_duration': 25} + +proforma_date_from = [ + datetime.date(2012, 1, 1), + datetime.date(2012, 2, 1), + datetime.date(2012, 3, 1), + datetime.date(2012, 4, 1), + datetime.date(2012, 5, 1), + datetime.date(2012, 6, 1), + datetime.date(2012, 7, 1), + datetime.date(2012, 8, 1), + datetime.date(2012, 9, 1), + datetime.date(2012, 10, 1), + datetime.date(2012, 11, 1), + datetime.date(2012, 12, 1), + datetime.date(2013, 1, 1), + datetime.date(2013, 2, 1), + datetime.date(2013, 3, 1), + datetime.date(2013, 4, 1), + datetime.date(2013, 5, 1), + datetime.date(2013, 6, 1), + datetime.date(2013, 7, 1), + datetime.date(2013, 8, 1), + datetime.date(2013, 9, 1), + datetime.date(2013, 10, 1), + datetime.date(2013, 11, 1), + datetime.date(2013, 12, 1), + datetime.date(2014, 1, 1), + datetime.date(2014, 2, 1), + datetime.date(2014, 3, 1), + datetime.date(2014, 4, 1), + datetime.date(2014, 5, 1), + datetime.date(2014, 6, 1), + datetime.date(2014, 7, 1), + datetime.date(2014, 8, 1), + datetime.date(2014, 9, 1), + datetime.date(2014, 10, 1), + datetime.date(2014, 11, 1), + datetime.date(2014, 12, 1), + datetime.date(2015, 1, 1), + datetime.date(2015, 2, 1), + datetime.date(2015, 3, 1), + datetime.date(2015, 4, 1), + datetime.date(2015, 5, 1), + datetime.date(2015, 6, 1), + datetime.date(2015, 7, 1), + datetime.date(2015, 8, 1), + datetime.date(2015, 9, 1), + datetime.date(2015, 10, 1), + datetime.date(2015, 11, 1), + datetime.date(2015, 12, 1), + datetime.date(2016, 1, 1), + datetime.date(2016, 2, 1), + datetime.date(2016, 3, 1), + datetime.date(2016, 4, 1), + datetime.date(2016, 5, 1), + datetime.date(2016, 6, 1), + datetime.date(2016, 7, 1), + datetime.date(2016, 8, 1), + datetime.date(2016, 9, 1), + datetime.date(2016, 10, 1), + datetime.date(2016, 11, 1), + datetime.date(2016, 12, 1), + datetime.date(2017, 1, 1), + datetime.date(2017, 2, 1), + datetime.date(2017, 3, 1), + datetime.date(2017, 4, 1), + datetime.date(2017, 5, 1), + datetime.date(2017, 6, 1), + datetime.date(2017, 7, 1), + datetime.date(2017, 8, 1), + datetime.date(2017, 9, 1), + datetime.date(2017, 10, 1), + datetime.date(2017, 11, 1), + datetime.date(2017, 12, 1), + datetime.date(2018, 1, 1), + datetime.date(2018, 2, 1), + datetime.date(2018, 3, 1), + datetime.date(2018, 4, 1), + datetime.date(2018, 5, 1), + datetime.date(2018, 6, 1), + datetime.date(2018, 7, 1), + datetime.date(2018, 8, 1), + datetime.date(2018, 9, 1), + datetime.date(2018, 10, 1), + datetime.date(2018, 11, 1), + datetime.date(2018, 12, 1), + datetime.date(2019, 1, 1), + datetime.date(2019, 2, 1), + datetime.date(2019, 3, 1), + datetime.date(2019, 4, 1), + datetime.date(2019, 5, 1), + datetime.date(2019, 6, 1), + datetime.date(2019, 7, 1), + datetime.date(2019, 8, 1), + datetime.date(2019, 9, 1), + datetime.date(2019, 10, 1), + datetime.date(2019, 11, 1), + datetime.date(2019, 12, 1), + datetime.date(2020, 1, 1), + datetime.date(2020, 2, 1), + datetime.date(2020, 3, 1), + datetime.date(2020, 4, 1), + datetime.date(2020, 5, 1), + datetime.date(2020, 6, 1), + datetime.date(2020, 7, 1), + datetime.date(2020, 8, 1), + datetime.date(2020, 9, 1), + datetime.date(2020, 10, 1), + datetime.date(2020, 11, 1), + datetime.date(2020, 12, 1), + datetime.date(2021, 1, 1), + datetime.date(2021, 2, 1), + datetime.date(2021, 3, 1), + datetime.date(2021, 4, 1), + datetime.date(2021, 5, 1), + datetime.date(2021, 6, 1), + datetime.date(2021, 7, 1), + datetime.date(2021, 8, 1), + datetime.date(2021, 9, 1), + datetime.date(2021, 10, 1), + datetime.date(2021, 11, 1), + datetime.date(2021, 12, 1), + datetime.date(2022, 1, 1), + datetime.date(2022, 2, 1), + datetime.date(2022, 3, 1), + datetime.date(2022, 4, 1), + datetime.date(2022, 5, 1), + datetime.date(2022, 6, 1), + datetime.date(2022, 7, 1), + datetime.date(2022, 8, 1), + datetime.date(2022, 9, 1), + datetime.date(2022, 10, 1), + datetime.date(2022, 11, 1), + datetime.date(2022, 12, 1), + datetime.date(2023, 1, 1), + datetime.date(2023, 2, 1), + datetime.date(2023, 3, 1), + datetime.date(2023, 4, 1), + datetime.date(2023, 5, 1), + datetime.date(2023, 6, 1), + datetime.date(2023, 7, 1), + datetime.date(2023, 8, 1), + datetime.date(2023, 9, 1), + datetime.date(2023, 10, 1), + datetime.date(2023, 11, 1), + datetime.date(2023, 12, 1), + datetime.date(2024, 1, 1), + datetime.date(2024, 2, 1), + datetime.date(2024, 3, 1), + datetime.date(2024, 4, 1), + datetime.date(2024, 5, 1), + datetime.date(2024, 6, 1), + datetime.date(2024, 7, 1), + datetime.date(2024, 8, 1), + datetime.date(2024, 9, 1), + datetime.date(2024, 10, 1), + datetime.date(2024, 11, 1), + datetime.date(2024, 12, 1), + datetime.date(2025, 1, 1), + datetime.date(2025, 2, 1), + datetime.date(2025, 3, 1), + datetime.date(2025, 4, 1), + datetime.date(2025, 5, 1), + datetime.date(2025, 6, 1), + datetime.date(2025, 7, 1), + datetime.date(2025, 8, 1), + datetime.date(2025, 9, 1), + datetime.date(2025, 10, 1), + datetime.date(2025, 11, 1), + datetime.date(2025, 12, 1), + datetime.date(2026, 1, 1), + datetime.date(2026, 2, 1), + datetime.date(2026, 3, 1), + datetime.date(2026, 4, 1), + datetime.date(2026, 5, 1), + datetime.date(2026, 6, 1), + datetime.date(2026, 7, 1), + datetime.date(2026, 8, 1), + datetime.date(2026, 9, 1), + datetime.date(2026, 10, 1), + datetime.date(2026, 11, 1), + datetime.date(2026, 12, 1), + datetime.date(2027, 1, 1), + datetime.date(2027, 2, 1), + datetime.date(2027, 3, 1), + datetime.date(2027, 4, 1), + datetime.date(2027, 5, 1), + datetime.date(2027, 6, 1), + datetime.date(2027, 7, 1), + datetime.date(2027, 8, 1), + datetime.date(2027, 9, 1), + datetime.date(2027, 10, 1), + datetime.date(2027, 11, 1), + datetime.date(2027, 12, 1), + datetime.date(2028, 1, 1), + datetime.date(2028, 2, 1), + datetime.date(2028, 3, 1), + datetime.date(2028, 4, 1), + datetime.date(2028, 5, 1), + datetime.date(2028, 6, 1), + datetime.date(2028, 7, 1), + datetime.date(2028, 8, 1), + datetime.date(2028, 9, 1), + datetime.date(2028, 10, 1), + datetime.date(2028, 11, 1), + datetime.date(2028, 12, 1), + datetime.date(2029, 1, 1), + datetime.date(2029, 2, 1), + datetime.date(2029, 3, 1), + datetime.date(2029, 4, 1), + datetime.date(2029, 5, 1), + datetime.date(2029, 6, 1), + datetime.date(2029, 7, 1), + datetime.date(2029, 8, 1), + datetime.date(2029, 9, 1), + datetime.date(2029, 10, 1), + datetime.date(2029, 11, 1), + datetime.date(2029, 12, 1), + datetime.date(2030, 1, 1), + datetime.date(2030, 2, 1), + datetime.date(2030, 3, 1), + datetime.date(2030, 4, 1), + datetime.date(2030, 5, 1), + datetime.date(2030, 6, 1), + datetime.date(2030, 7, 1), + datetime.date(2030, 8, 1), + datetime.date(2030, 9, 1), + datetime.date(2030, 10, 1), + datetime.date(2030, 11, 1), + datetime.date(2030, 12, 1), + datetime.date(2031, 1, 1), + datetime.date(2031, 2, 1), + datetime.date(2031, 3, 1), + datetime.date(2031, 4, 1), + datetime.date(2031, 5, 1), + datetime.date(2031, 6, 1), + datetime.date(2031, 7, 1), + datetime.date(2031, 8, 1), + datetime.date(2031, 9, 1), + datetime.date(2031, 10, 1), + datetime.date(2031, 11, 1), + datetime.date(2031, 12, 1), + datetime.date(2032, 1, 1), + datetime.date(2032, 2, 1), + datetime.date(2032, 3, 1), + datetime.date(2032, 4, 1), + datetime.date(2032, 5, 1), + datetime.date(2032, 6, 1), + datetime.date(2032, 7, 1), + datetime.date(2032, 8, 1), + datetime.date(2032, 9, 1), + datetime.date(2032, 10, 1), + datetime.date(2032, 11, 1), + datetime.date(2032, 12, 1), + datetime.date(2033, 1, 1), + datetime.date(2033, 2, 1), + datetime.date(2033, 3, 1), + datetime.date(2033, 4, 1), + datetime.date(2033, 5, 1), + datetime.date(2033, 6, 1), + datetime.date(2033, 7, 1), + datetime.date(2033, 8, 1), + datetime.date(2033, 9, 1), + datetime.date(2033, 10, 1), + datetime.date(2033, 11, 1), + datetime.date(2033, 12, 1), + datetime.date(2034, 1, 1), + datetime.date(2034, 2, 1), + datetime.date(2034, 3, 1), + datetime.date(2034, 4, 1), + datetime.date(2034, 5, 1), + datetime.date(2034, 6, 1), + datetime.date(2034, 7, 1), + datetime.date(2034, 8, 1), + datetime.date(2034, 9, 1), + datetime.date(2034, 10, 1), + datetime.date(2034, 11, 1), + datetime.date(2034, 12, 1), + datetime.date(2035, 1, 1), + datetime.date(2035, 2, 1), + datetime.date(2035, 3, 1), + datetime.date(2035, 4, 1), + datetime.date(2035, 5, 1), + datetime.date(2035, 6, 1), + datetime.date(2035, 7, 1), + datetime.date(2035, 8, 1), + datetime.date(2035, 9, 1), + datetime.date(2035, 10, 1), + datetime.date(2035, 11, 1), + datetime.date(2035, 12, 1), + datetime.date(2036, 1, 1), + datetime.date(2036, 2, 1), + datetime.date(2036, 3, 1), + datetime.date(2036, 4, 1), + datetime.date(2036, 5, 1), + datetime.date(2036, 6, 1), + datetime.date(2036, 7, 1), + datetime.date(2036, 8, 1), + datetime.date(2036, 9, 1), + datetime.date(2036, 10, 1), + datetime.date(2036, 11, 1), + datetime.date(2036, 12, 1)] + +proforma_date_to = [ + datetime.date(2012, 1, 31), + datetime.date(2012, 2, 29), + datetime.date(2012, 3, 31), + datetime.date(2012, 4, 30), + datetime.date(2012, 5, 31), + datetime.date(2012, 6, 30), + datetime.date(2012, 7, 31), + datetime.date(2012, 8, 31), + datetime.date(2012, 9, 30), + datetime.date(2012, 10, 31), + datetime.date(2012, 11, 30), + datetime.date(2012, 12, 31), + datetime.date(2013, 1, 31), + datetime.date(2013, 2, 28), + datetime.date(2013, 3, 31), + datetime.date(2013, 4, 30), + datetime.date(2013, 5, 31), + datetime.date(2013, 6, 30), + datetime.date(2013, 7, 31), + datetime.date(2013, 8, 31), + datetime.date(2013, 9, 30), + datetime.date(2013, 10, 31), + datetime.date(2013, 11, 30), + datetime.date(2013, 12, 31), + datetime.date(2014, 1, 31), + datetime.date(2014, 2, 28), + datetime.date(2014, 3, 31), + datetime.date(2014, 4, 30), + datetime.date(2014, 5, 31), + datetime.date(2014, 6, 30), + datetime.date(2014, 7, 31), + datetime.date(2014, 8, 31), + datetime.date(2014, 9, 30), + datetime.date(2014, 10, 31), + datetime.date(2014, 11, 30), + datetime.date(2014, 12, 31), + datetime.date(2015, 1, 31), + datetime.date(2015, 2, 28), + datetime.date(2015, 3, 31), + datetime.date(2015, 4, 30), + datetime.date(2015, 5, 31), + datetime.date(2015, 6, 30), + datetime.date(2015, 7, 31), + datetime.date(2015, 8, 31), + datetime.date(2015, 9, 30), + datetime.date(2015, 10, 31), + datetime.date(2015, 11, 30), + datetime.date(2015, 12, 31), + datetime.date(2016, 1, 31), + datetime.date(2016, 2, 29), + datetime.date(2016, 3, 31), + datetime.date(2016, 4, 30), + datetime.date(2016, 5, 31), + datetime.date(2016, 6, 30), + datetime.date(2016, 7, 31), + datetime.date(2016, 8, 31), + datetime.date(2016, 9, 30), + datetime.date(2016, 10, 31), + datetime.date(2016, 11, 30), + datetime.date(2016, 12, 31), + datetime.date(2017, 1, 31), + datetime.date(2017, 2, 28), + datetime.date(2017, 3, 31), + datetime.date(2017, 4, 30), + datetime.date(2017, 5, 31), + datetime.date(2017, 6, 30), + datetime.date(2017, 7, 31), + datetime.date(2017, 8, 31), + datetime.date(2017, 9, 30), + datetime.date(2017, 10, 31), + datetime.date(2017, 11, 30), + datetime.date(2017, 12, 31), + datetime.date(2018, 1, 31), + datetime.date(2018, 2, 28), + datetime.date(2018, 3, 31), + datetime.date(2018, 4, 30), + datetime.date(2018, 5, 31), + datetime.date(2018, 6, 30), + datetime.date(2018, 7, 31), + datetime.date(2018, 8, 31), + datetime.date(2018, 9, 30), + datetime.date(2018, 10, 31), + datetime.date(2018, 11, 30), + datetime.date(2018, 12, 31), + datetime.date(2019, 1, 31), + datetime.date(2019, 2, 28), + datetime.date(2019, 3, 31), + datetime.date(2019, 4, 30), + datetime.date(2019, 5, 31), + datetime.date(2019, 6, 30), + datetime.date(2019, 7, 31), + datetime.date(2019, 8, 31), + datetime.date(2019, 9, 30), + datetime.date(2019, 10, 31), + datetime.date(2019, 11, 30), + datetime.date(2019, 12, 31), + datetime.date(2020, 1, 31), + datetime.date(2020, 2, 29), + datetime.date(2020, 3, 31), + datetime.date(2020, 4, 30), + datetime.date(2020, 5, 31), + datetime.date(2020, 6, 30), + datetime.date(2020, 7, 31), + datetime.date(2020, 8, 31), + datetime.date(2020, 9, 30), + datetime.date(2020, 10, 31), + datetime.date(2020, 11, 30), + datetime.date(2020, 12, 31), + datetime.date(2021, 1, 31), + datetime.date(2021, 2, 28), + datetime.date(2021, 3, 31), + datetime.date(2021, 4, 30), + datetime.date(2021, 5, 31), + datetime.date(2021, 6, 30), + datetime.date(2021, 7, 31), + datetime.date(2021, 8, 31), + datetime.date(2021, 9, 30), + datetime.date(2021, 10, 31), + datetime.date(2021, 11, 30), + datetime.date(2021, 12, 31), + datetime.date(2022, 1, 31), + datetime.date(2022, 2, 28), + datetime.date(2022, 3, 31), + datetime.date(2022, 4, 30), + datetime.date(2022, 5, 31), + datetime.date(2022, 6, 30), + datetime.date(2022, 7, 31), + datetime.date(2022, 8, 31), + datetime.date(2022, 9, 30), + datetime.date(2022, 10, 31), + datetime.date(2022, 11, 30), + datetime.date(2022, 12, 31), + datetime.date(2023, 1, 31), + datetime.date(2023, 2, 28), + datetime.date(2023, 3, 31), + datetime.date(2023, 4, 30), + datetime.date(2023, 5, 31), + datetime.date(2023, 6, 30), + datetime.date(2023, 7, 31), + datetime.date(2023, 8, 31), + datetime.date(2023, 9, 30), + datetime.date(2023, 10, 31), + datetime.date(2023, 11, 30), + datetime.date(2023, 12, 31), + datetime.date(2024, 1, 31), + datetime.date(2024, 2, 29), + datetime.date(2024, 3, 31), + datetime.date(2024, 4, 30), + datetime.date(2024, 5, 31), + datetime.date(2024, 6, 30), + datetime.date(2024, 7, 31), + datetime.date(2024, 8, 31), + datetime.date(2024, 9, 30), + datetime.date(2024, 10, 31), + datetime.date(2024, 11, 30), + datetime.date(2024, 12, 31), + datetime.date(2025, 1, 31), + datetime.date(2025, 2, 28), + datetime.date(2025, 3, 31), + datetime.date(2025, 4, 30), + datetime.date(2025, 5, 31), + datetime.date(2025, 6, 30), + datetime.date(2025, 7, 31), + datetime.date(2025, 8, 31), + datetime.date(2025, 9, 30), + datetime.date(2025, 10, 31), + datetime.date(2025, 11, 30), + datetime.date(2025, 12, 31), + datetime.date(2026, 1, 31), + datetime.date(2026, 2, 28), + datetime.date(2026, 3, 31), + datetime.date(2026, 4, 30), + datetime.date(2026, 5, 31), + datetime.date(2026, 6, 30), + datetime.date(2026, 7, 31), + datetime.date(2026, 8, 31), + datetime.date(2026, 9, 30), + datetime.date(2026, 10, 31), + datetime.date(2026, 11, 30), + datetime.date(2026, 12, 31), + datetime.date(2027, 1, 31), + datetime.date(2027, 2, 28), + datetime.date(2027, 3, 31), + datetime.date(2027, 4, 30), + datetime.date(2027, 5, 31), + datetime.date(2027, 6, 30), + datetime.date(2027, 7, 31), + datetime.date(2027, 8, 31), + datetime.date(2027, 9, 30), + datetime.date(2027, 10, 31), + datetime.date(2027, 11, 30), + datetime.date(2027, 12, 31), + datetime.date(2028, 1, 31), + datetime.date(2028, 2, 29), + datetime.date(2028, 3, 31), + datetime.date(2028, 4, 30), + datetime.date(2028, 5, 31), + datetime.date(2028, 6, 30), + datetime.date(2028, 7, 31), + datetime.date(2028, 8, 31), + datetime.date(2028, 9, 30), + datetime.date(2028, 10, 31), + datetime.date(2028, 11, 30), + datetime.date(2028, 12, 31), + datetime.date(2029, 1, 31), + datetime.date(2029, 2, 28), + datetime.date(2029, 3, 31), + datetime.date(2029, 4, 30), + datetime.date(2029, 5, 31), + datetime.date(2029, 6, 30), + datetime.date(2029, 7, 31), + datetime.date(2029, 8, 31), + datetime.date(2029, 9, 30), + datetime.date(2029, 10, 31), + datetime.date(2029, 11, 30), + datetime.date(2029, 12, 31), + datetime.date(2030, 1, 31), + datetime.date(2030, 2, 28), + datetime.date(2030, 3, 31), + datetime.date(2030, 4, 30), + datetime.date(2030, 5, 31), + datetime.date(2030, 6, 30), + datetime.date(2030, 7, 31), + datetime.date(2030, 8, 31), + datetime.date(2030, 9, 30), + datetime.date(2030, 10, 31), + datetime.date(2030, 11, 30), + datetime.date(2030, 12, 31), + datetime.date(2031, 1, 31), + datetime.date(2031, 2, 28), + datetime.date(2031, 3, 31), + datetime.date(2031, 4, 30), + datetime.date(2031, 5, 31), + datetime.date(2031, 6, 30), + datetime.date(2031, 7, 31), + datetime.date(2031, 8, 31), + datetime.date(2031, 9, 30), + datetime.date(2031, 10, 31), + datetime.date(2031, 11, 30), + datetime.date(2031, 12, 31), + datetime.date(2032, 1, 31), + datetime.date(2032, 2, 29), + datetime.date(2032, 3, 31), + datetime.date(2032, 4, 30), + datetime.date(2032, 5, 31), + datetime.date(2032, 6, 30), + datetime.date(2032, 7, 31), + datetime.date(2032, 8, 31), + datetime.date(2032, 9, 30), + datetime.date(2032, 10, 31), + datetime.date(2032, 11, 30), + datetime.date(2032, 12, 31), + datetime.date(2033, 1, 31), + datetime.date(2033, 2, 28), + datetime.date(2033, 3, 31), + datetime.date(2033, 4, 30), + datetime.date(2033, 5, 31), + datetime.date(2033, 6, 30), + datetime.date(2033, 7, 31), + datetime.date(2033, 8, 31), + datetime.date(2033, 9, 30), + datetime.date(2033, 10, 31), + datetime.date(2033, 11, 30), + datetime.date(2033, 12, 31), + datetime.date(2034, 1, 31), + datetime.date(2034, 2, 28), + datetime.date(2034, 3, 31), + datetime.date(2034, 4, 30), + datetime.date(2034, 5, 31), + datetime.date(2034, 6, 30), + datetime.date(2034, 7, 31), + datetime.date(2034, 8, 31), + datetime.date(2034, 9, 30), + datetime.date(2034, 10, 31), + datetime.date(2034, 11, 30), + datetime.date(2034, 12, 31), + datetime.date(2035, 1, 31), + datetime.date(2035, 2, 28), + datetime.date(2035, 3, 31), + datetime.date(2035, 4, 30), + datetime.date(2035, 5, 31), + datetime.date(2035, 6, 30), + datetime.date(2035, 7, 31), + datetime.date(2035, 8, 31), + datetime.date(2035, 9, 30), + datetime.date(2035, 10, 31), + datetime.date(2035, 11, 30), + datetime.date(2035, 12, 31), + datetime.date(2036, 1, 31), + datetime.date(2036, 2, 29), + datetime.date(2036, 3, 31), + datetime.date(2036, 4, 30), + datetime.date(2036, 5, 31), + datetime.date(2036, 6, 30), + datetime.date(2036, 7, 31), + datetime.date(2036, 8, 31), + datetime.date(2036, 9, 30), + datetime.date(2036, 10, 31), + datetime.date(2036, 11, 30), + datetime.date(2036, 12, 31)] + +# bill_prior_projection, rough method +prior_proj_rough_usage = [ + 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, + 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, + 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, + 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, + 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, + 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, + 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, + 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, + 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, + 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, + 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, + 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, + 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, + 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, + 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, + 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, + 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, + 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, + 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, + 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, + 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, + 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, + 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, + 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, + 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, + 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, + 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, + 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, + 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, + 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, + 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, + 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, + 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, + 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, + 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, + 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, + 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, + 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, + 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, + 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, + 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, + 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, + 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, + 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, + 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, + 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, + 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, + 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, + 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, + 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, + 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, + 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, + 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, + 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, + 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, + 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, 0.08140707737519977, 0.09625984599931844, + 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, 0.12362302566814179, 0.10416990876794137, + 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, 0.09471033983184167, 0.09265654464615623, + 0.08140707737519977, 0.09625984599931844, 0.09590469850619349, 0.09970580811571926, 0.10713597790787066, + 0.12362302566814179, 0.10416990876794137, 0.09003319608372662, 0.09946065011272796, 0.09306875693630776, + 0.09471033983184167] + +prior_proj_rough_charge = [ + 2478.935225530005, 2070.7845891083575, 2450.302319578984, 2490.405910579382, 2560.709606247176, 2775.3375374824864, + 3230.919218524259, 2668.576149486861, 2473.3809117746505, 3061.2176130778334, 3054.176689693635, 2905.8448251341947, + 2529.6071593906345, 2112.037861951869, 2497.844040139815, 2537.433433976163, 2607.7366001516157, 2824.867445203325, + 3286.9056342352073, 2713.4361621702437, 2513.6793964056583, 3109.509988763633, 3100.7787792309073, 2948.68184658793, + 2567.2084506550073, 2143.6915993745547, 2535.5867861333036, 2576.086098445084, 2647.780584082327, 2868.592767679503, + 3338.1866499785847, 2756.1036321003626, 2553.5147743010834, 3159.170028227532, 3150.68062406665, 2996.498535205473, + 2605.569782183977, 2172.9978810955495, 2567.0297283003824, 2604.7629982363537, 2673.9005752806534, + 2893.260794922461, 3362.6736487267954, 2772.841654950408, 2565.803083421394, 3170.394966377712, 3157.9130867351737, + 2999.6133802204467, 2611.2818658104966, 2180.2694934775395, 2578.5859081110675, 2619.5021069201466, + 2692.12749960377, 2916.3375062308105, 3393.397636983181, 2801.3987693259933, 2595.2130601030153, 3210.4277200196416, + 3201.470698260759, 3044.4894387870354, 2652.3046521007327, 2216.1558414915903, 2622.963144781242, + 2666.5504215028436, 2742.5031616169344, 2973.1016670783597, 3462.0010469100807, 2860.1436097853034, + 2651.5901010585067, 3282.5906803609805, 3275.8486727843465, 3117.5199157010734, 2716.3069746205647, + 2269.9506512268254, 2687.008152470712, 2732.0413793196417, 2810.252136413284, 3046.972868949981, 3548.515434878526, + 2932.0273739472377, 2718.612107833957, 3366.0322054626145, 3359.588168593551, 3197.6588293435134, + 2785.6450772175563, 2327.487689459405, 2754.6346432571067, 2800.3114608294013, 2879.9728638074685, + 3122.020427015556, 3635.2802397964056, 3003.193130462135, 2784.1109092902598, 3446.526294872645, 3439.326583934687, + 3272.9814415734086, 2851.2034299169936, 2382.2142686201987, 2819.3464057633128, 2866.03690501216, + 2947.5069783454283, 3195.1642794091595, 3720.371883752405, 3073.425748987782, 2849.161068357882, 3526.9806039888495, + 3519.539935517915, 3349.2458615663227, 2916.7606209466376, 2436.2536414985507, 2882.432965236254, 2929.285157781319, + 3011.6452322909918, 3263.707715152927, 3799.036935280254, 3137.4656830311155, 2907.651529098385, 3598.3012794225483, + 3589.628014031503, 3414.91323986238, 2973.6516021501784, 2483.5245044015373, 2938.0678152841974, 2985.5263081727785, + 3069.161305922148, 3325.70568430886, 3870.8177344293563, 3196.4273802463927, 2961.9987180738085, 3665.1916146989574, + 3655.992183279776, 3477.7001866385076, 3028.2617408356846, 2529.080397839326, 2991.898546197262, 3040.1625881658183, + 3125.2623711445626, 3386.4248497428516, 3941.4063563325494, 3254.6492615592297, 3015.887092097704, + 3731.794819562704, 3722.349885328994, 3540.7473077454047, 3083.246616736726, 2575.0730187485397, 3046.392339334037, + 3095.6214064637734, 3182.361947320719, 3448.391700204128, 4013.6400385606603, 3314.3888574922153, 3071.329450925986, + 3800.5035466543104, 3790.989977259143, 3606.1387796738736, 3140.2467634254913, 2622.7269076398297, + 3102.8256182312825, 3153.024791460582, 3241.4335846539893, 3512.4662206481257, 4088.292837496078, + 3376.0980127832227, 3128.5708945229685, 3871.406269721318, 3861.786442662563, 3673.550919142326, 3199.4153483757746, + 2672.533381860802, 3162.2096135517777, 3213.837331264348, 3304.432254284792, 3581.2538059697977, 4168.964144991406, + 3443.21728449315, 3191.2336562843607, 3949.522310275536, 3940.28191527154, 3748.7659387893177, 3265.0699449394842, + 2727.4990499357323, 3227.3920742084542, 3280.232057752556, 3372.850830126079, 3655.5690064077544, 4255.667118146109, + 3514.985384538945, 3257.896637642683, 4032.2075024060464, 4022.955247368871, 3827.5937372576786, 3333.646311473527, + 2784.7176085390597, 3295.0180852049857, 3348.8844635353275, 3443.3585850979007, 3731.896800008966, + 4344.420058347161, 3588.204656660635, 3325.680353751353, 4116.002200306799, 4106.458590497996, 3906.9477501580154, + 3402.621893471325, 2842.220291490784, 3362.9218944682534, 3417.7598699532095, 3514.034626404497, 3808.3408727149413, + 4433.231413061794, 3661.408627997248, 3393.3909979938117, 4199.6335852194925, 4189.726301335686, 3986.0084216853097, + 3471.383079971376, 2899.578210259841, 3430.69503504048, 3486.5437639251672, 3584.6590357603636, 3884.7750124423674, + 4522.084790338106, 3734.6915706300438, 3461.215865395534, 4283.457123336439, 4273.236393659665, 4065.347916017132, + 3540.3811045044044, 2957.1289591138325, 3498.6904203951735, 3555.5475236602697, 3655.5033378005137, + 3961.4407845059186, 4611.200042213721, 3808.1843884447135, 3529.2293122878577, 4367.506710512254, 4356.964690480223, + 4144.888055731812, 3609.6488448203777, 3014.984325118045, 3567.1400767105674, 3625.1083317659313, + 3727.0184279367545, 4038.9397755772593, 4701.40890702796, 3882.6825571624163, 3598.2691689018143, 4452.943704173861, + 4442.193964950228, 4225.96734453868, 3680.2935413377854, 3074.0203415528013, 3637.0227356469168, 3696.1621483670674, + 3800.106249740351, 4118.184034399836, 4793.696921227584, 3958.9371311363716, 3668.973219498924, 4540.485283824873, + 4529.567742652207, 4309.129559485922, 3752.76508539914, 3134.5930163998732, 3708.7362173733054, 3769.089493154057, + 3875.1335876505595, 4199.544565916431, 4888.465124225117, 4037.2538605468994, 3741.601232367881, 4630.423732761778, + 4619.3484866440385, 4394.596691592045, 3827.240038837637, 3196.8358225397374, 3782.4218724957127, + 3844.0171781461104, 3952.2135094543064, 4283.125142602108, 4985.812474039719, 4117.696437295969, 3816.1955214498357, + 4722.790733124987, 4711.547169788192, 4482.359550790108, 3903.7131777047516, 3260.7467180680555, 3858.0800316613463, + 3920.9483304189985, 4031.352099575602, 4368.935467599963, 5085.753884753521, 4200.28016729184, 3892.773041476683, + 4817.610694655487, 4806.191562386124, 4572.447808596384] + +prior_proj_rough_price = [ + 26754.021909588242, 25437.4024455423, 25455.08248160228, 25967.506799664803, 25682.652341327983, 25904.813599303492, + 26135.25434329247, 25617.53371054237, 27471.877255968157, 30778.17820020553, 32816.34772218761, 30681.38949024495, + 27300.9010755893, 25944.15534926562, 25948.971912520003, 26457.863623983936, 26154.30985850953, 26367.122421120857, + 26588.134503831818, 26048.176428904702, 27919.473102654883, 31263.720730151446, 33317.07526031476, + 31133.684577875218, 27706.714732983575, 26332.98809505743, 26341.064228912815, 26860.895645052486, + 26555.931235312735, 26775.251635321696, 27002.952176075483, 26457.77139192967, 28361.92521618843, + 31763.014062817325, 33853.25782553258, 31638.557527359317, 28120.731159728897, 26692.984825881267, + 26667.710732869426, 27159.910190095005, 26817.901843564676, 27005.501339712977, 27201.03015237372, + 26618.45141025754, 28498.41164180508, 31875.872144254135, 33930.96878790713, 31671.44564728903, 28182.379083772827, + 26782.30890698635, 26787.762657851385, 27313.595138938686, 27000.708890291207, 27220.897808378188, + 27449.559810099963, 26892.591175889873, 28825.068674554102, 32278.370555400215, 34398.98418812779, + 32145.269927153997, 28625.11938287309, 27223.13480531277, 27248.777696982954, 27804.16875332379, 27505.951894336646, + 27750.73066150585, 28004.500198883692, 27456.52409235403, 29451.2492769073, 33003.91337318343, 35198.15650945243, + 32916.36289381111, 29315.867378756695, 27883.947249018347, 27914.11231314184, 28487.04413729227, 28185.44064305347, + 28440.239483044264, 28704.32442257393, 28146.586750679566, 30195.663667274195, 33842.853446539695, + 36097.91598369266, 33762.51035547925, 30064.202025400224, 28590.729018954582, 28616.653337224438, 29198.89749352122, + 28884.705096266327, 29140.72833404547, 29406.174296001183, 28829.756750121847, 30923.159794318177, + 34652.15933101561, 36954.68487119059, 34557.80485409081, 30771.743548233786, 29262.987266337208, 29288.91456758901, + 29884.21787100527, 29562.03890273404, 29823.44812455788, 30094.489789786483, 29503.968903672867, 31645.672843917448, + 35461.06525536879, 37816.55682719107, 35363.04343868804, 31479.272533692918, 29926.803910058345, 29944.292298750017, + 30543.708529485102, 30205.313905040068, 30463.227935992556, 30730.81988365605, 30118.733136461007, + 32295.327230129722, 36178.13954910068, 38569.635312611834, 36056.39306041519, 32093.271052856355, 30507.47655458922, + 30522.25759123903, 31130.136006631357, 30782.171710198247, 31041.91280326699, 31311.46251686415, 30684.747812989386, + 32898.96223743173, 36850.670195146085, 39282.70134500431, 36719.329619270386, 32682.653474724724, 31067.08260981983, + 31081.48070607183, 31699.82947154029, 31344.83768004128, 31608.661402754326, 31882.461499632, 31243.66047789857, + 33497.501180487605, 37520.31396671061, 39995.6978889963, 37385.01323120586, 33276.08026514759, 31632.053400961693, + 31647.592074431603, 32278.09955800924, 31917.518221478607, 32187.055810229314, 32466.767552955902, + 31817.14274969423, 34113.30025505031, 38211.12713768559, 40733.21812875972, 38075.44969299633, 33891.256957808015, + 32217.431115379033, 32233.851883092062, 32876.6456760923, 32509.977562109107, 32785.12306732849, 33070.642102474034, + 32409.53220285653, 34749.0817899383, 38923.999243253435, 41493.908050210695, 38787.221391716266, 34529.836619679074, + 32829.2510679787, 32850.76535001071, 33510.739112086354, 33141.8230967011, 33427.18175447488, 33723.201017444175, + 33053.85715719098, 35445.077983421404, 39709.39568361132, 42337.32183581327, 39581.37987304508, 35238.41685882393, + 33504.446270253284, 33527.91645055515, 34203.038108093526, 33828.02761311081, 34120.83482871911, 34424.55072706422, + 33742.80947456002, 36185.50467333174, 40540.731413237016, 43225.62565353707, 40413.683913008615, 35978.53043413507, + 34207.31585417915, 34230.45249031788, 34918.877966328815, 34535.18556412997, 34833.27331195999, 35142.48284142052, + 34445.69261027247, 36938.379380185805, 41383.222366249895, 44122.84772760293, 41251.54399292418, 36722.95256061526, + 34913.675605760676, 34935.874450620504, 35637.04305615946, 35244.031343952236, 35546.797136530964, + 35860.887477083146, 35148.428863019784, 37690.44247677399, 42224.07133333292, 45017.53799293735, 42086.306825236534, + 37465.060813870776, 35618.25708219298, 35639.93895299573, 36354.25394408604, 35952.359280815246, 36260.22824734935, + 36579.632037783624, 35851.92321661519, 38443.77425163011, 43066.85225243954, 45914.83258537646, 42924.01361071201, + 38209.72515243988, 36325.20727263826, 36346.31225589064, 37073.757376242145, 36662.89263267302, 36975.821398787964, + 37300.49493038777, 36557.43230924951, 39199.20058159261, 43911.90592020215, 46814.47172934674, 43763.83891232008, + 38957.30041094426, 37035.899363174336, 37057.40477432121, 37799.06916168266, 37380.15365776035, 37699.191760311005, + 38030.204176110325, 37272.59247017143, 39966.02725905225, 44770.90888835864, 47730.23849443132, 44619.915333868405, + 39719.73653229102, 37761.09449777748, 37783.384108807615, 38539.94857330552, 38113.188404530265, 38438.852333444716, + 38776.73188565989, 38004.61359676978, 40751.33816294772, 45651.07184277119, 48669.04739849537, 45497.984350354855, + 40501.88898939067, 38505.165858648186, 38528.383033145146, 39300.363296701784, 38865.67553971432, 39198.26605333029, + 39543.322110137415, 38756.430799422735, 41558.01854338669, 46555.333466186785, 49633.71853999642, 46400.38985600366, + 41305.66333391115, 39269.75301920907, 39293.86997484386, 40081.6356030551, 39638.74907735906, 39978.401525258785, + 40330.775331642646, 39528.65550135918, 42386.53838192031, 47484.01229805165, 50624.369819536456, 47327.03481740793, + 42131.00318614885, 40054.83089682108, 40079.848368848034, 40883.798098440246, 40432.470041231565, 40779.34931771414, + 41139.21219179594, 40321.43463472525, 43237.085994998866, 48437.35375945405, 51641.29962190506, 48278.23252154697] + + +inflation_coeff_dict = { + datetime.date(1981, 1, 31): 0.3381208260704529, + datetime.date(1981, 2, 28): 0.3410451203881943, + datetime.date(1981, 3, 31): 0.34399470595272497, + datetime.date(1981, 4, 30): 0.3469698014996081, + datetime.date(1981, 5, 31): 0.3499706276561777, + datetime.date(1981, 6, 30): 0.3529974069579001, + datetime.date(1981, 7, 31): 0.3560503638648767, + datetime.date(1981, 8, 31): 0.3591297247784895, + datetime.date(1981, 9, 30): 0.36223571805819044, + datetime.date(1981, 10, 31): 0.36536857403843637, + datetime.date(1981, 11, 30): 0.3685285250457702, + datetime.date(1981, 12, 31): 0.3717158054160494, + datetime.date(1982, 1, 31): 0.3736234509294446, + datetime.date(1982, 2, 28): 0.3755408864796145, + datetime.date(1982, 3, 31): 0.3774681623090278, + datetime.date(1982, 4, 30): 0.3794053289179977, + datetime.date(1982, 5, 31): 0.3813524370660048, + datetime.date(1982, 6, 30): 0.38330953777302756, + datetime.date(1982, 7, 31): 0.3852766823208787, + datetime.date(1982, 8, 31): 0.38725392225454935, + datetime.date(1982, 9, 30): 0.38924130938355966, + datetime.date(1982, 10, 31): 0.39123889578331605, + datetime.date(1982, 11, 30): 0.393246733796476, + datetime.date(1982, 12, 31): 0.3952648760343195, + datetime.date(1983, 1, 31): 0.39630557551417817, + datetime.date(1983, 2, 28): 0.3973490150690424, + datetime.date(1983, 3, 31): 0.3983952019133013, + datetime.date(1983, 4, 30): 0.39944414328033895, + datetime.date(1983, 5, 31): 0.4004958464225842, + datetime.date(1983, 6, 30): 0.401550318611561, + datetime.date(1983, 7, 31): 0.4026075671379387, + datetime.date(1983, 8, 31): 0.4036675993115824, + datetime.date(1983, 9, 30): 0.40473042246160323, + datetime.date(1983, 10, 31): 0.4057960439364095, + datetime.date(1983, 11, 30): 0.4068644711037571, + datetime.date(1983, 12, 31): 0.4079357113508007, + datetime.date(1984, 1, 31): 0.40942066532940286, + datetime.date(1984, 2, 29): 0.41091102478797936, + datetime.date(1984, 3, 31): 0.41240680940337837, + datetime.date(1984, 4, 30): 0.41390803892407485, + datetime.date(1984, 5, 31): 0.41541473317043154, + datetime.date(1984, 6, 30): 0.41692691203496074, + datetime.date(1984, 7, 31): 0.41844459548258667, + datetime.date(1984, 8, 31): 0.4199678035509092, + datetime.date(1984, 9, 30): 0.4214965563504684, + datetime.date(1984, 10, 31): 0.4230308740650101, + datetime.date(1984, 11, 30): 0.4245707769517523, + datetime.date(1984, 12, 31): 0.4261162853416528, + datetime.date(1985, 1, 31): 0.4273691382399381, + datetime.date(1985, 2, 28): 0.4286256747345532, + datetime.date(1985, 3, 31): 0.4298859056558852, + datetime.date(1985, 4, 30): 0.4311498418661644, + datetime.date(1985, 5, 31): 0.4324174942595579, + datetime.date(1985, 6, 30): 0.43368887376226334, + datetime.date(1985, 7, 31): 0.4349639913326034, + datetime.date(1985, 8, 31): 0.4362428579611198, + datetime.date(1985, 9, 30): 0.4375254846706685, + datetime.date(1985, 10, 31): 0.4388118825165143, + datetime.date(1985, 11, 30): 0.44010206258642665, + datetime.date(1985, 12, 31): 0.4413960360007745, + datetime.date(1986, 1, 31): 0.4421111711451018, + datetime.date(1986, 2, 28): 0.44282746492755204, + datetime.date(1986, 3, 31): 0.4435449192253122, + datetime.date(1986, 4, 30): 0.44426353591861034, + datetime.date(1986, 5, 31): 0.4449833168907211, + datetime.date(1986, 6, 30): 0.4457042640279702, + datetime.date(1986, 7, 31): 0.44642637921973954, + datetime.date(1986, 8, 31): 0.44714966435847203, + datetime.date(1986, 9, 30): 0.44787412133967686, + datetime.date(1986, 10, 31): 0.448599752061934, + datetime.date(1986, 11, 30): 0.44932655842689967, + datetime.date(1986, 12, 31): 0.4500545423393109, + datetime.date(1987, 1, 31): 0.45139652997547636, + datetime.date(1987, 2, 28): 0.4527425191951082, + datetime.date(1987, 3, 31): 0.45409252193026156, + datetime.date(1987, 4, 30): 0.4554465501485706, + datetime.date(1987, 5, 31): 0.45680461585335536, + datetime.date(1987, 6, 30): 0.4581667310837274, + datetime.date(1987, 7, 31): 0.4595329079146972, + datetime.date(1987, 8, 31): 0.46090315845728086, + datetime.date(1987, 9, 30): 0.4622774948586074, + datetime.date(1987, 10, 31): 0.46365592930202665, + datetime.date(1987, 11, 30): 0.4650384740072171, + datetime.date(1987, 12, 31): 0.46642514123029427, + datetime.date(1988, 1, 31): 0.4680186438565458, + datetime.date(1988, 2, 29): 0.469617590551728, + datetime.date(1988, 3, 31): 0.47122199991504876, + datetime.date(1988, 4, 30): 0.4728318906092585, + datetime.date(1988, 5, 31): 0.47444728136086745, + datetime.date(1988, 6, 30): 0.47606819096036335, + datetime.date(1988, 7, 31): 0.4776946382624302, + datetime.date(1988, 8, 31): 0.47932664218616716, + datetime.date(1988, 9, 30): 0.4809642217153094, + datetime.date(1988, 10, 31): 0.48260739589844787, + datetime.date(1988, 11, 30): 0.4842561838492519, + datetime.date(1988, 12, 31): 0.48591060474669084, + datetime.date(1989, 1, 31): 0.48785076480634354, + datetime.date(1989, 2, 28): 0.48979867160175444, + datetime.date(1989, 3, 31): 0.49175435606434825, + datetime.date(1989, 4, 30): 0.49371784924905376, + datetime.date(1989, 5, 31): 0.495689182334797, + datetime.date(1989, 6, 30): 0.497668386624996, + datetime.date(1989, 7, 31): 0.49965549354805844, + datetime.date(1989, 8, 31): 0.5016505346578802, + datetime.date(1989, 9, 30): 0.5036535416343466, + datetime.date(1989, 10, 31): 0.5056645462838355, + datetime.date(1989, 11, 30): 0.5076835805397224, + datetime.date(1989, 12, 31): 0.5097106764628874, + datetime.date(1990, 1, 31): 0.5120123174983452, + datetime.date(1990, 2, 28): 0.5143243517857021, + datetime.date(1990, 3, 31): 0.516646826256553, + datetime.date(1990, 4, 30): 0.5189797880544167, + datetime.date(1990, 5, 31): 0.521323284535692, + datetime.date(1990, 6, 30): 0.52367736327062, + datetime.date(1990, 7, 31): 0.5260420720442486, + datetime.date(1990, 8, 31): 0.5284174588574037, + datetime.date(1990, 9, 30): 0.5308035719276625, + datetime.date(1990, 10, 31): 0.5332004596903328, + datetime.date(1990, 11, 30): 0.535608170799436, + datetime.date(1990, 12, 31): 0.538026754128695, + datetime.date(1991, 1, 31): 0.539917200800452, + datetime.date(1991, 2, 28): 0.5418142898716645, + datetime.date(1991, 3, 31): 0.5437180446815102, + datetime.date(1991, 4, 30): 0.5456284886511727, + datetime.date(1991, 5, 31): 0.5475456452841301, + datetime.date(1991, 6, 30): 0.5494695381664434, + datetime.date(1991, 7, 31): 0.5514001909670476, + datetime.date(1991, 8, 31): 0.553337627438042, + datetime.date(1991, 9, 30): 0.5552818714149835, + datetime.date(1991, 10, 31): 0.5572329468171786, + datetime.date(1991, 11, 30): 0.5591908776479786, + datetime.date(1991, 12, 31): 0.5611556879950743, + datetime.date(1992, 1, 31): 0.5625777967973759, + datetime.date(1992, 2, 29): 0.5640035095789097, + datetime.date(1992, 3, 31): 0.56543283547306, + datetime.date(1992, 4, 30): 0.5668657836363576, + datetime.date(1992, 5, 31): 0.5683023632485381, + datetime.date(1992, 6, 30): 0.5697425835126008, + datetime.date(1992, 7, 31): 0.5711864536548676, + datetime.date(1992, 8, 31): 0.5726339829250425, + datetime.date(1992, 9, 30): 0.5740851805962703, + datetime.date(1992, 10, 31): 0.5755400559651965, + datetime.date(1992, 11, 30): 0.5769986183520263, + datetime.date(1992, 12, 31): 0.5784608771005849, + datetime.date(1993, 1, 31): 0.5798925195663358, + datetime.date(1993, 2, 28): 0.5813277052278858, + datetime.date(1993, 3, 31): 0.5827664428543494, + datetime.date(1993, 4, 30): 0.5842087412365436, + datetime.date(1993, 5, 31): 0.5856546091870424, + datetime.date(1993, 6, 30): 0.5871040555402295, + datetime.date(1993, 7, 31): 0.5885570891523536, + datetime.date(1993, 8, 31): 0.5900137189015816, + datetime.date(1993, 9, 30): 0.5914739536880531, + datetime.date(1993, 10, 31): 0.5929378024339349, + datetime.date(1993, 11, 30): 0.5944052740834753, + datetime.date(1993, 12, 31): 0.5958763776030591, + datetime.date(1994, 1, 31): 0.5971652582078144, + datetime.date(1994, 2, 28): 0.5984569266613179, + datetime.date(1994, 3, 31): 0.5997513889936863, + datetime.date(1994, 4, 30): 0.6010486512480796, + datetime.date(1994, 5, 31): 0.6023487194807291, + datetime.date(1994, 6, 30): 0.6036515997609659, + datetime.date(1994, 7, 31): 0.6049572981712489, + datetime.date(1994, 8, 31): 0.6062658208071933, + datetime.date(1994, 9, 30): 0.6075771737775991, + datetime.date(1994, 10, 31): 0.60889136320448, + datetime.date(1994, 11, 30): 0.6102083952230912, + datetime.date(1994, 12, 31): 0.6115282759819588, + datetime.date(1995, 1, 31): 0.6129578252484459, + datetime.date(1995, 2, 28): 0.6143907163246016, + datetime.date(1995, 3, 31): 0.615826957022463, + datetime.date(1995, 4, 30): 0.6172665551723291, + datetime.date(1995, 5, 31): 0.6187095186228035, + datetime.date(1995, 6, 30): 0.6201558552408374, + datetime.date(1995, 7, 31): 0.621605572911772, + datetime.date(1995, 8, 31): 0.6230586795393821, + datetime.date(1995, 9, 30): 0.6245151830459186, + datetime.date(1995, 10, 31): 0.6259750913721521, + datetime.date(1995, 11, 30): 0.6274384124774164, + datetime.date(1995, 12, 31): 0.628905154339651, + datetime.date(1996, 1, 31): 0.6304442424786086, + datetime.date(1996, 2, 29): 0.6319870971510144, + datetime.date(1996, 3, 31): 0.6335337275745171, + datetime.date(1996, 4, 30): 0.6350841429893238, + datetime.date(1996, 5, 31): 0.6366383526582543, + datetime.date(1996, 6, 30): 0.6381963658667972, + datetime.date(1996, 7, 31): 0.6397581919231646, + datetime.date(1996, 8, 31): 0.6413238401583485, + datetime.date(1996, 9, 30): 0.6428933199261759, + datetime.date(1996, 10, 31): 0.6444666406033652, + datetime.date(1996, 11, 30): 0.6460438115895818, + datetime.date(1996, 12, 31): 0.6476248423074943, + datetime.date(1997, 1, 31): 0.6488865234377831, + datetime.date(1997, 2, 28): 0.6501506625331938, + datetime.date(1997, 3, 31): 0.6514172643822522, + datetime.date(1997, 4, 30): 0.652686333782813, + datetime.date(1997, 5, 31): 0.6539578755420776, + datetime.date(1997, 6, 30): 0.6552318944766129, + datetime.date(1997, 7, 31): 0.6565083954123692, + datetime.date(1997, 8, 31): 0.6577873831846984, + datetime.date(1997, 9, 30): 0.6590688626383728, + datetime.date(1997, 10, 31): 0.6603528386276029, + datetime.date(1997, 11, 30): 0.6616393160160559, + datetime.date(1997, 12, 31): 0.6629282996768745, + datetime.date(1998, 1, 31): 0.6637828142551581, + datetime.date(1998, 2, 28): 0.6646384303027331, + datetime.date(1998, 3, 31): 0.6654951492393933, + datetime.date(1998, 4, 30): 0.666352972486763, + datetime.date(1998, 5, 31): 0.6672119014682985, + datetime.date(1998, 6, 30): 0.6680719376092912, + datetime.date(1998, 7, 31): 0.6689330823368695, + datetime.date(1998, 8, 31): 0.6697953370800018, + datetime.date(1998, 9, 30): 0.6706587032694981, + datetime.date(1998, 10, 31): 0.6715231823380126, + datetime.date(1998, 11, 30): 0.6723887757200463, + datetime.date(1998, 12, 31): 0.6732554848519495, + datetime.date(1999, 1, 31): 0.6744859153551402, + datetime.date(1999, 2, 28): 0.6757185945726114, + datetime.date(1999, 3, 31): 0.6769535266140758, + datetime.date(1999, 4, 30): 0.678190715596757, + datetime.date(1999, 5, 31): 0.679430165645403, + datetime.date(1999, 6, 30): 0.6806718808923006, + datetime.date(1999, 7, 31): 0.6819158654772881, + datetime.date(1999, 8, 31): 0.6831621235477702, + datetime.date(1999, 9, 30): 0.6844106592587308, + datetime.date(1999, 10, 31): 0.6856614767727477, + datetime.date(1999, 11, 30): 0.6869145802600064, + datetime.date(1999, 12, 31): 0.6881699738983132, + datetime.date(2000, 1, 31): 0.6901009214975742, + datetime.date(2000, 2, 29): 0.6920372871748862, + datetime.date(2000, 3, 31): 0.693979086132925, + datetime.date(2000, 4, 30): 0.6959263336170236, + datetime.date(2000, 5, 31): 0.6978790449152918, + datetime.date(2000, 6, 30): 0.6998372353587372, + datetime.date(2000, 7, 31): 0.7018009203213842, + datetime.date(2000, 8, 31): 0.703770115220396, + datetime.date(2000, 9, 30): 0.7057448355161948, + datetime.date(2000, 10, 31): 0.7077250967125838, + datetime.date(2000, 11, 30): 0.709710914356868, + datetime.date(2000, 12, 31): 0.7117023040399773, + datetime.date(2001, 1, 31): 0.7133727879646097, + datetime.date(2001, 2, 28): 0.7150471927934272, + datetime.date(2001, 3, 31): 0.7167255277294455, + datetime.date(2001, 4, 30): 0.718407801997281, + datetime.date(2001, 5, 31): 0.7200940248432023, + datetime.date(2001, 6, 30): 0.72178420553518, + datetime.date(2001, 7, 31): 0.7234783533629385, + datetime.date(2001, 8, 31): 0.7251764776380069, + datetime.date(2001, 9, 30): 0.7268785876937695, + datetime.date(2001, 10, 31): 0.728584692885518, + datetime.date(2001, 11, 30): 0.7302948025905023, + datetime.date(2001, 12, 31): 0.7320089262079826, + datetime.date(2002, 1, 31): 0.7329823150776077, + datetime.date(2002, 2, 28): 0.7339569983110821, + datetime.date(2002, 3, 31): 0.7349329776295863, + datetime.date(2002, 4, 30): 0.7359102547565893, + datetime.date(2002, 5, 31): 0.736888831417852, + datetime.date(2002, 6, 30): 0.7378687093414299, + datetime.date(2002, 7, 31): 0.7388498902576767, + datetime.date(2002, 8, 31): 0.7398323758992469, + datetime.date(2002, 9, 30): 0.740816168001099, + datetime.date(2002, 10, 31): 0.7418012683004983, + datetime.date(2002, 11, 30): 0.7427876785370209, + datetime.date(2002, 12, 31): 0.7437754004525554, + datetime.date(2003, 1, 31): 0.7451996063818555, + datetime.date(2003, 2, 28): 0.7466265394281423, + datetime.date(2003, 3, 31): 0.7480562048133906, + datetime.date(2003, 4, 30): 0.7494886077695742, + datetime.date(2003, 5, 31): 0.7509237535386851, + datetime.date(2003, 6, 30): 0.7523616473727528, + datetime.date(2003, 7, 31): 0.7538022945338638, + datetime.date(2003, 8, 31): 0.7552457002941805, + datetime.date(2003, 9, 30): 0.7566918699359605, + datetime.date(2003, 10, 31): 0.7581408087515762, + datetime.date(2003, 11, 30): 0.759592522043534, + datetime.date(2003, 12, 31): 0.7610470151244938, + datetime.date(2004, 1, 31): 0.7627386957979464, + datetime.date(2004, 2, 29): 0.7644341367955894, + datetime.date(2004, 3, 31): 0.7661333464759965, + datetime.date(2004, 4, 30): 0.7678363332163217, + datetime.date(2004, 5, 31): 0.7695431054123394, + datetime.date(2004, 6, 30): 0.7712536714784868, + datetime.date(2004, 7, 31): 0.7729680398479051, + datetime.date(2004, 8, 31): 0.7746862189724804, + datetime.date(2004, 9, 30): 0.7764082173228865, + datetime.date(2004, 10, 31): 0.7781340433886258, + datetime.date(2004, 11, 30): 0.7798637056780716, + datetime.date(2004, 12, 31): 0.7815972127185097, + datetime.date(2005, 1, 31): 0.7837897231663872, + datetime.date(2005, 2, 28): 0.7859883839714893, + datetime.date(2005, 3, 31): 0.7881932123865933, + datetime.date(2005, 4, 30): 0.7904042257128732, + datetime.date(2005, 5, 31): 0.7926214413000353, + datetime.date(2005, 6, 30): 0.7948448765464555, + datetime.date(2005, 7, 31): 0.7970745488993143, + datetime.date(2005, 8, 31): 0.799310475854735, + datetime.date(2005, 9, 30): 0.8015526749579203, + datetime.date(2005, 10, 31): 0.8038011638032896, + datetime.date(2005, 11, 30): 0.8060559600346184, + datetime.date(2005, 12, 31): 0.8083170813451755, + datetime.date(2006, 1, 31): 0.8104872106293172, + datetime.date(2006, 2, 28): 0.8126631661680542, + datetime.date(2006, 3, 31): 0.814844963603424, + datetime.date(2006, 4, 30): 0.8170326186194583, + datetime.date(2006, 5, 31): 0.8192261469422968, + datetime.date(2006, 6, 30): 0.8214255643403001, + datetime.date(2006, 7, 31): 0.8236308866241628, + datetime.date(2006, 8, 31): 0.8258421296470271, + datetime.date(2006, 9, 30): 0.8280593093045969, + datetime.date(2006, 10, 31): 0.8302824415352524, + datetime.date(2006, 11, 30): 0.8325115423201642, + datetime.date(2006, 12, 31): 0.8347466276834082, + datetime.date(2007, 1, 31): 0.8367434807412649, + datetime.date(2007, 2, 28): 0.8387451106044448, + datetime.date(2007, 3, 31): 0.8407515286998624, + datetime.date(2007, 4, 30): 0.8427627464817672, + datetime.date(2007, 5, 31): 0.8447787754318093, + datetime.date(2007, 6, 30): 0.8467996270591048, + datetime.date(2007, 7, 31): 0.8488253129003013, + datetime.date(2007, 8, 31): 0.8508558445196442, + datetime.date(2007, 9, 30): 0.8528912335090427, + datetime.date(2007, 10, 31): 0.8549314914881352, + datetime.date(2007, 11, 30): 0.8569766301043567, + datetime.date(2007, 12, 31): 0.8590266610330046, + datetime.date(2008, 1, 31): 0.8617575783739837, + datetime.date(2008, 2, 29): 0.8644971775287661, + datetime.date(2008, 3, 31): 0.8672454860975616, + datetime.date(2008, 4, 30): 0.870002531768323, + datetime.date(2008, 5, 31): 0.8727683423170256, + datetime.date(2008, 6, 30): 0.8755429456079467, + datetime.date(2008, 7, 31): 0.8783263695939465, + datetime.date(2008, 8, 31): 0.8811186423167497, + datetime.date(2008, 9, 30): 0.8839197919072282, + datetime.date(2008, 10, 31): 0.886729846585684, + datetime.date(2008, 11, 30): 0.8895488346621339, + datetime.date(2008, 12, 31): 0.8923767845365945, + datetime.date(2009, 1, 31): 0.8921387430293194, + datetime.date(2009, 2, 28): 0.8919007650196163, + datetime.date(2009, 3, 31): 0.8916628504905473, + datetime.date(2009, 4, 30): 0.8914249994251789, + datetime.date(2009, 5, 31): 0.8911872118065823, + datetime.date(2009, 6, 30): 0.8909494876178329, + datetime.date(2009, 7, 31): 0.8907118268420108, + datetime.date(2009, 8, 31): 0.8904742294622007, + datetime.date(2009, 9, 30): 0.8902366954614916, + datetime.date(2009, 10, 31): 0.8899992248229773, + datetime.date(2009, 11, 30): 0.8897618175297558, + datetime.date(2009, 12, 31): 0.8895244735649297, + datetime.date(2010, 1, 31): 0.890737414311675, + datetime.date(2010, 2, 28): 0.8919520090042069, + datetime.date(2010, 3, 31): 0.8931682598978183, + datetime.date(2010, 4, 30): 0.8943861692508774, + datetime.date(2010, 5, 31): 0.8956057393248318, + datetime.date(2010, 6, 30): 0.8968269723842128, + datetime.date(2010, 7, 31): 0.8980498706966398, + datetime.date(2010, 8, 31): 0.8992744365328239, + datetime.date(2010, 9, 30): 0.9005006721665729, + datetime.date(2010, 10, 31): 0.9017285798747947, + datetime.date(2010, 11, 30): 0.9029581619375023, + datetime.date(2010, 12, 31): 0.9041894206378177, + datetime.date(2011, 1, 31): 0.9065575680795865, + datetime.date(2011, 2, 28): 0.9089319178968509, + datetime.date(2011, 3, 31): 0.9113124863341492, + datetime.date(2011, 4, 30): 0.9136992896785655, + datetime.date(2011, 5, 31): 0.9160923442598411, + datetime.date(2011, 6, 30): 0.9184916664504862, + datetime.date(2011, 7, 31): 0.9208972726658923, + datetime.date(2011, 8, 31): 0.9233091793644436, + datetime.date(2011, 9, 30): 0.9257274030476306, + datetime.date(2011, 10, 31): 0.9281519602601626, + datetime.date(2011, 11, 30): 0.9305828675900806, + datetime.date(2011, 12, 31): 0.9330201416688713, + datetime.date(2012, 1, 31): 0.9346344220173154, + datetime.date(2012, 2, 29): 0.9362514953398091, + datetime.date(2012, 3, 31): 0.9378713664686629, + datetime.date(2012, 4, 30): 0.939494040244548, + datetime.date(2012, 5, 31): 0.9411195215165111, + datetime.date(2012, 6, 30): 0.9427478151419884, + datetime.date(2012, 7, 31): 0.9443789259868198, + datetime.date(2012, 8, 31): 0.9460128589252648, + datetime.date(2012, 9, 30): 0.9476496188400153, + datetime.date(2012, 10, 31): 0.9492892106222117, + datetime.date(2012, 11, 30): 0.9509316391714567, + datetime.date(2012, 12, 31): 0.9525769093958298, + datetime.date(2013, 1, 31): 0.9537392913695202, + datetime.date(2013, 2, 28): 0.9549030917398139, + datetime.date(2013, 3, 31): 0.9560683122375094, + datetime.date(2013, 4, 30): 0.9572349545955173, + datetime.date(2013, 5, 31): 0.9584030205488626, + datetime.date(2013, 6, 30): 0.9595725118346874, + datetime.date(2013, 7, 31): 0.9607434301922536, + datetime.date(2013, 8, 31): 0.9619157773629458, + datetime.date(2013, 9, 30): 0.9630895550902728, + datetime.date(2013, 10, 31): 0.9642647651198718, + datetime.date(2013, 11, 30): 0.9654414091995093, + datetime.date(2013, 12, 31): 0.9666194890790851, + datetime.date(2014, 1, 31): 0.9679161285720607, + datetime.date(2014, 2, 28): 0.9692145073988628, + datetime.date(2014, 3, 31): 0.9705146278926629, + datetime.date(2014, 4, 30): 0.971816492389762, + datetime.date(2014, 5, 31): 0.9731201032295953, + datetime.date(2014, 6, 30): 0.9744254627547358, + datetime.date(2014, 7, 31): 0.9757325733108996, + datetime.date(2014, 8, 31): 0.9770414372469484, + datetime.date(2014, 9, 30): 0.9783520569148956, + datetime.date(2014, 10, 31): 0.979664434669909, + datetime.date(2014, 11, 30): 0.9809785728703159, + datetime.date(2014, 12, 31): 0.982294473877607, + datetime.date(2015, 1, 31): 0.9823795242074701, + datetime.date(2015, 2, 28): 0.9824645819012744, + datetime.date(2015, 3, 31): 0.9825496469596572, + datetime.date(2015, 4, 30): 0.9826347193832563, + datetime.date(2015, 5, 31): 0.9827197991727095, + datetime.date(2015, 6, 30): 0.9828048863286544, + datetime.date(2015, 7, 31): 0.9828899808517289, + datetime.date(2015, 8, 31): 0.9829750827425707, + datetime.date(2015, 9, 30): 0.9830601920018182, + datetime.date(2015, 10, 31): 0.9831453086301088, + datetime.date(2015, 11, 30): 0.983230432628081, + datetime.date(2015, 12, 31): 0.9833155639963727, + datetime.date(2016, 1, 31): 0.9845331544934913, + datetime.date(2016, 2, 29): 0.985752252672043, + datetime.date(2016, 3, 31): 0.9869728603989143, + datetime.date(2016, 4, 30): 0.9881949795433034, + datetime.date(2016, 5, 31): 0.9894186119767231, + datetime.date(2016, 6, 30): 0.9906437595730033, + datetime.date(2016, 7, 31): 0.9918704242082947, + datetime.date(2016, 8, 31): 0.9930986077610708, + datetime.date(2016, 9, 30): 0.994328312112131, + datetime.date(2016, 10, 31): 0.9955595391446039, + datetime.date(2016, 11, 30): 0.9967922907439498, + datetime.date(2016, 12, 31): 0.9980265687979636, + datetime.date(2017, 1, 31): 1.0, + datetime.date(2017, 2, 28): 1.0019773333333333, + datetime.date(2017, 3, 31): 1.0039585765137777, + datetime.date(2017, 4, 30): 1.0059437372724043, + datetime.date(2017, 5, 31): 1.0079328233555709, + datetime.date(2017, 6, 30): 1.0099258425249524, + datetime.date(2017, 7, 31): 1.0119228025575717, + datetime.date(2017, 8, 31): 1.0139237112458288, + datetime.date(2017, 9, 30): 1.0159285763975323, + datetime.date(2017, 10, 31): 1.017937405835929, + datetime.date(2017, 11, 30): 1.0199502073997353, + datetime.date(2017, 12, 31): 1.0219669889431668, + datetime.date(2018, 1, 31): 1.0241308337144226, + datetime.date(2018, 2, 28): 1.0262992600663405, + datetime.date(2018, 3, 31): 1.0284722776996542, + datetime.date(2018, 4, 30): 1.030649896335637, + datetime.date(2018, 5, 31): 1.032832125716145, + datetime.date(2018, 6, 30): 1.0350189756036612, + datetime.date(2018, 7, 31): 1.0372104557813393, + datetime.date(2018, 8, 31): 1.039406576053047, + datetime.date(2018, 9, 30): 1.0416073462434101, + datetime.date(2018, 10, 31): 1.043812776197856, + datetime.date(2018, 11, 30): 1.046022875782659, + datetime.date(2018, 12, 31): 1.0482376548849828, + datetime.date(2019, 1, 31): 1.0502734197639072, + datetime.date(2019, 2, 28): 1.0523131382678736, + datetime.date(2019, 3, 31): 1.0543568180751512, + datetime.date(2019, 4, 30): 1.0564044668789212, + datetime.date(2019, 5, 31): 1.0584560923873054, + datetime.date(2019, 6, 30): 1.0605117023233959, + datetime.date(2019, 7, 31): 1.0625713044252831, + datetime.date(2019, 8, 31): 1.0646349064460856, + datetime.date(2019, 9, 30): 1.0667025161539792, + datetime.date(2019, 10, 31): 1.0687741413322265, + datetime.date(2019, 11, 30): 1.0708497897792053, + datetime.date(2019, 12, 31): 1.072929469308439, + datetime.date(2020, 1, 31): 1.0749909244621372, + datetime.date(2020, 2, 29): 1.077056340358337, + datetime.date(2020, 3, 31): 1.0791257246069457, + datetime.date(2020, 4, 30): 1.0811990848324906, + datetime.date(2020, 5, 31): 1.083276428674149, + datetime.date(2020, 6, 30): 1.085357763785775, + datetime.date(2020, 7, 31): 1.0874430978359289, + datetime.date(2020, 8, 31): 1.0895324385079046, + datetime.date(2020, 9, 30): 1.091625793499758, + datetime.date(2020, 10, 31): 1.0937231705243355, + datetime.date(2020, 11, 30): 1.0958245773093032, + datetime.date(2020, 12, 31): 1.0979300215971735, + datetime.date(2021, 1, 31): 1.0997079911753143, + datetime.date(2021, 2, 28): 1.101488839967757, + datetime.date(2021, 3, 31): 1.1032725726370534, + datetime.date(2021, 4, 30): 1.1050591938533056, + datetime.date(2021, 5, 31): 1.1068487082941783, + datetime.date(2021, 6, 30): 1.1086411206449114, + datetime.date(2021, 7, 31): 1.1104364355983318, + datetime.date(2021, 8, 31): 1.1122346578548659, + datetime.date(2021, 9, 30): 1.1140357921225517, + datetime.date(2021, 10, 31): 1.1158398431170518, + datetime.date(2021, 11, 30): 1.1176468155616648, + datetime.date(2021, 12, 31): 1.1194567141873384, + datetime.date(2022, 1, 31): 1.1211576316449643, + datetime.date(2022, 2, 28): 1.122861133499254, + datetime.date(2022, 3, 31): 1.1245672236769746, + datetime.date(2022, 4, 30): 1.1262759061108591, + datetime.date(2022, 5, 31): 1.1279871847396161, + datetime.date(2022, 6, 30): 1.1297010635079388, + datetime.date(2022, 7, 31): 1.1314175463665137, + datetime.date(2022, 8, 31): 1.1331366372720302, + datetime.date(2022, 9, 30): 1.13485834018719, + datetime.date(2022, 10, 31): 1.1365826590807149, + datetime.date(2022, 11, 30): 1.1383095979273576, + datetime.date(2022, 12, 31): 1.14003916070791, + datetime.date(2023, 1, 31): 1.1417473247038867, + datetime.date(2023, 2, 28): 1.1434580481068888, + datetime.date(2023, 3, 31): 1.1451713347517734, + datetime.date(2023, 4, 30): 1.1468871884791425, + datetime.date(2023, 5, 31): 1.148605613135354, + datetime.date(2023, 6, 30): 1.1503266125725278, + datetime.date(2023, 7, 31): 1.1520501906485565, + datetime.date(2023, 8, 31): 1.1537763512271126, + datetime.date(2023, 9, 30): 1.1555050981776576, + datetime.date(2023, 10, 31): 1.157236435375451, + datetime.date(2023, 11, 30): 1.1589703667015585, + datetime.date(2023, 12, 31): 1.1607068960428615, + datetime.date(2024, 1, 31): 1.1624783051579952, + datetime.date(2024, 2, 29): 1.1642524177034816, + datetime.date(2024, 3, 31): 1.1660292378051522, + datetime.date(2024, 4, 30): 1.1678087695951351, + datetime.date(2024, 5, 31): 1.1695910172118646, + datetime.date(2024, 6, 30): 1.1713759848000913, + datetime.date(2024, 7, 31): 1.173163676510891, + datetime.date(2024, 8, 31): 1.1749540965016745, + datetime.date(2024, 9, 30): 1.1767472489361974, + datetime.date(2024, 10, 31): 1.1785431379845703, + datetime.date(2024, 11, 30): 1.1803417678232675, + datetime.date(2024, 12, 31): 1.1821431426351374, + datetime.date(2025, 1, 31): 1.1839691043554477, + datetime.date(2025, 2, 28): 1.1857978864924097, + datetime.date(2025, 3, 31): 1.1876294934024947, + datetime.date(2025, 4, 30): 1.1894639294489031, + datetime.date(2025, 5, 31): 1.1913011990015752, + datetime.date(2025, 6, 30): 1.1931413064372007, + datetime.date(2025, 7, 31): 1.19498425613923, + datetime.date(2025, 8, 31): 1.196830052497884, + datetime.date(2025, 9, 30): 1.198678699910165, + datetime.date(2025, 10, 31): 1.2005302027798668, + datetime.date(2025, 11, 30): 1.2023845655175858, + datetime.date(2025, 12, 31): 1.2042417925407303, + datetime.date(2026, 1, 31): 1.206277471119959, + datetime.date(2026, 2, 28): 1.2083165908580182, + datetime.date(2026, 3, 31): 1.2103591575719228, + datetime.date(2026, 4, 30): 1.212405177088522, + datetime.date(2026, 5, 31): 1.2144546552445143, + datetime.date(2026, 6, 30): 1.2165075978864652, + datetime.date(2026, 7, 31): 1.2185640108708227, + datetime.date(2026, 8, 31): 1.2206239000639352, + datetime.date(2026, 9, 30): 1.2226872713420676, + datetime.date(2026, 10, 31): 1.2247541305914178, + datetime.date(2026, 11, 30): 1.2268244837081344, + datetime.date(2026, 12, 31): 1.2288983365983328, + datetime.date(2027, 1, 31): 1.2310312626995608, + datetime.date(2027, 2, 28): 1.2331678907943693, + datetime.date(2027, 3, 31): 1.2353082273080898, + datetime.date(2027, 4, 30): 1.237452278677205, + datetime.date(2027, 5, 31): 1.2396000513493697, + datetime.date(2027, 6, 30): 1.2417515517834297, + datetime.date(2027, 7, 31): 1.24390678644944, + datetime.date(2027, 8, 31): 1.2460657618286863, + datetime.date(2027, 9, 30): 1.2482284844137033, + datetime.date(2027, 10, 31): 1.250394960708294, + datetime.date(2027, 11, 30): 1.25256519722755, + datetime.date(2027, 12, 31): 1.2547392004978706, + datetime.date(2028, 1, 31): 1.2568866509483156, + datetime.date(2028, 2, 29): 1.259037776699122, + datetime.date(2028, 3, 31): 1.261192584040462, + datetime.date(2028, 4, 30): 1.263351079273273, + datetime.date(2028, 5, 31): 1.2655132687092763, + datetime.date(2028, 6, 30): 1.2676791586709955, + datetime.date(2028, 7, 31): 1.2698487554917752, + datetime.date(2028, 8, 31): 1.2720220655157992, + datetime.date(2028, 9, 30): 1.2741990950981095, + datetime.date(2028, 10, 31): 1.2763798506046236, + datetime.date(2028, 11, 30): 1.2785643384121554, + datetime.date(2028, 12, 31): 1.280752564908432, + datetime.date(2029, 1, 31): 1.2828925556407371, + datetime.date(2029, 2, 28): 1.2850361220522637, + datetime.date(2029, 3, 31): 1.2871832701175623, + datetime.date(2029, 4, 30): 1.2893340058211653, + datetime.date(2029, 5, 31): 1.2914883351576054, + datetime.date(2029, 6, 30): 1.293646264131431, + datetime.date(2029, 7, 31): 1.2958077987572236, + datetime.date(2029, 8, 31): 1.2979729450596147, + datetime.date(2029, 9, 30): 1.3001417090733012, + datetime.date(2029, 10, 31): 1.3023140968430647, + datetime.date(2029, 11, 30): 1.3044901144237857, + datetime.date(2029, 12, 31): 1.3066697678804629, + datetime.date(2030, 1, 31): 1.3088176266711669, + datetime.date(2030, 2, 28): 1.3109690160382248, + datetime.date(2030, 3, 31): 1.3131239417850764, + datetime.date(2030, 4, 30): 1.3152824097247013, + datetime.date(2030, 5, 31): 1.3174444256796338, + datetime.date(2030, 6, 30): 1.3196099954819795, + datetime.date(2030, 7, 31): 1.3217791249734305, + datetime.date(2030, 8, 31): 1.323951820005281, + datetime.date(2030, 9, 30): 1.3261280864384442, + datetime.date(2030, 10, 31): 1.3283079301434657, + datetime.date(2030, 11, 30): 1.3304913570005426, + datetime.date(2030, 12, 31): 1.3326783728995366, + datetime.date(2031, 1, 31): 1.3348319928859904, + datetime.date(2031, 2, 28): 1.3369890931413078, + datetime.date(2031, 3, 31): 1.3391496792896336, + datetime.date(2031, 4, 30): 1.3413137569642015, + datetime.date(2031, 5, 31): 1.3434813318073493, + datetime.date(2031, 6, 30): 1.3456524094705313, + datetime.date(2031, 7, 31): 1.3478269956143363, + datetime.date(2031, 8, 31): 1.3500050959084995, + datetime.date(2031, 9, 30): 1.3521867160319188, + datetime.date(2031, 10, 31): 1.3543718616726692, + datetime.date(2031, 11, 30): 1.356560538528018, + datetime.date(2031, 12, 31): 1.3587527523044391, + datetime.date(2032, 1, 31): 1.3609480502028264, + datetime.date(2032, 2, 29): 1.3631468949811405, + datetime.date(2032, 3, 31): 1.3653492923699735, + datetime.date(2032, 4, 30): 1.367555248109177, + datetime.date(2032, 5, 31): 1.3697647679478755, + datetime.date(2032, 6, 30): 1.371977857644482, + datetime.date(2032, 7, 31): 1.3741945229667143, + datetime.date(2032, 8, 31): 1.3764147696916078, + datetime.date(2032, 9, 30): 1.3786386036055325, + datetime.date(2032, 10, 31): 1.380866030504207, + datetime.date(2032, 11, 30): 1.3830970561927136, + datetime.date(2032, 12, 31): 1.385331686485514, + datetime.date(2033, 1, 31): 1.3875832621350055, + datetime.date(2033, 2, 28): 1.3898384972639959, + datetime.date(2033, 3, 31): 1.3920973978202262, + datetime.date(2033, 4, 30): 1.394359969761105, + datetime.date(2033, 5, 31): 1.3966262190537237, + datetime.date(2033, 6, 30): 1.3988961516748712, + datetime.date(2033, 7, 31): 1.4011697736110513, + datetime.date(2033, 8, 31): 1.403447090858497, + datetime.date(2033, 9, 30): 1.4057281094231873, + datetime.date(2033, 10, 31): 1.4080128353208623, + datetime.date(2033, 11, 30): 1.41030127457704, + datetime.date(2033, 12, 31): 1.4125934332270311, + datetime.date(2034, 1, 31): 1.4149072514828935, + datetime.date(2034, 2, 28): 1.4172248597570265, + datetime.date(2034, 3, 31): 1.4195462642574541, + datetime.date(2034, 4, 30): 1.4218714712023686, + datetime.date(2034, 5, 31): 1.4242004868201474, + datetime.date(2034, 6, 30): 1.4265333173493708, + datetime.date(2034, 7, 31): 1.428869969038837, + datetime.date(2034, 8, 31): 1.43121044814758, + datetime.date(2034, 9, 30): 1.4335547609448862, + datetime.date(2034, 10, 31): 1.4359029137103108, + datetime.date(2034, 11, 30): 1.4382549127336948, + datetime.date(2034, 12, 31): 1.4406107643151824, + datetime.date(2035, 1, 31): 1.4429865874594414, + datetime.date(2035, 2, 28): 1.445366328758245, + datetime.date(2035, 3, 31): 1.4477499946733259, + datetime.date(2035, 4, 30): 1.4501375916770738, + datetime.date(2035, 5, 31): 1.4525291262525526, + datetime.date(2035, 6, 30): 1.4549246048935176, + datetime.date(2035, 7, 31): 1.457324034104434, + datetime.date(2035, 8, 31): 1.4597274204004933, + datetime.date(2035, 9, 30): 1.462134770307632, + datetime.date(2035, 10, 31): 1.4645460903625491, + datetime.date(2035, 11, 30): 1.4669613871127245, + datetime.date(2035, 12, 31): 1.4693806671164344, + datetime.date(2036, 1, 31): 1.4718193004762303, + datetime.date(2036, 2, 29): 1.4742619810736115, + datetime.date(2036, 3, 31): 1.4767087156255096, + datetime.date(2036, 4, 30): 1.479159510860003, + datetime.date(2036, 5, 31): 1.4816143735163363, + datetime.date(2036, 6, 30): 1.4840733103449395, + datetime.date(2036, 7, 31): 1.4865363281074446, + datetime.date(2036, 8, 31): 1.4890034335767068, + datetime.date(2036, 9, 30): 1.4914746335368212, + datetime.date(2036, 10, 31): 1.4939499347831413, + datetime.date(2036, 11, 30): 1.4964293441222993, + datetime.date(2036, 12, 31): 1.4989128683722237, + datetime.date(2037, 1, 31): 1.5013958992132328, + datetime.date(2037, 2, 28): 1.503883043330128, + datetime.date(2037, 3, 31): 1.5063743075367757, + datetime.date(2037, 4, 30): 1.5088696986583285, + datetime.date(2037, 5, 31): 1.5113692235312461, + datetime.date(2037, 6, 30): 1.5138728890033128, + datetime.date(2037, 7, 31): 1.5163807019336568, + datetime.date(2037, 8, 31): 1.5188926691927684, + datetime.date(2037, 9, 30): 1.52140879766252, + datetime.date(2037, 10, 31): 1.5239290942361834, + datetime.date(2037, 11, 30): 1.52645356581845, + datetime.date(2037, 12, 31): 1.528982219325449, + datetime.date(2038, 1, 31): 1.531502969527323, + datetime.date(2038, 2, 28): 1.534027875553575, + datetime.date(2038, 3, 31): 1.5365569442556875, + datetime.date(2038, 4, 30): 1.5390901824964387, + datetime.date(2038, 5, 31): 1.5416275971499214, + datetime.date(2038, 6, 30): 1.5441691951015606, + datetime.date(2038, 7, 31): 1.546714983248134, + datetime.date(2038, 8, 31): 1.549264968497789, + datetime.date(2038, 9, 30): 1.5518191577700624, + datetime.date(2038, 10, 31): 1.5543775579958983, + datetime.date(2038, 11, 30): 1.5569401761176678, + datetime.date(2038, 12, 31): 1.559507019089188, + datetime.date(2039, 1, 31): 1.5620682961641141, + datetime.date(2039, 2, 28): 1.5646337797864776, + datetime.date(2039, 3, 31): 1.5672034768649572, + datetime.date(2039, 4, 30): 1.5697773943195792, + datetime.date(2039, 5, 31): 1.5723555390817336, + datetime.date(2039, 6, 30): 1.5749379180941956, + datetime.date(2039, 7, 31): 1.5775245383111425, + datetime.date(2039, 8, 31): 1.5801154066981726, + datetime.date(2039, 9, 30): 1.5827105302323248, + datetime.date(2039, 10, 31): 1.5853099159020962, + datetime.date(2039, 11, 30): 1.5879135707074619, + datetime.date(2039, 12, 31): 1.5905215016598937, + datetime.date(2040, 1, 31): 1.5931291792827287, + datetime.date(2040, 2, 29): 1.595741132221916, + datetime.date(2040, 3, 31): 1.5983573674868838, + datetime.date(2040, 4, 30): 1.6009778920985531, + datetime.date(2040, 5, 31): 1.6036027130893553, + datetime.date(2040, 6, 30): 1.6062318375032512, + datetime.date(2040, 7, 31): 1.608865272395751, + datetime.date(2040, 8, 31): 1.611503024833932, + datetime.date(2040, 9, 30): 1.6141451018964579, + datetime.date(2040, 10, 31): 1.6167915106735988, + datetime.date(2040, 11, 30): 1.6194422582672487, + datetime.date(2040, 12, 31): 1.622097351790945, + datetime.date(2041, 1, 31): 1.6247561082481263, + datetime.date(2041, 2, 28): 1.627419222634806, + datetime.date(2041, 3, 31): 1.6300867020940037, + datetime.date(2041, 4, 30): 1.6327585537804472, + datetime.date(2041, 5, 31): 1.635434784860591, + datetime.date(2041, 6, 30): 1.6381154025126365, + datetime.date(2041, 7, 31): 1.6408004139265508, + datetime.date(2041, 8, 31): 1.6434898263040858, + datetime.date(2041, 9, 30): 1.6461836468587976, + datetime.date(2041, 10, 31): 1.6488818828160658, + datetime.date(2041, 11, 30): 1.6515845414131136, + datetime.date(2041, 12, 31): 1.6542916298990267, + datetime.date(2042, 1, 31): 1.65700697311415, + datetime.date(2042, 2, 28): 1.6597267732754626, + datetime.date(2042, 3, 31): 1.6624510376985664, + datetime.date(2042, 4, 30): 1.6651797737110705, + datetime.date(2042, 5, 31): 1.6679129886526118, + datetime.date(2042, 6, 30): 1.670650689874875, + datetime.date(2042, 7, 31): 1.6733928847416106, + datetime.date(2042, 8, 31): 1.676139580628657, + datetime.date(2042, 9, 30): 1.6788907849239585, + datetime.date(2042, 10, 31): 1.6816465050275864, + datetime.date(2042, 11, 30): 1.6844067483517586, + datetime.date(2042, 12, 31): 1.6871715223208588, + datetime.date(2043, 1, 31): 1.6899451741068114, + datetime.date(2043, 2, 28): 1.6927233856806267, + datetime.date(2043, 3, 31): 1.6955061645384386, + datetime.date(2043, 4, 30): 1.6982935181887044, + datetime.date(2043, 5, 31): 1.7010854541522251, + datetime.date(2043, 6, 30): 1.703881979962166, + datetime.date(2043, 7, 31): 1.706683103164076, + datetime.date(2043, 8, 31): 1.7094888313159085, + datetime.date(2043, 9, 30): 1.712299171988043, + datetime.date(2043, 10, 31): 1.7151141327633035, + datetime.date(2043, 11, 30): 1.71793372123698, + datetime.date(2043, 12, 31): 1.7207579450168495, + datetime.date(2044, 1, 31): 1.7235900240944928, + datetime.date(2044, 2, 29): 1.7264267642994757, + datetime.date(2044, 3, 31): 1.7292681733032322, + datetime.date(2044, 4, 30): 1.732114258789822, + datetime.date(2044, 5, 31): 1.734965028455952, + datetime.date(2044, 6, 30): 1.7378204900109966, + datetime.date(2044, 7, 31): 1.7406806511770179, + datetime.date(2044, 8, 31): 1.743545519688788, + datetime.date(2044, 9, 30): 1.7464151032938084, + datetime.date(2044, 10, 31): 1.7492894097523326, + datetime.date(2044, 11, 30): 1.7521684468373855, + datetime.date(2044, 12, 31): 1.7550522223347849, + datetime.date(2045, 1, 31): 1.7579421198760468, + datetime.date(2045, 2, 28): 1.7608367759696144, + datetime.date(2045, 3, 31): 1.7637361984509972, + datetime.date(2045, 4, 30): 1.7666403951686067, + datetime.date(2045, 5, 31): 1.7695493739837784, + datetime.date(2045, 6, 30): 1.7724631427707918, + datetime.date(2045, 7, 31): 1.775381709416892, + datetime.date(2045, 8, 31): 1.7783050818223123, + datetime.date(2045, 9, 30): 1.7812332679002942, + datetime.date(2045, 10, 31): 1.7841662755771088, + datetime.date(2045, 11, 30): 1.7871041127920801, + datetime.date(2045, 12, 31): 1.7900467874976032, + datetime.date(2046, 1, 31): 1.7929938491512625, + datetime.date(2046, 2, 28): 1.7959457627297155, + datetime.date(2046, 3, 31): 1.798902536220978, + datetime.date(2046, 4, 30): 1.8018641776262165, + datetime.date(2046, 5, 31): 1.8048306949597708, + datetime.date(2046, 6, 30): 1.8078020962491743, + datetime.date(2046, 7, 31): 1.8107783895351774, + datetime.date(2046, 8, 31): 1.8137595828717683, + datetime.date(2046, 9, 30): 1.8167456843261949, + datetime.date(2046, 10, 31): 1.8197367019789865, + datetime.date(2046, 11, 30): 1.8227326439239762, + datetime.date(2046, 12, 31): 1.8257335182683228, + datetime.date(2047, 1, 31): 1.8287369097704886, + datetime.date(2047, 2, 28): 1.8317452419501548, + datetime.date(2047, 3, 31): 1.834758522934898, + datetime.date(2047, 4, 30): 1.8377767608656645, + datetime.date(2047, 5, 31): 1.8407999638967933, + datetime.date(2047, 6, 30): 1.843828140196037, + datetime.date(2047, 7, 31): 1.8468612979445849, + datetime.date(2047, 8, 31): 1.8498994453370843, + datetime.date(2047, 9, 30): 1.8529425905816634, + datetime.date(2047, 10, 31): 1.8559907418999526, + datetime.date(2047, 11, 30): 1.8590439075271072, + datetime.date(2047, 12, 31): 1.86210209571183, + datetime.date(2048, 1, 31): 1.8651631692582504, + datetime.date(2048, 2, 29): 1.8682292748441485, + datetime.date(2048, 3, 31): 1.871300420741596, + datetime.date(2048, 4, 30): 1.8743766152362635, + datetime.date(2048, 5, 31): 1.8774578666274424, + datetime.date(2048, 6, 30): 1.8805441832280665, + datetime.date(2048, 7, 31): 1.8836355733647354, + datetime.date(2048, 8, 31): 1.8867320453777372, + datetime.date(2048, 9, 30): 1.8898336076210693, + datetime.date(2048, 10, 31): 1.8929402684624632, + datetime.date(2048, 11, 30): 1.8960520362834052, + datetime.date(2048, 12, 31): 1.8991689194791601, + datetime.date(2049, 1, 31): 1.902290021459603, + datetime.date(2049, 2, 28): 1.905416252671823, + datetime.date(2049, 3, 31): 1.908547621545221, + datetime.date(2049, 4, 30): 1.9116841365230504, + datetime.date(2049, 5, 31): 1.9148258060624401, + datetime.date(2049, 6, 30): 1.9179726386344174, + datetime.date(2049, 7, 31): 1.9211246427239317, + datetime.date(2049, 8, 31): 1.924281826829876, + datetime.date(2049, 9, 30): 1.9274441994651104, + datetime.date(2049, 10, 31): 1.9306117691564852, + datetime.date(2049, 11, 30): 1.933784544444864, + datetime.date(2049, 12, 31): 1.936962533885146, + datetime.date(2050, 1, 31): 1.9401459476468907, + datetime.date(2050, 2, 28): 1.9433345933751818, + datetime.date(2050, 3, 31): 1.9465284796687987, + datetime.date(2050, 4, 30): 1.9497276151406535, + datetime.date(2050, 5, 31): 1.9529320084178137, + datetime.date(2050, 6, 30): 1.9561416681415251, + datetime.date(2050, 7, 31): 1.9593566029672358, + datetime.date(2050, 8, 31): 1.962576821564619, + datetime.date(2050, 9, 30): 1.9658023326175968, + datetime.date(2050, 10, 31): 1.969033144824363, + datetime.date(2050, 11, 30): 1.9722692668974073, + datetime.date(2050, 12, 31): 1.9755107075635383, + datetime.date(2051, 1, 31): 1.978758265194836, + datetime.date(2051, 2, 28): 1.9820111615117346, + datetime.date(2051, 3, 31): 1.9852694052905413, + datetime.date(2051, 4, 30): 1.9885330053219907, + datetime.date(2051, 5, 31): 1.991801970411269, + datetime.date(2051, 6, 30): 1.9950763093780373, + datetime.date(2051, 7, 31): 1.9983560310564548, + datetime.date(2051, 8, 31): 2.0016411442952036, + datetime.date(2051, 9, 30): 2.0049316579575125, + datetime.date(2051, 10, 31): 2.0082275809211803, + datetime.date(2051, 11, 30): 2.0115289220786003, + datetime.date(2051, 12, 31): 2.014835690336784, + datetime.date(2052, 1, 31): 2.018148866223083, + datetime.date(2052, 2, 29): 2.021467490263049, + datetime.date(2052, 3, 31): 2.0247915714155713, + datetime.date(2052, 4, 30): 2.0281211186542722, + datetime.date(2052, 5, 31): 2.031456140967529, + datetime.date(2052, 6, 30): 2.034796647358501, + datetime.date(2052, 7, 31): 2.038142646845151, + datetime.date(2052, 8, 31): 2.0414941484602713, + datetime.date(2052, 9, 30): 2.0448511612515077, + datetime.date(2052, 10, 31): 2.0482136942813836, + datetime.date(2052, 11, 30): 2.0515817566273244, + datetime.date(2052, 12, 31): 2.0549553573816834, + datetime.date(2053, 1, 31): 2.058335121481051, + datetime.date(2053, 2, 28): 2.061720444243932, + datetime.date(2053, 3, 31): 2.0651113348126042, + datetime.date(2053, 4, 30): 2.06850780234438, + datetime.date(2053, 5, 31): 2.0719098560116347, + datetime.date(2053, 6, 30): 2.075317505001828, + datetime.date(2053, 7, 31): 2.0787307585175303, + datetime.date(2053, 8, 31): 2.082149625776447, + datetime.date(2053, 9, 30): 2.085574116011445, + datetime.date(2053, 10, 31): 2.089004238470576, + datetime.date(2053, 11, 30): 2.0924400024171, + datetime.date(2053, 12, 31): 2.0958814171295153, + datetime.date(2054, 1, 31): 2.0993286437032728, + datetime.date(2054, 2, 28): 2.102781540145065, + datetime.date(2054, 3, 31): 2.106240115780476, + datetime.date(2054, 4, 30): 2.1097043799504296, + datetime.date(2054, 5, 31): 2.113174342011212, + datetime.date(2054, 6, 30): 2.1166500113344986, + datetime.date(2054, 7, 31): 2.1201313973073797, + datetime.date(2054, 8, 31): 2.1236185093323843, + datetime.date(2054, 9, 30): 2.127111356827507, + datetime.date(2054, 10, 31): 2.1306099492262316, + datetime.date(2054, 11, 30): 2.1341142959775588, + datetime.date(2054, 12, 31): 2.137624406546031, + datetime.date(2055, 1, 31): 2.1411400616601206, + datetime.date(2055, 2, 28): 2.1446614988147052, + datetime.date(2055, 3, 31): 2.1481887275192477, + datetime.date(2055, 4, 30): 2.1517217572988505, + datetime.date(2055, 5, 31): 2.1552605976942827, + datetime.date(2055, 6, 30): 2.158805258262003, + datetime.date(2055, 7, 31): 2.162355748574188, + datetime.date(2055, 8, 31): 2.1659120782187586, + datetime.date(2055, 9, 30): 2.169474256799402, + datetime.date(2055, 10, 31): 2.1730422939356013, + datetime.date(2055, 11, 30): 2.176616199262661, + datetime.date(2055, 12, 31): 2.1801959824317323, + datetime.date(2056, 1, 31): 2.1837812255603417, + datetime.date(2056, 2, 29): 2.1873723644746486, + datetime.date(2056, 3, 31): 2.190969408870031, + datetime.date(2056, 4, 30): 2.1945723684578127, + datetime.date(2056, 5, 31): 2.1981812529652838, + datetime.date(2056, 6, 30): 2.2017960721357333, + datetime.date(2056, 7, 31): 2.2054168357284714, + datetime.date(2056, 8, 31): 2.209043553518858, + datetime.date(2056, 9, 30): 2.2126762352983276, + datetime.date(2056, 10, 31): 2.2163148908744152, + datetime.date(2056, 11, 30): 2.2199595300707866, + datetime.date(2056, 12, 31): 2.2236101627272595, + datetime.date(2057, 1, 31): 2.227266375986442, + datetime.date(2057, 2, 28): 2.2309286010437446, + datetime.date(2057, 3, 31): 2.234596847784181, + datetime.date(2057, 4, 30): 2.2382711261090176, + datetime.date(2057, 5, 31): 2.241951445935802, + datetime.date(2057, 6, 30): 2.2456378171983884, + datetime.date(2057, 7, 31): 2.249330249846966, + datetime.date(2057, 8, 31): 2.253028753848082, + datetime.date(2057, 9, 30): 2.256733339184675, + datetime.date(2057, 10, 31): 2.2604440158560957, + datetime.date(2057, 11, 30): 2.264160793878137, + datetime.date(2057, 12, 31): 2.2678836832830607, + datetime.date(2058, 1, 31): 2.2716125209011375, + datetime.date(2058, 2, 28): 2.2753474894465127, + datetime.date(2058, 3, 31): 2.2790885989996106, + datetime.date(2058, 4, 30): 2.282835859657431, + datetime.date(2058, 5, 31): 2.2865892815335758, + datetime.date(2058, 6, 30): 2.2903488747582736, + datetime.date(2058, 7, 31): 2.294114649478411, + datetime.date(2058, 8, 31): 2.2978866158575566, + datetime.date(2058, 9, 30): 2.301664784075991, + datetime.date(2058, 10, 31): 2.305449164330732, + datetime.date(2058, 11, 30): 2.309239766835564, + datetime.date(2058, 12, 31): 2.313036601821065, + datetime.date(2059, 1, 31): 2.316839751701828, + datetime.date(2059, 2, 28): 2.3206491548122226, + datetime.date(2059, 3, 31): 2.3244648214339563, + datetime.date(2059, 4, 30): 2.3282867618656446, + datetime.date(2059, 5, 31): 2.332114986422835, + datetime.date(2059, 6, 30): 2.335949505438037, + datetime.date(2059, 7, 31): 2.339790329260748, + datetime.date(2059, 8, 31): 2.343637468257482, + datetime.date(2059, 9, 30): 2.347490932811799, + datetime.date(2059, 10, 31): 2.3513507333243315, + datetime.date(2059, 11, 30): 2.3552168802128133, + datetime.date(2059, 12, 31): 2.359089383912107, + datetime.date(2060, 1, 31): 2.3629684482549114, + datetime.date(2060, 2, 29): 2.366853890965691, + datetime.date(2060, 3, 31): 2.3707457225324324, + datetime.date(2060, 4, 30): 2.3746439534603687, + datetime.date(2060, 5, 31): 2.3785485942720066, + datetime.date(2060, 6, 30): 2.382459655507155, + datetime.date(2060, 7, 31): 2.386377147722954, + datetime.date(2060, 8, 31): 2.390301081493901, + datetime.date(2060, 9, 30): 2.394231467411884, + datetime.date(2060, 10, 31): 2.3981683160862044, + datetime.date(2060, 11, 30): 2.402111638143611, + datetime.date(2060, 12, 31): 2.4060614442283246, + datetime.date(2061, 1, 31): 2.4100179369138024, + datetime.date(2061, 2, 28): 2.4139809355987034, + datetime.date(2061, 3, 31): 2.4179504509814, + datetime.date(2061, 4, 30): 2.4219264937778564, + datetime.date(2061, 5, 31): 2.4259090747216563, + datetime.date(2061, 6, 30): 2.4298982045640356, + datetime.date(2061, 7, 31): 2.433893894073908, + datetime.date(2061, 8, 31): 2.437896154037897, + datetime.date(2061, 9, 30): 2.441904995260361, + datetime.date(2061, 10, 31): 2.445920428563427, + datetime.date(2061, 11, 30): 2.4499424647870174, + datetime.date(2061, 12, 31): 2.4539711147888794, + datetime.date(2062, 1, 31): 2.458006506663394, + datetime.date(2062, 2, 28): 2.4620485344707776, + datetime.date(2062, 3, 31): 2.46609720912338, + datetime.date(2062, 4, 30): 2.470152541551494, + datetime.date(2062, 5, 31): 2.4742145427033884, + datetime.date(2062, 6, 30): 2.4782832235453345, + datetime.date(2062, 7, 31): 2.4823585950616374, + datetime.date(2062, 8, 31): 2.4864406682546645, + datetime.date(2062, 9, 30): 2.4905294541448764, + datetime.date(2062, 10, 31): 2.494624963770857, + datetime.date(2062, 11, 30): 2.49872720818934, + datetime.date(2062, 12, 31): 2.5028361984752436, + datetime.date(2063, 1, 31): 2.506951956536693, + datetime.date(2063, 2, 28): 2.511074482705632, + datetime.date(2063, 3, 31): 2.515203788111792, + datetime.date(2063, 4, 30): 2.5193398839032044, + datetime.date(2063, 5, 31): 2.5234827812462357, + datetime.date(2063, 6, 30): 2.527632491325613, + datetime.date(2063, 7, 31): 2.531789025344456, + datetime.date(2063, 8, 31): 2.5359523945243083, + datetime.date(2063, 9, 30): 2.5401226101051657, + datetime.date(2063, 10, 31): 2.544299683345508, + datetime.date(2063, 11, 30): 2.5484836255223278, + datetime.date(2063, 12, 31): 2.552674447931164, + datetime.date(2064, 1, 31): 2.5568720975209347, + datetime.date(2064, 2, 29): 2.5610766497778648, + datetime.date(2064, 3, 31): 2.565288116052785, + datetime.date(2064, 4, 30): 2.569506507715193, + datetime.date(2064, 5, 31): 2.5737318361532813, + datetime.date(2064, 6, 30): 2.5779641127739708, + datetime.date(2064, 7, 31): 2.582203349002939, + datetime.date(2064, 8, 31): 2.5864495562846517, + datetime.date(2064, 9, 30): 2.5907027460823957, + datetime.date(2064, 10, 31): 2.594962929878306, + datetime.date(2064, 11, 30): 2.5992301191734017, + datetime.date(2064, 12, 31): 2.6035043254876116, + datetime.date(2065, 1, 31): 2.6077854692914553, + datetime.date(2065, 2, 28): 2.61207365291163, + datetime.date(2065, 3, 31): 2.6163688879242515, + datetime.date(2065, 4, 30): 2.6206711859244707, + datetime.date(2065, 5, 31): 2.624980558526504, + datetime.date(2065, 6, 30): 2.629297017363668, + datetime.date(2065, 7, 31): 2.633620574088408, + datetime.date(2065, 8, 31): 2.6379512403723298, + datetime.date(2065, 9, 30): 2.6422890279062323, + datetime.date(2065, 10, 31): 2.646633948400139, + datetime.date(2065, 11, 30): 2.6509860135833274, + datetime.date(2065, 12, 31): 2.6553452352043645, + datetime.date(2066, 1, 31): 2.6597115512766614, + datetime.date(2066, 2, 28): 2.6640850470993684, + datetime.date(2066, 3, 31): 2.6684657344785068, + datetime.date(2066, 4, 30): 2.67285362523951, + datetime.date(2066, 5, 31): 2.6772487312272557, + datetime.date(2066, 6, 30): 2.681651064306101, + datetime.date(2066, 7, 31): 2.6860606363599095, + datetime.date(2066, 8, 31): 2.690477459292088, + datetime.date(2066, 9, 30): 2.694901545025616, + datetime.date(2066, 10, 31): 2.6993329055030784, + datetime.date(2066, 11, 30): 2.7037715526866983, + datetime.date(2066, 12, 31): 2.708217498558368, + datetime.date(2067, 1, 31): 2.712670725484101, + datetime.date(2067, 2, 28): 2.717131275023347, + datetime.date(2067, 3, 31): 2.7215991592169635, + datetime.date(2067, 4, 30): 2.7260743901256066, + datetime.date(2067, 5, 31): 2.7305569798297644, + datetime.date(2067, 6, 30): 2.7350469404297892, + datetime.date(2067, 7, 31): 2.739544284045931, + datetime.date(2067, 8, 31): 2.744049022818369, + datetime.date(2067, 9, 30): 2.748561168907245, + datetime.date(2067, 10, 31): 2.753080734492696, + datetime.date(2067, 11, 30): 2.7576077317748884, + datetime.date(2067, 12, 31): 2.762142172974048, + datetime.date(2068, 1, 31): 2.766684089591215, + datetime.date(2068, 2, 29): 2.771233474689461, + datetime.date(2068, 3, 31): 2.7757903405495514, + datetime.date(2068, 4, 30): 2.7803546994724444, + datetime.date(2068, 5, 31): 2.784926563779326, + datetime.date(2068, 6, 30): 2.7895059458116416, + datetime.date(2068, 7, 31): 2.794092857931131, + datetime.date(2068, 8, 31): 2.798687312519861, + datetime.date(2068, 9, 30): 2.803289321980258, + datetime.date(2068, 10, 31): 2.8078988987351434, + datetime.date(2068, 11, 30): 2.8125160552277646, + datetime.date(2068, 12, 31): 2.8171408039218306, + datetime.date(2069, 1, 31): 2.8217732004272142, + datetime.date(2069, 2, 28): 2.826413214264807, + datetime.date(2069, 3, 31): 2.8310608579602525, + datetime.date(2069, 4, 30): 2.835716144059792, + datetime.date(2069, 5, 31): 2.840379085130297, + datetime.date(2069, 6, 30): 2.845049693759303, + datetime.date(2069, 7, 31): 2.8497279825550446, + datetime.date(2069, 8, 31): 2.8544139641464876, + datetime.date(2069, 9, 30): 2.8591076511833657, + datetime.date(2069, 10, 31): 2.863809056336214, + datetime.date(2069, 11, 30): 2.868518192296401, + datetime.date(2069, 12, 31): 2.8732350717761643, + datetime.date(2070, 1, 31): 2.8779597469269094, + datetime.date(2070, 2, 28): 2.8826921912140895, + datetime.date(2070, 3, 31): 2.887432417413075, + datetime.date(2070, 4, 30): 2.8921804383202456, + datetime.date(2070, 5, 31): 2.8969362667530225, + datetime.date(2070, 6, 30): 2.9016999155499033, + datetime.date(2070, 7, 31): 2.9064713975704968, + datetime.date(2070, 8, 31): 2.911250725695559, + datetime.date(2070, 9, 30): 2.9160379128270253, + datetime.date(2070, 10, 31): 2.920832971888047, + datetime.date(2070, 11, 30): 2.9256359158230265, + datetime.date(2070, 12, 31): 2.9304467575976516} + + + + + + + diff --git a/bpfin/utilbills/bill_lib.py b/bpfin/utilbills/bill_lib.py index d872fbee0ed63811eee2b0ee9164680f1508f4ce..272eb160d87fe919ebb665dca5b081aa33843816 100644 --- a/bpfin/utilbills/bill_lib.py +++ b/bpfin/utilbills/bill_lib.py @@ -3,7 +3,6 @@ import datetime import calendar - def add_list(obj_list, number): """Add a number to each value in a list. @@ -162,6 +161,32 @@ def form_inflation_coeffdict(inflationyears, inflationhist, present_date): return new_dict +def form_inflated_item(base_list, target_terms, inflation_coeff_dict, present_date): + """ Form inflated items for designated date terms, based on a 12 month list (result of rough month_normalization) + present time is the last month of the 12 month list, aka end of last month on raw bill + + Args: + base_list (dictionary of float values): {datetime: dollar values, can be monthly charge or price} for 12 month + target_terms (list of datetime): end of months, for the pro-forma years, usually [current yr -5, current yr+20] + inflation_coeff_dict (dictionary): {month: float value} monthly inflation coefficient (NOT inflation rate) + # monthly inflation coefficient is the multiplier to be timed on a present value, to get inflated value + present_date (datetime): the present date, to determine present value. usually the end of energy bill + Return: + dictionary: {datetime: inflated/deflated values} for the month in target_terms + """ + pre_year_date = datetime.date( + present_date.year - 1, + present_date.month + 1, + cal_last_day(present_date.year - 1, present_date.month + 1)) + base_terms = form_date_calendar(pre_year_date, present_date)[1] + for term in base_terms: + base_list[term.month - 1] = base_list[term.month-1] / inflation_coeff_dict[term] + new_dict = dict(zip([], [])) + for term in target_terms: + new_dict[term] = base_list[term.month - 1] * inflation_coeff_dict[term] + return [new_dict[term] for term in sorted(new_dict)] + + def occupancy_final_list(occupancy_rate_list): """Return list of occupancy values. diff --git a/bpfin/utilbills/bill_month_normalize_rough.py b/bpfin/utilbills/bill_month_normalize_rough.py index ccf9d9b0fc10eaf6e611136b12d95ed2ec6a9c9f..2951dedf3de545477591f9eda4ad60793bfd3036 100644 --- a/bpfin/utilbills/bill_month_normalize_rough.py +++ b/bpfin/utilbills/bill_month_normalize_rough.py @@ -1,5 +1,4 @@ import datetime -# import sys import bpfin.lib.other as lib @@ -12,7 +11,7 @@ def bill_month_normalize_rough(raw_bill): Args: raw_bill (dictionary): dictionary of lists. Elements are - 'date_from: list of datetime, + 'date_from': list of datetime, 'date_to', list of datetime, 'usage', list of float values, 'charge', list of float, @@ -29,6 +28,7 @@ def bill_month_normalize_rough(raw_bill): usage = raw_bill['usage'] charge = raw_bill['charge'] # utility_type = raw_bill['utility_type'] + # !!!! we will need to update oil calculation! don't forget!!!!! if bill_start != []: month_matrix = lib.form_month_matrix(bill_start, bill_end) diff --git a/bpfin/utilbills/bill_prior_proj_rough.py b/bpfin/utilbills/bill_prior_proj_rough.py new file mode 100644 index 0000000000000000000000000000000000000000..95317208ac4b2f3326ecd0c519e472ce5a1c0a09 --- /dev/null +++ b/bpfin/utilbills/bill_prior_proj_rough.py @@ -0,0 +1,47 @@ +import datetime +import bpfin.utilbills.bill_lib as bl +import bpfin.lib.other as lib + + +def bill_prior_proj_rough(month_norm_bill, raw_bill, analysis_date, inflation_coeff_dict): + """ project energy bill, on a monthly_normalized base, + with daily rough estimation, for years that in the past and future + + Args: + month_norm_bill (dictionary): {'monthly_usage':[list of float], + "monthly_price":[list of float], + "monthly_charge":[list of float]} + raw_bill (dictionary): {'date_to': list of date} + analysis_date (dictionary): proforma's starting date and the years of proforma + {'proforma_start': datetime.date, 'proforma': int} + + inflation_coeff_dict (dictonary): monthly inflation coefficient for past all years. NOT inflation rate + {date: float} + Returns: + dictionary: dictionary of lists + {'date_from': prior_bill_start, 'date_to': prior_bill_end, + 'usage': prior_monthly_usage, 'charge': prior_monthly_charge, + 'price': prior_monthly_price} + """ + [prior_bill_start, prior_bill_end] = bl.form_bill_calendar( + analysis_date['proforma_start'], analysis_date['proforma_duration']) + + present_date = datetime.date( + raw_bill['date_to'][-1].year, raw_bill['date_to'][-1].month, + bl.cal_last_day(raw_bill['date_to'][-1].year, + raw_bill['date_to'][-1].month)) + prior_monthly_usage = lib.duplicate2terms(month_norm_bill['monthly_usage'], + prior_bill_end) + prior_monthly_price = bl.form_inflated_item( + month_norm_bill['monthly_price'], prior_bill_end, inflation_coeff_dict, + present_date) + prior_monthly_charge = lib.product2list(prior_monthly_usage, + prior_monthly_price) + + return { + 'date_from': prior_bill_start, + 'date_to': prior_bill_end, + 'usage': prior_monthly_usage, + 'charge': prior_monthly_charge, + 'price': prior_monthly_price + } diff --git a/bpfin/utilbills/data_generation.py b/bpfin/utilbills/data_generation.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/bpfin/utilbills/inflation_sample_data.py b/bpfin/utilbills/inflation_sample_data.py new file mode 100644 index 0000000000000000000000000000000000000000..c30b12a94cad78da25b50422a786417246fd64a4 --- /dev/null +++ b/bpfin/utilbills/inflation_sample_data.py @@ -0,0 +1,1084 @@ +import datetime + + +inflation_coeff_dict = { + datetime.date(1981, 1, 31): 0.3381208260704529, + datetime.date(1981, 2, 28): 0.3410451203881943, + datetime.date(1981, 3, 31): 0.34399470595272497, + datetime.date(1981, 4, 30): 0.3469698014996081, + datetime.date(1981, 5, 31): 0.3499706276561777, + datetime.date(1981, 6, 30): 0.3529974069579001, + datetime.date(1981, 7, 31): 0.3560503638648767, + datetime.date(1981, 8, 31): 0.3591297247784895, + datetime.date(1981, 9, 30): 0.36223571805819044, + datetime.date(1981, 10, 31): 0.36536857403843637, + datetime.date(1981, 11, 30): 0.3685285250457702, + datetime.date(1981, 12, 31): 0.3717158054160494, + datetime.date(1982, 1, 31): 0.3736234509294446, + datetime.date(1982, 2, 28): 0.3755408864796145, + datetime.date(1982, 3, 31): 0.3774681623090278, + datetime.date(1982, 4, 30): 0.3794053289179977, + datetime.date(1982, 5, 31): 0.3813524370660048, + datetime.date(1982, 6, 30): 0.38330953777302756, + datetime.date(1982, 7, 31): 0.3852766823208787, + datetime.date(1982, 8, 31): 0.38725392225454935, + datetime.date(1982, 9, 30): 0.38924130938355966, + datetime.date(1982, 10, 31): 0.39123889578331605, + datetime.date(1982, 11, 30): 0.393246733796476, + datetime.date(1982, 12, 31): 0.3952648760343195, + datetime.date(1983, 1, 31): 0.39630557551417817, + datetime.date(1983, 2, 28): 0.3973490150690424, + datetime.date(1983, 3, 31): 0.3983952019133013, + datetime.date(1983, 4, 30): 0.39944414328033895, + datetime.date(1983, 5, 31): 0.4004958464225842, + datetime.date(1983, 6, 30): 0.401550318611561, + datetime.date(1983, 7, 31): 0.4026075671379387, + datetime.date(1983, 8, 31): 0.4036675993115824, + datetime.date(1983, 9, 30): 0.40473042246160323, + datetime.date(1983, 10, 31): 0.4057960439364095, + datetime.date(1983, 11, 30): 0.4068644711037571, + datetime.date(1983, 12, 31): 0.4079357113508007, + datetime.date(1984, 1, 31): 0.40942066532940286, + datetime.date(1984, 2, 29): 0.41091102478797936, + datetime.date(1984, 3, 31): 0.41240680940337837, + datetime.date(1984, 4, 30): 0.41390803892407485, + datetime.date(1984, 5, 31): 0.41541473317043154, + datetime.date(1984, 6, 30): 0.41692691203496074, + datetime.date(1984, 7, 31): 0.41844459548258667, + datetime.date(1984, 8, 31): 0.4199678035509092, + datetime.date(1984, 9, 30): 0.4214965563504684, + datetime.date(1984, 10, 31): 0.4230308740650101, + datetime.date(1984, 11, 30): 0.4245707769517523, + datetime.date(1984, 12, 31): 0.4261162853416528, + datetime.date(1985, 1, 31): 0.4273691382399381, + datetime.date(1985, 2, 28): 0.4286256747345532, + datetime.date(1985, 3, 31): 0.4298859056558852, + datetime.date(1985, 4, 30): 0.4311498418661644, + datetime.date(1985, 5, 31): 0.4324174942595579, + datetime.date(1985, 6, 30): 0.43368887376226334, + datetime.date(1985, 7, 31): 0.4349639913326034, + datetime.date(1985, 8, 31): 0.4362428579611198, + datetime.date(1985, 9, 30): 0.4375254846706685, + datetime.date(1985, 10, 31): 0.4388118825165143, + datetime.date(1985, 11, 30): 0.44010206258642665, + datetime.date(1985, 12, 31): 0.4413960360007745, + datetime.date(1986, 1, 31): 0.4421111711451018, + datetime.date(1986, 2, 28): 0.44282746492755204, + datetime.date(1986, 3, 31): 0.4435449192253122, + datetime.date(1986, 4, 30): 0.44426353591861034, + datetime.date(1986, 5, 31): 0.4449833168907211, + datetime.date(1986, 6, 30): 0.4457042640279702, + datetime.date(1986, 7, 31): 0.44642637921973954, + datetime.date(1986, 8, 31): 0.44714966435847203, + datetime.date(1986, 9, 30): 0.44787412133967686, + datetime.date(1986, 10, 31): 0.448599752061934, + datetime.date(1986, 11, 30): 0.44932655842689967, + datetime.date(1986, 12, 31): 0.4500545423393109, + datetime.date(1987, 1, 31): 0.45139652997547636, + datetime.date(1987, 2, 28): 0.4527425191951082, + datetime.date(1987, 3, 31): 0.45409252193026156, + datetime.date(1987, 4, 30): 0.4554465501485706, + datetime.date(1987, 5, 31): 0.45680461585335536, + datetime.date(1987, 6, 30): 0.4581667310837274, + datetime.date(1987, 7, 31): 0.4595329079146972, + datetime.date(1987, 8, 31): 0.46090315845728086, + datetime.date(1987, 9, 30): 0.4622774948586074, + datetime.date(1987, 10, 31): 0.46365592930202665, + datetime.date(1987, 11, 30): 0.4650384740072171, + datetime.date(1987, 12, 31): 0.46642514123029427, + datetime.date(1988, 1, 31): 0.4680186438565458, + datetime.date(1988, 2, 29): 0.469617590551728, + datetime.date(1988, 3, 31): 0.47122199991504876, + datetime.date(1988, 4, 30): 0.4728318906092585, + datetime.date(1988, 5, 31): 0.47444728136086745, + datetime.date(1988, 6, 30): 0.47606819096036335, + datetime.date(1988, 7, 31): 0.4776946382624302, + datetime.date(1988, 8, 31): 0.47932664218616716, + datetime.date(1988, 9, 30): 0.4809642217153094, + datetime.date(1988, 10, 31): 0.48260739589844787, + datetime.date(1988, 11, 30): 0.4842561838492519, + datetime.date(1988, 12, 31): 0.48591060474669084, + datetime.date(1989, 1, 31): 0.48785076480634354, + datetime.date(1989, 2, 28): 0.48979867160175444, + datetime.date(1989, 3, 31): 0.49175435606434825, + datetime.date(1989, 4, 30): 0.49371784924905376, + datetime.date(1989, 5, 31): 0.495689182334797, + datetime.date(1989, 6, 30): 0.497668386624996, + datetime.date(1989, 7, 31): 0.49965549354805844, + datetime.date(1989, 8, 31): 0.5016505346578802, + datetime.date(1989, 9, 30): 0.5036535416343466, + datetime.date(1989, 10, 31): 0.5056645462838355, + datetime.date(1989, 11, 30): 0.5076835805397224, + datetime.date(1989, 12, 31): 0.5097106764628874, + datetime.date(1990, 1, 31): 0.5120123174983452, + datetime.date(1990, 2, 28): 0.5143243517857021, + datetime.date(1990, 3, 31): 0.516646826256553, + datetime.date(1990, 4, 30): 0.5189797880544167, + datetime.date(1990, 5, 31): 0.521323284535692, + datetime.date(1990, 6, 30): 0.52367736327062, + datetime.date(1990, 7, 31): 0.5260420720442486, + datetime.date(1990, 8, 31): 0.5284174588574037, + datetime.date(1990, 9, 30): 0.5308035719276625, + datetime.date(1990, 10, 31): 0.5332004596903328, + datetime.date(1990, 11, 30): 0.535608170799436, + datetime.date(1990, 12, 31): 0.538026754128695, + datetime.date(1991, 1, 31): 0.539917200800452, + datetime.date(1991, 2, 28): 0.5418142898716645, + datetime.date(1991, 3, 31): 0.5437180446815102, + datetime.date(1991, 4, 30): 0.5456284886511727, + datetime.date(1991, 5, 31): 0.5475456452841301, + datetime.date(1991, 6, 30): 0.5494695381664434, + datetime.date(1991, 7, 31): 0.5514001909670476, + datetime.date(1991, 8, 31): 0.553337627438042, + datetime.date(1991, 9, 30): 0.5552818714149835, + datetime.date(1991, 10, 31): 0.5572329468171786, + datetime.date(1991, 11, 30): 0.5591908776479786, + datetime.date(1991, 12, 31): 0.5611556879950743, + datetime.date(1992, 1, 31): 0.5625777967973759, + datetime.date(1992, 2, 29): 0.5640035095789097, + datetime.date(1992, 3, 31): 0.56543283547306, + datetime.date(1992, 4, 30): 0.5668657836363576, + datetime.date(1992, 5, 31): 0.5683023632485381, + datetime.date(1992, 6, 30): 0.5697425835126008, + datetime.date(1992, 7, 31): 0.5711864536548676, + datetime.date(1992, 8, 31): 0.5726339829250425, + datetime.date(1992, 9, 30): 0.5740851805962703, + datetime.date(1992, 10, 31): 0.5755400559651965, + datetime.date(1992, 11, 30): 0.5769986183520263, + datetime.date(1992, 12, 31): 0.5784608771005849, + datetime.date(1993, 1, 31): 0.5798925195663358, + datetime.date(1993, 2, 28): 0.5813277052278858, + datetime.date(1993, 3, 31): 0.5827664428543494, + datetime.date(1993, 4, 30): 0.5842087412365436, + datetime.date(1993, 5, 31): 0.5856546091870424, + datetime.date(1993, 6, 30): 0.5871040555402295, + datetime.date(1993, 7, 31): 0.5885570891523536, + datetime.date(1993, 8, 31): 0.5900137189015816, + datetime.date(1993, 9, 30): 0.5914739536880531, + datetime.date(1993, 10, 31): 0.5929378024339349, + datetime.date(1993, 11, 30): 0.5944052740834753, + datetime.date(1993, 12, 31): 0.5958763776030591, + datetime.date(1994, 1, 31): 0.5971652582078144, + datetime.date(1994, 2, 28): 0.5984569266613179, + datetime.date(1994, 3, 31): 0.5997513889936863, + datetime.date(1994, 4, 30): 0.6010486512480796, + datetime.date(1994, 5, 31): 0.6023487194807291, + datetime.date(1994, 6, 30): 0.6036515997609659, + datetime.date(1994, 7, 31): 0.6049572981712489, + datetime.date(1994, 8, 31): 0.6062658208071933, + datetime.date(1994, 9, 30): 0.6075771737775991, + datetime.date(1994, 10, 31): 0.60889136320448, + datetime.date(1994, 11, 30): 0.6102083952230912, + datetime.date(1994, 12, 31): 0.6115282759819588, + datetime.date(1995, 1, 31): 0.6129578252484459, + datetime.date(1995, 2, 28): 0.6143907163246016, + datetime.date(1995, 3, 31): 0.615826957022463, + datetime.date(1995, 4, 30): 0.6172665551723291, + datetime.date(1995, 5, 31): 0.6187095186228035, + datetime.date(1995, 6, 30): 0.6201558552408374, + datetime.date(1995, 7, 31): 0.621605572911772, + datetime.date(1995, 8, 31): 0.6230586795393821, + datetime.date(1995, 9, 30): 0.6245151830459186, + datetime.date(1995, 10, 31): 0.6259750913721521, + datetime.date(1995, 11, 30): 0.6274384124774164, + datetime.date(1995, 12, 31): 0.628905154339651, + datetime.date(1996, 1, 31): 0.6304442424786086, + datetime.date(1996, 2, 29): 0.6319870971510144, + datetime.date(1996, 3, 31): 0.6335337275745171, + datetime.date(1996, 4, 30): 0.6350841429893238, + datetime.date(1996, 5, 31): 0.6366383526582543, + datetime.date(1996, 6, 30): 0.6381963658667972, + datetime.date(1996, 7, 31): 0.6397581919231646, + datetime.date(1996, 8, 31): 0.6413238401583485, + datetime.date(1996, 9, 30): 0.6428933199261759, + datetime.date(1996, 10, 31): 0.6444666406033652, + datetime.date(1996, 11, 30): 0.6460438115895818, + datetime.date(1996, 12, 31): 0.6476248423074943, + datetime.date(1997, 1, 31): 0.6488865234377831, + datetime.date(1997, 2, 28): 0.6501506625331938, + datetime.date(1997, 3, 31): 0.6514172643822522, + datetime.date(1997, 4, 30): 0.652686333782813, + datetime.date(1997, 5, 31): 0.6539578755420776, + datetime.date(1997, 6, 30): 0.6552318944766129, + datetime.date(1997, 7, 31): 0.6565083954123692, + datetime.date(1997, 8, 31): 0.6577873831846984, + datetime.date(1997, 9, 30): 0.6590688626383728, + datetime.date(1997, 10, 31): 0.6603528386276029, + datetime.date(1997, 11, 30): 0.6616393160160559, + datetime.date(1997, 12, 31): 0.6629282996768745, + datetime.date(1998, 1, 31): 0.6637828142551581, + datetime.date(1998, 2, 28): 0.6646384303027331, + datetime.date(1998, 3, 31): 0.6654951492393933, + datetime.date(1998, 4, 30): 0.666352972486763, + datetime.date(1998, 5, 31): 0.6672119014682985, + datetime.date(1998, 6, 30): 0.6680719376092912, + datetime.date(1998, 7, 31): 0.6689330823368695, + datetime.date(1998, 8, 31): 0.6697953370800018, + datetime.date(1998, 9, 30): 0.6706587032694981, + datetime.date(1998, 10, 31): 0.6715231823380126, + datetime.date(1998, 11, 30): 0.6723887757200463, + datetime.date(1998, 12, 31): 0.6732554848519495, + datetime.date(1999, 1, 31): 0.6744859153551402, + datetime.date(1999, 2, 28): 0.6757185945726114, + datetime.date(1999, 3, 31): 0.6769535266140758, + datetime.date(1999, 4, 30): 0.678190715596757, + datetime.date(1999, 5, 31): 0.679430165645403, + datetime.date(1999, 6, 30): 0.6806718808923006, + datetime.date(1999, 7, 31): 0.6819158654772881, + datetime.date(1999, 8, 31): 0.6831621235477702, + datetime.date(1999, 9, 30): 0.6844106592587308, + datetime.date(1999, 10, 31): 0.6856614767727477, + datetime.date(1999, 11, 30): 0.6869145802600064, + datetime.date(1999, 12, 31): 0.6881699738983132, + datetime.date(2000, 1, 31): 0.6901009214975742, + datetime.date(2000, 2, 29): 0.6920372871748862, + datetime.date(2000, 3, 31): 0.693979086132925, + datetime.date(2000, 4, 30): 0.6959263336170236, + datetime.date(2000, 5, 31): 0.6978790449152918, + datetime.date(2000, 6, 30): 0.6998372353587372, + datetime.date(2000, 7, 31): 0.7018009203213842, + datetime.date(2000, 8, 31): 0.703770115220396, + datetime.date(2000, 9, 30): 0.7057448355161948, + datetime.date(2000, 10, 31): 0.7077250967125838, + datetime.date(2000, 11, 30): 0.709710914356868, + datetime.date(2000, 12, 31): 0.7117023040399773, + datetime.date(2001, 1, 31): 0.7133727879646097, + datetime.date(2001, 2, 28): 0.7150471927934272, + datetime.date(2001, 3, 31): 0.7167255277294455, + datetime.date(2001, 4, 30): 0.718407801997281, + datetime.date(2001, 5, 31): 0.7200940248432023, + datetime.date(2001, 6, 30): 0.72178420553518, + datetime.date(2001, 7, 31): 0.7234783533629385, + datetime.date(2001, 8, 31): 0.7251764776380069, + datetime.date(2001, 9, 30): 0.7268785876937695, + datetime.date(2001, 10, 31): 0.728584692885518, + datetime.date(2001, 11, 30): 0.7302948025905023, + datetime.date(2001, 12, 31): 0.7320089262079826, + datetime.date(2002, 1, 31): 0.7329823150776077, + datetime.date(2002, 2, 28): 0.7339569983110821, + datetime.date(2002, 3, 31): 0.7349329776295863, + datetime.date(2002, 4, 30): 0.7359102547565893, + datetime.date(2002, 5, 31): 0.736888831417852, + datetime.date(2002, 6, 30): 0.7378687093414299, + datetime.date(2002, 7, 31): 0.7388498902576767, + datetime.date(2002, 8, 31): 0.7398323758992469, + datetime.date(2002, 9, 30): 0.740816168001099, + datetime.date(2002, 10, 31): 0.7418012683004983, + datetime.date(2002, 11, 30): 0.7427876785370209, + datetime.date(2002, 12, 31): 0.7437754004525554, + datetime.date(2003, 1, 31): 0.7451996063818555, + datetime.date(2003, 2, 28): 0.7466265394281423, + datetime.date(2003, 3, 31): 0.7480562048133906, + datetime.date(2003, 4, 30): 0.7494886077695742, + datetime.date(2003, 5, 31): 0.7509237535386851, + datetime.date(2003, 6, 30): 0.7523616473727528, + datetime.date(2003, 7, 31): 0.7538022945338638, + datetime.date(2003, 8, 31): 0.7552457002941805, + datetime.date(2003, 9, 30): 0.7566918699359605, + datetime.date(2003, 10, 31): 0.7581408087515762, + datetime.date(2003, 11, 30): 0.759592522043534, + datetime.date(2003, 12, 31): 0.7610470151244938, + datetime.date(2004, 1, 31): 0.7627386957979464, + datetime.date(2004, 2, 29): 0.7644341367955894, + datetime.date(2004, 3, 31): 0.7661333464759965, + datetime.date(2004, 4, 30): 0.7678363332163217, + datetime.date(2004, 5, 31): 0.7695431054123394, + datetime.date(2004, 6, 30): 0.7712536714784868, + datetime.date(2004, 7, 31): 0.7729680398479051, + datetime.date(2004, 8, 31): 0.7746862189724804, + datetime.date(2004, 9, 30): 0.7764082173228865, + datetime.date(2004, 10, 31): 0.7781340433886258, + datetime.date(2004, 11, 30): 0.7798637056780716, + datetime.date(2004, 12, 31): 0.7815972127185097, + datetime.date(2005, 1, 31): 0.7837897231663872, + datetime.date(2005, 2, 28): 0.7859883839714893, + datetime.date(2005, 3, 31): 0.7881932123865933, + datetime.date(2005, 4, 30): 0.7904042257128732, + datetime.date(2005, 5, 31): 0.7926214413000353, + datetime.date(2005, 6, 30): 0.7948448765464555, + datetime.date(2005, 7, 31): 0.7970745488993143, + datetime.date(2005, 8, 31): 0.799310475854735, + datetime.date(2005, 9, 30): 0.8015526749579203, + datetime.date(2005, 10, 31): 0.8038011638032896, + datetime.date(2005, 11, 30): 0.8060559600346184, + datetime.date(2005, 12, 31): 0.8083170813451755, + datetime.date(2006, 1, 31): 0.8104872106293172, + datetime.date(2006, 2, 28): 0.8126631661680542, + datetime.date(2006, 3, 31): 0.814844963603424, + datetime.date(2006, 4, 30): 0.8170326186194583, + datetime.date(2006, 5, 31): 0.8192261469422968, + datetime.date(2006, 6, 30): 0.8214255643403001, + datetime.date(2006, 7, 31): 0.8236308866241628, + datetime.date(2006, 8, 31): 0.8258421296470271, + datetime.date(2006, 9, 30): 0.8280593093045969, + datetime.date(2006, 10, 31): 0.8302824415352524, + datetime.date(2006, 11, 30): 0.8325115423201642, + datetime.date(2006, 12, 31): 0.8347466276834082, + datetime.date(2007, 1, 31): 0.8367434807412649, + datetime.date(2007, 2, 28): 0.8387451106044448, + datetime.date(2007, 3, 31): 0.8407515286998624, + datetime.date(2007, 4, 30): 0.8427627464817672, + datetime.date(2007, 5, 31): 0.8447787754318093, + datetime.date(2007, 6, 30): 0.8467996270591048, + datetime.date(2007, 7, 31): 0.8488253129003013, + datetime.date(2007, 8, 31): 0.8508558445196442, + datetime.date(2007, 9, 30): 0.8528912335090427, + datetime.date(2007, 10, 31): 0.8549314914881352, + datetime.date(2007, 11, 30): 0.8569766301043567, + datetime.date(2007, 12, 31): 0.8590266610330046, + datetime.date(2008, 1, 31): 0.8617575783739837, + datetime.date(2008, 2, 29): 0.8644971775287661, + datetime.date(2008, 3, 31): 0.8672454860975616, + datetime.date(2008, 4, 30): 0.870002531768323, + datetime.date(2008, 5, 31): 0.8727683423170256, + datetime.date(2008, 6, 30): 0.8755429456079467, + datetime.date(2008, 7, 31): 0.8783263695939465, + datetime.date(2008, 8, 31): 0.8811186423167497, + datetime.date(2008, 9, 30): 0.8839197919072282, + datetime.date(2008, 10, 31): 0.886729846585684, + datetime.date(2008, 11, 30): 0.8895488346621339, + datetime.date(2008, 12, 31): 0.8923767845365945, + datetime.date(2009, 1, 31): 0.8921387430293194, + datetime.date(2009, 2, 28): 0.8919007650196163, + datetime.date(2009, 3, 31): 0.8916628504905473, + datetime.date(2009, 4, 30): 0.8914249994251789, + datetime.date(2009, 5, 31): 0.8911872118065823, + datetime.date(2009, 6, 30): 0.8909494876178329, + datetime.date(2009, 7, 31): 0.8907118268420108, + datetime.date(2009, 8, 31): 0.8904742294622007, + datetime.date(2009, 9, 30): 0.8902366954614916, + datetime.date(2009, 10, 31): 0.8899992248229773, + datetime.date(2009, 11, 30): 0.8897618175297558, + datetime.date(2009, 12, 31): 0.8895244735649297, + datetime.date(2010, 1, 31): 0.890737414311675, + datetime.date(2010, 2, 28): 0.8919520090042069, + datetime.date(2010, 3, 31): 0.8931682598978183, + datetime.date(2010, 4, 30): 0.8943861692508774, + datetime.date(2010, 5, 31): 0.8956057393248318, + datetime.date(2010, 6, 30): 0.8968269723842128, + datetime.date(2010, 7, 31): 0.8980498706966398, + datetime.date(2010, 8, 31): 0.8992744365328239, + datetime.date(2010, 9, 30): 0.9005006721665729, + datetime.date(2010, 10, 31): 0.9017285798747947, + datetime.date(2010, 11, 30): 0.9029581619375023, + datetime.date(2010, 12, 31): 0.9041894206378177, + datetime.date(2011, 1, 31): 0.9065575680795865, + datetime.date(2011, 2, 28): 0.9089319178968509, + datetime.date(2011, 3, 31): 0.9113124863341492, + datetime.date(2011, 4, 30): 0.9136992896785655, + datetime.date(2011, 5, 31): 0.9160923442598411, + datetime.date(2011, 6, 30): 0.9184916664504862, + datetime.date(2011, 7, 31): 0.9208972726658923, + datetime.date(2011, 8, 31): 0.9233091793644436, + datetime.date(2011, 9, 30): 0.9257274030476306, + datetime.date(2011, 10, 31): 0.9281519602601626, + datetime.date(2011, 11, 30): 0.9305828675900806, + datetime.date(2011, 12, 31): 0.9330201416688713, + datetime.date(2012, 1, 31): 0.9346344220173154, + datetime.date(2012, 2, 29): 0.9362514953398091, + datetime.date(2012, 3, 31): 0.9378713664686629, + datetime.date(2012, 4, 30): 0.939494040244548, + datetime.date(2012, 5, 31): 0.9411195215165111, + datetime.date(2012, 6, 30): 0.9427478151419884, + datetime.date(2012, 7, 31): 0.9443789259868198, + datetime.date(2012, 8, 31): 0.9460128589252648, + datetime.date(2012, 9, 30): 0.9476496188400153, + datetime.date(2012, 10, 31): 0.9492892106222117, + datetime.date(2012, 11, 30): 0.9509316391714567, + datetime.date(2012, 12, 31): 0.9525769093958298, + datetime.date(2013, 1, 31): 0.9537392913695202, + datetime.date(2013, 2, 28): 0.9549030917398139, + datetime.date(2013, 3, 31): 0.9560683122375094, + datetime.date(2013, 4, 30): 0.9572349545955173, + datetime.date(2013, 5, 31): 0.9584030205488626, + datetime.date(2013, 6, 30): 0.9595725118346874, + datetime.date(2013, 7, 31): 0.9607434301922536, + datetime.date(2013, 8, 31): 0.9619157773629458, + datetime.date(2013, 9, 30): 0.9630895550902728, + datetime.date(2013, 10, 31): 0.9642647651198718, + datetime.date(2013, 11, 30): 0.9654414091995093, + datetime.date(2013, 12, 31): 0.9666194890790851, + datetime.date(2014, 1, 31): 0.9679161285720607, + datetime.date(2014, 2, 28): 0.9692145073988628, + datetime.date(2014, 3, 31): 0.9705146278926629, + datetime.date(2014, 4, 30): 0.971816492389762, + datetime.date(2014, 5, 31): 0.9731201032295953, + datetime.date(2014, 6, 30): 0.9744254627547358, + datetime.date(2014, 7, 31): 0.9757325733108996, + datetime.date(2014, 8, 31): 0.9770414372469484, + datetime.date(2014, 9, 30): 0.9783520569148956, + datetime.date(2014, 10, 31): 0.979664434669909, + datetime.date(2014, 11, 30): 0.9809785728703159, + datetime.date(2014, 12, 31): 0.982294473877607, + datetime.date(2015, 1, 31): 0.9823795242074701, + datetime.date(2015, 2, 28): 0.9824645819012744, + datetime.date(2015, 3, 31): 0.9825496469596572, + datetime.date(2015, 4, 30): 0.9826347193832563, + datetime.date(2015, 5, 31): 0.9827197991727095, + datetime.date(2015, 6, 30): 0.9828048863286544, + datetime.date(2015, 7, 31): 0.9828899808517289, + datetime.date(2015, 8, 31): 0.9829750827425707, + datetime.date(2015, 9, 30): 0.9830601920018182, + datetime.date(2015, 10, 31): 0.9831453086301088, + datetime.date(2015, 11, 30): 0.983230432628081, + datetime.date(2015, 12, 31): 0.9833155639963727, + datetime.date(2016, 1, 31): 0.9845331544934913, + datetime.date(2016, 2, 29): 0.985752252672043, + datetime.date(2016, 3, 31): 0.9869728603989143, + datetime.date(2016, 4, 30): 0.9881949795433034, + datetime.date(2016, 5, 31): 0.9894186119767231, + datetime.date(2016, 6, 30): 0.9906437595730033, + datetime.date(2016, 7, 31): 0.9918704242082947, + datetime.date(2016, 8, 31): 0.9930986077610708, + datetime.date(2016, 9, 30): 0.994328312112131, + datetime.date(2016, 10, 31): 0.9955595391446039, + datetime.date(2016, 11, 30): 0.9967922907439498, + datetime.date(2016, 12, 31): 0.9980265687979636, + datetime.date(2017, 1, 31): 1.0, + datetime.date(2017, 2, 28): 1.0019773333333333, + datetime.date(2017, 3, 31): 1.0039585765137777, + datetime.date(2017, 4, 30): 1.0059437372724043, + datetime.date(2017, 5, 31): 1.0079328233555709, + datetime.date(2017, 6, 30): 1.0099258425249524, + datetime.date(2017, 7, 31): 1.0119228025575717, + datetime.date(2017, 8, 31): 1.0139237112458288, + datetime.date(2017, 9, 30): 1.0159285763975323, + datetime.date(2017, 10, 31): 1.017937405835929, + datetime.date(2017, 11, 30): 1.0199502073997353, + datetime.date(2017, 12, 31): 1.0219669889431668, + datetime.date(2018, 1, 31): 1.0241308337144226, + datetime.date(2018, 2, 28): 1.0262992600663405, + datetime.date(2018, 3, 31): 1.0284722776996542, + datetime.date(2018, 4, 30): 1.030649896335637, + datetime.date(2018, 5, 31): 1.032832125716145, + datetime.date(2018, 6, 30): 1.0350189756036612, + datetime.date(2018, 7, 31): 1.0372104557813393, + datetime.date(2018, 8, 31): 1.039406576053047, + datetime.date(2018, 9, 30): 1.0416073462434101, + datetime.date(2018, 10, 31): 1.043812776197856, + datetime.date(2018, 11, 30): 1.046022875782659, + datetime.date(2018, 12, 31): 1.0482376548849828, + datetime.date(2019, 1, 31): 1.0502734197639072, + datetime.date(2019, 2, 28): 1.0523131382678736, + datetime.date(2019, 3, 31): 1.0543568180751512, + datetime.date(2019, 4, 30): 1.0564044668789212, + datetime.date(2019, 5, 31): 1.0584560923873054, + datetime.date(2019, 6, 30): 1.0605117023233959, + datetime.date(2019, 7, 31): 1.0625713044252831, + datetime.date(2019, 8, 31): 1.0646349064460856, + datetime.date(2019, 9, 30): 1.0667025161539792, + datetime.date(2019, 10, 31): 1.0687741413322265, + datetime.date(2019, 11, 30): 1.0708497897792053, + datetime.date(2019, 12, 31): 1.072929469308439, + datetime.date(2020, 1, 31): 1.0749909244621372, + datetime.date(2020, 2, 29): 1.077056340358337, + datetime.date(2020, 3, 31): 1.0791257246069457, + datetime.date(2020, 4, 30): 1.0811990848324906, + datetime.date(2020, 5, 31): 1.083276428674149, + datetime.date(2020, 6, 30): 1.085357763785775, + datetime.date(2020, 7, 31): 1.0874430978359289, + datetime.date(2020, 8, 31): 1.0895324385079046, + datetime.date(2020, 9, 30): 1.091625793499758, + datetime.date(2020, 10, 31): 1.0937231705243355, + datetime.date(2020, 11, 30): 1.0958245773093032, + datetime.date(2020, 12, 31): 1.0979300215971735, + datetime.date(2021, 1, 31): 1.0997079911753143, + datetime.date(2021, 2, 28): 1.101488839967757, + datetime.date(2021, 3, 31): 1.1032725726370534, + datetime.date(2021, 4, 30): 1.1050591938533056, + datetime.date(2021, 5, 31): 1.1068487082941783, + datetime.date(2021, 6, 30): 1.1086411206449114, + datetime.date(2021, 7, 31): 1.1104364355983318, + datetime.date(2021, 8, 31): 1.1122346578548659, + datetime.date(2021, 9, 30): 1.1140357921225517, + datetime.date(2021, 10, 31): 1.1158398431170518, + datetime.date(2021, 11, 30): 1.1176468155616648, + datetime.date(2021, 12, 31): 1.1194567141873384, + datetime.date(2022, 1, 31): 1.1211576316449643, + datetime.date(2022, 2, 28): 1.122861133499254, + datetime.date(2022, 3, 31): 1.1245672236769746, + datetime.date(2022, 4, 30): 1.1262759061108591, + datetime.date(2022, 5, 31): 1.1279871847396161, + datetime.date(2022, 6, 30): 1.1297010635079388, + datetime.date(2022, 7, 31): 1.1314175463665137, + datetime.date(2022, 8, 31): 1.1331366372720302, + datetime.date(2022, 9, 30): 1.13485834018719, + datetime.date(2022, 10, 31): 1.1365826590807149, + datetime.date(2022, 11, 30): 1.1383095979273576, + datetime.date(2022, 12, 31): 1.14003916070791, + datetime.date(2023, 1, 31): 1.1417473247038867, + datetime.date(2023, 2, 28): 1.1434580481068888, + datetime.date(2023, 3, 31): 1.1451713347517734, + datetime.date(2023, 4, 30): 1.1468871884791425, + datetime.date(2023, 5, 31): 1.148605613135354, + datetime.date(2023, 6, 30): 1.1503266125725278, + datetime.date(2023, 7, 31): 1.1520501906485565, + datetime.date(2023, 8, 31): 1.1537763512271126, + datetime.date(2023, 9, 30): 1.1555050981776576, + datetime.date(2023, 10, 31): 1.157236435375451, + datetime.date(2023, 11, 30): 1.1589703667015585, + datetime.date(2023, 12, 31): 1.1607068960428615, + datetime.date(2024, 1, 31): 1.1624783051579952, + datetime.date(2024, 2, 29): 1.1642524177034816, + datetime.date(2024, 3, 31): 1.1660292378051522, + datetime.date(2024, 4, 30): 1.1678087695951351, + datetime.date(2024, 5, 31): 1.1695910172118646, + datetime.date(2024, 6, 30): 1.1713759848000913, + datetime.date(2024, 7, 31): 1.173163676510891, + datetime.date(2024, 8, 31): 1.1749540965016745, + datetime.date(2024, 9, 30): 1.1767472489361974, + datetime.date(2024, 10, 31): 1.1785431379845703, + datetime.date(2024, 11, 30): 1.1803417678232675, + datetime.date(2024, 12, 31): 1.1821431426351374, + datetime.date(2025, 1, 31): 1.1839691043554477, + datetime.date(2025, 2, 28): 1.1857978864924097, + datetime.date(2025, 3, 31): 1.1876294934024947, + datetime.date(2025, 4, 30): 1.1894639294489031, + datetime.date(2025, 5, 31): 1.1913011990015752, + datetime.date(2025, 6, 30): 1.1931413064372007, + datetime.date(2025, 7, 31): 1.19498425613923, + datetime.date(2025, 8, 31): 1.196830052497884, + datetime.date(2025, 9, 30): 1.198678699910165, + datetime.date(2025, 10, 31): 1.2005302027798668, + datetime.date(2025, 11, 30): 1.2023845655175858, + datetime.date(2025, 12, 31): 1.2042417925407303, + datetime.date(2026, 1, 31): 1.206277471119959, + datetime.date(2026, 2, 28): 1.2083165908580182, + datetime.date(2026, 3, 31): 1.2103591575719228, + datetime.date(2026, 4, 30): 1.212405177088522, + datetime.date(2026, 5, 31): 1.2144546552445143, + datetime.date(2026, 6, 30): 1.2165075978864652, + datetime.date(2026, 7, 31): 1.2185640108708227, + datetime.date(2026, 8, 31): 1.2206239000639352, + datetime.date(2026, 9, 30): 1.2226872713420676, + datetime.date(2026, 10, 31): 1.2247541305914178, + datetime.date(2026, 11, 30): 1.2268244837081344, + datetime.date(2026, 12, 31): 1.2288983365983328, + datetime.date(2027, 1, 31): 1.2310312626995608, + datetime.date(2027, 2, 28): 1.2331678907943693, + datetime.date(2027, 3, 31): 1.2353082273080898, + datetime.date(2027, 4, 30): 1.237452278677205, + datetime.date(2027, 5, 31): 1.2396000513493697, + datetime.date(2027, 6, 30): 1.2417515517834297, + datetime.date(2027, 7, 31): 1.24390678644944, + datetime.date(2027, 8, 31): 1.2460657618286863, + datetime.date(2027, 9, 30): 1.2482284844137033, + datetime.date(2027, 10, 31): 1.250394960708294, + datetime.date(2027, 11, 30): 1.25256519722755, + datetime.date(2027, 12, 31): 1.2547392004978706, + datetime.date(2028, 1, 31): 1.2568866509483156, + datetime.date(2028, 2, 29): 1.259037776699122, + datetime.date(2028, 3, 31): 1.261192584040462, + datetime.date(2028, 4, 30): 1.263351079273273, + datetime.date(2028, 5, 31): 1.2655132687092763, + datetime.date(2028, 6, 30): 1.2676791586709955, + datetime.date(2028, 7, 31): 1.2698487554917752, + datetime.date(2028, 8, 31): 1.2720220655157992, + datetime.date(2028, 9, 30): 1.2741990950981095, + datetime.date(2028, 10, 31): 1.2763798506046236, + datetime.date(2028, 11, 30): 1.2785643384121554, + datetime.date(2028, 12, 31): 1.280752564908432, + datetime.date(2029, 1, 31): 1.2828925556407371, + datetime.date(2029, 2, 28): 1.2850361220522637, + datetime.date(2029, 3, 31): 1.2871832701175623, + datetime.date(2029, 4, 30): 1.2893340058211653, + datetime.date(2029, 5, 31): 1.2914883351576054, + datetime.date(2029, 6, 30): 1.293646264131431, + datetime.date(2029, 7, 31): 1.2958077987572236, + datetime.date(2029, 8, 31): 1.2979729450596147, + datetime.date(2029, 9, 30): 1.3001417090733012, + datetime.date(2029, 10, 31): 1.3023140968430647, + datetime.date(2029, 11, 30): 1.3044901144237857, + datetime.date(2029, 12, 31): 1.3066697678804629, + datetime.date(2030, 1, 31): 1.3088176266711669, + datetime.date(2030, 2, 28): 1.3109690160382248, + datetime.date(2030, 3, 31): 1.3131239417850764, + datetime.date(2030, 4, 30): 1.3152824097247013, + datetime.date(2030, 5, 31): 1.3174444256796338, + datetime.date(2030, 6, 30): 1.3196099954819795, + datetime.date(2030, 7, 31): 1.3217791249734305, + datetime.date(2030, 8, 31): 1.323951820005281, + datetime.date(2030, 9, 30): 1.3261280864384442, + datetime.date(2030, 10, 31): 1.3283079301434657, + datetime.date(2030, 11, 30): 1.3304913570005426, + datetime.date(2030, 12, 31): 1.3326783728995366, + datetime.date(2031, 1, 31): 1.3348319928859904, + datetime.date(2031, 2, 28): 1.3369890931413078, + datetime.date(2031, 3, 31): 1.3391496792896336, + datetime.date(2031, 4, 30): 1.3413137569642015, + datetime.date(2031, 5, 31): 1.3434813318073493, + datetime.date(2031, 6, 30): 1.3456524094705313, + datetime.date(2031, 7, 31): 1.3478269956143363, + datetime.date(2031, 8, 31): 1.3500050959084995, + datetime.date(2031, 9, 30): 1.3521867160319188, + datetime.date(2031, 10, 31): 1.3543718616726692, + datetime.date(2031, 11, 30): 1.356560538528018, + datetime.date(2031, 12, 31): 1.3587527523044391, + datetime.date(2032, 1, 31): 1.3609480502028264, + datetime.date(2032, 2, 29): 1.3631468949811405, + datetime.date(2032, 3, 31): 1.3653492923699735, + datetime.date(2032, 4, 30): 1.367555248109177, + datetime.date(2032, 5, 31): 1.3697647679478755, + datetime.date(2032, 6, 30): 1.371977857644482, + datetime.date(2032, 7, 31): 1.3741945229667143, + datetime.date(2032, 8, 31): 1.3764147696916078, + datetime.date(2032, 9, 30): 1.3786386036055325, + datetime.date(2032, 10, 31): 1.380866030504207, + datetime.date(2032, 11, 30): 1.3830970561927136, + datetime.date(2032, 12, 31): 1.385331686485514, + datetime.date(2033, 1, 31): 1.3875832621350055, + datetime.date(2033, 2, 28): 1.3898384972639959, + datetime.date(2033, 3, 31): 1.3920973978202262, + datetime.date(2033, 4, 30): 1.394359969761105, + datetime.date(2033, 5, 31): 1.3966262190537237, + datetime.date(2033, 6, 30): 1.3988961516748712, + datetime.date(2033, 7, 31): 1.4011697736110513, + datetime.date(2033, 8, 31): 1.403447090858497, + datetime.date(2033, 9, 30): 1.4057281094231873, + datetime.date(2033, 10, 31): 1.4080128353208623, + datetime.date(2033, 11, 30): 1.41030127457704, + datetime.date(2033, 12, 31): 1.4125934332270311, + datetime.date(2034, 1, 31): 1.4149072514828935, + datetime.date(2034, 2, 28): 1.4172248597570265, + datetime.date(2034, 3, 31): 1.4195462642574541, + datetime.date(2034, 4, 30): 1.4218714712023686, + datetime.date(2034, 5, 31): 1.4242004868201474, + datetime.date(2034, 6, 30): 1.4265333173493708, + datetime.date(2034, 7, 31): 1.428869969038837, + datetime.date(2034, 8, 31): 1.43121044814758, + datetime.date(2034, 9, 30): 1.4335547609448862, + datetime.date(2034, 10, 31): 1.4359029137103108, + datetime.date(2034, 11, 30): 1.4382549127336948, + datetime.date(2034, 12, 31): 1.4406107643151824, + datetime.date(2035, 1, 31): 1.4429865874594414, + datetime.date(2035, 2, 28): 1.445366328758245, + datetime.date(2035, 3, 31): 1.4477499946733259, + datetime.date(2035, 4, 30): 1.4501375916770738, + datetime.date(2035, 5, 31): 1.4525291262525526, + datetime.date(2035, 6, 30): 1.4549246048935176, + datetime.date(2035, 7, 31): 1.457324034104434, + datetime.date(2035, 8, 31): 1.4597274204004933, + datetime.date(2035, 9, 30): 1.462134770307632, + datetime.date(2035, 10, 31): 1.4645460903625491, + datetime.date(2035, 11, 30): 1.4669613871127245, + datetime.date(2035, 12, 31): 1.4693806671164344, + datetime.date(2036, 1, 31): 1.4718193004762303, + datetime.date(2036, 2, 29): 1.4742619810736115, + datetime.date(2036, 3, 31): 1.4767087156255096, + datetime.date(2036, 4, 30): 1.479159510860003, + datetime.date(2036, 5, 31): 1.4816143735163363, + datetime.date(2036, 6, 30): 1.4840733103449395, + datetime.date(2036, 7, 31): 1.4865363281074446, + datetime.date(2036, 8, 31): 1.4890034335767068, + datetime.date(2036, 9, 30): 1.4914746335368212, + datetime.date(2036, 10, 31): 1.4939499347831413, + datetime.date(2036, 11, 30): 1.4964293441222993, + datetime.date(2036, 12, 31): 1.4989128683722237, + datetime.date(2037, 1, 31): 1.5013958992132328, + datetime.date(2037, 2, 28): 1.503883043330128, + datetime.date(2037, 3, 31): 1.5063743075367757, + datetime.date(2037, 4, 30): 1.5088696986583285, + datetime.date(2037, 5, 31): 1.5113692235312461, + datetime.date(2037, 6, 30): 1.5138728890033128, + datetime.date(2037, 7, 31): 1.5163807019336568, + datetime.date(2037, 8, 31): 1.5188926691927684, + datetime.date(2037, 9, 30): 1.52140879766252, + datetime.date(2037, 10, 31): 1.5239290942361834, + datetime.date(2037, 11, 30): 1.52645356581845, + datetime.date(2037, 12, 31): 1.528982219325449, + datetime.date(2038, 1, 31): 1.531502969527323, + datetime.date(2038, 2, 28): 1.534027875553575, + datetime.date(2038, 3, 31): 1.5365569442556875, + datetime.date(2038, 4, 30): 1.5390901824964387, + datetime.date(2038, 5, 31): 1.5416275971499214, + datetime.date(2038, 6, 30): 1.5441691951015606, + datetime.date(2038, 7, 31): 1.546714983248134, + datetime.date(2038, 8, 31): 1.549264968497789, + datetime.date(2038, 9, 30): 1.5518191577700624, + datetime.date(2038, 10, 31): 1.5543775579958983, + datetime.date(2038, 11, 30): 1.5569401761176678, + datetime.date(2038, 12, 31): 1.559507019089188, + datetime.date(2039, 1, 31): 1.5620682961641141, + datetime.date(2039, 2, 28): 1.5646337797864776, + datetime.date(2039, 3, 31): 1.5672034768649572, + datetime.date(2039, 4, 30): 1.5697773943195792, + datetime.date(2039, 5, 31): 1.5723555390817336, + datetime.date(2039, 6, 30): 1.5749379180941956, + datetime.date(2039, 7, 31): 1.5775245383111425, + datetime.date(2039, 8, 31): 1.5801154066981726, + datetime.date(2039, 9, 30): 1.5827105302323248, + datetime.date(2039, 10, 31): 1.5853099159020962, + datetime.date(2039, 11, 30): 1.5879135707074619, + datetime.date(2039, 12, 31): 1.5905215016598937, + datetime.date(2040, 1, 31): 1.5931291792827287, + datetime.date(2040, 2, 29): 1.595741132221916, + datetime.date(2040, 3, 31): 1.5983573674868838, + datetime.date(2040, 4, 30): 1.6009778920985531, + datetime.date(2040, 5, 31): 1.6036027130893553, + datetime.date(2040, 6, 30): 1.6062318375032512, + datetime.date(2040, 7, 31): 1.608865272395751, + datetime.date(2040, 8, 31): 1.611503024833932, + datetime.date(2040, 9, 30): 1.6141451018964579, + datetime.date(2040, 10, 31): 1.6167915106735988, + datetime.date(2040, 11, 30): 1.6194422582672487, + datetime.date(2040, 12, 31): 1.622097351790945, + datetime.date(2041, 1, 31): 1.6247561082481263, + datetime.date(2041, 2, 28): 1.627419222634806, + datetime.date(2041, 3, 31): 1.6300867020940037, + datetime.date(2041, 4, 30): 1.6327585537804472, + datetime.date(2041, 5, 31): 1.635434784860591, + datetime.date(2041, 6, 30): 1.6381154025126365, + datetime.date(2041, 7, 31): 1.6408004139265508, + datetime.date(2041, 8, 31): 1.6434898263040858, + datetime.date(2041, 9, 30): 1.6461836468587976, + datetime.date(2041, 10, 31): 1.6488818828160658, + datetime.date(2041, 11, 30): 1.6515845414131136, + datetime.date(2041, 12, 31): 1.6542916298990267, + datetime.date(2042, 1, 31): 1.65700697311415, + datetime.date(2042, 2, 28): 1.6597267732754626, + datetime.date(2042, 3, 31): 1.6624510376985664, + datetime.date(2042, 4, 30): 1.6651797737110705, + datetime.date(2042, 5, 31): 1.6679129886526118, + datetime.date(2042, 6, 30): 1.670650689874875, + datetime.date(2042, 7, 31): 1.6733928847416106, + datetime.date(2042, 8, 31): 1.676139580628657, + datetime.date(2042, 9, 30): 1.6788907849239585, + datetime.date(2042, 10, 31): 1.6816465050275864, + datetime.date(2042, 11, 30): 1.6844067483517586, + datetime.date(2042, 12, 31): 1.6871715223208588, + datetime.date(2043, 1, 31): 1.6899451741068114, + datetime.date(2043, 2, 28): 1.6927233856806267, + datetime.date(2043, 3, 31): 1.6955061645384386, + datetime.date(2043, 4, 30): 1.6982935181887044, + datetime.date(2043, 5, 31): 1.7010854541522251, + datetime.date(2043, 6, 30): 1.703881979962166, + datetime.date(2043, 7, 31): 1.706683103164076, + datetime.date(2043, 8, 31): 1.7094888313159085, + datetime.date(2043, 9, 30): 1.712299171988043, + datetime.date(2043, 10, 31): 1.7151141327633035, + datetime.date(2043, 11, 30): 1.71793372123698, + datetime.date(2043, 12, 31): 1.7207579450168495, + datetime.date(2044, 1, 31): 1.7235900240944928, + datetime.date(2044, 2, 29): 1.7264267642994757, + datetime.date(2044, 3, 31): 1.7292681733032322, + datetime.date(2044, 4, 30): 1.732114258789822, + datetime.date(2044, 5, 31): 1.734965028455952, + datetime.date(2044, 6, 30): 1.7378204900109966, + datetime.date(2044, 7, 31): 1.7406806511770179, + datetime.date(2044, 8, 31): 1.743545519688788, + datetime.date(2044, 9, 30): 1.7464151032938084, + datetime.date(2044, 10, 31): 1.7492894097523326, + datetime.date(2044, 11, 30): 1.7521684468373855, + datetime.date(2044, 12, 31): 1.7550522223347849, + datetime.date(2045, 1, 31): 1.7579421198760468, + datetime.date(2045, 2, 28): 1.7608367759696144, + datetime.date(2045, 3, 31): 1.7637361984509972, + datetime.date(2045, 4, 30): 1.7666403951686067, + datetime.date(2045, 5, 31): 1.7695493739837784, + datetime.date(2045, 6, 30): 1.7724631427707918, + datetime.date(2045, 7, 31): 1.775381709416892, + datetime.date(2045, 8, 31): 1.7783050818223123, + datetime.date(2045, 9, 30): 1.7812332679002942, + datetime.date(2045, 10, 31): 1.7841662755771088, + datetime.date(2045, 11, 30): 1.7871041127920801, + datetime.date(2045, 12, 31): 1.7900467874976032, + datetime.date(2046, 1, 31): 1.7929938491512625, + datetime.date(2046, 2, 28): 1.7959457627297155, + datetime.date(2046, 3, 31): 1.798902536220978, + datetime.date(2046, 4, 30): 1.8018641776262165, + datetime.date(2046, 5, 31): 1.8048306949597708, + datetime.date(2046, 6, 30): 1.8078020962491743, + datetime.date(2046, 7, 31): 1.8107783895351774, + datetime.date(2046, 8, 31): 1.8137595828717683, + datetime.date(2046, 9, 30): 1.8167456843261949, + datetime.date(2046, 10, 31): 1.8197367019789865, + datetime.date(2046, 11, 30): 1.8227326439239762, + datetime.date(2046, 12, 31): 1.8257335182683228, + datetime.date(2047, 1, 31): 1.8287369097704886, + datetime.date(2047, 2, 28): 1.8317452419501548, + datetime.date(2047, 3, 31): 1.834758522934898, + datetime.date(2047, 4, 30): 1.8377767608656645, + datetime.date(2047, 5, 31): 1.8407999638967933, + datetime.date(2047, 6, 30): 1.843828140196037, + datetime.date(2047, 7, 31): 1.8468612979445849, + datetime.date(2047, 8, 31): 1.8498994453370843, + datetime.date(2047, 9, 30): 1.8529425905816634, + datetime.date(2047, 10, 31): 1.8559907418999526, + datetime.date(2047, 11, 30): 1.8590439075271072, + datetime.date(2047, 12, 31): 1.86210209571183, + datetime.date(2048, 1, 31): 1.8651631692582504, + datetime.date(2048, 2, 29): 1.8682292748441485, + datetime.date(2048, 3, 31): 1.871300420741596, + datetime.date(2048, 4, 30): 1.8743766152362635, + datetime.date(2048, 5, 31): 1.8774578666274424, + datetime.date(2048, 6, 30): 1.8805441832280665, + datetime.date(2048, 7, 31): 1.8836355733647354, + datetime.date(2048, 8, 31): 1.8867320453777372, + datetime.date(2048, 9, 30): 1.8898336076210693, + datetime.date(2048, 10, 31): 1.8929402684624632, + datetime.date(2048, 11, 30): 1.8960520362834052, + datetime.date(2048, 12, 31): 1.8991689194791601, + datetime.date(2049, 1, 31): 1.902290021459603, + datetime.date(2049, 2, 28): 1.905416252671823, + datetime.date(2049, 3, 31): 1.908547621545221, + datetime.date(2049, 4, 30): 1.9116841365230504, + datetime.date(2049, 5, 31): 1.9148258060624401, + datetime.date(2049, 6, 30): 1.9179726386344174, + datetime.date(2049, 7, 31): 1.9211246427239317, + datetime.date(2049, 8, 31): 1.924281826829876, + datetime.date(2049, 9, 30): 1.9274441994651104, + datetime.date(2049, 10, 31): 1.9306117691564852, + datetime.date(2049, 11, 30): 1.933784544444864, + datetime.date(2049, 12, 31): 1.936962533885146, + datetime.date(2050, 1, 31): 1.9401459476468907, + datetime.date(2050, 2, 28): 1.9433345933751818, + datetime.date(2050, 3, 31): 1.9465284796687987, + datetime.date(2050, 4, 30): 1.9497276151406535, + datetime.date(2050, 5, 31): 1.9529320084178137, + datetime.date(2050, 6, 30): 1.9561416681415251, + datetime.date(2050, 7, 31): 1.9593566029672358, + datetime.date(2050, 8, 31): 1.962576821564619, + datetime.date(2050, 9, 30): 1.9658023326175968, + datetime.date(2050, 10, 31): 1.969033144824363, + datetime.date(2050, 11, 30): 1.9722692668974073, + datetime.date(2050, 12, 31): 1.9755107075635383, + datetime.date(2051, 1, 31): 1.978758265194836, + datetime.date(2051, 2, 28): 1.9820111615117346, + datetime.date(2051, 3, 31): 1.9852694052905413, + datetime.date(2051, 4, 30): 1.9885330053219907, + datetime.date(2051, 5, 31): 1.991801970411269, + datetime.date(2051, 6, 30): 1.9950763093780373, + datetime.date(2051, 7, 31): 1.9983560310564548, + datetime.date(2051, 8, 31): 2.0016411442952036, + datetime.date(2051, 9, 30): 2.0049316579575125, + datetime.date(2051, 10, 31): 2.0082275809211803, + datetime.date(2051, 11, 30): 2.0115289220786003, + datetime.date(2051, 12, 31): 2.014835690336784, + datetime.date(2052, 1, 31): 2.018148866223083, + datetime.date(2052, 2, 29): 2.021467490263049, + datetime.date(2052, 3, 31): 2.0247915714155713, + datetime.date(2052, 4, 30): 2.0281211186542722, + datetime.date(2052, 5, 31): 2.031456140967529, + datetime.date(2052, 6, 30): 2.034796647358501, + datetime.date(2052, 7, 31): 2.038142646845151, + datetime.date(2052, 8, 31): 2.0414941484602713, + datetime.date(2052, 9, 30): 2.0448511612515077, + datetime.date(2052, 10, 31): 2.0482136942813836, + datetime.date(2052, 11, 30): 2.0515817566273244, + datetime.date(2052, 12, 31): 2.0549553573816834, + datetime.date(2053, 1, 31): 2.058335121481051, + datetime.date(2053, 2, 28): 2.061720444243932, + datetime.date(2053, 3, 31): 2.0651113348126042, + datetime.date(2053, 4, 30): 2.06850780234438, + datetime.date(2053, 5, 31): 2.0719098560116347, + datetime.date(2053, 6, 30): 2.075317505001828, + datetime.date(2053, 7, 31): 2.0787307585175303, + datetime.date(2053, 8, 31): 2.082149625776447, + datetime.date(2053, 9, 30): 2.085574116011445, + datetime.date(2053, 10, 31): 2.089004238470576, + datetime.date(2053, 11, 30): 2.0924400024171, + datetime.date(2053, 12, 31): 2.0958814171295153, + datetime.date(2054, 1, 31): 2.0993286437032728, + datetime.date(2054, 2, 28): 2.102781540145065, + datetime.date(2054, 3, 31): 2.106240115780476, + datetime.date(2054, 4, 30): 2.1097043799504296, + datetime.date(2054, 5, 31): 2.113174342011212, + datetime.date(2054, 6, 30): 2.1166500113344986, + datetime.date(2054, 7, 31): 2.1201313973073797, + datetime.date(2054, 8, 31): 2.1236185093323843, + datetime.date(2054, 9, 30): 2.127111356827507, + datetime.date(2054, 10, 31): 2.1306099492262316, + datetime.date(2054, 11, 30): 2.1341142959775588, + datetime.date(2054, 12, 31): 2.137624406546031, + datetime.date(2055, 1, 31): 2.1411400616601206, + datetime.date(2055, 2, 28): 2.1446614988147052, + datetime.date(2055, 3, 31): 2.1481887275192477, + datetime.date(2055, 4, 30): 2.1517217572988505, + datetime.date(2055, 5, 31): 2.1552605976942827, + datetime.date(2055, 6, 30): 2.158805258262003, + datetime.date(2055, 7, 31): 2.162355748574188, + datetime.date(2055, 8, 31): 2.1659120782187586, + datetime.date(2055, 9, 30): 2.169474256799402, + datetime.date(2055, 10, 31): 2.1730422939356013, + datetime.date(2055, 11, 30): 2.176616199262661, + datetime.date(2055, 12, 31): 2.1801959824317323, + datetime.date(2056, 1, 31): 2.1837812255603417, + datetime.date(2056, 2, 29): 2.1873723644746486, + datetime.date(2056, 3, 31): 2.190969408870031, + datetime.date(2056, 4, 30): 2.1945723684578127, + datetime.date(2056, 5, 31): 2.1981812529652838, + datetime.date(2056, 6, 30): 2.2017960721357333, + datetime.date(2056, 7, 31): 2.2054168357284714, + datetime.date(2056, 8, 31): 2.209043553518858, + datetime.date(2056, 9, 30): 2.2126762352983276, + datetime.date(2056, 10, 31): 2.2163148908744152, + datetime.date(2056, 11, 30): 2.2199595300707866, + datetime.date(2056, 12, 31): 2.2236101627272595, + datetime.date(2057, 1, 31): 2.227266375986442, + datetime.date(2057, 2, 28): 2.2309286010437446, + datetime.date(2057, 3, 31): 2.234596847784181, + datetime.date(2057, 4, 30): 2.2382711261090176, + datetime.date(2057, 5, 31): 2.241951445935802, + datetime.date(2057, 6, 30): 2.2456378171983884, + datetime.date(2057, 7, 31): 2.249330249846966, + datetime.date(2057, 8, 31): 2.253028753848082, + datetime.date(2057, 9, 30): 2.256733339184675, + datetime.date(2057, 10, 31): 2.2604440158560957, + datetime.date(2057, 11, 30): 2.264160793878137, + datetime.date(2057, 12, 31): 2.2678836832830607, + datetime.date(2058, 1, 31): 2.2716125209011375, + datetime.date(2058, 2, 28): 2.2753474894465127, + datetime.date(2058, 3, 31): 2.2790885989996106, + datetime.date(2058, 4, 30): 2.282835859657431, + datetime.date(2058, 5, 31): 2.2865892815335758, + datetime.date(2058, 6, 30): 2.2903488747582736, + datetime.date(2058, 7, 31): 2.294114649478411, + datetime.date(2058, 8, 31): 2.2978866158575566, + datetime.date(2058, 9, 30): 2.301664784075991, + datetime.date(2058, 10, 31): 2.305449164330732, + datetime.date(2058, 11, 30): 2.309239766835564, + datetime.date(2058, 12, 31): 2.313036601821065, + datetime.date(2059, 1, 31): 2.316839751701828, + datetime.date(2059, 2, 28): 2.3206491548122226, + datetime.date(2059, 3, 31): 2.3244648214339563, + datetime.date(2059, 4, 30): 2.3282867618656446, + datetime.date(2059, 5, 31): 2.332114986422835, + datetime.date(2059, 6, 30): 2.335949505438037, + datetime.date(2059, 7, 31): 2.339790329260748, + datetime.date(2059, 8, 31): 2.343637468257482, + datetime.date(2059, 9, 30): 2.347490932811799, + datetime.date(2059, 10, 31): 2.3513507333243315, + datetime.date(2059, 11, 30): 2.3552168802128133, + datetime.date(2059, 12, 31): 2.359089383912107, + datetime.date(2060, 1, 31): 2.3629684482549114, + datetime.date(2060, 2, 29): 2.366853890965691, + datetime.date(2060, 3, 31): 2.3707457225324324, + datetime.date(2060, 4, 30): 2.3746439534603687, + datetime.date(2060, 5, 31): 2.3785485942720066, + datetime.date(2060, 6, 30): 2.382459655507155, + datetime.date(2060, 7, 31): 2.386377147722954, + datetime.date(2060, 8, 31): 2.390301081493901, + datetime.date(2060, 9, 30): 2.394231467411884, + datetime.date(2060, 10, 31): 2.3981683160862044, + datetime.date(2060, 11, 30): 2.402111638143611, + datetime.date(2060, 12, 31): 2.4060614442283246, + datetime.date(2061, 1, 31): 2.4100179369138024, + datetime.date(2061, 2, 28): 2.4139809355987034, + datetime.date(2061, 3, 31): 2.4179504509814, + datetime.date(2061, 4, 30): 2.4219264937778564, + datetime.date(2061, 5, 31): 2.4259090747216563, + datetime.date(2061, 6, 30): 2.4298982045640356, + datetime.date(2061, 7, 31): 2.433893894073908, + datetime.date(2061, 8, 31): 2.437896154037897, + datetime.date(2061, 9, 30): 2.441904995260361, + datetime.date(2061, 10, 31): 2.445920428563427, + datetime.date(2061, 11, 30): 2.4499424647870174, + datetime.date(2061, 12, 31): 2.4539711147888794, + datetime.date(2062, 1, 31): 2.458006506663394, + datetime.date(2062, 2, 28): 2.4620485344707776, + datetime.date(2062, 3, 31): 2.46609720912338, + datetime.date(2062, 4, 30): 2.470152541551494, + datetime.date(2062, 5, 31): 2.4742145427033884, + datetime.date(2062, 6, 30): 2.4782832235453345, + datetime.date(2062, 7, 31): 2.4823585950616374, + datetime.date(2062, 8, 31): 2.4864406682546645, + datetime.date(2062, 9, 30): 2.4905294541448764, + datetime.date(2062, 10, 31): 2.494624963770857, + datetime.date(2062, 11, 30): 2.49872720818934, + datetime.date(2062, 12, 31): 2.5028361984752436, + datetime.date(2063, 1, 31): 2.506951956536693, + datetime.date(2063, 2, 28): 2.511074482705632, + datetime.date(2063, 3, 31): 2.515203788111792, + datetime.date(2063, 4, 30): 2.5193398839032044, + datetime.date(2063, 5, 31): 2.5234827812462357, + datetime.date(2063, 6, 30): 2.527632491325613, + datetime.date(2063, 7, 31): 2.531789025344456, + datetime.date(2063, 8, 31): 2.5359523945243083, + datetime.date(2063, 9, 30): 2.5401226101051657, + datetime.date(2063, 10, 31): 2.544299683345508, + datetime.date(2063, 11, 30): 2.5484836255223278, + datetime.date(2063, 12, 31): 2.552674447931164, + datetime.date(2064, 1, 31): 2.5568720975209347, + datetime.date(2064, 2, 29): 2.5610766497778648, + datetime.date(2064, 3, 31): 2.565288116052785, + datetime.date(2064, 4, 30): 2.569506507715193, + datetime.date(2064, 5, 31): 2.5737318361532813, + datetime.date(2064, 6, 30): 2.5779641127739708, + datetime.date(2064, 7, 31): 2.582203349002939, + datetime.date(2064, 8, 31): 2.5864495562846517, + datetime.date(2064, 9, 30): 2.5907027460823957, + datetime.date(2064, 10, 31): 2.594962929878306, + datetime.date(2064, 11, 30): 2.5992301191734017, + datetime.date(2064, 12, 31): 2.6035043254876116, + datetime.date(2065, 1, 31): 2.6077854692914553, + datetime.date(2065, 2, 28): 2.61207365291163, + datetime.date(2065, 3, 31): 2.6163688879242515, + datetime.date(2065, 4, 30): 2.6206711859244707, + datetime.date(2065, 5, 31): 2.624980558526504, + datetime.date(2065, 6, 30): 2.629297017363668, + datetime.date(2065, 7, 31): 2.633620574088408, + datetime.date(2065, 8, 31): 2.6379512403723298, + datetime.date(2065, 9, 30): 2.6422890279062323, + datetime.date(2065, 10, 31): 2.646633948400139, + datetime.date(2065, 11, 30): 2.6509860135833274, + datetime.date(2065, 12, 31): 2.6553452352043645, + datetime.date(2066, 1, 31): 2.6597115512766614, + datetime.date(2066, 2, 28): 2.6640850470993684, + datetime.date(2066, 3, 31): 2.6684657344785068, + datetime.date(2066, 4, 30): 2.67285362523951, + datetime.date(2066, 5, 31): 2.6772487312272557, + datetime.date(2066, 6, 30): 2.681651064306101, + datetime.date(2066, 7, 31): 2.6860606363599095, + datetime.date(2066, 8, 31): 2.690477459292088, + datetime.date(2066, 9, 30): 2.694901545025616, + datetime.date(2066, 10, 31): 2.6993329055030784, + datetime.date(2066, 11, 30): 2.7037715526866983, + datetime.date(2066, 12, 31): 2.708217498558368, + datetime.date(2067, 1, 31): 2.712670725484101, + datetime.date(2067, 2, 28): 2.717131275023347, + datetime.date(2067, 3, 31): 2.7215991592169635, + datetime.date(2067, 4, 30): 2.7260743901256066, + datetime.date(2067, 5, 31): 2.7305569798297644, + datetime.date(2067, 6, 30): 2.7350469404297892, + datetime.date(2067, 7, 31): 2.739544284045931, + datetime.date(2067, 8, 31): 2.744049022818369, + datetime.date(2067, 9, 30): 2.748561168907245, + datetime.date(2067, 10, 31): 2.753080734492696, + datetime.date(2067, 11, 30): 2.7576077317748884, + datetime.date(2067, 12, 31): 2.762142172974048, + datetime.date(2068, 1, 31): 2.766684089591215, + datetime.date(2068, 2, 29): 2.771233474689461, + datetime.date(2068, 3, 31): 2.7757903405495514, + datetime.date(2068, 4, 30): 2.7803546994724444, + datetime.date(2068, 5, 31): 2.784926563779326, + datetime.date(2068, 6, 30): 2.7895059458116416, + datetime.date(2068, 7, 31): 2.794092857931131, + datetime.date(2068, 8, 31): 2.798687312519861, + datetime.date(2068, 9, 30): 2.803289321980258, + datetime.date(2068, 10, 31): 2.8078988987351434, + datetime.date(2068, 11, 30): 2.8125160552277646, + datetime.date(2068, 12, 31): 2.8171408039218306, + datetime.date(2069, 1, 31): 2.8217732004272142, + datetime.date(2069, 2, 28): 2.826413214264807, + datetime.date(2069, 3, 31): 2.8310608579602525, + datetime.date(2069, 4, 30): 2.835716144059792, + datetime.date(2069, 5, 31): 2.840379085130297, + datetime.date(2069, 6, 30): 2.845049693759303, + datetime.date(2069, 7, 31): 2.8497279825550446, + datetime.date(2069, 8, 31): 2.8544139641464876, + datetime.date(2069, 9, 30): 2.8591076511833657, + datetime.date(2069, 10, 31): 2.863809056336214, + datetime.date(2069, 11, 30): 2.868518192296401, + datetime.date(2069, 12, 31): 2.8732350717761643, + datetime.date(2070, 1, 31): 2.8779597469269094, + datetime.date(2070, 2, 28): 2.8826921912140895, + datetime.date(2070, 3, 31): 2.887432417413075, + datetime.date(2070, 4, 30): 2.8921804383202456, + datetime.date(2070, 5, 31): 2.8969362667530225, + datetime.date(2070, 6, 30): 2.9016999155499033, + datetime.date(2070, 7, 31): 2.9064713975704968, + datetime.date(2070, 8, 31): 2.911250725695559, + datetime.date(2070, 9, 30): 2.9160379128270253, + datetime.date(2070, 10, 31): 2.920832971888047, + datetime.date(2070, 11, 30): 2.9256359158230265, + datetime.date(2070, 12, 31): 2.9304467575976516}