Tool for generating financial reports. Download statements from your broker or investment accounts, ingest them using investd and generate nice reports.
Check out the sample report generated from sample data at: https://adri0.github.io/investd
investd - A tool for summarizing investments.
License: MIT License
Tool for generating financial reports. Download statements from your broker or investment accounts, ingest them using investd and generate nice reports.
Check out the sample report generated from sample data at: https://adri0.github.io/investd
Include some basic metrics, such as:
E.g.:
In my XTB operations history there are partial BUY operations, such as:
OPEN BUY 4/8 @ 5.0140
OPEN BUY 3/8 @ 5.0140
...
It should be easy to allow parsing these.
Shouldn't we get 'investd' command added to the path in such case?
I'm not sure what this part does:
entry_points={"investd.__main__": {"main = investd.__main__:cli"}},
Is it for running it like:
python -m investd
?
Maybe we can also add sth like:
setup(
...
entry_points = {
'console_scripts': ['investd=investd.__main__:cli'],
}
...
)
?
Currently symbol mapping for fetching quotes from yfinance is a hardcoded dictionary in quotes.py
. Would be nice to have that configurable via some text file.
Configure Github Actions for doing that.
When I ran this for the first time, I noticed a weird messsage:
python -m investd download-quotes
2023-01-07 01:14:07,519 - investd.config - INFO - PERSIST_PATH: data/persist - REF_CURRENCY: PLN - REPORTS_PATH: data/reports - SOURCE_BASE_PATH: data/source
[*********************100%***********************] 2 of 2 completed
1 Failed download:
- IBC5.DE: OperationalError('database is locked')
Originally posted by @mkopec87 in #38 (comment)
Revolut changed the format of the exported CSV. Update the source parser to use the latest format.
Add a config file for configuring:
Currently, the package is always in version 0.0.1.
Require and automate versioning of the tool upon merging pull requests in main.
In XLSX file I exported, I have headers in Polish, e.g. "Kwota" instead of "Amount".
Side question: any reason to use XLSX export from XTB instead of CSV?
It would be nice to be able to get current value of Polish retail bonds in the portfolio.
Some web scraping could do, I already started the research in the topic to find out that:
Each source needs some configuration, such as account currency.
When the reports command runs, the code of the report notebook is executed by the main application upon importing:
nb_module = load_module(f"{__package__}.{notebook_name}")
Find another way to find the notebook path without importing it.
Not sure if feasible, but in my fork I get failing build for main branch because of not being able to publish the page.
Maybe we can somehow prevent that?
https://github.com/mkopec87/investd/actions/runs/4188445079/jobs/7259585973
Currently the persistence layer consists of CSV files.
The portfolio overview report should be able to show the portfolio value at a given date, not only today.
Add information about current portfolio value in the overview.
For that it is needed:
It is necessary to know exchange rates at a certain date for calculating portfolio value.
Need to chose a proper open source license.
Reports for the portfolio net worth require quotes of each owned asset. For that it is need to query external APIs for obtaining the price of assets.
Some remarks:
Currently we need to first run ingest-sources
then report
to generate the most up-to-date report. It would be nice to add some parameter to report
command for also ingesting.
It would be nice to avoid using sample_data directory in the unit tests. Instead, it would be ideal in the tests to use only data inside tests/resources
, but I didn't manage to load config variables form .test.env
in the tests.
The portfolio overview report should be able to show the portfolio value at a given date, not only today.
For me, communication with yfinance is only working if I update yfinance to latest version.
Currently ingest-sources
generates a new transactions CSV each time it is run containing only transactions found in the sources being ingested. It would be best if we could keep the existing transactions in place as we ingest source files that might not contain existing ones.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.