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
An open source reinforcement learning framework for training, evaluating, and deploying robust trading agents.

TensorTrade: Trade Efficiently with Reinforcement Learning TensorTrade is still in Beta, meaning it should be used very cautiously if used in producti

null 4k 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
Technical Analysis Library using Pandas and Numpy

Technical Analysis Library in Python It is a Technical Analysis library useful to do feature engineering from financial time series datasets (Open, Cl

Darío López Padial 3.4k Jan 2, 2023
Find big moving stocks before they move using machine learning and anomaly detection

Surpriver - Find High Moving Stocks before they Move Find high moving stocks before they move using anomaly detection and machine learning. Surpriver

Tradytics 1.5k Dec 31, 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
Fourth and final milestone project

Milestone Project 4: Pound Dog Click link to visit "Pound Dog" Aim of the project The aim of this project is to provide access to a website informing

Jamie Wilson 1 Oct 31, 2021
'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
Retentioneering 581 Jan 7, 2023
Python SDK for LUSID by FINBOURNE, a bi-temporal investment management data platform with portfolio accounting capabilities.

LUSID® Python SDK This is the Python SDK for LUSID by FINBOURNE, a bi-temporal investment management data platform with portfolio accounting capabilit

FINBOURNE 6 Dec 24, 2022
Udacity-api-reporting-pipeline - Udacity api reporting pipeline

udacity-api-reporting-pipeline In this exercise, you'll use portions of each of

Fabio Barbazza 1 Feb 15, 2022
PGPortfolio: Policy Gradient Portfolio, the source code of "A Deep Reinforcement Learning Framework for the Financial Portfolio Management Problem"(https://arxiv.org/pdf/1706.10059.pdf).

This is the original implementation of our paper, A Deep Reinforcement Learning Framework for the Financial Portfolio Management Problem (arXiv:1706.1

Zhengyao Jiang 1.5k Dec 29, 2022
Privacy as Code for DSAR Orchestration: Privacy Request automation to fulfill GDPR, CCPA, and LGPD data subject requests.

Meet Fidesops: Privacy as Code for DSAR Orchestration A part of the greater Fides ecosystem. ⚡ Overview Fidesops (fee-dez-äps, combination of the Lati

Ethyca 44 Dec 6, 2022
Modern, privacy-friendly, and detailed web analytics that works without cookies or JS.

Modern, privacy-friendly, and cookie-free web analytics. Getting started » Screenshots • Features • Office Hours Motivation There are a lot of web ana

R. Miles McCain 2.1k Jan 3, 2023
Portfolio and risk analytics in Python

pyfolio pyfolio is a Python library for performance and risk analysis of financial portfolios developed by Quantopian Inc. It works well with the Zipl

Quantopian, Inc. 4.8k Jan 8, 2023
An all-in-one financial analytics and smart portfolio creator as a Discord bot!

An all-in-one financial analytics bot to help you gain quantitative financial insights. Finn is a Discord Bot that lets you explore the stock market like you've never before!

null 6 Jan 12, 2022
A Python application for tracking, reporting on timing and complexity in Python code

A command-line application for tracking, reporting on complexity of Python tests and applications. wily [a]: quick to think of things, having a very g

Anthony Shaw 1k Dec 29, 2022