rotki is an open source portfolio tracking, analytics, accounting and tax reporting tool that respects your privacy.

Overview

rotki

rotki is an open source portfolio tracking, analytics, accounting and tax reporting tool that respects your privacy. The mission of rotki is to bring transparency into the crypto and financial sectors through the use of open source. Most importantly unlike virtually every other competing service which consists of closed source SaaS onto which you are forced to hand over all your financial data, with rotki your data is stored encrypted locally in your computer. It enables you to take ownership of your financial data!

Language grade: JavaScript Language grade: Python

GitHub release GitHub commits

GitHub contributors Github All Releases

Twitter Follow Discord

Documentation

For documentation look here

Some quick links to useful parts of the documentation follow below for your convenience

Installation

For a guide on how to install rotki please see here.

Usage

For a detailed guide on how to use rotki see here.

Changelog

Click here for the latest changelog.

Contribute

rotki is an opensource project and as such any and all help is really appreciated.

Issues or code

If you would like to contribute by testing the software please open any issues you find in the github issue tracker. If you would like to contribute by code check out our open issues here and if you would like to solve any of them please contribute by opening a PR all the while following the contributing guide.

Financially

Purchase a premium subscription

The best way to contribute financially and all the while help with the development of the project is to purchase a premium subscription. We accept both crypto and fiat currencies!

Github sponsor

You can sponsor us through Github here and get some nice badges in return.

Donations

For people who don't want to purchase a subscription but would still like to support the development of rotki we also accept donations in BTC and ETH or tokens.

  • Send BTC donations to: 1PfvkW8MC7Ns2y8zn6CE2P2t5f19KF8XiW
  • Send ETH donations to: rotki.eth (0x9531c059098e3d194ff87febb587ab07b30b1306)

Gitcoin Grant

You can also supports us via a Gitcoin grant and receive kudos and other NFTs in the Gitcoin platform.

Comments
  • Write the basic front-end UI tests

    Write the basic front-end UI tests

    At the moment there is only 2 UI tests using spectron and mocha. They act as a simple smoke test.

    Need a lot more tests covering the basic usage scenarios of the application via the UI. Write tests for:

    • [ ] Going to the user settings, adding an ethereum account and looking at its balance
    • [ ] Adding a token and seeing that tokens get updated
    • [ ] Adding a bitcoin account and seeing that the balance is there
    • [ ] Adding a fiat balance and see that it's properly updated
    • [ ] Add an exchange and see that the API key is succesfully accepted
    • [ ] Change the currency to EUR and that the currency changes everywhere in the UI
    • [ ] Change each one of the settings and see that the change has been applied
    good first issue bounty worthy 
    opened by LefterisJP 47
  • Add Windows Support

    Add Windows Support

    Make rotkehlchen work on Windows with all tests passing. That entails

    • [x] The dependencies (sqlcipher, zqm, electron e.t.c.) installation should be configured to also be installable on Windows and a section should be added to the docs for Windows
    • [x] The code should be tweaked to work in Windows
    • [x] Since Travis does not work on Windows, Appveyor should be used, and travis.yml should be ported so that all tests run and pass on Windows ~- [ ] An executable should be also generated for Windows whenever a tag is pushed to Github the same way it's done via Travis for OSX and Linux.~ Follow up issue: https://github.com/rotkehlchenio/rotkehlchen/issues/28
    help wanted Windows bounty worthy 
    opened by LefterisJP 42
  • Replace Javascript front-end code with Typescript

    Replace Javascript front-end code with Typescript

    The front-end of the electron app is written in vanilla javascript and jquery.

    It's rather ugly but it works. Many people advised that rewritting in Typescript will help improve it and make it more maintainable.

    help wanted bounty worthy 
    opened by LefterisJP 39
  • Allow BTC xpub keys

    Allow BTC xpub keys

    Abstract

    Allow the user to enter extended BTC pubkeys to track all addresses of the wallet

    Motivation

    Since address reuse is highly dangerous and discouraged, most users hold funds in HD wallets and generate a new address for each deposit. Tracking a portfolio is not really possible with Rotki atm since one had to enter a new address everytime one does a tx.

    Specification

    Allow entering extended pubkeys and derive addresses automatically. Allow modifying key path.

    help wanted popular request 
    opened by kilrau 32
  • Sorting ETH accounts by name doesn't work

    Sorting ETH accounts by name doesn't work

    Problem Definition

    I clicked the Account header to sort my ETH accounts by name, but as you can see it does not correctly sort them alphabetically:

    image

    System Description

    Rotki 1.5.0 on openSUSE Tumbleweed

    bug frontend UI/UX 
    opened by aspiers 29
  • Add Bitmex Support

    Add Bitmex Support

    https://www.bitmex.com/

    Rotkehlchen has a common exchange interface class seen here.

    To add bitmex (or any other) exchange to rotkehlchen all that needs to be done is implement that interface for the new exchange.

    A good example of how to do that can be seen in the bittrex class.

    Then in all the places where bittrex is used you should also add the new exchange.

    exchange 
    opened by Buttaa 28
  • Updated Dashboard with Net Worth and more detailed Summary Cards

    Updated Dashboard with Net Worth and more detailed Summary Cards

    Fix #917

    Included in this PR

    • Introduces an Net Worth component (OverallBalances) that will eventually be used to show changes in net worth and a teaser graph (full graph in premium)
    • New component for rendering exchanges card
    • New component for rendering summary card
    • New component for rendering blockchain protocol card
    • New component for rendering manual balances cards
    • New "solid block" style card headers to match the new Welcome Screen
    • Soft browns used across the Dashboard to match current theme
    • All components are reactive and work with thin and wide viewports
    • Removed "view details arrow" which was making listed items too cluttered. Just clicking an item within a card should now take you to a detailed page (only exists for Exchanges for now)

    Differences to previous Dashboard:

    • Lighter color scheme but still using brown to keep in line with the rest of the app
    • Exchanges are now listed in 1 card with a line item per exchange
    • Blockchains are now listed in 1 card with a line item per protocol
    • Manual Balances are listed per location (previously were not listed at all)
    • Fiat balances ~are not listed~ are integrated with "Banks" in Manual Balances

    Feedback requested:

    Apart from general comments/questions/suggestions:

    • What to do with Fiat balances?
    opened by isidorosp 25
  • Feat: basic ui tests

    Feat: basic ui tests

    fixes #41

    6 Tests Written

    • [x] Going to the user settings, adding an ethereum account and looking at its balance
    • [x] Adding a token and seeing that tokens get updated
    • [x] Adding a bitcoin account and seeing that the balance is there
    • [x] Adding a fiat balance and see that it's properly updated
    • [x] Add an exchange and see that the API key is succesfully accepted
    • [x] Change the currency to EUR and that the currency changes everywhere in the UI

    Pending

    • [ ] Change each one of the settings and see that the change has been applied

    The pending test case is unclear ... Could you give examples of each setting you expect to the tested, and what effect the change is to make?

    opened by mykeels 24
  • "The Python backend crashed." macOS Mojave

    Got the same error as in issue #693 for rotki 1.2.0 on my mac. I only shortly see the guy and then it shows an error saying that "The Python backend crashed."

    uname -a
    Darwin heuerMBP-host 18.7.0 Darwin Kernel Version 18.7.0: Thu Jan 23 06:52:12 PST 2020; root:xnu-4903.278.25~1/RELEASE_X86_64 x86_64
    

    rotkehlchen.log

    07/03/2020 00:00:02 CET -- DEBUG:rotkehlchen.rotkehlchen:Main loop start
    07/03/2020 00:00:02 CET -- DEBUG:rotkehlchen.rotkehlchen:Main loop end
    07/03/2020 00:00:05 CET -- DEBUG:rotkehlchen.api.rest:Request successful response={"result": {"our_version": "1.2.0", "latest_version": "v1.2.0", "download_url": null}, "message": ""}, status_code=200
    07/03/2020 00:00:05 CET -- INFO:rotkehlchen.api.server.pywsgi:127.0.0.1 - - [2020-03-07 00:00:05] "GET /api/1/version HTTP/1.1" 200 290 0.811157
    07/03/2020 00:00:17 CET -- DEBUG:rotkehlchen.rotkehlchen:Main loop start
    07/03/2020 00:00:17 CET -- DEBUG:rotkehlchen.rotkehlchen:Main loop end```
    

    rotki_electron.log

    Rotki Electron Log initialization
    2020-03-06T22:52:13.982Z: Starting packaged python subprocess: /Applications/rotki.app/Contents/Resources/rotkehlchen_py_dist/rotkehlchen-1.2.0-macos --api-port 4242 --api-cors app://* --logfile /Users/michaelheuer/Library/Logs/rotki/rotkehlchen.log
    2020-03-06T22:52:13.992Z: The Python sub-process started on port: 4242 (PID: 79082)
    2020-03-06T22:52:16.560Z: The Python sub-process exited with signal: null (Code: 255)
    
    opened by Michael-A-Heuer 23
  • CDC Import of CSV

    CDC Import of CSV

    "Invalid CSV format, missing required field: 'debited'"

    I can't change anything to get debited field

    Operating system: Win 10 64 Rotki version: 1.11.0

    opened by Blackswan122 21
  • Syncing the premium account, doesn't sync addresses, only exchange accounts.

    Syncing the premium account, doesn't sync addresses, only exchange accounts.

    Problem Definition

    I expected when I fed in a bunch of addresses on one of my Rotki installations, that it would auto import them into another computer that was also connected to my Rotki premium account, but it didn't.

    this would be frustrating if it can't sync the addresses across installations, especially as there's no automated way to enter in a lot of addresses from a seed.

    opened by JezSan 21
  • Decode Liquidity additions & removal for Uniswap(V2 & V3) & Sushiswap

    Decode Liquidity additions & removal for Uniswap(V2 & V3) & Sushiswap

    Checklist

    • [x] Decode LP additions & removal for Uniswap V3
    • [x] Decode LP additions & removal for Uniswap V2
    • [x] Decode LP additions & removal for Sushiswap
    ready for peer review 
    opened by prettyirrelevant 1
  • Add customizable option for dynamically determining underlying tokens weights

    Add customizable option for dynamically determining underlying tokens weights

    Abstract

    This has been suggested to us by a discord user.

    Some composite tokens have dynamic ratios of the underlying tokens. Such as the exchange rate of cbETH or the ratio of stETH. The user can be updating the weights of the underlying tokens manually but that's a bother.

    We can instead add an option for a customizable dynamic function to determine the weights.

    Specification

    • [ ] Add an optional customizable dynamic function to determine the weights of underlying tokens for composite tokens. For now this will only work for evm chain. This should consist of:
      • A contract address, on the same chain as the token's chain ID.
      • A function to call (can also just be a public getter)
      • Any arguments to give to that function (optional)
    • [ ] Implement the changes required in the code to use the optional function if given to determine the weights each time the token's balance is queried. Think ... should cachign be used here?
    • [ ] Pre-populate these functions for some popular tokens:
    frontend backend 
    opened by LefterisJP 0
  • Add OKX exchange integration

    Add OKX exchange integration

    Added integration for asset balances, trades and deposits & withdrawals

    https://user-images.githubusercontent.com/44864521/210120836-18d40233-f3fb-4609-b0d2-8cc3a44cdaa1.mov

    Note:

    • Used a throwaway account for exchange fixture, since all queries must be authenticated with API credentials (including list of assets)
    • Only populated a small subset of assets (those also found in other exchange mappings), would prefer to discuss before moving further on this.
    opened by anukul 5
  • Unit tests for ethereum (and other) module accountants. Also faster tests

    Unit tests for ethereum (and other) module accountants. Also faster tests

    Abstract

    At the moment we have 0 tests for the accountant submodules of ethereum modules. They need to be tested in small fast unit tests. As an example consider makerdao/accountant.py. We shoould create some scenarios and test that the accounts are 1. generated correctly and 2. are consumed by the accountant correctly and 3. the accounting result is correct.

    Task

    1. Implement unit tests for the accountants of each ethereum(and other evm eventually) accountant module. This will be a long running task. I expect PRs for each module separately.
    2. Wherever there is this: # TODO: For faster tests hard-code the transaction and the logs here so no remote query needed change the test so the events are hard coded and not pulled. This will improve test speed.
    tests backend 
    opened by LefterisJP 0
Releases(v1.26.3)
Owner
Rotki
An opensource asset management, tracking and analytics application
Rotki
ARCH models in Python

arch Autoregressive Conditional Heteroskedasticity (ARCH) and other tools for financial econometrics, written in Python (with Cython and/or Numba used

Kevin Sheppard 1k Jan 04, 2023
stock data on eink with raspberry

small python skript to display tradegate data on a waveshare e-ink important you need locale "de_AT.UTF-8 UTF-8" installed. do so in raspi-config's Lo

Simon Oberhammer 24 Feb 22, 2022
Zipline, a Pythonic Algorithmic Trading Library

Zipline is a Pythonic algorithmic trading library. It is an event-driven system for backtesting. Zipline is currently used in production as the backte

Quantopian, Inc. 15.7k Jan 02, 2023
rotki is an open source portfolio tracking, analytics, accounting and tax reporting tool that respects your privacy.

rotki is an open source portfolio tracking, analytics, accounting and tax reporting tool that respects your privacy. The mission of rotki is to bring transparency into the crypto and financial sector

Rotki 2k Dec 30, 2022
Common financial risk and performance metrics. Used by zipline and pyfolio.

empyrical Common financial risk metrics. Table of Contents Installation Usage Support Contributing Testing Installation pip install empyrical Usage S

Quantopian, Inc. 1k Dec 26, 2022
personal finance tracker, written in python 3 and using the wxPython GUI toolkit.

personal finance tracker, written in python 3 and using the wxPython GUI toolkit.

wenbin wu 23 Oct 30, 2022
:mag_right: :chart_with_upwards_trend: :snake: :moneybag: Backtest trading strategies in Python.

Backtesting.py Backtest trading strategies with Python. Project website Documentation the project if you use it. Installation $ pip install backtestin

3.1k Dec 31, 2022
Python Algorithmic Trading Library

PyAlgoTrade PyAlgoTrade is an event driven algorithmic trading Python library. Although the initial focus was on backtesting, paper trading is now pos

Gabriel Becedillas 3.9k Jan 01, 2023
crypto utilities as a way of learning

cryptos Just me developing a pure Python from-scratch zero-dependency implementation of Bitcoin for educational purposes. This includes a lot of the c

Andrej 958 Jan 02, 2023
Python Backtesting library for trading strategies

backtrader Yahoo API Note: [2018-11-16] After some testing it would seem that data downloads can be again relied upon over the web interface (or API v

DRo 9.8k Dec 30, 2022
Python library for backtesting trading strategies & analyzing financial markets (formerly pythalesians)

finmarketpy (formerly pythalesians) finmarketpy is a Python based library that enables you to analyze market data and also to backtest trading strateg

Cuemacro 3k Dec 30, 2022
An Algorithmic Trading Library for Crypto-Assets in Python

Service Master Develop CI Badge Catalyst is an algorithmic trading library for crypto-assets written in Python. It allows trading strategies to be eas

Enigma 2.4k Jan 05, 2023
This repository provides all Python codes and Jupyter Notebooks of the book Python for Finance

Python for Finance (O'Reilly) This repository provides all Python codes and Jupyter Notebooks of the book Python for Finance -- Analyze Big Financial

Yves Hilpisch 1.6k Jan 03, 2023
A python wrapper for Alpha Vantage API for financial data.

alpha_vantage Python module to get stock data/cryptocurrencies from the Alpha Vantage API Alpha Vantage delivers a free API for real time financial da

Romel Torres 3.8k Jan 07, 2023
bt - flexible backtesting for Python

bt - Flexible Backtesting for Python bt is currently in alpha stage - if you find a bug, please submit an issue. Read the docs here: http://pmorissett

Philippe Morissette 1.6k Jan 05, 2023
This repository contains a set of plugins for Volatility 3

volatility_plugins This repository contains a set of plugins for Volatility 3 These plugins are not compatible with Volatility 2 To use these plugins

Immersive-Labs-Sec 10 Nov 30, 2022
Software for quick purchase of mystery boxes on Binance.

english | русский язык Software for quick purchase of mystery boxes on Binance. Purpose Installation & setup Motivation Specification Disclaimer Purpo

Ellis 5 Mar 08, 2022
Q-Fin: A Python library for mathematical finance.

Q-Fin A Python library for mathematical finance. Installation https://pypi.org/project/QFin/ pip install qfin Bond Pricing Option Pricing Black-Schol

Roman Paolucci 247 Jan 01, 2023
A proper portfolio tracker. Featuring historical allocation, cash flows and real returns.

Python Portfolio Analytics A portfolio tracker featuring account transactions, historical allocation, dividends and splits management and endless perf

Simone Precicchiani 13 Aug 13, 2022
'Personal Finance' is a project where people can manage and track their expenses

Personal Finance by Abhiram Rishi Pratitpati 'Personal Finance' is a project where people can manage and track their expenses. It is hard to keep trac

Abhiram Rishi Prattipati 1 Dec 21, 2021