Giter Club home page Giter Club logo

export-to-ghostfolio's Introduction

Dick Wolff

Hi, my name is Dick Wolff 🐺.

I'm a (full stack) software engineer and IT architect πŸ‘¨πŸ»β€πŸ’» currently working at Info Support. My passion is front-end development (the touchy-feely stuff), but I also like to do backend development to shake things up.

Since 2015 I've grown fond of motor racing. I started watching Formula 1, and have since diversified my motor racing interest into other categories (like the F1 Feeder series, F2), IndyCar and WEC.

In 2018 I discovered I liked traveling ✈️ and hiking πŸ₯Ύ, like a lot! Since then I've been planning trips all around the world 🌎.

Github-sponsors Β  BuyMeACoffee

Certifications

January 6, 2021 March 21, 2024 March 11, 2024
November 14, 2023 January 4, 2024

September 5, 2023 September 9, 2023 November 24, 2023 November 30, 2023 June 10, 2024

export-to-ghostfolio's People

Contributors

deej81 avatar dickwolff avatar gabrielgradinaru avatar lildude avatar sonlis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

export-to-ghostfolio's Issues

[Degiro exporter v2] Error parsing Dutch transaction export from degiro.nl

claesmathias@rpifive:~/export-to-ghostfolio$ docker logs -f export-to-ghostfolio

[email protected] watch
ts-node ./src/watcher.ts

[i] Watching /var/e2g-input (using polling)..
[i] Found Transactions.csv!
[i] Determined the file type to be of kind 'degiro-v2' (overidden by environment variable).
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using DeGiro converter (V2 Beta)
[i] NOTE: You are running a converter that is currently in beta.
[i] If you have any issues, please report them on GitHub. Many thanks!
[e] An error ocurred while processing.
[e] Error details: Error: An error ocurred while parsing!
[e] Moving file to output..
Transactions.csv

[Degiro exporter v2] Fees are not properly matched to their transaction

The fees paid during a transaction are not linked to said transaction.

Error

In my example, using this CSV:

Date,Heure,Date de,Produit,Code ISIN,Description,FX,Mouvements,,Solde,,ID Ordre
11-03-2024,10:39,11-03-2024,QT GROUP OYJ,FI4000198031,Frais DEGIRO de courtage et/ou de parties tierces,,EUR,-4.90,EUR,33.53,cce1bd4c-9404-49b0-b69a-43a5c307d3c5
11-03-2024,10:39,11-03-2024,QT GROUP OYJ,FI4000198031,"Achat 6 QT GROUP OYJ@79,96 EUR (FI4000198031)",,EUR,-479.76,EUR,38.43,cce1bd4c-9404-49b0-b69a-43a5c307d3c5

The fees are not added to the transaction, even though they are from the same order.

Using the degiro sample export csv, the same error arises:

15-05-2019,09:05,15-05-2019,ISHARES MSCI WOR A,IE00B4L5Y983,"Compra 6 ISHARES MSCI WOR A@49,785 EUR (IE00B4L5Y983)",,EUR,-298.71,EUR,0.64,a47e2746-bfbd-4654-bd6c-5e58e470d32f
02-01-2024,14:42,02-01-2024,ISHARES MSCI WOR A,IE00B4L5Y983,Comissáes de transação DEGIRO e/ou taxas de terceiros,,EUR,-1.00,EUR,2.54,7b377a93-5695-4131-8954-5c78996fbed4
02-01-2024,14:42,02-01-2024,ISHARES MSCI WOR A,IE00B4L5Y983,"Compra 1 ISHARES MSCI WOR A@82,055 EUR (IE00B4L5Y983)",,EUR,-82.06,EUR,3.54,7b377a93-5695-4131-8954-5c78996fbed4

The commision is added to the first transaction instead of the second, while it belongs to the second as the order number suggests.

    {
      "accountId": "ed7a85f8-1c5f-4d84-b700-c0081c6c6ff2",
      "comment": "",
      "fee": 1, <- 1 fee here even though it should be 0
      "quantity": 6,
      "type": "BUY",
      "unitPrice": 49.785,
      "currency": "EUR",
      "dataSource": "YAHOO",
      "date": "2019-05-15T09:05:00+03:00",
      "symbol": "IWDA.AS"
    },
    {
      "accountId": "ed7a85f8-1c5f-4d84-b700-c0081c6c6ff2",
      "comment": "",
      "fee": 0, <- 0 fee here even though there should be 1
      "quantity": 1,
      "type": "BUY",
      "unitPrice": 82.06,
      "currency": "EUR",
      "dataSource": "YAHOO",
      "date": "2024-01-02T14:42:00+02:00",
      "symbol": "IWDA.AS"
    },

Problem within the code

The code always tries to match a transaction and fee with transaction being n, and fee n+1. However, it is not always the case, as my example export shows, and even the sample one.

if (this.lookaheadIsSameProduct(records, record, idx) || this.isBuyOrSellRecord(record) || this.isDividendRecord(record)) {

if (this.lookaheadIsSameProduct(records, record, idx) || this.isBuyOrSellRecord(record) || this.isDividendRecord(record)) {
  const combinedRecord = this.combineRecords(record, records[idx + 1], security);

Possible solution

Add also a check to n-1 or/and add a check if the order number is the same between the order and the fee.

I could work on it if needed πŸ‘

Failure to deal with empty response from Yahoo Finance in combination with no symbol being present.

Hi,

Yesterday I've setup Ghostfolio, found your project and I tried to use this project to import my DeGiro transactions.

However, in my DeGiro export contains the ISIN, US00165C1045. US00165C1045 is AMC, but the Yahoo Finance response is an empty array on the quotes element. So the converter it tries to rely on the symbol but the DeGiro export doesn't contain symbols for that line and thus subsequently fails.

The CSV line on which the convert fails:
01-02-2021,15:39,01-02-2021,AMC ENTERTAINMENT HOLD,US00165C1045,Valuta Debitering,1.2108,USD,-16.70,USD,0.00,43a88697-7358-4389-9440-d8aa6db536ce

Yahoo finance response

{
  explains: [],
  count: 0,
  quotes: [],
  news: [],
  nav: [],
  lists: [],
  researchReports: [],
  screenerFieldResults: [],
  totalTime: 23,
  timeTakenForQuotes: 415,
  timeTakenForNews: 0,
  timeTakenForAlgowatchlist: 400,
  timeTakenForPredefinedScreener: 400,
  timeTakenForCrunchbase: 400,
  timeTakenForNav: 400,
  timeTakenForResearchReports: 0,
  timeTakenForScreenerField: 0,
  timeTakenForCulturalAssets: 0
}

Stacktrace

TypeError: Cannot read properties of undefined (reading 'symbol')
    at YahooFinanceService.<anonymous> (/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:77:33)
    at Generator.next (<anonymous>)
    at fulfilled (/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:5:58)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:77
            symbol = symbols[0].symbol.split(".")[0];
                                ^
TypeError: Cannot read properties of undefined (reading 'symbol')
    at YahooFinanceService.<anonymous> (/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:77:33)
    at Generator.next (<anonymous>)
    at fulfilled (/home/sander/tmp/Export-To-Ghostfolio/src/yahooFinanceService.ts:5:58)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

Fix workflow runs on PR from other contributors

When a contributor opens a PR, the GitHub workflows do not run. I have to approve each run manually. When I run a workflow (eg. testing), the run fails on adding the test results on the PR:
image

The testing workflow needs to be able to run on any PR, and publish the results on the PR.

I don't want the Docker pipeline to run though, so not any image will be pushed to Docker hub.

JSON not working if language does not match - date must be a valid ISO 8601 date string

Hi

Since I can not respond to the old issue (dickwolff/DEGIRO-to-Ghostfolio#1) I opened a new one here. It looks better now, but now something with the date doesn`t work.

Image:
image

Example JSON output
{ "accountId": "9b6128be-97ff-4d53-a7b0-ef58413e307f", "comment": "", "fee": 0.29, "quantity": 1, "type": "DIVIDEND", "unitPrice": 1.93, "currency": "USD", "dataSource": "YAHOO", "date": "Invalid Date", "symbol": "A" }

Include TradeRepublic

is there some way to include TradeRepublic? There is a Private API, where i get all my Transactions (in PDF)

Add test coverage to `SecurityService.ts`

After #58 (#60) is completed, add test coverage to the Security Service class. This is now tested because all the converters call it, but not all paths have been covered. Add a test file for this.

Add functionality to automatically validate JSON and upload to Ghostfolio

Ghostfolio offers endpoints to automatically validate and upload activities.

There should be two settings that allows users to automatically upload the converted JSON to Ghostfolio. This can be done in two steps. Firstly, validate the JSON. And then also import automatically.

This will be an experimental feature, because there is no human oversight for checking duplicate transactions.

[Degiro exporter v2] Taxes on dividend are added as dividends instead of substracting it from the dividend

Taxes on dividends are counted as dividends instead of being substracted from said dividend.

Bug

Given this CSV, and Impots sur dividende meaning tax on dividend:

18-03-2024,08:38,15-03-2024,REALTY INCOME CORP,US7561091049,Dividende,,USD,0.51,USD,0.36,
18-03-2024,08:38,15-03-2024,REALTY INCOME CORP,US7561091049,ImpΓ΄ts sur dividende,,USD,-0.15,USD,-0.15,

Outputs the following:

    {
      "accountId": "ed7a85f8-1c5f-4d84-b700-c0081c6c6ff2",
      "comment": "",
      "fee": 0,
      "quantity": 1,
      "type": "DIVIDEND",
      "unitPrice": 0.51,
      "currency": "USD",
      "dataSource": "YAHOO",
      "date": "2024-03-18T08:38:00+02:00",
      "symbol": "RY6.F"
    },
    {
      "accountId": "ed7a85f8-1c5f-4d84-b700-c0081c6c6ff2",
      "comment": "",
      "fee": 0,
      "quantity": 1,
      "type": "DIVIDEND",
      "unitPrice": 0.15,
      "currency": "USD",
      "dataSource": "YAHOO",
      "date": "2024-03-18T08:38:00+02:00",
      "symbol": "RY6.F"
    },

There should be only one dividend of 0.36.

degiro exporters only writes 12 transactions

When trying to run the degiro exporters it only exports 12 transactions and then stops:
[nodemon] 2.0.22 [nodemon] to restart at any time, enter rs[nodemon] watching path(s): src\**\* [nodemon] watching extensions: ts,js [nodemon] startingts-node ./src/index.ts degiro Processing file using DeGiro converter Read CSV file C:\Users\User\Downloads\Account.csv. Start processing.. β–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 4% | ETA 225s | Duration: 18s | 12/273 Processing complete, writing to file.. Wrote data to 'ghostfolio-degiro.json'! [nodemon] clean exit - waiting for changes before restart

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'length' of undefined at DeGiroConverter

I just installed Ghostfolio the docker compose way and thats up and running. Now im trying to import my deGiro transactions from the last couple year, but after running npm run start degiro I get the following error:

> [email protected] start
> nodemon "degiro"

[nodemon] 2.0.22
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): src/**/*
[nodemon] watching extensions: ts,js
[nodemon] starting `ts-node ./src/index.ts degiro`
Processing file using DeGiro converter
Read CSV file sample-trading212-export.csv. Start processing..
(node:2894272) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'length' of undefined
    at DeGiroConverter.<anonymous> (/home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/src/converters/degiroConverter.ts:52:49)
    at Generator.next (<anonymous>)
    at /home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/src/converters/degiroConverter.ts:31:71
    at new Promise (<anonymous>)
    at __awaiter (/home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/src/converters/degiroConverter.ts:27:12)
    at /home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/src/converters/degiroConverter.ts:40:45
    at Parser.<anonymous> (/home/ingz/docker/compose/apps/Ghostfolio/Export-To-Ghostfolio/node_modules/csv-parse/dist/cjs/index.cjs:1392:7)
    at Parser.emit (events.js:314:20)
    at Parser.EventEmitter.emit (domain.js:483:12)
    at errorOrDestroy (internal/streams/destroy.js:108:12)
(node:2894272) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:2894272) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
[nodemon] clean exit - waiting for changes before restart

Degiro conversion error - module not found

Hi everyone.
I'm trying to convert my order history exported from Degiro but I'm getting the following error:

➜  Export-To-Ghostfolio git:(main) npm run start degiro

> [email protected] start
> tsx ./src/manual.ts "degiro"


node:internal/process/esm_loader:34
      internalBinding('errors').triggerUncaughtException(
                                ^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/home/username/Scaricati/Export-To-Ghostfolio/node_modules/dayjs/plugin/customParseFormat' imported from /home/username/Scaricati/Export-To-Ghostfolio/src/converters/degiroConverter.ts
Did you mean to import "dayjs/plugin/customParseFormat.js"?
    at finalizeResolution (node:internal/modules/esm/resolve:265:11)
    at moduleResolve (node:internal/modules/esm/resolve:933:10)
    at defaultResolve (node:internal/modules/esm/resolve:1157:11)
    at nextResolve (node:internal/modules/esm/hooks:866:28)
    at S (file:///home/username/Scaricati/Export-To-Ghostfolio/node_modules/tsx/dist/esm/index.mjs?1714900896692:2:2951)
    at nextResolve (node:internal/modules/esm/hooks:866:28)
    at Hooks.resolve (node:internal/modules/esm/hooks:304:30)
    at handleMessage (node:internal/modules/esm/worker:196:24)
    at Immediate.checkForMessages [as _onImmediate] (node:internal/modules/esm/worker:138:28)
    at process.processImmediate (node:internal/timers:478:21) {
  code: 'ERR_MODULE_NOT_FOUND',
  url: 'file:///home/username/Scaricati/Export-To-Ghostfolio/node_modules/dayjs/plugin/customParseFormat'
}
Node.js v20.12.2

Same issue when using Docker image or local build.
I'm on Fedora 40, Node version v20.12.2

No error indication when debugging errors raised when processing lines.

When running the conversion, I had an error that would display as such:

[e] An error ocurred while trying to retrieve symbol US7561091049 (line 8)! 

After 1 hour of debugging, and printing the correct error, it was because of this:

[Error: EACCES: permission denied, mkdir '/var/e2g-cache'] {
  errno: -13,
  code: 'EACCES',
  syscall: 'mkdir',
  path: '/var/e2g-cache'
} 

It would be an improvement to display the user why did it fail, instead of just letting them know an error has risen.
I would propose to add the error to the console log message here:

let message = `\n[e] An error ocurred while trying to retrieve {query} (line ${index + 2})!\n`;

Such as:

    protected logQueryError(query: string, index: number, err: string) {

        let message = `\n[e] An error ocurred while trying to retrieve {query} (line ${index + 2}): ${err}.\n`;

And add the error when calling the logQueryError function for each converter, but for example here:

this.logQueryError(record.isin || record.product, idx);
.

Or modify the ErrorCallbackFunction from just returning process.exit(99) to log the error before exiting.

Got a parsing error

[email protected] watch
tsx ./src/watcher.ts

[i] Purging cache (PURGE_CACHE set to true)..
[i] Watching /var/tmp/e2g-input (using polling)..
[i] Cache purged!
[i] Found Transactions(1).csv!
[i] Determined the file type to be of kind 'degiro'.
[i] Found xStation5_cashOperations_2770548_31-12-2006--29-05-2024.csv!
[i] Determined the file type to be of kind 'xtb'.
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using DeGiro converter
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using XTB converter
[e] An error ocurred while processing.
[e] Error details: Error: An error ocurred while parsing!
[e] Moving file to output..
[i] Read CSV file. Start processing..
/app/src/converters/xtbConverter.ts:112
const quantity = parseFloat(match[1]);
^

TypeError: Cannot read properties of null (reading '1')
at (/app/src/converters/xtbConverter.ts:112:45)
at Parser. (file:///app/node_modules/csv-parse/lib/index.js:102:7)
at Parser.emit (node:events:519:28)
at Parser.emit (node:domain:488:12)
at endReadableNT (node:internal/streams/readable:1696:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)

Node.js v20.13.1

Example File
xStation5_cashOperations_2770548_31-12-2006--29-05-2024.csv

eToro converter - transactions with same `Details` not counted?

Hi!
I am trying to convert my January transactions and there are multiple transactions (with the same name) which are happening. It looks like the converter only took in consideration the first of the list and then it jumps to the next one which has a different value in the Details field.

In the example below it will only count the first NXPI/USD dividend and the first OLED/USD position closed.

Date,Type,Details,Amount,Units,Realized Equity Change,Realized Equity,Balance,Position ID,Asset type,NWA
07/01/2024 13:21:57,Dividend,NXPI/USD,0.02,-,0.02,"45,3.00",0.00,1520124620,Stocks,0.00
07/01/2024 13:21:57,Dividend,NXPI/USD,0.02,-,0.02,"45,3.02",0.00,1539539526,Stocks,0.00
07/01/2024 13:21:57,Dividend,NXPI/USD,0.03,-,0.03,"45,3.05",0.00,2472065850,Stocks,0.00
09/01/2024 15:30:40,Position closed,OLED/USD,18.43,0.102626,7.37,"45,0.42",0.00,2355395242,Stocks,0.00
09/01/2024 15:30:40,Position closed,OLED/USD,8.87,0.049420,1.80,"45,2.22",0.00,2472033271,Stocks,0.00
09/01/2024 15:30:41,Position closed,OLED/USD,89.92,0.500702,4.31,"45,6.53",0.00,1446690287,Stocks,0.00

Thanks! for checking this out!

Docker image?

Hello,
Any plans of containerizing this application yet? I am trying to do it myself but it appears that some dependencies wouldn`t work in production environment (and crash in development as well)
Thanks!

Swchab conversion error

Tried with multiple accounts and I always get the following output:

docker run --rm -v $PWD/exports/:/var/tmp/e2g-input -v .:/var/tmp/e2g-output --env GHOSTFOLIO_ACCOUNT_ID=<some-acct-id>  --env DEBUG_LOGGING=true dickwolff/export-to-ghostfolio

> [email protected] watch
> tsx ./src/watcher.ts

[i] Watching /var/tmp/e2g-input..
[i] Found Personal-Positions-2024-05-19.csv!
[i] Determined the file type to be of kind 'ibkr'.
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using IBKR converter
[e] An error ocurred while processing.
[e] Error details: Error: An error ocurred while parsing!
[e] Moving file to output..
[i] Stop container as usePolling is set to false..

Then when trying to import to Ghostfolio I get this error:

activities.0.currency is not valid
{
  "Positions for account Personal ...436 as of 04:48 PM ET, 2024/05/19": null,
  "": null
}

new install fails on dayjs import

i tried running the degiro exporter both by using dockerfile and by running it without dockerfile, both gave same error.

i used release 0.12.0 and the latest main branch, both failed
OS: Windows 11
Nodejs version used when running without dockerfile: 20.11.1

node:internal/process/esm_loader:34
internalBinding('errors').triggerUncaughtException(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'C:\Users\jovangoe\Downloads\Export-To-Ghostfolio\node_modules\dayjs\plugin\customParseFormat' imported from C:\Users\jovangoe\Downloads\Export-To-Ghostfolio\src\converters\degiroConverter.ts
Did you mean to import dayjs/plugin/customParseFormat.js?
at finalizeResolution (node:internal/modules/esm/resolve:264:11)
at moduleResolve (node:internal/modules/esm/resolve:917:10)
at defaultResolve (node:internal/modules/esm/resolve:1130:11)
at nextResolve (node:internal/modules/esm/hooks:865:28)
at S (file:///C:/Users/jovangoe/Downloads/Export-To-Ghostfolio/node_modules/tsx/dist/esm/index.mjs?1714897062814:2:2951)
at nextResolve (node:internal/modules/esm/hooks:865:28)
at Hooks.resolve (node:internal/modules/esm/hooks:303:30)
at handleMessage (node:internal/modules/esm/worker:196:24)
at Immediate.checkForMessages [as _onImmediate] (node:internal/modules/esm/worker:138:28)
at process.processImmediate (node:internal/timers:478:21) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///C:/Users/jovangoe/Downloads/Export-To-Ghostfolio/node_modules/dayjs/plugin/customParseFormat'
}

Improve predictability and decrease manual testing time with automatic testing

To prevent manual testing every time I do a change, which is a chore on it’s own, the library should be tested automatically using a testing framework and run automatically with GitHub actions.

Especially the DEGIRO converter could profit massively from this.

Start with an easy one, eg. Finpension and then ramp up to all of them.

Support for Interactive Brokers (IBKR)

It would be awesome if you could support IBKR.
I've created a custom flex query for the trades and dividends + taxes.
I'll create a small explanation on how to create the query, if you decide to implement this broker.

Trades

  • The trades report also contains money conversions (the last lines, which are missing an ISIN).
  • You do not need to subtract the IBCommission from TradeMoney, this is already done. I could also add the Money without the fees subtracted, if you prefer.

Trades.csv:

"Buy/Sell","TradeDate","ISIN","Quantity","TradePrice","TradeMoney","CurrencyPrimary","IBCommission","IBCommissionCurrency"
"BUY","20230522","CH0111762537","7","282.7","1978.9","CHF","-5","CHF"
"BUY","20230522","US9220427424","95","93.78","8909.1","USD","-1","USD"
"BUY","20230609","US9220427424","105","95.42","10019.1","USD","-1","USD"
"BUY","20230609","US9220427424","11","95.46","1050.06","USD","-1","USD"
"BUY","20230803","US9220427424","1","97.84","97.84","USD","-0.979","USD"
"BUY","20231228","US9220427424","2","103.18","206.36","USD","-1","USD"
"BUY","20240126","US9220427424","97","103.61","10050.17","USD","-1","USD"
"BUY","20240129","US9220427424","12","103.66","1243.92","USD","-1","USD"
"SELL","20230522","","-8000","1.1173","-8938.4","USD","-1.79924","CHF"
"SELL","20230609","","-10012","1.10725","-11085.787","USD","-1.79802","CHF"
"SELL","20240126","","-10020","1.1537","-11560.074","USD","-1.73416","CHF"

Dividends and Taxes

Dividends_Taxes.csv

  • Sadly, there is no option to directly output the amount of the shares you're holding. You'll need to divide the Amount by Price per share (extracted from Description string).
  • Regex for price per share: (\d+(\.\d+)?)(?= PER SHARE)
"Type","SettleDate","ISIN","Description","Amount","CurrencyPrimary"
"Withholding Tax","20230913","CH0111762537","SMMCHA(80486947) CASH DIVIDEND CHF 5.99 PER SHARE - CH TAX","-14.68","CHF"
"Withholding Tax","20230623","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.6504 PER SHARE - US TAX","-20.58","USD"
"Withholding Tax","20230921","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.4055 PER SHARE - US TAX","-12.9","USD"
"Withholding Tax","20231221","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.8008 PER SHARE - US TAX","-25.47","USD"
"Dividends","20230913","CH0111762537","SMMCHA(CH0111762537) CASH DIVIDEND CHF 0.69 PER SHARE (Return of Capital)","4.83","CHF"
"Dividends","20230913","CH0111762537","SMMCHA(80486947) CASH DIVIDEND CHF 5.99 PER SHARE (Ordinary Dividend)","41.93","CHF"
"Dividends","20230623","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.6504 PER SHARE (Ordinary Dividend)","137.23","USD"
"Dividends","20230921","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.4055 PER SHARE (Ordinary Dividend)","85.97","USD"
"Dividends","20231221","US9220427424","VT(US9220427424) CASH DIVIDEND USD 0.8008 PER SHARE (Ordinary Dividend)","169.77","USD"

[Degiro exporter v1] undefined 'comment'

ran using docker:
docker run -d -v ./input:/var/e2g-input -v ./output:/var/e2g-output --env GHOSTFOLIO_ACCOUNT_ID=<id here> dickwolff/export-to-ghostfolio

[i] Watching /var/e2g-input..
[i] Found degiro_export.csv!
[i] Determined the file type to be of kind 'degiro'.
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using DeGiro converter
[i] NOTE: There is a new version available of the DeGiro converter
[i] The new converter has multiple record parsing improvements and also supports platform fees.
[i] The new converter is currently in beta and we're looking for your feedback!
[i] You can run the beta converter with the command 'npm run start degiro-v2'.
[i] Read CSV file. Start processing..
/app/src/converters/degiroConverter.ts:155
            if (result.activities[result.activities.length - 1].comment === "txfees") {
                                                                ^
TypeError: Cannot read properties of undefined (reading 'comment')
    at DeGiroConverter.<anonymous> (/app/src/converters/degiroConverter.ts:155:65)
    at Generator.next (<anonymous>)
    at fulfilled (/app/src/converters/degiroConverter.ts:6:58)
npm notice
npm notice New minor version of npm available! 10.2.4 -> 10.5.0
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v10.5.0>
npm notice Run `npm install -g [email protected]` to update!
npm notice

running version 2 worked : --env FORCE_DEGIRO_V2=true in terms of no errors.

However, after checking the data there are parsing issues.

Make DEGIRO V2 GA

V2 works good. Make V2 the default and mark V1 as obsolete.

  • Replace degiro-v2 with degiro
  • Replace old degiro with degiro-v1
  • Remove beta notice and other relevant messages from degiro-v2
  • Add console.log notice to degiro-v1 that it won't receive updates anymore

DeGiro conversion failing

When using the docker instance I get the following error when trying to convert a freshly downloaded DeGiro transaction list;

[email protected] watch
tsx ./src/watcher.ts

[i] Watching /var/tmp/e2g-input..
[i] Found ._Transactions.csv!
[i] Determined the file type to be of kind 'freetrade'.
[i] Found Transactions.csv!
[i] Determined the file type to be of kind 'degiro'.
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using Freetrade converter
[i] Restored 0 ISIN-symbol pairs and 0 symbols from cache..
[i] Processing file using DeGiro converter
[e] An error ocurred while processing.
[e] Error details: Error: An error ocurred while parsing!
=> undefined
[e] Moving file to output..
[i] Stop container as usePolling is set to false..
npm notice
npm notice New minor version of npm available! 10.5.2 -> 10.8.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.8.0
npm notice Run npm install -g [email protected] to update!
npm notice

file format:
Transactions.csv

Could you support understanding this issue?

Only Fees being processed in Docker

Hi Dick,

I'm back after a long time! great work on the converter in the mean time! Congrats.

I've been playing with the docker instance. Using both docker and docker compose.
When trying to process Finpension and Swissquote, the only data converted is fees and interest but no equities.

let me know what you may need to track this down.
Mikael

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.