Interactive Brokers

Ach ja, nohc eine Frage, weil Du schreibst, Du hast eingestellt Monatsanfang bis jetzt, liest aber jede Woche ein. d.h. wenn eine Buchung schon vorhanden ist, wird diese nicht nochmal eingelesen/gebucht!?

das System erkennt schon eingelesene Transaktionen.

@GUHU - Danke :-). Gebühren, Zinsen und Dividenden sowie Steuer werden offensichtlich richtig importiert, soweit ich das sehe :slight_smile:

Was noch funktionieren sollte wären Aktientransaktionen. Habe ich da beim Erstellen des xml was übersehen? Oder funktioniert das nicht?

Was auch nicht geht sind Prämieneinnahmen von Optionen, aber da das von PP nicht unterstützt wird, ist das wohl so richtig. Ich verbuche diese immer als Zinsen bzw. Zinsbelastung. Bei Ausübung passe ich den Kurs entsprechend an. Ist jetzt nicht so ganz optimal, aber funktioniert - denke ich.

Schön wäre es halt, wenn es analog zu Zinsen und Dividenden noch einen Eintrag Prämien geben würde. Dann könnte man das besser unterscheiden.

Zum Thema Aktientransaktionen: das funktioniert derzeit nicht, einfach mal die Poste hierüber lesen.

PS: ich behelfe mir derzeit unter Linux mit einem Einzeiler, der die XML-Datei um tradeTime ergänzt:

sed 's/" tradeDate=\"/" tradeTime=\"100000\" tradeDate=\"/'

Danke, ich dachte vielleicht geht inzwischen was mit Aktien.
Die Idee ist gut. Habe kein Linux, vielleicht geht es auch mit Notepad++ - wobei, wenn es auch so funktioniert, ist es auch ok. Die Fehler kann man dann ja getrost ignorieren. Zeitangabe finde ich eh überflüssig

die Fehler kannst Du ignorieren, dann werden halt keine Buy/Sell-Transaktionen übernommen, der Rest schon. Wenn Du tradetime in der datei ergänzt, entweder im Editor oder mit dem Skript, dann werden auch diese Transaktionen übernommen.

Ah! Ok, Danke, dann werde ich das mal probieren. Muss schauen, ob das einfach geht. So ein RegExpr ist doch immer ziemlich kompliziert…

Also das ersetzen klapp denke ich. es steht dann in der xml:
… dateTime=„20190515;150000“ tradeTime=„100000“ tradeDate=„20190515“ settleDateTarget=„20190517“ …

Aber es kommt dann beim Import die Fehlermeldung:
Attribut „tradeTime“ wurde bereits für Element „Trade“ angegeben

Was bedeutet das? Wo ist das Problem? Doch falsch die tradeTime einzufügen?? Damit bricht der Import nämlich komplett ab.

Also du musst im Prinzip nur eine Tradetime einfügen, wie in meinem Bild dargestellt. Ob per Script oder von Hand in Notepad ist egal.

OK, ich habe das in den Sourcen gefixed, wie kann ich das contributen?

2 Likes

Du postest deine Änderungen als Pull Request via GitHub auf den Master @ GitHub - portfolio-performance/portfolio: Track and evaluate the performance of your investment portfolio across stocks, cryptocurrencies, and other assets. .

Siehe auch Creating a pull request - GitHub Docs

2 Likes

OK, irgendwie habe ich das nicht so hinbekommen, ich kann auch kein JAR-File erstellen. Arbeite aber mit Eclipse auch erst seit 4h… :slight_smile:

1 Like

@Rollo_Joe: War mein Fehler. Beim Ersten Eintrag war die time 2x eingefügt. :frowning: Nun funktioniert es, allerdings sind m.E. die Beträge falsch.

Du nimmst immer den Basispreis, was in jedem Fall bei einem Verkauf falsch ist. Grundsätzlich wäre zu unterscheiden, ob Du die Prämien beim Vereinnahmen verbuchst, so wie ich das einmal monatlich mache. Dann darf beim Verkauf nur Ertäge-Provision gebucht werden. (Wäre finanztechnisch/Finanzamt mäßig richtig).

Buchst Du es wie CapTrader, dann wird die Prämie beim Verkauf berücksichtigt. Dann wäre es: Erträge+Prämien-Provision. Wobei die Prämien mit folgender Formel berechnet werden können:
(Erträge-Basis-Provision)+G&V. Ist jetzt z.B. bei einem zugeordneten Call so. Ob es immer so passt müßte man prüfen!?

Wobei ich sehe, dass Du die Prämien beim vereinnahmen als Verkauf buchst und dann bei Zuordnung wieder als Kauf, also neutralisierst…womit der Fall 2 dann richig wäre? Funktioniert das denn mit dem Verkauf ohne Bestand in PP?? Oder buchst Du die dann z.B. als Zinsertrag ein?

Wie siehst Du das? Oder die Anderen?

Auch die Prämienbuchungen stimmen nicht, falls die Option zurückgekauft wurde!? Gleiche Problematik! Maßgeblich sind Erträge und Provisionen!

Vielleicht gibt es eine Möglichkeit das bilateral zu klären. Ich helfe gerne mit soweit ich kann ;-).

OK, ich bin gerne bereit mich in das Mudul einzuarbeiten. Ich habe nur die tradeTime-Abfrage reingefummelt. Alles andere habe ich mir nicht angesehen, bzw. ist ja auch nicht von mir.
Mit Optionen arbeite ich nicht, daher kann ich dazu nichts sagen.
Aber es ist richtig, alle Punkte werden noch nicht übernommen.
Wenn du mir einen Auszug aus der XML-DAtei gibts bzw. veröffentlichst und was es machen soll, so kann ich schauen, wir wir das gemeinsam hinbekommen.
An PP programmiere ich jetzt seit gefühlt einer Stunde - also ich bin noch lernfähig :slight_smile:

Gibt es hier auch eine PN? oder können wir mal telefonieren, bzw eMail schreiben. Dann können wir versuchen es zu Zweit hinzubekommen. Ich hatte früher auch mal was in Eclipse gemacht. Aber lange her… Und zu den Optionen kann ich Dir dann Beispiele geben bzw. schreiben, wie es sein müsste/könnte.

Wenn Du auf den Namen klickst, sollte in dem kleine Popup ein Button Nachricht erscheinen.

für mich sieht das alles soweit ganz gut aus, weiß nocht woher der Fehler bei den Optionen kommen soll, bei den Stocks/Aktien wird soweit alles korrekt eingetragen.
Vielleicht liegt der Fehler in der XML-Datei?
Werden dort alle wichtigen Informationen übermittelt?
Ich kann recht einfach nach Aktion und Option unterscheiden…

            // Set the Amount which is "cost"
            Double amount = Math.abs(Double.parseDouble(element.getAttribute("cost")));
            setAmount(element, transaction.getPortfolioTransaction(), amount, currency);
            setAmount(element, transaction.getAccountTransaction(), amount, currency, false);

            // Share Quantity
            Double qty = Math.abs(Double.parseDouble(element.getAttribute("quantity")));
            Double multiplier = Double.parseDouble(Optional.ofNullable(element.getAttribute("multiplier")).orElse("1"));
            transaction.setShares(Math.round(qty.doubleValue() * Values.Share.factor() * multiplier.doubleValue()));

            // fees
            double fees = Math.abs(Double.parseDouble(element.getAttribute("ibCommission")));
            String feesCurrency = asCurrencyUnit(element.getAttribute("ibCommissionCurrency"));
            Unit feeUnit = createUnit(element, Unit.Type.FEE, fees, feesCurrency);
            transaction.getPortfolioTransaction().addUnit(feeUnit);

            // taxes
            double taxes = Math.abs(Double.parseDouble(element.getAttribute("taxes")));
            Unit taxUnit = createUnit(element, Unit.Type.TAX, taxes, currency);
            transaction.getPortfolioTransaction().addUnit(taxUnit);

Das hätte ich auch gedacht, aber entweder bin ich blind, oder es gibt bei mir keinen Button Nachricht!?

grafik

@Rollo_Joe Nein, die xml ist schon richtig. Du nimmst nur den falschen Wert raus. Der Verkaufserläs ist nicht cost sondern tradeMoney". Hier ein Beispiel:

Trade

Gekauft für 1030,50
Vk-Kurs 4,04
Stück 300,00
Vk-Prov. 3,00
VK-Erlös 1209,00
Gewinn 178,50

Transactionscript .xml
… symbol=„BLDP“ description=„BALLARD POWER SYSTEMS INC“ conid=„56935150“ securityID="" securityIDType="" cusip="" isin="" listingExchange=„NASDAQ“ underlyingConid="" underlyingSymbol="" underlyingSecurityID="" underlyingListingExchange="" issuer="" multiplier=„1“ strike="" expiry="" tradeID=„2449334827“ putCall="" reportDate=„20190524“ principalAdjustFactor="" dateTime=„20190524;143022“ tradeTime=„100000“ tradeDate=„20190524“ settleDateTarget=„20190529“ transactionType=„ExchTrade“ exchange=„ISLAND“ quantity="-300" tradePrice=„4.04“ tradeMoney="-1212" proceeds=„1212“ taxes=„0“ ibCommission="-3" ibCommissionCurrency=„USD“ netCash=„1209“ closePrice=„4.07“ openCloseIndicator=„C“ notes="" cost="-1030.5" fifoPnlRealized=„178.5“ fxPnl=„0“ mtmPnl="-9" origTradePrice=„0“ origTradeDate="" origTradeID="" origOrderID=„0“ clearingFirmID="" transactionID=„10736990080“ buySell=„SELL“ ibOrderID=„1202211118“ ibExecID=„00013d66.5ce7dcc1.01.01“ brokerageOrderID=„00251dd3.0001082e.5ce77086.0002“ orderReference="" volatilityOrderLink="" exchOrderId=„N/A“ extExecID=„0343797592“ orderTime=„20190524;134709“ openDateTime="" holdingPeriodDateTime="" whenRealized="" whenReopened="" levelOfDetail=„EXECUTION“ changeInPrice=„0“ changeInQuantity=„0“ orderType=„LMT“ traderID="" isAPIOrder=„N“ />

TransactionScript .pdf

Dein Import

Aber ich denke, wir klären das lieber privat per mail, dann kann ich Dir auch eine Beispiel xml machen mit allen Fällen und ggf weiter Screenshots,… und es bleiben auch konzeptionelle Fragen, die zu klären wären