De/Aktienhandel

From GnuCash
Revision as of 13:40, 8 January 2022 by CWehli (talk | contribs) (Automatisierter Kursabruf mittels cron: Insert link to GnuCash help and tidied up.)
Jump to: navigation, search

Wie man ein Aktien- oder Wertpapier-Depot anlegt und zugehörige Kurse online abfragt ...

Zurück zur Hauptseite englische Version

Aktuelles

Leider hat Yahoo! nach einem Eigentümerwechsel am 1.11.2017 die von vielen genutzte CSV-Schnittstelle abgeschaltet. Dadurch stehen die Quellen Währung/currency, yahoo* (mit Ausnahme von json), canada, usa, nyse, nasdaq, vanguard nicht mehr zur Verfügung. Die Finance::Quote-Entwickler haben hart daran gearbeitet, diese Funktionalität durch die neue Quelle Alphavantage zu ersetzen. Die Details, um Alphavantage zu nutzen, sind im Anhang der Hilfe beschrieben.

Drosselung
Beim kostenlosen Alphavantage-Schlüssel sind die Abfragen auf derzeit 5/min. gedrosselt. Wer bereits ein paar Währungen abfragt, sollte also für Wertpapiere andere Quellen, etwa Yahoo über JSON suchen.
Windows
Benutzer die schon lange dabei sind, müssen eventuell ihre Perl-Version aktualisiern. Dazu entfernt man alle vorhandenen Versionen sowohl in der Systemsteuerung, als auch im Explorer. Anschließend führt man Erweiterung um Wechselkurse mit GnuCash online abzurufen erneut aus, wodurch eine aktuelle Version von Strawberry Perl installiert wird.

Weiterhin empfiehlt es sich, die Mailing-Liste gnucash-user zu beobachten, da dort neue Versionen von F::Q angekündigt werden.

(Sobald sich die Lage stabilisiert hat, kann dieses Kapitel in den Rest der Seite eingearbeitet werden.)

Einleitung

Mit GnuCash kann man eine Vielzahl verschiedener Wertpapiere und auch Edelmetalle verwalten. Dazu gehören:

  • Edelmetalle: XAU - Gold, XAG - Silber, ... als Untergruppe der
  • Währungen: EUR, GBP, USD ...
  • Anleihen, Renten und andere handelbare festverzinsliche Papiere
  • Aktien, also an Börsen gehandelte Unternehmensanteile
  • Fonds, also Papiere von Gesellschaften, die wieder in die zuvor genannten investieren.

Für Kauf und Verkauf dieser Papiere ist natürlich immer maßgeblich, was man auf dem entsprechenden Beleg stehen hat. Will man sich aber zwischendurch einen Überblick über den aktuellen Wert seiner Investitionen machen, so kann man mithilfe des Moduls Finance::Quote Onlinekurse aus verschiedenen Quellen abrufen und zur weiteren Verwendung, etwa in den Portefolio-Berichten, in der Kursdatenbank abspeichern.

Verschiedene Anbieter wie etwa Börsen und Fondgesellschaften, aber auch Dritte wie Yahoo, bieten auf ihren Webseiten kostenlose Kursinformationen an. Diese sind bisweilen etwas zeitverzögert, um kommerziellen Anbietern wie Reuters nicht das Wasser abzugraben, für den Privatgebrauch aber allemal gut.

Diese Anbieter werden im Folgenden als Quellen bezeichnet. Daneben ist noch das Symbol wichtig, unter dem das Wertpapier bei dem jeweiligen Anbieter gelistet wird..

Voraussetzungen

Um diese auszulesen und u.a. für GnuCash zur Verfügung zu stellen, gibt es das eigenständige Projekt http://sourceforge.net/projects/finance-quote (F::Q). Dorthin sind also auch eventuelle Fehlerberichte zu senden, falls etwa eine Seite ihr Format geändert hat.

Sowohl F::Q als auch die Gnucash-Hilfsskripte gnc-fq-* sind in Perl geschrieben. Also ist auch die Installation eines Perl-Interpreters erforderlich.

  • Windows-Benutzer können beide über den Menüpunkt Erweiterung um Wechselkurse mit GnuCash online abzurufen in der Gnucash-Gruppe des Start-Menüs installieren.
Hinweis: Da Windows erstmal nichts mit Perl-Dateien anzufangen weiß, müssen Windows-Benutzer bei den Befehlen in diesem Kapitel i.d.R. perl voranstellen.
  • Linux-Benutzer sollten die entsprechenden Pakete ihrer Distribution verwenden, wobei F::Q unter einer Permutation aus [lib]finance-quote-perl zu finden sein sollte.
  • MacOS hat Perl bereits vorinstalliert.

Weitere Möglichkeiten (gnc-fq-update und CPAN) sind in #Bei Formatänderung der Quelle: gnc-fq-update ff. erläutert.

Quellen in Finance::Quote

Um zu erfahren, welche dieser Quellen dem Perl-Programm Finance::Quote zur Verfügung stehen, gibt man an der Konsole

gnc-fq-check

ein. Dabei sieht man auch gleich, welche FQ-Version man verwendet. Falls hier eine Fehlermeldung kommt, kann es auf Unix-artigen Systemen sinnvoll sein, das unten erwähnte gnc-fq-update durchführen, um Finance::Quote zu aktualisieren.

Um die Dokumentation zu einer Quelle anzuzeigen, kann man

man Finance::Quote::<Quelle>

oder

perldoc Finance::Quote::<Quelle>

an der Konsole eingeben oder im Browser die Datei /usr/share/man/man3/Finance::Quote::<Quelle>.3pm öffnen - zumindest in Linux, Pfade für andere Systeme bitte ergänzen.

Eine Übersicht der Kursquellen mit Erläuterungen gibt es in der Referenz.

Um die ausführliche Dokumentation von Finance::Quote zu lesen, kann man an der Konsole

man Finance::Quote

eingeben. Diese zielt aber mehr auf Perl-Programmierer als auf Anwender.

Bei Formatänderung der Quelle: gnc-fq-update

Schließlich kann man, zumindest unter Linux, mit

sudo gnc-fq-update

Finance::Quote mit allen erforderlichen Modulen und eventuellen Schnittstellen zu neuen Datenquellen auf den neuesten Stand bringen, ohne sich erst mit dem Comprehensive Perl Archive Network (CPAN) auseinandersetzen zu müssen. Falls man das doch nutzt, hat die englische Seite CPAN noch ein paar Hinweise.

Ubuntu und Derivate
Falls dieser Script auf Ihrem System nicht vorhanden ist, finden Sie es hier. Ein Beispiel, wie es anzupassen wäre, befindet sich hier.

Für die Quartz-Version von OSX lauten die Befehle:

sudo perl -MCPAN -e shell
sudo /Applications/Gnucash.app/Contents/Resources/bin/gnc-fq-update

Die Anleitung hierzu für Windows steht auf der Installationsseite.

oder manuelles Ersetzen mit noch nicht veröffentlichten Modulen

Neuere Versionen von Finance::Quote (ab 1.18, September 2012) holen erfolgreich die Währungskurse. Somit erübrigt sich die gepatchte Version [Quote.pm] von Mike Alexander.

Um Ihre aktuelle Finance::Quote-Installation zu überprüfen:

cpan -D Finance::Quote

Die Ausgabe davon liefert einem

  • den Pfad, wo Quote.pm installiert ist
  • ob man auch die zuletzt veröffentlichte Version 1.18 hat und damit "up to date" ist.
Sollte das nicht der Fall sein, sollte man zunächst F::Q wie oben beschrieben aktualisieren.

Falls erforderlich kann man die installierte Version mit einer noch nicht als stabil freigegebenen Version überschreiben, was allerdings Administratorrechte benötigt. Der offizielle, saubere Weg ist zwar ein anderer, siehe etwa [1], aber so geht es wohl für die meisten am einfachsten und schnellsten.

Weitere Details zur Verwendung von cpan finden sich auf der englischen Seite.

Die Qual der Wahl der Quelle

Da das Symbol ein und desselben Papiers bei den verschiedenen Kursquellen recht verschieden sein kann, hier eine Faustregel:

  • Wenn ich als Kleinanleger sowieso nur die Produkte der mit meinem Finanzinstituts X assoziierten Fondgesellschaft Y kaufe, reicht es, wenn ich mich mit der Symbol-Terminologie dieser Gesellschaft vertraut mache.
  • Bin ich aber eine global agierende Heuschrecke, ist es wohl besser, sich mit der Yahoo-Terminologie vertraut zu machen und, soweit möglich, alle Papiere über eines der Yahoo-Module oder über Alphavantage abzurufen.

Felder im Aktieneditor

Für F::Q wichtig sind das Symbol und die Quelle, wobei eben das Symbol je nach Quelle verschieden sein kann.

Voller Name

Na, was wohl? Name und Symbol erscheinen später in der Spalte "Währung/Aktie" in der Kontenübersicht. Spätestens wenn man mehrere ähnliche Papiere hat, ist es sinnvoll signifikante Daten wie etwa Herausgeber, Art, ggf. Zinssatz und Endfälligkeit in den Namen einzubauen.

Symbol

Das Symbol, ist das Kürzel, unter dem das Papier bei dem entsprechenden Dienst aufgeführt ist. Vorsicht, ein und dasselbe Papier kann bei verschiedenen Anbietern also unter ganz verschiedenen Symbolen geführt werden.

  • Bei Aktien oft das Tickersymbol an der jeweiligen Börse,
  • bei in Deutschland gehandelten Papieren gewöhnlich die WKN,
  • bei Abfrage über eine Quelle, die mehrere Handelsplätze abruft und möglicherweise Notierungen in verschiedenene Währungen vorhält, wie Yahoo, ergänzt durch
  • das Währungssymbol, meist EUR, oder, falls es an mehreren Plätzen zu leicht unterschiedlichen Kursen gehandelt wird,
  • hinter einem Punkt das Kürzel des Handelsplatzes, meist .F für Frankfurt.

Die Yahoo-Liste der Handelsplätze oder auf englisch zeigt auch, wie verzögert die Kurse sind.

Bisweilen wird auch ein Papier an verschiedenen Börsen zu leicht unterschiedlichen Kursen gehandelt.

  • Dann kann ein Kriterium für die Auswahl des relevanten Handelsplatzes das jeweilige Handelsvolumen sein - also als signifikant wählt man den Handelsplatz mit dem über mehrere Tage beobachteten höchsten Umsatz des jeweiligen Papiers.
  • Andererseits, wenn ich aus den Kaufbelegen ersehen kann, dass mein Kreditinstitut seine Geschäfte bevorzugt an der Börse X abwickelt - und für andere Börsen eventuell Fremdgebühren in Rechnung stellt - sollte ich diese Heimatbörse bei der Auswahl bevorzugen.
Eine Heuristik zur Symbolsuche

Leider muß man bei diesen Symbolen ziemlich kreativ sein, um zum Erfolg zu kommen.

  • Ist der Herausgeber eine der implementierten deutschen Fondgesellschaften Adig/ComInvest/ComDirekt, Deka, DWS, Union? Symbol ist hier meist die WKN.
  • Wird das Papier bei einem implementierten deutschen Finanzdienstleister Finanzpartner, VWD gelistet? [Wer damit Erfahrung hat, möge die Angaben bitte ergänzen]
  • Ist es bei Yahoo gelistet?
    http://de.finance.yahoo.com/lookup?s=<ISIN>
    Symbol von der Seite übernehmen. Möglichst yahoo.com (US) nehmen, da die yahoo.uk (Europe)-Schnittstelle sich nicht gerade durch Stabilität auszeichnet.
  • Liefert eine Google-Suche nach der ISIN die Seite eines anderen durch ein FQ-Modul abfragbaren Anbieters? Auf der Webseite nachsehen, was als Symbol verlangt wird.
  • Sonst: Pech gehabt. Angenommen, die Google-Suche hätte Dir die Seite genannt, deren Aufbau einer Seite ähnelt, für die es bereits ein Modul gibt, könntest Du das natürlich anpassen und, sofern die Juristen des Anbieters das erlauben, es zu Finanz::Quote hochladen, damit andere auch etwas davon haben ...

Typ

Der Typ, welcher Programm-intern auch namespace - Namensraum - heißt, soll dem Benutzer lediglich helfen, seine Papiere zu gruppieren z.B. nach Art und Risken und wird nicht an F::Q übergeben. Die Vorgabe ist einan US-amerikanische Verhältnisse angepasster Vorschlag, den man größtenteils ignorieren kann:

Statt des Restes:

  • EUREX: European Exchange, ist eine der größten Terminbörsen für Finanzderivate weltweit.
  • NYSE: New York Stock Exchange, "die Wallstreet".
  • NASDAQ: National Association of Securities Dealers Automated Quotations, wurde 1971 als vollelektronische Handelsplattform bekannt.
  • AMEX: American Stock Exchange, vormals New York Curb Exchange, eine Wertpapierbörse in New York .
Warum die letzten drei als Typen unterschieden werden, zumal an anderer Stelle noch der Handelsplatz ausgewählt wird, ist dem Autor nicht ganz klar, vielleicht ein historisches Relikt? Also laut [2] wurden sie halt irgendwann als Namensräume vorgegeben.

sollte kann sie also so gruppieren, wie es für einen selbst sinnvoll ist, etwa nach

  • Renten (Festverzinslichen),
  • Aktien,
  • Fonds, sowie bei Bedarf:
  • Derivaten und
  • Optionen.

Falls man sehr viele hat, kann man sie weiter gruppieren, indem man z.B. :<Währung> anhängt:

  • Aktien:EUR
  • Aktien:GBP ...

Tip: Die Vorgaben lassen sich übrigens mit beliebigen Texten überschreiben, die die ursprüngliche Liste dann ergänzen. Dadurch ist dann möglich, die eigenen Papiere z. B. nach der zuvor gemachten Auflistung zu gruppieren.

Vielleicht findet ja auch irgendwann mal jemand die Zeit, diese Zeichenketten übersetzbar zu machen, damit sie durch jeweils regional sinnvolle Gliederungen ersetzt werden können. ;-)

WKN, ISIN oder anderer Code

Dies ist ein GnuCash-internes Feld, welches nicht an Finance::Quote übergeben wird. Man könnte hier also alles mögliche reinschreiben. Gedacht ist es aber, um eine einheitliche Nummer wie

Tip: Bei deutschen Papieren erhält man aus der ISIN durch Weglassen von "DE", den darauf folgenden führenden Nullen und der letzte Prüfziffer die WKN.

So kann man sich etwa diejenige der beiden Nummern, welche nicht im Symbol vorkommt dort, für den Fall merken, daß die derzeit verwendete Quelle irgendwann unbrauchbar wird und eine andere Quelle mit der anderen Nummer arbeitet.

Insbesondere bei Verwendung der ISIN gibt einem die Übersicht dann schon einen Hinweis, welche Papiere zusätzlichen Wechselkursschwankungen unterliegen.

In Fremdwährung notierte Papiere

Auch wenn es auf den ersten Blick nicht so aussieht - schließlich speichert GnuCash in dem Feld, in dem sonst die Währung gespeichert wird, das Symbol des Wertpapiers - ist es durchaus möglich, in Fremdwährung notierte Papiere anzulegen. Dazu gibt es sogar zwei mögliche Vorgehensweisen:

  • Die erste Buchung in das Papier bestimmt die Währung.

Dazu startet man seine erste Buchung in das Papier von einem Konto welches in der Währung ist, in welcher das Papier notiert wird. Falls der Wechselkurs-Dialog - etwa bei älteren Versionen - nicht automatisch erscheint, muss man ihn von Hand aufrufen.

Abhebung US-Bank xxx [USD]
Kauf IBM y Stück a zz [USD] = xxx [USD]

Um Verwirrung zu vermeiden, sollte man bei diesem Ansatz vermeiden, nachträglich eine Buchung in Drittwährung vor der Eröffnungsbuchung einzufügen.

  • Das übergeordnete Konto bestimmt die Währung, falls die erste Buchung aus dem Konto des Papiers erfolgt.

Dieser Ansatz empfiehlt sich wohl auch deshalb, weil man anhand der Kontenübersicht sieht, welche Papiere in welchen Währungen notiert werden - und welche Währungsrisiken damit verbunden sind:

Renten
EUR
Bundesschatzbrief XY
USD
Fed. Res. something
Aktien
EUR
Siemens
GBP
some british shares
 :

Hierbei muss man sich allerdings davor hüten, Wertpapierkonten nachträglich zu verschieben - sonst ist die Verwirrung komplett.

Beispiel: Buchung in Fremdwährung notierte Papiere für EUR gekauft

Um einen Kaufbeleg "IBM-Aktie in USD notiert, für EUR gekauft" nachzustellen, kann man folgende Struktur verwenden:

Hausbank (EUR)
Händler (EUR, Platzhalter)
EUR (Platzhalter)
Abrechnung (Typ: Bank)
SIE (Typ: Aktie) ...
USD (Platzhalter)
Abrechnung (Typ: Bank)
IBM (Typ: Aktie) ...

Kaufbeleg erfassen:

  1. x IBM @100 USD <- USD:Abrechnung
  2. y EUR @1,5 USD <- EUR:Abrechnung
    • ggf. fallen auf beiden Stufen noch noch Gebühren oder später Steuern an, daher die separaten Abrechnungs-Konten zum Aufsummieren.
  3. Ausgleich Händler:EUR:Abrechnung <- Hausbank (EUR)
Ausschüttungen, Verkäufe etc. werden später in derselben Reihenfolge, aber mit umgekehrten Vorzeichen erfaßt.
Alle Stückzahlen (IBM, USD, EUR)sind natürlich dem Kaufbeleg zu entnehmen. Die Preise werden dannn berechnet.

Weitere Maßnahmen

Es ist fast geschafft, die folgenden kleineren Maßnahmen können einem das Leben künftig aber noch etwas erleichtern. Weitergehende Informationen gibt es in den zugehörigen Buchungsbeispielen.

Zugehörige Erfolgskonten

Damit man später auch eine brauchbare Auswertung seiner Investitionen erhält, empfiehlt es sich, zu jedem Anlagekonto auch

  • je ein zugehöriges Aufwandskonto, etwa für Makler- und Depotgebühren, als auch
  • mindestens ein Ertragskonto für Zinsen, Dividenden usw. anzulegen.

Hierbei ist es meist sinnvoll, die Ertragsarten gleich soweit aufzugliedern, dass man hinterher die Zahlen für die leidige Steuererklärung auf einen Blick parat hat. Die Verbuchung der Dividendenerträge und Kommissionsaufwendungen erfolgt über eine zusätzliche leere Buchung gegen das entsprechende Anlagekonto (mehrteilige Buchung).

Anzeige des Wertes in der Kontenübersicht

Hat man sein erstes Wertpapier eingebucht, steht in der Kontenübersicht bei "Betrag" etwa 100 DBXD.MU, also Anzahl und Symbol. Spannender wäre aber 100 Stück * aktueller Kurs = aktueller Gesamtwert.

Rechts oben in der Kontenübersicht ist ein Pfeil nach unten. Wenn man darauf klickt, erscheint eine Liste mit den Spalten, die in der Kontenübersicht angezeigt werden. Da "Gesamt (EUR)" auswählen und es erscheint die Spalte mit den Summen in Berichtswährung.

Kontrolle im Bericht Erweitertes Portefolio

Erfahrungsgemäß kann es nicht schaden, während der erste Gehversuche auf diesem Gebiet, in einem Register-Tab den Bericht Erweitertes Portefolio zu öffnen und nach jeder eingegebenen oder geänderten Buchung zu aktualisieren. Da fallen einem dann schnell so unangenehme Dinge wie ein fehlender Wechselkurs auf, der einem ansonsten die ganze schöne Auswertung verhagelt.

Ausschüttungstermine und Endfälligkeit als terminierte Buchung

Grundsätzlich kann man ja beliebige ergänzende Angaben in den Feldern des Kontos speichern, allerdings kann es sinnvoller sei, Eigenschaften wie beispielsweise bei einer Anleihe die Endfälligkeit und den Zinstermin als Terminierte Buchungen zu hinterlegen. Am einfachsten geht das vielleicht, wenn man den Buchungssatz des Kaufes auf das Datum der Endfälligkeit kopiert, Buchungsteile vom Typ Aufwendungen des Erwerbs (Provisionen etc.) löscht, und den Rest umdreht - also die Beträge zwischen Haben- und Sollspalte verschiebt. Aber bitte darauf achten, dass die Auszahlung bei Endfälligkeit üblicherweise zum Nennwert erfolgt. Wenn alles so aussieht, wie es voraussichtlich sein wird, verwendet man diese Buchung als Vorlage für eine terminierte Buchung und löscht sie anschließend wieder.

Analog verfährt man mit den regelmäßigen Ausschüttungen z.B. Zinszahlungen. Allerdings handelt es sich hierbei dann um eine, etwa jährlich, wiederkehrende Buchung, die mit dem Datum der Endfälligkeit ebenfalls endet.

Auf diese Weise erhält man bei einem nach Datum sortierten Fenster terminierte Buchungen einen Überblick, wann man welche Zahlungszuflüsse zu erwarten hat.

Kursabruf am Beispiel der Volkswagen-Aktie

  1. Neue Datei erstellen, wähle den "Aktienhandel"-Kontenrahmen.
  2. Unter Aktiva>Aktiendepot findest Du z.B. das Überkonto "Aktie"
  3. Eine neue Aktie anlegen mit rechter Taste auf "Aktie" und "Neues Konto..."
  4. Unter "Kontobezeichnung" einen verständlichen Namen angebenm wie z.b. "Volkswagen"
  5. Kontoart "Aktienkonto"
  6. Bei Aktie/Währung (engl. Security/currency) auf "Auswählen" gehen.
  7. Dann z.B. als Typ "EUREX" wählen.
  8. Neu
    1. Voller Name, am besten so wie bei Kontobezeichnung oder länger.
    2. Symbol/Abkürzung - Hier z.B. zu

gehen und Aktie suchen. (In unserem konkreten Fall wäre das "VOW.DE")

    1. "Börsenkurse online abrufen" auswählen
    2. Hier z.B. "Yahoo" wählen. dann drei mal die Dialoge bestätigen mit OK
  1. Bei Werkzeuge auf "Preis-Editor" gehen
    1. "Hinzufügen" - und Auswählen was wir vorhin eingegeben haben. Bestätigen.
  2. Auf "Kurse abrufen" klicken. Wenn keien Fehlermeldung kommt ist das gut. Dreieck aufklappen mit Links-Klick bei "EUREX", dann "VOW.DE". Man sieht zwei Einträge - einen für EURO, einen für USD. (bitte hier weitere Erläuterungen ergänzen)

Automatisierter Kursabruf mittels cron

Wie sich der Abruf von Kursdaten automatisieren lässt können Sie in der GnuCash-Hilfe nachlesen.

Weitere technische Details, zu dem unter Linux verendetem cron-Daemon, finden Sie bei wikipedia oder linuxwiki).

Der Zeitpunkt, den Sie für den Kursabruf einstellen, sollte an den Börsenschluss + max(Verzögerung der gewählten Quellen) angepasst sein. Wird nicht berücksichtigt, dass insbesondere Fondskurse relativ spät festgestellt werden, erhält man stattdessen den Schlusskurs des Vortags.

Da bei Fonds üblicherweise das Nettoanlagevermögen (NAV) nachbörslich ermittelt wird, kann das schon ein paar Stunden, also etwa bis 20 Uhr, dauern.

Weitere Tips für Devisenbuchungen

Grundsätzliches

Grundsätzlich verarbeitet GnuCash eine Buchung in der Währung des Kontos, in dem man die Buchung beginnt. Falls man direkt im Journal bucht, was nicht empfohlen wird, ist das die eingestellte Standardwährung.

Rundungsfehler minimieren

Zur Zeit (2.4.x) werden Buchungen in der Währung des Kontos, aus dem heraus die Buchung begonnen wurde, berechnet. Das hat den unschönen Effekt, dass diese auch die kleinste Einheit vorgibt. Beginnt man etwa eine Transaktion in EUR, deren weitere Buchungsteile auf IDR lauten, dann ist die kleinste Einheit bei einem angenommenen Kurs von 1 EUR = 15 000 IDR ein Euro-Cent = 150 IDR.

Es werden also alle IDR-Beträge zu Vielfachen von 150 gerundet, der Rundungsfehler von einem halben Cent summiert sich schlimmstenfalls noch zu einem erklecklichen Betrag und auf dem IDR-Konto stehen Zahlen, die mit den ursprünglich eingegeben Werten wenig zu tun haben. Beginnt man die Buchung aber im IDR-Konto, kann man seine Rechnungen seit ungefähr Version 2.2.7 auf 1/100 IDR genau erfassen.

Daher empfiehlt es sich, Devisenbuchungen immer im Konto mit dem niedrigeren Wert der kleinsten Währungseinheit - "Pfennige" - zu beginnen.

Zwei Standardwährungs-Konten in einer Drittwährung bebuchen

Bug 482186 erwähnt einen schönen Trick: Der Berichterstatter startet seine Buchung aus einem Dummykonto in Drittwährung heraus, welches er aber schließlich mit 0 CHF bebucht.

Vorsicht beim Verkauf

Wenn man ein Handelsgut verkauft, geschieht das in den seltensten Fällen zum gleichen Kurs wie der Kauf getätigt wurde, ergo realisiert man einen Kursgewinn oder -verlust.

Beispiel: Wir haben einen Anfangsbestand von 10.000 € in bar:

Bargeld ./. Anfangsbestand (Eigenkapital): 10.000,00 €

Wir kaufen 100 Anteile X zum aktuellen Kurs von 100 €:

Wertpapiere:X: 100 X x 100,00 €/X ./. Bargeld: 10.000,00 €

Nach einiger Zeit verkaufen wir zum Kurs von 110 €:

Bargeld: 11.000,00 € ./. Wertpapiere:X: 100 x 110,00 €/X

Zunächst freuen wir uns über den Gewinn, aber wenn wir einen Blick auf die Kontenübersicht werfen, erfaßt uns das Entsetzen, da etwas geschehen ist, das nie geschehen darf:

Aktiva: 11.000,00 € <> Eigenkapital 10.000,00 €

Unsere Bilanz ist nicht mehr ausbalanciert.

Nun, wir haben vergessen, den Gewinn ordnungsgemäß als solchen zu verbuchen. Korrekt wäre also statt obiger Buchung:

Wertpapiere:X: 100 x 100,00 €/X Einstandspreis = 10.000,00 € ./. Bargeld 11.000,00 €
Erträge: Kursgewinne: 100 x 10,00 € Kursgewinn =  1.000,00 €

Das Ergebnis lautet dann

Aktiva: 11.000,00 € = Eigenkapital 10.000,00 €
                    + Erträge       1.000,00 €

Posten- oder Los-Verwaltung

Wenn man nun aber mehrere Positionen eines Papiers zu unterschiedlichen Kursen erworben hat, beispielsweise werden

  • monatlich 50 € zum aktuellen Kurs angelegt,
  • Ausschüttungen thesauriert und
  • die Depotbank zur Deckung der Verwaltungsgebühren am Jahresende noch Anteile aus unserem Bestand zum jeweiligen Kurs verkauft,

wird die Sache schnell unübersichtlich.

In diesem Fall kann man einfach den Verkauf mit aktuellen Kursen buchen und korrigierende Ertragsbuchungen von GnuCash über Aktionen->Posten anzeigen->Konto überprüfen oder Aktionen->Überprüfen->... einfügen lassen. Gegebenenfalls werden dabei einzelne Buchungsteile in mehrere Posten oder Lose aufgeteilt.

In den Realisierter Gewinn/Verlust-Buchungen ist dann nur noch das zugehörige Ertragskonto auszuwählen. Das läßt sich am einfachsten realisieren, indem man das Konto [Erträge:]Unverknüpfte Gewinne-<Währung> löscht und dabei die Buchungen in das gewünschte Ertragskonto verschiebt.

Es bleibt allerdings noch die Frage offen, inwieweit die Zuordnungsstrategie den Erfordernissen deutschen Rechts entspricht. Unter anderem existieren folgende Verbrauchsfolgeverfahren:

  • Zuordnung nach Zeitpunkt des Erwerbs:
    • FiFo: First In - First Out, die logisch und technisch einfachste Variante, welche seit 2000irgendwas dem deutschen Privatanleger vorgeschrieben ist.
    • LiFo: Last In - First Out, bei Handelsgütern auf volatilen Märkten sinnvoll
  • Zuordnung nach Wert
    • HiFo: Highest In - First Out; in Deuschland wegen des [Niederstwertprinzips] ursprünglich die Regel,
    • LoFo: LOwest in - First Out.

Für seit 2009 erworbene Papiere ist steuerlich für Kursgewinne das in GnuCash implementierte FIFO vorgesehen. Im Zweifelsfall sollte man die Thematik mit seinem Steuerberater besprechen und die Buchungen entsprechend anpassen.

Handelskonten

Ab Version 2.3.x können auch die Handelskonten, zu aktivieren über Datei->Eigenschaften->Konten->Devisenhandels-Konten benutzen verwendet werden. Das Vorgehen dabei müßte noch mal jemand - ja genau, Du! - hier einfügen.

Sonstige Informationen, Speicherorte usw.

Online-Kursabfrage für ein Papier beenden

Wenn ein Papier seine Endfälligkeit erreicht oder es einen, da man es nicht mehr hält, nicht mehr weiter interessiert, sollte man die Online-Kursabfrage dafür abschalten.

Solange Papiere noch bei "Börsenkurse online abrufen" ein Häkchen haben, wird die Datenbank des Preiseditors (zu finden unter "Werkzeuge") mit jedem Klick auf "Kurse abrufen" im Preiseditor diese auch abrufen und in der Datenbank halten. Um das zu vermeiden, muss man die das Häkchen bei "Börsenkurse online abrufen" im Wertpapier-Editor wegmachen (auch unter "Werkzeuge" zu finden) oder

  1. darauf basierende Konten in der Kontenübersicht und
  2. die commodities im Aktieneditor und
  3. die Kurse im Preiseditor löschen.

Speicherorte

In der unkomprimierten Gnucash-Datei (in Bearbeiten, Einstellungen, Allgemein das Häkchen bei "Datei komprimieren" entfernen) findet man

  • die Definitionen von Wertpapieren und Währungen jeweils zwischen <gnc:commodity version="2.0.0"> und </gnc:commodity>
  • die Kurse jeweils zwischen <gnc:pricedb version="1"> und </gnc:pricedb>
  • die Posten oder Lose, welche lokal zum jeweiligen Konto sind, also in
<gnc:account version="2.0.0"> ... </gnc:account>
zwischen <act:lots> und </act:lots>.

Fehlersuche im Zusammenhang mit Finance::Quote

Wenn GnuCash meldet, dass es einen Kurs nicht aktualisieren kann, führt man am Besten die folgenden Schritte aus.

Stufe 1: gnc-fq-check

Zunächst sollte überprüft werden, ob FQ einwandfrei installiert ist.

Beispiel mit fehlerhafter Abhängigkeit
$ gnc-fq-check 
Can't locate Mozilla/CA.pm in @INC (you may need to install the Mozilla::CA module) (@INC contains: /usr/lib/perl5/site_perl/5.30.1/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.30.1 /usr/lib/perl5/vendor_perl/5.30.1/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.30.1 /usr/lib/perl5/5.30.1/x86_64-linux-thread-multi /usr/lib/perl5/5.30.1 /usr/lib/perl5/site_perl) at /usr/lib/perl5/vendor_perl/5.30.1/Finance/Quote/Tiaacref.pm line 33.
Compilation failed in require at (eval 303) line 1.
BEGIN failed--compilation aborted at (eval 303) line 1.
 at /usr/local/bin/gnc-fq-check line 91.
("1.47" "adig" "aex" "aiahk" "alphavantage" "amfiindia" "asegr" "asia" "asx" "australia" "bamosz" "bet" "bmonesbittburns" "bourso" "brasil" "bse" "bsero" "canada" "canadamutual" "citywire" "cominvest" "cse" "deka" "dutch" "dwsfunds" "europe" "fetch_live_currencies" "fidelity" "fidelity_direct" "fidelityfixed" "financecanada" "finanzpartner" "finland" "fool" "france" "ftfunds" "ftportfolios" "ftportfolios_direct" "fundlibrary" "goldmoney" "greece" "hex" "hu" "hufund" "hungary" "hustock" "indiamutual" "known_currencies" "lerevenu" "maninv" "morningstar" "morningstarjp" "mstaruk" "nasdaq" "nyse" "nz" "nzx" "platinum" "romania" "seb_funds" "sixfunds" "sixshares" "stockhousecanada_fund" "tdefunds" "tdwaterhouse" "tiaacref" "tnetuk" "troweprice" "troweprice_direct" "trustnet" "tsp" "tsx" "uk_unit_trusts" "ukfunds" "unionfunds" "usa" "usfedbonds" "vanguard" "vwd" "yahoo" "yahoo_asia" "yahoo_australia" "yahoo_brasil" "yahoo_europe" "yahoo_json" "yahoo_nz" "yahoo_yql" "za" "za_unittrusts")
Der erste Teil weist auf das fehlende Perl-Modul Mozilla/CA.pm hin, während der Ausdruck in Klammern die FQ-Version und die verfügbaren Quellen ausgibt.
Nach unserem Kenntnisstand wäre Finance::Quote 1.63 aktuell.
Falls so eine Fehlermeldung kommt oder die installierte Version veraltet ist, siehe #Bei Formatänderung der Quelle: gnc-fq-update.

Stufe 2: gnc-fq-dump

Gerade, wenn man sich bezüglich eines Symbols nicht sicher ist, ist es schneller, seine Angaben mit

gnc-fq-dump [-v] <Quelle> <Kürzel1> [<Kürzel2> ...]

zu überprüfen als in GnuCash immer wieder eine Einstellung zu ändern und alle Kurse abzurufen. Weiterhin sieht man bei dieser Methode besser, wo der Fehler liegt. Da sie auch unvollständige Ergebnisse liefert, sieht man dann beispielsweise, ob Yahoo mal wieder das Format geändert hat oder das Symbol wirklich unbekannt ist.

Stufe 3: gnc-fq-helper

Leider gibt es auch Fehler, die sich bei der Verwendung von gnc-fq-dump vor den Augen des Benutzers verstecken, wie etwa ein angehängtes Leerzeichen. Falls also das Ergebnis von gnc-fq-dump sauber aussieht, GnuCash es aber "partout nicht fressen will", sollte man den für den Laien etwas gewöhnungsbedürftigen gnc-fq-helper verwenden. Am Beispiel der berühmten Unilever-Anleihe, die im September 2008 die Mailingliste unsicher machte, sieht der Aufruf und das Ergebnis dann so aus:

user@host:~$ echo '(yahoo_europe "A0GFY7.SG")' | gnc-fq-helper
(("A0GFY7.SG" (symbol . "A0GFY7.SG") (gnc:time-no-zone . "2008-09-26 16:58:00") (last . 89.50) (currency . "EUR ")))

Wer sieht den Fehler? Lösung

An Finance::Quote basteln

Wer nun neugierig geworden ist, wie Finance::Quote im einzelnen funktioniert, kann sich gerne die Module anschauen. Schließlich ist Perl eine Skript-Sprache, die man mit einem normalen Editor bearbeiten kann und nicht compilieren muss.

Bei opensuse liegen sie unter

/usr/lib/perl5/

. Die nächste Verzeichnisebene unterscheidet zwischen der mitgelieferten Version vendor_perl und einer eventuell mit gnc-fq-update oder cpan heruntergeladenen Version site_perl. Die nächste Ebene bezeichnet die Perl-Version, bevor man endlich in das Verzeichnis Finance kommt.

Bevor man sich die Mühe macht, Änderungen vorzunehmen und an das Projekt einzuschicken, ist es vielleicht sinnvoll, ein wenig auf den Projektseiten bei

GitHub,
CPAN (beide aktuell) und
sourceforge

zu stöbern, um zu sehen, ob dort bereits ein entsprechender Patch herumliegt und welche Arten von Änderungen nicht akzeptiert werden, weil sie etwa einen falschen Ansatz verfolgen.

Ebenso kann es sinnvoll sein, den Autor des Moduls, an dem man Änderungen vornehmen möchte, zu kontaktieren, um sich doppelte Arbeit zu ersparen. Selbiger steht meist irgendwo in den Kommentaren des jeweiligen Moduls.


Zurück zur Hauptseite