Keep track of the total balance of your accounts and your categorized monthly spending in a semi-automated way. Afterward, visualize it in a series of reports (useful for seeing your year-to-date spending).
Requires Python 3.9 or later.
-
Clone the repository, and from inside the repository folder, install it with:
pip install .When installed with the system Python, the program
mymoneyis now available to run from a project directory anywhere on your computer. -
In a folder of your choosing (outside this repository), create a project folder that contains a
config.ymlfile. See thetestfolder for an example; it has a project folder for 2025 named_2025. Comments in the testconfig.ymldescribe the settings to use to describe the format of each of your institutions' CSV files.
After you set up a project folder and the config.yml for all of your accounts, periodically:
-
Decide the period this run pertains to and create an input folder for it. I use monthly periods. For example, I might create a
_2024/input/202404folder for April in the_2024project. -
From your banking websites, download the transactions as CSV files into that
{project_name}/input/{period}folder. Be sure the files contain only the transactions for the period.For each bank you visit, also take note of the balance at the end of the period you're tracking and add it to the
current_balancesection of theconfig.ymlfile. -
From the project folder, run:
mymoney {period}As it reads each transaction, you'll be asked to (1) type a string that matches the transation with a regular exxpression and (2) the category for transactions that matches this one. Next time it runs across a matching description, it will automatically be assigned a category without asking. (The more you use it, the more automated it is.)
Tip
If you use monthly periods like I do, named as YYYYMM, you can get the year-to-date aggregate of the monthly periods for that year, by running mymoney <year>YTD.
That's it! When it's done, the following visualizations will be in the
folder {project_name}/{period}/reports.
| Report | Description |
|---|---|
avg_and_balance.txt |
short summary of the total ending balance and average monthly spending (primarily useful for YTD periods) |
balance_{period}.html |
the total running balance of all your accounts as a line graph |
breakdown_{period}.[md|html] |
transactions for the period, organized by category |
income_expenses_{period}.html |
a monthly spending bar chart, with a category breakdown in each bar |
transactions_{period}.[txt|csv] |
sorted list of all transactions |