Just Another 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.
If you want to ask a question, report a bug, provide help or support an author - you may use email [email protected] or Telegram (Issues on GitHub are always welcome also).
- Multiple accounts with different currencies (base currency is russian rouble but might be changed in future versions)
- 5 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 (jal supports stocks, ETFs, options, partial support of bonds and futures)
- Dividend for stocks and Interest payments for bonds
- Corporate actions for stocks (Split, Symbol change, Merger, Spin-Off, Stock dividend)
- Basic reports:
- monthly incomes/spendings splitted by category
- profit/loss report for investments accounts
- closed deals report
- Stock/ETF quotes updates for US (Yahoo), EU (Euronext), CA (TSX) and RU (MOEX) exchanges traded stocks
- Broker statement import:
- Russian brokers: Uralsib broker (zipped xls), KIT Finance (xlsx), PSB broker (xls), Open broker (xml).
- US brokers: Interactive Brokers Flex statement (xml).
- Tax report preparation for foreign investments according to Russian Tax Code ().
Russian tax estimation for open positions. - experimental Download russian electronic slips from russian tax authority (FNS). This function requires authorization and additional dependencies to use these function - packages
pyzbar
andPillow
.
You may authorize via SMS, FNS personal account or ESIA/Gosuslugi. QR code may be scanned from camera, clipboard image or image file on disk. - experimental Category recognition for goods in electronic slip with help of
tensorflow
jal was created to be portable and cross-platform. Thus you have several ways to install and run the program:
- You may get file archive from the GitHub repository, unpack it into suitable directory on your PC and use
run.py
to start application. In order to succeed this way you need to have Python 3.8.1 and satisfy all dependencies listed inrequirements.txt
. - You may use installation package with
pip install jal
command. It will take care about dependencies automatically and will installjal
entry point* to run the program. Alternatively you may usepython -m jal.jal
if you can't run application withjal
entry point. - You may mix two methods together - download source files from github and then use
setup.py
for preferred way of installation.
Database will be initialized automatically with minimal required set of data and you will be able to start use the program.
* - entry point location is platform dependable. Eg. on Linux it might be in ~/.local/run
, on Windows - Scripts
directory of your python installation.
If you installed jal via pip then you may upgrade it to newer version with help of command pip install jal -U
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