├── .gitignore ├── scripts ├── requirements.txt └── process.py ├── README.md ├── .github └── workflows │ └── actions.yml ├── datapackage.json └── data ├── weekly.csv └── monthly.csv /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | venv -------------------------------------------------------------------------------- /scripts/requirements.txt: -------------------------------------------------------------------------------- 1 | requests==2.32.3 2 | pandas==2.2.3 3 | xlrd>=2.0.1 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | badge 2 | 3 | Monthly net new cash flow by US investors into various mutual fund investment 4 | classes (equities, bonds etc). Statistics come from the Investment Company 5 | Institute (ICI). 6 | 7 | ## Data 8 | 9 | The earliest data comes from 2007 up until today. 10 | Data comes from the data provided on the [ICI Statistics pages][ici], in 11 | particular: 12 | 13 | * Summary: Estimated Long-Term Mutual Fund Flows Data (xls) 14 | 15 | [ici]: http://www.ici.org/research/stats 16 | 17 | Notes for Long-Term Mutual Fund Flows Data: 18 | 19 | * All figures are (nominal) millions of US dollars (USD) 20 | * Weekly cash flows are estimates based on reporting covering 98 percent of 21 | industry assets, while monthly flows are actual numbers as reported in ICI's 22 | "Trends in Mutual Fund Investing." 23 | 24 | ## Preparation 25 | 26 | Run the python script: 27 | 28 | Install the requirements 29 | ``` 30 | pip install -r scripts/requirements.txt 31 | ``` 32 | Now run the script 33 | ``` 34 | python scripts/process.py 35 | ``` 36 | 37 | ## Automation 38 | 39 | Up-to-date (auto-updates every month) investor-flow-of-funds dataset could be found on the datahub.io: https://datahub.io/core/investor-flow-of-funds-us 40 | 41 | ## License 42 | 43 | This Data Package is licensed by its maintainers under the [Public Domain Dedication and License (PDDL)](http://opendatacommons.org/licenses/pddl/1.0/). -------------------------------------------------------------------------------- /.github/workflows/actions.yml: -------------------------------------------------------------------------------- 1 | name: Update investor flow of funds US data 2 | 3 | on: 4 | # Schedule to run on the 1st day of each month 5 | schedule: 6 | - cron: '0 0 1 * *' 7 | 8 | # Run on push to main branch 9 | push: 10 | branches: 11 | - main 12 | 13 | # Run on pull requests targeting the main branch 14 | pull_request: 15 | branches: 16 | - main 17 | 18 | # Allows manual triggering of the workflow 19 | workflow_dispatch: 20 | 21 | jobs: 22 | build: 23 | runs-on: ubuntu-latest 24 | 25 | if: github.ref == 'refs/heads/main' 26 | 27 | steps: 28 | - name: Check out repository 29 | uses: actions/checkout@v3 30 | 31 | - name: Set up Python 3.12 32 | uses: actions/setup-python@v4 33 | with: 34 | python-version: '3.12' 35 | 36 | - name: Install Python dependencies 37 | run: | 38 | python -m venv venv 39 | source venv/bin/activate 40 | pip install --upgrade pip 41 | pip install -r scripts/requirements.txt 42 | 43 | - name: Run scripts 44 | run: | 45 | source venv/bin/activate 46 | python scripts/process.py 47 | 48 | - name: Configure Git 49 | run: | 50 | git config --global user.email "${{ env.CI_COMMIT_EMAIL }}" 51 | git config --global user.name "${{ env.CI_COMMIT_NAME }}" 52 | env: 53 | CI_COMMIT_NAME: "Automated commit" 54 | CI_COMMIT_EMAIL: "actions@users.noreply.github.com" 55 | 56 | - name: Commit and Push changes 57 | run: | 58 | git diff --quiet && echo "No changes to commit" || ( 59 | git add data && 60 | git commit -m "${{ env.CI_COMMIT_MESSAGE }}" && 61 | git push origin main 62 | ) 63 | env: 64 | CI_COMMIT_MESSAGE: "Automated commit" -------------------------------------------------------------------------------- /datapackage.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "investor-flow-of-funds-us", 3 | "title": "US Investor Flow of Funds into Investment Classes (Bonds, Equities etc)", 4 | "version": "0.1.0", 5 | "licenses": [ 6 | { 7 | "name": "ODC-PDDL-1.0", 8 | "path": "http://opendatacommons.org/licenses/pddl/", 9 | "title": "Open Data Commons Public Domain Dedication and License v1.0" 10 | } 11 | ], 12 | "author": "Rufus Pollock (http://rufuspollock.org)", 13 | "sources": [ 14 | { 15 | "name": "Investment Company Institute (ICI)", 16 | "path": "http://www.ici.org/research/stats", 17 | "title": "Investment Company Institute (ICI)" 18 | } 19 | ], 20 | "resources": [ 21 | { 22 | "name": "monthly", 23 | "path": "data/monthly.csv", 24 | "format": "csv", 25 | "description": "All figures are in millions of USD", 26 | "mediatype": "text/csv", 27 | "schema": { 28 | "fields": [ 29 | { 30 | "name": "Date", 31 | "type": "date", 32 | "description": "", 33 | "format": "any" 34 | }, 35 | { 36 | "name": "Total Equity", 37 | "type": "number", 38 | "description": "" 39 | }, 40 | { 41 | "name": "Domestic Equity", 42 | "type": "number", 43 | "description": "" 44 | }, 45 | { 46 | "name": "World Equity", 47 | "type": "number", 48 | "description": "" 49 | }, 50 | { 51 | "name": "Hybrid", 52 | "type": "number", 53 | "description": "" 54 | }, 55 | { 56 | "name": "Total Bond", 57 | "type": "number", 58 | "description": "" 59 | }, 60 | { 61 | "name": "Taxable Bond", 62 | "type": "number", 63 | "description": "" 64 | }, 65 | { 66 | "name": "Municipal Bond", 67 | "type": "number", 68 | "description": "" 69 | }, 70 | { 71 | "name": "Total", 72 | "type": "number", 73 | "description": "" 74 | } 75 | ] 76 | } 77 | }, 78 | { 79 | "name": "weekly", 80 | "path": "data/weekly.csv", 81 | "format": "csv", 82 | "mediatype": "text/csv", 83 | "description": "All figures are in millions of USD", 84 | "schema": { 85 | "fields": [ 86 | { 87 | "name": "Date", 88 | "type": "date", 89 | "description": "", 90 | "format": "any" 91 | }, 92 | { 93 | "name": "Total Equity", 94 | "type": "number", 95 | "description": "" 96 | }, 97 | { 98 | "name": "Domestic Equity", 99 | "type": "number", 100 | "description": "" 101 | }, 102 | { 103 | "name": "World Equity", 104 | "type": "number", 105 | "description": "" 106 | }, 107 | { 108 | "name": "Hybrid", 109 | "type": "number", 110 | "description": "" 111 | }, 112 | { 113 | "name": "Total Bond", 114 | "type": "number", 115 | "description": "" 116 | }, 117 | { 118 | "name": "Taxable Bond", 119 | "type": "number", 120 | "description": "" 121 | }, 122 | { 123 | "name": "Municipal Bond", 124 | "type": "number", 125 | "description": "" 126 | }, 127 | { 128 | "name": "Total", 129 | "type": "number", 130 | "description": "" 131 | } 132 | ] 133 | } 134 | } 135 | ], 136 | "views": [ 137 | { 138 | "name": "graph", 139 | "resources": [ 140 | "monthly", 141 | "weekly" 142 | ], 143 | "title": "Mutual Fund Flows", 144 | "specType": "simple", 145 | "spec": { 146 | "type": "bar", 147 | "group": "Date", 148 | "series": [ 149 | "Total Equity", 150 | "Total Bond" 151 | ] 152 | } 153 | } 154 | ], 155 | "collection": "economic-data" 156 | } -------------------------------------------------------------------------------- /scripts/process.py: -------------------------------------------------------------------------------- 1 | import os 2 | import shutil 3 | import requests 4 | import pandas as pd 5 | 6 | archive = 'archive/' 7 | 8 | pd.options.mode.chained_assignment = None 9 | 10 | fields = [ 11 | 'Date', 12 | 'Total Equity', 13 | 'Domestic Equity', 14 | 'World Equity', 15 | 'Hybrid', 16 | 'Total Bond', 17 | 'Taxable Bond', 18 | 'Municipal Bond', 19 | 'Total' 20 | ] 21 | 22 | def resolve_duplicates(df): 23 | df['non_null_count'] = df.notnull().sum(axis=1) 24 | df = df.sort_values(by=['Date', 'non_null_count'], ascending=[True, False]) 25 | def pick_relevant_row(group): 26 | max_non_null = group['non_null_count'].max() 27 | most_complete = group[group['non_null_count'] == max_non_null] 28 | return most_complete.iloc[-1] 29 | df_cleaned = df.groupby('Date', group_keys=False).apply(pick_relevant_row) 30 | return df_cleaned.drop(columns=['non_null_count']) 31 | 32 | def download_historical_data(): 33 | for date in range(2011,2021): 34 | source = 'http://www.ici.org/info/flows_data_%s.xls' % date 35 | path = 'archive/flows_data_%s.xls' % date 36 | response = requests.get(source) 37 | with open(path, 'wb') as f: 38 | f.write(response.content) 39 | 40 | def download_present_data(): 41 | base_url = "https://www.ici.org/system/files/{year}-{month:02d}/etf_flows_data_{year}.xls" 42 | 43 | years = range(2021, 2025) 44 | months = range(1, 13) 45 | 46 | # Check each URL 47 | for year in years: 48 | for month in months: 49 | url = base_url.format(year=year, month=month) 50 | try: 51 | response = requests.head(url) 52 | if response.status_code == 200: 53 | print(f"Downloading {url}") 54 | response = requests.get(url) 55 | with open(f"archive/flows_data_{year}-{month:02d}.xls", "wb") as f: 56 | f.write(response.content) 57 | else: 58 | print(f"No data found for {year}-{month:02d}") 59 | except requests.RequestException as e: 60 | print(f"Error checking {year}-{month:02d}: {e}") 61 | 62 | def standardize_date(date): 63 | return pd.to_datetime(date).strftime('%Y-%m-%d') 64 | 65 | def extract_2016_2020(file): 66 | print(f"Processing {archive + file}") 67 | df = pd.read_excel(archive + file) 68 | df = df.dropna(how='all').reset_index(drop=True) 69 | df.rename(columns={ 70 | 'Investment Company Institute': 'Date', 71 | 'Unnamed: 3': 'Total Equity', 72 | 'Unnamed: 5': 'Domestic Equity', 73 | 'Unnamed: 17': 'World Equity', 74 | 'Unnamed: 23': 'Hybrid', 75 | 'Unnamed: 25': 'Total Bond', 76 | 'Unnamed: 27': 'Taxable Bond', 77 | 'Unnamed: 39': 'Municipal Bond', 78 | 'Unnamed: 1': 'Total' 79 | }, inplace=True) 80 | df = df.loc[:, ~df.columns.str.contains('^Unnamed')] 81 | # Find the split points 82 | monthly_start = df[df.iloc[:, 0].str.lower().str.contains("monthly", na=False)].index[0] 83 | weekly_start = df[df.iloc[:, 0].str.lower().str.contains("weekly", na=False)].index[0] 84 | 85 | # Extract Monthly and Weekly DataFrames 86 | monthly_data = df.iloc[monthly_start+1:weekly_start].dropna(axis=1, how='all') 87 | weekly_data = df.iloc[weekly_start+1:].dropna(how='all') 88 | 89 | monthly_data.iloc[:, 0] = pd.to_datetime(monthly_data.iloc[:, 0], errors='coerce').dt.strftime('%Y-%m-%d') 90 | monthly_data.dropna(subset=[monthly_data.columns[0]], inplace=True, how='all') 91 | weekly_data.iloc[:, 0] = pd.to_datetime(weekly_data.iloc[:, 0], errors='coerce').dt.strftime('%Y-%m-%d') 92 | weekly_data.dropna(subset=[weekly_data.columns[0]], inplace=True, how='all') 93 | 94 | # Reset index for clarity 95 | monthly_data.reset_index(drop=True, inplace=True) 96 | weekly_data.reset_index(drop=True, inplace=True) 97 | 98 | return monthly_data, weekly_data 99 | 100 | def extract_all(file): 101 | print(f"Processing {archive + file}") 102 | df = pd.read_excel(archive + file) 103 | df = df.dropna(how='all').reset_index(drop=True) 104 | 105 | # Find the split points 106 | monthly_start = df[df.iloc[:, 0].str.lower().str.contains("monthly", na=False)].index[0] 107 | weekly_start = df[df.iloc[:, 0].str.lower().str.contains("weekly", na=False)].index[0] 108 | 109 | # Extract Monthly and Weekly DataFrames 110 | monthly_data = df.iloc[monthly_start+1:weekly_start] 111 | weekly_data = df.iloc[weekly_start+1:].dropna(how='all') 112 | 113 | # Clean column names for both DataFrames 114 | monthly_data.columns = df.iloc[monthly_start - 1] 115 | weekly_data.columns = df.iloc[weekly_start - 1] 116 | 117 | # Handle cases where data has 18 columns 118 | if len(monthly_data.columns) == 18: 119 | monthly_data = monthly_data.iloc[:, :len(fields)] # Take the first 9 columns 120 | if len(weekly_data.columns) == 18: 121 | weekly_data = weekly_data.iloc[:, :len(fields)] # Take the first 9 columns 122 | 123 | # Assign correct column names 124 | monthly_data.columns = fields 125 | weekly_data.columns = fields 126 | 127 | # Convert the first column to datetime 128 | monthly_data.iloc[:, 0] = pd.to_datetime(monthly_data.iloc[:, 0], errors='coerce').dt.strftime('%Y-%m-%d') 129 | monthly_data.dropna(subset=[monthly_data.columns[0]], inplace=True, how='all') 130 | weekly_data.iloc[:, 0] = pd.to_datetime(weekly_data.iloc[:, 0], errors='coerce').dt.strftime('%Y-%m-%d') 131 | weekly_data.dropna(subset=[weekly_data.columns[0]], inplace=True, how='all') 132 | 133 | # Reset index for clarity 134 | monthly_data.reset_index(drop=True, inplace=True) 135 | weekly_data.reset_index(drop=True, inplace=True) 136 | 137 | return monthly_data, weekly_data 138 | 139 | 140 | def process(): 141 | if not os.path.exists(archive): 142 | os.makedirs(archive) 143 | download_historical_data() 144 | download_present_data() 145 | list_of_files = os.listdir(archive) 146 | merged_monthly = pd.DataFrame(columns=fields) 147 | merged_weekly = pd.DataFrame(columns=fields) 148 | for file in list_of_files: 149 | if '2016' in file or '2017' in file or '2018' in file or '2019' in file or '2020' in file: 150 | monthly1, weekly1 = extract_2016_2020(file) 151 | merged_monthly = pd.concat([merged_monthly, monthly1], ignore_index=True) 152 | merged_weekly = pd.concat([merged_weekly, weekly1], ignore_index=True) 153 | else: 154 | monthly2, weekly2 = extract_all(file) 155 | merged_monthly = pd.concat([merged_monthly, monthly2], ignore_index=True) 156 | merged_weekly = pd.concat([merged_weekly, weekly2], ignore_index=True) 157 | 158 | # Sort by Date 159 | merged_monthly.sort_values(by='Date', inplace=True) 160 | merged_weekly.sort_values(by='Date', inplace=True) 161 | 162 | # Drop Duplicates 163 | merged_monthly.drop_duplicates(inplace=True) 164 | merged_weekly.drop_duplicates(inplace=True) 165 | 166 | # Resolve special duplicates 167 | merged_monthly = resolve_duplicates(merged_monthly) 168 | merged_weekly = resolve_duplicates(merged_weekly) 169 | 170 | # Save to CSV 171 | merged_monthly.to_csv('data/monthly.csv', index=False) 172 | merged_weekly.to_csv('data/weekly.csv', index=False) 173 | 174 | # Remove the downloaded files after processing 175 | shutil.rmtree(archive) 176 | 177 | if __name__ == '__main__': 178 | process() 179 | 180 | -------------------------------------------------------------------------------- /data/weekly.csv: -------------------------------------------------------------------------------- 1 | Date,Total Equity,Domestic Equity,World Equity,Hybrid,Total Bond,Taxable Bond,Municipal Bond,Total 2 | 2011-10-05,-4002,-4499.0,497,-1354.0,-5828,-6258.0,430,-11184.0 3 | 2011-10-12,-7397,-5842.0,-1555,512.0,3954,3927.0,28,-2931.0 4 | 2011-10-19,-3292,-3466.0,174,1399.0,5652,5102.0,550,3759.0 5 | 2011-10-26,-3696,-2998.0,-698,2631.0,4910,4070.0,841,3846.0 6 | 2011-12-07,-7956,-5761.0,-2196,1089.0,3523,2068.0,1456,-3343.0 7 | 2011-12-14,-5912,-4220.0,-1692,747.0,5547,4686.0,861,382.0 8 | 2011-12-21,-4573,-2690.0,-1882,170.0,2536,1347.0,1189,-1866.0 9 | 2011-12-28,-5216,-3988.0,-1229,389.0,2211,1234.0,977,-2616.0 10 | 2012-12-05,-7180,-5858.0,-1321,-71.0,5157,4084.0,1074,-2093.0 11 | 2012-12-12,-8479,-7233.0,-1246,119.0,1787,1576.0,211,-6572.0 12 | 2012-12-19,-4996,-5284.0,289,-20.0,427,3690.0,-3263,-4590.0 13 | 2012-12-26,-3274,-3637.0,363,757.0,2457,3141.0,-685,-61.0 14 | 2013-12-04,2055,-1050.0,3106,957.0,-3181,-1874.0,-1307,-168.0 15 | 2013-12-11,-1203,-4525.0,3322,864.0,-6874,-4299.0,-2575,-7213.0 16 | 2013-12-18,-1269,-4254.0,2985,441.0,-8090,-5568.0,-2522,-8917.0 17 | 2013-12-23,2466,952.0,1514,827.0,-3464,-2064.0,-1400,-172.0 18 | 2013-12-31,6003,3315.0,2688,1091.0,-2851,-404.0,-2447,4243.0 19 | 2014-12-03,-2661,-2952.0,291,-678.0,171,-670.0,841,-3168.0 20 | 2014-12-10,-3238,-4938.0,1700,-1696.0,-3289,-4394.0,1105,-8223.0 21 | 2014-12-17,-7131,-4687.0,-2444,-2357.0,-9311,-10261.0,950,-18799.0 22 | 2014-12-22,-2431,-1060.0,-1371,-808.0,-2993,-3322.0,329,-6232.0 23 | 2014-12-30,-1550,-1487.0,-63,-602.0,1022,-367.0,1389,-1130.0 24 | 2015-12-02,-8849,-7966.0,-883,-1224.0,-1029,-1952.0,923,-11102.0 25 | 2015-12-09,-6319,-5265.0,-1054,-2289.0,-6489,-7307.0,818,-15097.0 26 | 2015-12-16,-11213,-7582.0,-3631,-5602.0,-11997,-12644.0,647,-28812.0 27 | 2015-12-22,-3916,-1378.0,-2538,-1606.0,-4559,-5821.0,1262,-10081.0 28 | 2015-12-30,-6040,-2925.0,-3115,-1753.0,-4604,-6847.0,2243,-12397.0 29 | 2017-01-04,-12703,-10964.0,-1739,-1963.0,758,2971.0,-2213,-13908.0 30 | 2017-01-11,622,-174.0,797,-943.0,6723,5136.0,1587,6403.0 31 | 2017-01-18,-1292,-1237.0,-56,-123.0,5378,4267.0,1111,3963.0 32 | 2017-01-25,-2775,-3987.0,1212,-592.0,2124,1496.0,628,-1243.0 33 | 2017-12-06,-7420,-9282.0,1862,-2189.0,4351,4903.0,-552,-5258.0 34 | 2017-12-13,-13583,-13281.0,-302,-1487.0,3503,3612.0,-110,-11567.0 35 | 2017-12-20,-12025,-12883.0,858,-2207.0,753,954.0,-201,-13479.0 36 | 2017-12-27,-2094,-3119.0,1025,-1010.0,2568,3021.0,-454,-536.0 37 | 2019-01-02,-14471,-6208.0,-8263,-5443.0,-17506,-17264.0,-242,-37421.0 38 | 2019-01-09,6892,5629.0,1263,-114.0,-3726,-5454.0,1728,3053.0 39 | 2019-01-16,4382,1750.0,2632,19.0,6190,4231.0,1959,10590.0 40 | 2019-01-23,3111,1125.0,1986,386.0,7008,5479.0,1529,10505.0 41 | 2019-01-30,183,-924.0,1107,-513.0,6850,4684.0,2166,6521.0 42 | 2019-12-04,-10343,-10939.0,596,-756.0,8729,6989.0,1739,-2370.0 43 | 2019-12-11,-17686,-15411.0,-2275,-1813.0,8275,6199.0,2076,-11224.0 44 | 2019-12-18,-16592,-11852.0,-4740,-1819.0,7017,4807.0,2210,-11394.0 45 | 2019-12-24,-7832,-6379.0,-1453,-700.0,8605,6218.0,2387,74.0 46 | 2019-12-31,-5844,-5621.0,-223,-121.0,5865,4597.0,1268,-100.0 47 | 2020-12-02,-23041,-8336.0,-14705,-150.0,18481,17101.0,1380,-4711.0 48 | 2020-12-09,-7886,-5763.0,-2123,-542.0,10479,8621.0,1859,2051.0 49 | 2020-12-16,-20968,-15231.0,-5737,-1680.0,6138,4349.0,1789,-16511.0 50 | 2020-12-22,-6499,-4658.0,-1841,-1425.0,14083,12417.0,1666,6158.0 51 | 2020-12-29,-8224,-6399.0,-1825,825.0,11242,8293.0,2949,3843.0 52 | 2022-07-06,10167,,3058,,842,,2216, 53 | 2022-07-13,7409,,2808,,2067,,741, 54 | 2022-07-20,3468,,102,,-417,,519, 55 | 2022-07-27,14213,,9667,,8598,,1069, 56 | 2022-08-03,9786,,4016,,3079,,937, 57 | 2022-08-10,19494,,11106,,11532,,-426, 58 | 2022-08-17,20767,,15974,,17094,,-1120, 59 | 2022-08-24,3908,,6602,,7281,,-679, 60 | 2022-08-31,-5292,,-5345,,-5281,,-64, 61 | 2022-09-07,-5058,,-7067,,-5688,,-1379, 62 | 2022-09-14,20797,,15104,,15639,,-535, 63 | 2022-09-21,-4290,,-3367,,-2269,,-1098, 64 | 2022-09-28,2326,,5654,,3947,,1707, 65 | 2022-10-05,21289,,10472,,7344,,3128, 66 | 2022-10-12,12781,,9106,,8080,,1026, 67 | 2022-10-19,17887,,14550,,13107,,1443, 68 | 2022-10-26,30922,,21516,,18904,,2612, 69 | 2022-11-02,22494,,19505,,16727,,2778, 70 | 2022-11-09,8832,,3613,,242,,3371, 71 | 2022-11-16,39995,,28388,,23164,,5225, 72 | 2022-11-22,12341,,3437,,785,,2652, 73 | 2022-11-30,-931,,-629,,-3570,,2941, 74 | 2022-12-07,-88,,-4661,,-6750,,2089, 75 | 2022-12-14,47630,,41257,,35465,,5791, 76 | 2022-12-21,-20900,,-16192,,-17891,,1698, 77 | 2022-12-28,13809,,8720,,7449,,1271, 78 | 2023-01-04,1108,,-4208,,-5301,,1092, 79 | 2023-01-11,15566,,4259,,-651,,4910, 80 | 2023-01-18,8870,,3871,,-512,,4383, 81 | 2023-01-25,9347,,3931,,-3481,,7412, 82 | 2023-02-01,6019,,8703,,4668,,4034, 83 | 2023-02-08,6957,,5626,,3118,,2508, 84 | 2023-02-15,2480,,4084,,2006,,2078, 85 | 2023-02-22,-2172,,-1905,,-3549,,1644, 86 | 2023-03-01,-241,,-4107,,-6014,,1907, 87 | 2023-03-08,7766,,2885,,2715,,170, 88 | 2023-03-15,5032,,2945,,4240,,-1295, 89 | 2023-03-22,17364,,7317,,7026,,291, 90 | 2023-03-29,-1060,,-5327,,-5467,,140, 91 | 2023-04-05,9395,,-1781,,-3385,,1604, 92 | 2023-04-12,11470,,6781,,6155,,626, 93 | 2023-04-19,9132,,6712,,4780,,1932, 94 | 2023-04-26,9726,,7346,,6876,,470, 95 | 2023-05-03,-5207,,-6552,,-5669,,-883, 96 | 2023-05-10,5619,,1355,,-7,,1363, 97 | 2023-05-17,1871,,-2971,,-4210,,1239, 98 | 2023-05-24,14971,,8226,,6493,,1733, 99 | 2023-05-31,6535,,6319,,5413,,906, 100 | 2023-06-07,12933,,9312,,7660,,1651, 101 | 2023-06-14,40456,,36430,,29088,,7341, 102 | 2023-06-21,-3540,,-7915,,-11058,,3142, 103 | 2023-06-28,12541,,12838,,13564,,-726, 104 | 2023-07-05,22545,,19017,,18476,,541, 105 | 2023-07-12,9789,,5601,,3729,,1872, 106 | 2023-07-19,13759,,10945,,7877,,3068, 107 | 2023-07-26,17071,,10456,,8397,,2058, 108 | 2023-08-02,8089,,7292,,7266,,26, 109 | 2023-08-09,2132,,-45,,-773,,728, 110 | 2023-08-16,2020,,3971,,4092,,-120, 111 | 2023-08-23,-4127,,-5909,,-6392,,484, 112 | 2023-08-30,10616,,6658,,6687,,-29, 113 | 2023-09-06,5238,,4303,,3664,,639, 114 | 2023-09-13,27062,,23078,,23324,,-246, 115 | 2023-09-20,360,,-3378,,-4092,,714, 116 | 2023-09-27,5215,,5960,,6934,,-974, 117 | 2023-10-04,8649,,5436,,4949,,487, 118 | 2023-10-11,6162,,217,,334,,-118, 119 | 2023-10-18,4532,,4503,,4147,,355, 120 | 2023-10-25,8229,,3791,,4945,,-1153, 121 | 2023-11-01,11651,,4052,,5714,,-1662, 122 | 2023-11-08,27713,,14756,,13767,,989, 123 | 2023-11-15,29726,,20456,,19339,,1117, 124 | 2023-11-21,27892,,23355,,19609,,3747, 125 | 2023-11-29,17404,,16224,,14982,,1242, 126 | 2023-12-06,16544,,14314,,12377,,1937, 127 | 2023-12-13,31026,,28179,,25856,,2323, 128 | 2023-12-20,31394,,29220,,22085,,7135, 129 | 2023-12-27,33594,,27384,,20050,,7334, 130 | 2024-01-03,13604,,7688,,5922,,1765, 131 | 2024-01-10,5696,,1896,,1506,,390, 132 | 2024-01-17,6796,,-284,,-699,,415, 133 | 2024-01-24,11768,,8246,,7116,,1130, 134 | 2024-01-31,21078,,19256,,16935,,2322, 135 | 2024-02-07,-5419,,-7514,,-10354,,2840, 136 | 2024-02-14,22950,,19028,,17251,,1777, 137 | 2024-02-21,6125,,4474,,2666,,1809, 138 | 2024-02-28,20442,,19919,,17535,,2383, 139 | 2024-03-06,22040,,14510,,11817,,2693, 140 | 2024-03-13,46974,,41572,,40408,,1164, 141 | 2024-03-20,10161,,10301,,4466,,5835, 142 | 2024-03-27,26403,,21283,,19927,,1355, 143 | 2024-05-01,5323,,2227,,1860,,367, 144 | 2024-05-08,25306,,12511,,10050,,2461, 145 | 2024-05-15,23383,,17777,,14775,,3001, 146 | 2024-05-22,24775,,19002,,15451,,3551, 147 | 2024-05-29,557,,421,,217,,204, 148 | 2024-06-05,22916,,14401,,13383,,1018, 149 | 2024-06-12,20345,,11773,,6829,,4944, 150 | 2024-06-18,-4556,,-8164,,-8269,,105, 151 | 2024-06-26,40433,,33862,,27798,,6064, 152 | 2024-07-02,26228,,22045,,20722,,1323, 153 | 2024-07-10,16561,,7425,,5803,,1621, 154 | 2024-07-17,54173,,40066,,39112,,954, 155 | 2024-07-24,37116,,28749,,30049,,-1300, 156 | 2024-12-04,27170,,22014,,22510,,-496, 157 | 2024-12-11,36551,,28883,,29251,,-368, 158 | 2024-12-18,23053,,27124,,20767,,6358, 159 | 2024-12-24,35211,,36142,,32529,,3613, 160 | 2024-12-31,26027,,21578,,19932,,1646, 161 | -------------------------------------------------------------------------------- /data/monthly.csv: -------------------------------------------------------------------------------- 1 | Date,Total Equity,Domestic Equity,World Equity,Hybrid,Total Bond,Taxable Bond,Municipal Bond,Total 2 | 2007-01-31,27428,5964.0,21463,5513.0,15044,12222.0,2822,47984.0 3 | 2007-02-28,25456,8843.0,16613,5126.0,14988,11859.0,3129,45570.0 4 | 2007-03-31,6551,-486.0,7037,3764.0,15782,12925.0,2857,26097.0 5 | 2007-04-30,16183,-63.0,16246,4354.0,13622,12276.0,1346,34158.0 6 | 2007-05-31,-2876,-14176.0,11300,4318.0,20813,17215.0,3598,22256.0 7 | 2007-06-30,2848,-5663.0,8510,2774.0,7498,6973.0,525,13120.0 8 | 2007-07-31,9740,-5076.0,14816,3210.0,4172,3976.0,196,17122.0 9 | 2007-08-31,-16769,-18451.0,1682,1637.0,-4092,-2925.0,-1168,-19224.0 10 | 2007-09-30,6814,-4801.0,11615,2321.0,7382,5888.0,1495,16518.0 11 | 2007-10-31,9507,-6017.0,15525,3629.0,11456,10754.0,701,24592.0 12 | 2007-11-30,-11208,-16034.0,4826,2218.0,2014,3145.0,-1131,-6976.0 13 | 2007-12-31,405,-9557.0,9962,2175.0,617,4052.0,-3434,3198.0 14 | 2008-01-31,-45055,-35860.0,-9195,-667.0,23171,20674.0,2497,-22551.0 15 | 2008-02-29,8511,2122.0,6390,4450.0,13760,12547.0,1213,26721.0 16 | 2008-03-31,-9430,-8701.0,-729,181.0,8707,6156.0,2551,-542.0 17 | 2008-04-30,11867,5063.0,6804,3188.0,16575,13107.0,3468,31630.0 18 | 2008-05-31,14664,5579.0,9085,3559.0,17131,12124.0,5007,35354.0 19 | 2008-06-30,-4197,-4064.0,-133,522.0,4722,2103.0,2619,1047.0 20 | 2008-07-31,-25933,-18343.0,-7590,-2096.0,1966,-517.0,2483,-26063.0 21 | 2008-08-31,-19574,-1861.0,-17713,-24.0,7736,5314.0,2422,-11862.0 22 | 2008-09-30,-50061,-28135.0,-21926,-8057.0,-1461,-830.0,-631,-59578.0 23 | 2008-10-31,-70581,-44650.0,-25931,-16334.0,-41277,-32915.0,-8363,-128193.0 24 | 2008-11-30,-19704,-10561.0,-9143,-6750.0,-14899,-13725.0,-1174,-41353.0 25 | 2008-12-31,-19268,-8983.0,-10286,-3208.0,-7104,-2791.0,-4313,-29581.0 26 | 2009-01-31,8890,7175.0,1715,-546.0,16940,13078.0,3862,25284.0 27 | 2009-02-28,-24635,-13509.0,-11126,-4658.0,16812,12451.0,4360,-12481.0 28 | 2009-03-31,-24732,-15153.0,-9579,-4865.0,19982,16455.0,3527,-9615.0 29 | 2009-04-30,11575,9172.0,2403,1997.0,28855,23764.0,5091,42426.0 30 | 2009-05-31,17939,13634.0,4305,2721.0,32316,25759.0,6556,52976.0 31 | 2009-06-30,12024,5631.0,6393,1713.0,29338,23966.0,5373,43076.0 32 | 2009-07-31,9384,2690.0,6694,1669.0,35529,28737.0,6792,46582.0 33 | 2009-08-31,3620,-1585.0,5205,3557.0,42997,33784.0,9213,50174.0 34 | 2009-09-30,-1817,-4851.0,3034,3083.0,47253,36929.0,10323,48519.0 35 | 2009-10-31,-7079,-13901.0,6822,3049.0,45028,40268.0,4760,40998.0 36 | 2009-11-30,-2390,-8198.0,5809,3078.0,35971,30817.0,5155,36659.0 37 | 2009-12-31,-3681,-8652.0,4972,2217.0,26418,21732.0,4686,24954.0 38 | 2010-01-31,13961,4227.0,9734,4049.0,26944,22389.0,4555,44955.0 39 | 2010-02-28,-169,-5171.0,5003,2185.0,27383,22328.0,5056,29399.0 40 | 2010-03-31,9888,1888.0,8000,4762.0,37783,33760.0,4023,52432.0 41 | 2010-04-30,10428,1971.0,8457,4087.0,27672,26752.0,920,42187.0 42 | 2010-05-31,-23398,-17872.0,-5526,-2544.0,13856,11221.0,2635,-12086.0 43 | 2010-06-30,-2742,-5207.0,2465,340.0,18775,16866.0,1909,16373.0 44 | 2010-07-31,-11879,-11521.0,-359,177.0,29082,25272.0,3810,17380.0 45 | 2010-08-31,-15027,-14145.0,-883,-464.0,30401,25208.0,5193,14910.0 46 | 2010-09-30,-8767,-12111.0,3344,3082.0,24833,22543.0,2291,19148.0 47 | 2010-10-31,685,-5831.0,6516,4633.0,22828,20844.0,1984,28146.0 48 | 2010-11-30,649,-6396.0,7045,5112.0,-1875,5798.0,-7673,3885.0 49 | 2010-12-31,1295,-12523.0,13818,3889.0,-21314,-8008.0,-13307,-16131.0 50 | 2011-01-31,18738,10799.0,7939,8992.0,-2035,10362.0,-12397,25695.0 51 | 2011-02-28,11425,7386.0,4040,9091.0,7977,12277.0,-4299,28494.0 52 | 2011-03-31,2132,-5825.0,7957,4721.0,12978,15614.0,-2636,19831.0 53 | 2011-04-30,6348,1436.0,4912,5234.0,13969,17691.0,-3722,25551.0 54 | 2011-05-31,-4208,-6317.0,2109,4061.0,19655,19666.0,-11,19508.0 55 | 2011-06-30,-22248,-19858.0,-2390,2066.0,13196,12303.0,893,-6986.0 56 | 2011-07-31,-31769,-29330.0,-2440,885.0,9012,8980.0,31,-21873.0 57 | 2011-08-31,-28113,-25068.0,-3045,-3536.0,-4132,-3129.0,-1004,-35781.0 58 | 2011-09-30,-12555,-13751.0,1196,1130.0,9782,8142.0,1640,-1642.0 59 | 2011-10-31,-20687,-18185.0,-2502,4486.0,11992,10027.0,1965,-4209.0 60 | 2011-11-30,-18948,-14316.0,-4632,-4873.0,18602,15555.0,3047,-5218.0 61 | 2011-12-31,-29345,-20387.0,-8958,2503.0,9664,5057.0,4607,-17178.0 62 | 2012-01-31,-594,-2716.0,2121,8395.0,26527,19920.0,6607,34328.0 63 | 2012-02-29,1503,-1483.0,2986,8235.0,34715,28402.0,6313,44454.0 64 | 2012-03-31,-10157,-12180.0,2023,6333.0,30854,27342.0,3512,27029.0 65 | 2012-04-30,-6564,-15211.0,8647,3250.0,24735,22124.0,2612,21421.0 66 | 2012-05-31,-8693,-11717.0,3024,550.0,19012,14127.0,4885,10869.0 67 | 2012-06-30,-6433,-9315.0,2883,486.0,16507,12518.0,3989,10560.0 68 | 2012-07-31,-9013,-9066.0,53,4564.0,25026,19575.0,5451,20578.0 69 | 2012-08-31,-18095,-14374.0,-3721,5770.0,31898,26430.0,5468,19574.0 70 | 2012-09-30,-24439,-19760.0,-4678,5965.0,29175,25162.0,4013,10701.0 71 | 2012-10-31,-16418,-14439.0,-1979,3858.0,34517,29653.0,4864,21957.0 72 | 2012-11-30,-23169,-19322.0,-3847,-1593.0,23734,18556.0,5177,-1029.0 73 | 2012-12-31,-30666,-26315.0,-4352,299.0,7250,10396.0,-3146,-23118.0 74 | 2013-01-31,37534,18526.0,19009,10158.0,32687,25506.0,7181,80379.0 75 | 2013-02-28,14368,-1364.0,15732,9028.0,20276,17827.0,2449,43673.0 76 | 2013-03-31,14777,2296.0,12481,7005.0,16144,16438.0,-294,37926.0 77 | 2013-04-30,5645,-1119.0,6764,12536.0,12063,13862.0,-1798,30245.0 78 | 2013-05-31,6202,-3529.0,9731,5708.0,12849,13787.0,-937,24760.0 79 | 2013-06-30,6168,-4243.0,10410,601.0,-59319,-42747.0,-16573,-52550.0 80 | 2013-07-31,19350,8996.0,10354,8375.0,-16371,-6138.0,-10233,11354.0 81 | 2013-08-31,7439,-1027.0,8467,5073.0,-28883,-16813.0,-12071,-16371.0 82 | 2013-09-30,4881,-3384.0,8264,4141.0,-10969,-4536.0,-6433,-1948.0 83 | 2013-10-31,20683,8013.0,12670,5236.0,-15618,-10233.0,-5385,10301.0 84 | 2013-11-30,22318,6400.0,15918,1868.0,-14147,-9689.0,-4459,10038.0 85 | 2013-12-31,-215,-12190.0,11975,224.0,-19630,-9570.0,-10060,-19621.0 86 | 2014-01-31,23761,6952.0,16810,2963.0,2490,2057.0,433,29214.0 87 | 2014-02-28,19062,9386.0,9676,5627.0,8714,7034.0,1681,33403.0 88 | 2014-03-31,10452,1997.0,8455,3803.0,13799,12246.0,1553,28054.0 89 | 2014-04-30,6267,-455.0,6722,4900.0,8727,7537.0,1190,19894.0 90 | 2014-05-31,-229,-7167.0,6938,3744.0,12036,8490.0,3545,15550.0 91 | 2014-06-30,-2072,-10476.0,8404,4347.0,11684,9335.0,2349,13959.0 92 | 2014-07-31,-6542,-13811.0,7269,3452.0,10748,9340.0,1409,7658.0 93 | 2014-08-31,1161,-6497.0,7658,2075.0,5237,1981.0,3256,8473.0 94 | 2014-09-30,-5211,-13411.0,8200,1944.0,-19372,-22389.0,3017,-22640.0 95 | 2014-10-31,5243,262.0,4981,-1947.0,-6251,-8405.0,2154,-2955.0 96 | 2014-11-30,-2507,-6092.0,3585,992.0,14945,11979.0,2966,13429.0 97 | 2014-12-31,-23948,-20662.0,-3286,-3975.0,-19142,-23577.0,4435,-47066.0 98 | 2015-01-31,13010,6601.0,6409,2668.0,9988,5388.0,4600,25665.0 99 | 2015-02-28,8966,1775.0,7190,3389.0,17156,14526.0,2630,29511.0 100 | 2015-03-31,5063,-8618.0,13680,3384.0,6309,4827.0,1482,14755.0 101 | 2015-04-30,-1436,-19649.0,18212,277.0,6749,6351.0,398,5589.0 102 | 2015-05-31,-3844,-16767.0,12924,1346.0,5475,6106.0,-631,2978.0 103 | 2015-06-30,-2996,-16606.0,13610,42.0,8238,9969.0,-1731,5284.0 104 | 2015-07-31,-9547,-27907.0,18361,-1388.0,-8197,-7541.0,-655,-19131.0 105 | 2015-08-31,-9347,-17562.0,8215,-6390.0,-23513,-22067.0,-1446,-39250.0 106 | 2015-09-30,-9233,-14947.0,5713,-5032.0,-20022,-19535.0,-488,-34288.0 107 | 2015-10-31,-9815,-11876.0,2061,-2396.0,4358,1977.0,2381,-7853.0 108 | 2015-11-30,-20482,-19523.0,-959,-4459.0,-5023,-7505.0,2482,-29964.0 109 | 2015-12-31,-36806,-25416.0,-11390,-12260.0,-27058,-32828.0,5770,-76124.0 110 | 2016-01-31,-4927,-15549.0,10622,-10617.0,-5185,-9454.0,4269,-20729.0 111 | 2016-02-29,8779,-2322.0,11101,-1366.0,1189,-3497.0,4686,8602.0 112 | 2016-03-31,-9971,-9814.0,-157,3131.0,21501,16088.0,5413,14661.0 113 | 2016-04-30,-23767,-19442.0,-4325,434.0,19003,13424.0,5579,-4331.0 114 | 2016-05-31,-17369,-17342.0,-27,-1415.0,13195,5897.0,7297,-5589.0 115 | 2016-06-30,-18967,-14678.0,-4289,-4173.0,8641,2294.0,6348,-14499.0 116 | 2016-07-31,-37875,-31402.0,-6473,-1816.0,24351,18325.0,6026,-15340.0 117 | 2016-08-31,-32418,-24807.0,-7611,-588.0,23075,16451.0,6624,-9932.0 118 | 2016-09-30,-22398,-15377.0,-7021,-4229.0,17599,13742.0,3857,-9028.0 119 | 2016-10-31,-37928,-31452.0,-6477,-5058.0,10195,8822.0,1373,-32792.0 120 | 2016-11-30,-27965,-25929.0,-2035,-7595.0,-16520,-5693.0,-10827,-52080.0 121 | 2016-12-31,-33591,-26960.0,-6630,-12268.0,-10186,7459.0,-17644,-56045.0 122 | 2017-01-31,-7754,-10919.0,3165,-2233.0,21628,17502.0,4126,11641.0 123 | 2017-02-28,4405,-2684.0,7089,-121.0,23733,21639.0,2095,28017.0 124 | 2017-03-31,-14101,-13391.0,-710,-2053.0,29137,28261.0,875,12983.0 125 | 2017-04-30,-12498,-19556.0,7058,-2257.0,15061,12551.0,2510,306.0 126 | 2017-05-31,3144,-9228.0,12372,-1775.0,26335,23352.0,2983,27705.0 127 | 2017-06-30,-9412,-18478.0,9067,-2767.0,19875,17132.0,2743,7696.0 128 | 2017-07-31,-13777,-25525.0,11748,-2312.0,20408,18144.0,2263,4319.0 129 | 2017-08-31,-16476,-24534.0,8058,-3897.0,20292,16450.0,3842,-81.0 130 | 2017-09-30,-21998,-22609.0,611,-2236.0,25127,22422.0,2705,892.0 131 | 2017-10-31,-15969,-22083.0,6114,-2211.0,29780,27775.0,2005,11599.0 132 | 2017-11-30,-16434,-24047.0,7613,-3236.0,14936,13573.0,1363,-4734.0 133 | 2017-12-31,-38329,-43086.0,4757,-3620.0,13421,14602.0,-1181,-28528.0 134 | 2018-01-31,-7072,-24523.0,17451,50.0,47020,36937.0,10083,39998.0 135 | 2018-02-28,-8367,-19556.0,11189,-3612.0,48,1133.0,-1085,-11931.0 136 | 2018-03-31,266,-12007.0,12273,-1999.0,11577,10081.0,1496,9844.0 137 | 2018-04-30,-9290,-12662.0,3372,-3913.0,6537,8492.0,-1956,-6666.0 138 | 2018-05-31,-8734,-15718.0,6984,-3814.0,7023,6287.0,736,-5525.0 139 | 2018-06-30,-19894,-24287.0,4392,-7136.0,10814,9450.0,1364,-16215.0 140 | 2018-07-31,-20871,-18866.0,-2005,-6144.0,17211,14035.0,3176,-9804.0 141 | 2018-08-31,-24453,-23101.0,-1352,-6353.0,13014,11158.0,1856,-17792.0 142 | 2018-09-30,-27929,-25452.0,-2476,-6215.0,11523,11759.0,-236,-22620.0 143 | 2018-10-31,-19030,-15090.0,-3940,-11351.0,-31398,-26989.0,-4408,-61778.0 144 | 2018-11-30,-25770,-17982.0,-7787,-12413.0,-26107,-21245.0,-4862,-64290.0 145 | 2018-12-31,-89350,-43885.0,-45464,-28308.0,-65554,-63573.0,-1981,-183212.0 146 | 2019-01-31,9475,3646.0,5829,-972.0,14418,6523.0,7895,22920.0 147 | 2019-02-28,-12577,-10832.0,-1745,-2654.0,35934,25041.0,10893,20704.0 148 | 2019-03-31,-24629,-19424.0,-5205,-6101.0,28933,21210.0,7723,-1797.0 149 | 2019-04-30,-42400,-26785.0,-15615,-4838.0,34461,28120.0,6342,-12777.0 150 | 2019-05-31,-8777,-12279.0,3501,-4220.0,14599,6918.0,7682,1602.0 151 | 2019-06-30,-36633,-27572.0,-9061,-4759.0,14349,7951.0,6398,-27043.0 152 | 2019-07-31,-41214,-34710.0,-6503,-2803.0,36474,27498.0,8976,-7543.0 153 | 2019-08-31,-22270,-23347.0,1078,-7636.0,8964,1185.0,7778,-20942.0 154 | 2019-09-30,-41931,-34404.0,-7526,-5468.0,24347,19474.0,4873,-23053.0 155 | 2019-10-31,-43293,-31180.0,-12113,-2641.0,28310,21159.0,7151,-17624.0 156 | 2019-11-30,-37575,-34004.0,-3571,-2367.0,34963,26420.0,8542,-4979.0 157 | 2019-12-31,-60133,-51261.0,-8871,-4926.0,36582,27595.0,8988,-28476.0 158 | 2020-01-31,-39251,-45198.0,5947,-1006.0,57156,45278.0,11878,16899.0 159 | 2020-02-29,-15959,-26543.0,10584,-4841.0,12748,3878.0,8870,-8052.0 160 | 2020-03-31,-45935,-38489.0,-7446,-47217.0,-255287,-213154.0,-42134,-348439.0 161 | 2020-04-30,-31837,-20031.0,-11806,1779.0,-7206,-4035.0,-3170,-37264.0 162 | 2020-05-31,-38608,-25347.0,-13261,-2726.0,43157,38013.0,5144,1822.0 163 | 2020-06-30,-63050,-36670.0,-26379,-2303.0,66884,55708.0,11176,1531.0 164 | 2020-07-31,-71718,-50002.0,-21717,-3472.0,69269,59774.0,9495,-5921.0 165 | 2020-08-31,-68794,-60990.0,-7804,-2539.0,69813,59267.0,10546,-1520.0 166 | 2020-09-30,-70939,-40777.0,-30162,-6639.0,38607,32433.0,6174,-38972.0 167 | 2020-10-31,-86104,-57547.0,-28557,-7986.0,44961,39228.0,5733,-49129.0 168 | 2020-11-30,-36322,-20235.0,-16087,-3012.0,42864,36931.0,5934,3530.0 169 | 2020-12-31,59387,,44466,,15079,,29386, 170 | 2021-01-31,62742,,41590,,7346,,34244, 171 | 2021-02-28,95524,,86921,,62459,,24462, 172 | 2021-03-31,89650,,81258,,62025,,19233, 173 | 2021-04-30,79631,,52826,,35850,,16976, 174 | 2021-05-31,68249,,45097,,27922,,17175, 175 | 2021-06-30,100067,,80591,,62217,,18374, 176 | 2021-07-31,53375,,37938,,23281,,14657, 177 | 2021-08-31,68113,,50031,,40264,,9767, 178 | 2021-09-30,58885,,45596,,28930,,16666, 179 | 2021-10-31,78753,,61396,,53162,,8235, 180 | 2021-11-30,67885,,53863,,41705,,12158, 181 | 2021-12-31,112606,,93433,,74299,,19134, 182 | 2022-01-31,32084,,35687,,12840,,22847, 183 | 2022-02-28,69781,,54809,,45251,,9558, 184 | 2022-03-31,94456,,64220,,55387,,8833, 185 | 2022-04-30,-5504,,-17207,,-23265,,6058, 186 | 2022-05-31,78801,,47755,,43704,,4050, 187 | 2022-06-30,43705,,41208,,29652,,11556, 188 | 2022-07-31,37629,,15209,,10552,,4657, 189 | 2022-08-31,41324,,29058,,31429,,-2372, 190 | 2022-09-30,22004,,14034,,14027,,7, 191 | 2022-10-31,87984,,61729,,52717,,9012, 192 | 2022-11-30,67835,,44179,,28840,,15340, 193 | 2022-12-31,39336,,27292,,16199,,11094, 194 | 2023-01-31,45549,,23074,,2513,,20561, 195 | 2023-02-28,2350,,-305,,-8360,,8055, 196 | 2023-03-31,36303,,6638,,6280,,357, 197 | 2023-04-30,28915,,15368,,12732,,2636, 198 | 2023-05-31,30808,,13725,,8110,,5615, 199 | 2023-06-30,74998,,60617,,48487,,12130, 200 | 2023-07-31,57409,,42109,,34882,,7227, 201 | 2023-08-31,13697,,6488,,5076,,1412, 202 | 2023-09-30,37740,,28684,,29337,,-653, 203 | 2023-10-31,36173,,20078,,21580,,-1502, 204 | 2023-11-30,105399,,75203,,67704,,7500, 205 | 2023-12-31,127939,,110720,,90755,,19965, 206 | 2024-01-31,45551,,25404,,20375,,5029, 207 | 2024-02-29,45176,,37600,,28596,,9004, 208 | 2024-03-31,112102,,91644,,78536,,13107, 209 | 2024-04-30,27738,,10299,,6537,,3761, 210 | 2024-05-31,94647,,67245,,57724,,9521, 211 | 2024-06-30,74541,,48426,,36454,,11973, 212 | 2024-07-31,145474,,102844,,103588,,-743, 213 | 2024-08-31,63277,,29154,,30822,,-1668, 214 | 2024-09-30,90534,,60737,,45390,,15347, 215 | 2024-10-31,119476,,82460,,64158,,18301, 216 | 2024-11-30,156663,,127926,,125258,,2669, 217 | --------------------------------------------------------------------------------