{"id":20758682,"url":"https://github.com/ggravlingen/pypmanager","last_synced_at":"2025-04-30T04:34:52.282Z","repository":{"id":155171731,"uuid":"628666362","full_name":"ggravlingen/pypmanager","owner":"ggravlingen","description":"Summarize transactions in mutual funds into a simple portfolio report.","archived":false,"fork":false,"pushed_at":"2025-04-28T18:00:09.000Z","size":3298,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-28T18:24:13.283Z","etag":null,"topics":["avanza","finance","lysa","portfolio","portfolio-management","report"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ggravlingen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-04-16T16:50:54.000Z","updated_at":"2025-04-28T18:00:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"cf98fb4c-4799-4f6d-bd51-ec5e9d4c1ba0","html_url":"https://github.com/ggravlingen/pypmanager","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ggravlingen%2Fpypmanager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ggravlingen%2Fpypmanager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ggravlingen%2Fpypmanager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ggravlingen%2Fpypmanager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ggravlingen","download_url":"https://codeload.github.com/ggravlingen/pypmanager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251644262,"owners_count":21620617,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avanza","finance","lysa","portfolio","portfolio-management","report"],"created_at":"2024-11-17T09:53:05.591Z","updated_at":"2025-04-30T04:34:52.262Z","avatar_url":"https://github.com/ggravlingen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Local Portfolio Manager\n\n[![Coverage Status](https://coveralls.io/repos/github/ggravlingen/pypmanager/badge.svg)](https://coveralls.io/github/ggravlingen/pypmanager?branch=main)\n\nSummarize transactions in securities into a portfolio report tool.\n\nSupports loading CSV files exported from:\n- Avanza (Sweden)\n- Lysa (Sweden)\n- Pareto Securities (Sweden and Norway)\n- Your broker (feel free to add a PR)\n- A generic format for all other brokers (feel free to add yours)\n\nAvailable features:\n\n- Holdings overview: a table of your current holdings, and the market value of the positions.\n- A transaction list: merge data from multiple sources into one transaction list.\n- A transaction chart: show historical price data along with markers for purchases and divestments.\n- Profit- and loss statement: show the historical result from your transactions.\n\n## What exactly is this?\n\nIt's a web app running on your computer.\n\n## But why\n\nI've been looking for a library where I can download a set of transactions from my broker and pension fund manager use the merged data for analysis. When I couldn't find one, I decided to build it instead.\n\n## Cloud storage? No.\n\nYour data is stored locally. The only thing cloud is that the library allows you to fetch market data from the Internet.\n\n## Screenshots from app\n\nClick the images to view a larger version.\n\n### Portfolio overview\n\n![Screenshot of the general ledger.](/docs/assets/portfolio_overview.png)\n\n### Transaction list\n\n![Screenshot of the transaction list.](/docs/assets/transaction_list.png)\n\n### Income statement\n\n![Screenshot of the general ledger.](/docs/assets/income_statement.png)\n\n## Installing\n\nChoose one of the options below. I'm personally using (1).\n\n### (1) Running in VS Code\n\n- Clone the library from GitHub: `git clone https://github.com/ggravlingen/pypmanager.git`\n- Install [Docker Desktop](https://www.docker.com/products/docker-desktop/) on your computer.\n- Install [VSCode](https://code.visualstudio.com/download) from Microsoft.\n- Install the [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension.\n- Open the library in VSCode and choose the option to open the folder in a container.\n- Run the install script by typing `./scipt/install.sh`.\n- Start the server in VSCode by clicking `Run and Debug` and then `Pypmanager server`.\n- Browse to the transaction list on `http://localhost:8001/#/transaction`.\n\n### (2) Building a Docker image from the source and Running as a stand-alone Docker service\n\n- Build the Docker image file: `docker build . --tag pypmanager:latest`.\n- Spin up a container and mount your data folders: `docker run -p 8001:8001 -v ./data:/code/app/data pypmanager:latest`.\n- Browse to the transaction list on `http://localhost:8001/#/transaction`.\n\n### (3) Running a pre-build docker\n\n- Fetch the docker image `docker pull ghcr.io/ggravlingen/pypmanager:2024.12.4`, where `2024.12.4` is the version you want to install.\n- Spin up a container and mount your data folders: `docker run -p 8001:8001 -v ./data:/code/app/data pypmanager:2024.12.4`.\n- Browse to the transaction list on `http://localhost:8001/#/transaction`.\n\n## How do add transactions\n\nYour own data goes into the folder `data/transactions`. If you make contributions to this library, _no_ files from the `data` folder should be committed to the library as it contains your own, private, data.\n\n## Market data (end-of-day prices on funds and equities)\n\nThis library is capable of calculating the current value of your portfolio. For this, we need end-of-day prices on funds and equities (market data).\n\nI have provided a few data sources built-in. Download this data using `make load-data`.\n\nConfiguration is done by appending `pypmanager/configuration/market_data.yaml` with the securities you want to download data for.\n\nCurrently, there is support for loading data from the following sites:\n\n- Morningstar\n- The Financial Times\n- Svenska Handelsbanken\n\nPlease feel free to subsmit your own data source.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fggravlingen%2Fpypmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fggravlingen%2Fpypmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fggravlingen%2Fpypmanager/lists"}