ledger is a project for personal finance tracking.
It was designed to keep records of personal incomes/spendings and investments with up-to-date information about account's balances and portfolio value.
- multiple accounts with different currencies (base currency is russian rouble but might be changed in future versions)
- 4 types of transactions:
- Generic income/spending operations that may be splitted into several categories
- Transfers of money between different accounts and currencies
- Buy/Sell operation for securities (future plan is to support merges and splits)
- Dividends for stocks (Bond coupons may be recorded the same way)
- basic reports:
- monthly incomes/spendings splitted by category
- profit/loss report for investments accounts
- closed deals report
- stock quotes updates for US (Yahoo), EU (Euronext) and RU (MOEX) exchanges traded stocks
- securities transactions import from Quik HTML-reports for russian brokers and from Interactive Brokers flex-queries
- tax report preparation for foreign investments according to Russian Tax Law
- experimental download russian electronic slips from russian tax authority:
- QR code may be scanned from camera, clipboard image or image file on disk
- Authorization via login/password to FNS personal account or ESIA/Gosuslugi (no passwords are stored in the progam, only SessionId is stored - you may check in source code)
ledger was created to be portable - it doesn't require specific installation instructions. All you need is to have Python 3.8.1 or higher and satisfy dependencies listed below.
Then you may download/clone code from the GitHub repository and start the program by running: main.py
on Windows or ./main.py
on Linux or you may simply double click the filename if your system is setup to launch python interpreter this way.
Database will be initialized automatically with minimal required set of data and you will be able to start use of the program.
ledger depends on:
- Qt for Python (PySide2) >=5.15 - GUI library (versions below 5.15 may cause problems with
uic
at least) - pandas - different data operations
- requests - stock quotes update from the internet; electronic slip download
- xlsxwriter - reports export into XLS format
- ibflex >=0.14 - Interactive Brokers flex-reports import
- pyzbar * - electronic slip QR-code recognition
- Pillow * - work with images
* - optional dependencies (electronic slip import will be disabled)
Qt have a better look on Linux out of the box. Here is main program window:
The same window on Windows - the same functions with a bit different look:
Accounts are be arranged in groups (Cash, Cards, Investments, etc), each account holds one currency.
Below is a view of main window where one account is chosen ('Mastercard') and account select/edit window is opened on top:
Example of investment account view with Buy, Sell and Dividend operations recorded (there is an asset select/edit window on top):
'Holdings' tab contains portfolio overview (You display account and portfolio balances for any date).
Holdings are grouped by currencies and then by accounts.
Examples of reports are below:
Monthly incomes/spendings (categories hierarchy is supported with sub-totals calculation)
Profit/Loss for investment account (Assets value to be fixed, Returns include dividends and other payments)
List of all closed deals for investment account