Skip to content

titov-vv/jal

Repository files navigation

JAL (Just Another Ledger)

Track and manage your personal finances seamlessly.

image

English, Русский

📌 Overview

JAL is tailored for those who want a clear insight into their personal incomes, expenditures, investments, and up-to-date information on account balances and portfolio values.

⭐️ Features

Multiple Accounts Management

  • Accounting with various currencies for different accounts.
  • User-selected base currency totals.
  • Account balance indication with or without credit limit.

Transaction Types

  • Generic income/spending with multi-category split.
  • Asset and money transfers, including currency conversion.
  • Trading operations: Buy/Sell securities (stocks, ETFs, options, and more).
  • Dividends for stocks and bond interest payments (including bond amortization).
  • Corporate actions for stocks.
  • Term deposits.

Reports

  • Daily history of account balance.
  • Portfolio asset allocation for a given date.
  • Monthly income/expenditure by category.
  • Investment profit/loss and history of payments for an assets.
  • Closed deals summary.

Price Updates

  • Stock/ETF/Crypto prices updated for major global exchanges.
  • Currency exchange rates from European and Russian central banks.

Broker Statement Imports

  • Supports various Russian and international brokers.

Tax Reports

  • Assistance for tax declaration in Russia and Portugal.
  • Tax burden estimation for a given asset in the portfolio.

Experimental Features

  • Electronic slips download for russian and some european shops.
  • Category recognition for goods in electronic slips using TensorFlow.

📥 Installation

JAL offers cross-platform compatibility and portability. Here's how to get started:

  1. From GitHub Repository:
    • Clone repository locally with git https://github.com/titov-vv/jal.git
    • Ensure you have Python 3.8.1 or later and meet all dependencies in requirements.txt.
    • Tips Windows users: Ensure Python installation from the official site and turn on options pip installation and add Python to environment variables during the installation. Reboot to apply changes.
    • Use run.py to launch the application.
  2. Using pip:
    • Install using pip install jal.
    • Launch with the jal command or alternatively python -m jal.jal.
  3. Hybrid Installation:
    • Download source files and use setup.py for tailored installation.

Database will be initialized automatically with minimal required set of data, and you will be able to start use the program.

You may choose program language in menu Languages.

🔧 Configuration

JAL configuration is stored in jal.sqlite file together with all other data, that is created by default in jal folder. But you may configure location of this file with help of database_path parameter in jal.ini located in OS config directory (e.g. $HOME/.config on most Unix-like systems). Here is an example of such file:

[main]
database_path=/home/user/some_folder

❗️ Upgrades

If you installed jal via pip then you may upgrade it to newer version with help of command pip install jal -U

🖭 Backups

You can use menu Data->Backup and Data->Restore to save and restore a copy of your data. But you may get the same result by simply saving jal.sqlite file that contains everything. You may see a location of the file that jal uses in menu About.

📈 Tax report for investment account

Tax report can be prepared based on data from any broker if operations are present in JAL. Tax reports are supported for Russia and Portugal.
You can import operations from broker statement with help of menu Import->Statement.
Step-by-step example (in russian language) of Russian tax report preparation for Interactive Brokers can be found on this page. Use contacts from beginning of this page if you need support regarding statements or reports.

Screenshots

Qt have a better look on Linux out of the box. Here is main program window:
Main Window on Linux

The same window on Windows - the same functions with a bit different look:
Main Window on Windows

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:
One Account

Example of investment account view with Buy, Sell and Dividend operations recorded (there is an asset select/edit window on top):
Investment Account

'Holdings' tab contains portfolio overview (You display account and portfolio balances for any date). Holdings are grouped by currencies and then by accounts.
Holdings

Examples of reports are below: Monthly incomes/spendings (categories hierarchy is supported with sub-totals calculation)
Income/Spending report Profit/Loss for investment account (Assets value to be fixed, Returns include dividends and other payments)
Profit/Loss report List of all closed deals for investment account
Deals report

📞 Support, Feedback

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).

❤️ Acknowledgements

I would like to a mention people who helped me in 2022 and 2023 as I got more donations, help and feedback from users this year. And while I can't name every one of them I would like to confirm my appreciation for this help. They did the project better!


Hits