Skip to content
forked from titov-vv/jal

Personal finance tracking project

Notifications You must be signed in to change notification settings

pedro-camargo11/jal

 
 

Repository files navigation

JAL

Just Another Ledger is a project for personal finance tracking.

image

English, Русский

It was designed to keep records of personal incomes/spendings and investments with up-to-date information about account's balances and portfolio value.

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

Thanks!

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!

Main features

  • Multiple accounts with different currencies (with totals in base currency by user choice)
  • 5 types of transactions:
    1. Generic income/spending operations that may be split into several categories
    2. Asset and money transfers between accounts (with currency conversion if required)
    3. Buy/Sell operation for securities (jal supports stocks, ETFs, options, partial support of bonds and futures)
    4. Dividend for stocks and Interest payments for bonds
    5. Corporate actions for stocks (Split, Symbol change, Merger, Spin-Off, Stock dividend)
  • Basic reports:
    1. monthly incomes/spendings split by category
    2. profit/loss report for investments accounts
    3. closed deals report
  • Stock/ETF prices are updated for NYSE, Nasdaq, LSE, Frankfurt (Yahoo), Euronext, TSX and MOEX exchanges traded stocks
  • Currency exchange rates may be taken from European and/or Russian central banks.
  • Broker statement import:
    1. Russian: Uralsib broker (zipped xls), KIT Finance (xlsx), PSB broker (xls), Open broker (xml).
    2. International: Interactive Brokers Flex statement (xml), Just2Trade (xls).
  • Investments report for tax declaration preparation for Russia (manual) and Portugal (draft).
    Russian tax estimation for open positions.
  • experimental Download russian electronic slips from russian tax authority (FNS). This function requires authorization and pyzbar package installation for QR recognition.
    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

Installation

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 at least Python 3.8.1 and satisfy all dependencies listed in requirements.txt. Let's say some words about installing python on windows-based computers, as this application becomes poplular for non-programming people. The best place to download python distro is official site, sure. Important, in installer dialogues to check boxes for installing pip and Add python to environment variables. Don't forget to reboot windows to be sure, that changes applies correctly.

  • You may use installation package with pip install jal command. It will take care about dependencies automatically and will install jal entry point* to run the program. For windows-users the best and easiest way is to start windows command prompt (cmd) and run command mentioned above in it. If python set up correctly and installation succeeded you may just type jal to run application. Alternatively you may use python -m jal.jal if you can't run application with jal 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. E.g. on Linux it might be in ~/.local/run, on Windows - Scripts directory of your python installation or Appdata/Roaming/Python/.../Scripts/ in user profile path.

Upgrades

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

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


Hits

About

Personal finance tracking project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.5%
  • Other 0.5%