De/Aktienhandel
Wie man ein Aktien- oder Wertpapier-Depot anlegt und zugehörige Kurse online abfragt ...
Zurück zur Hauptseite | englische Version | 简体中文 | }
Contents
AktuellesLeider 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.
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.) EinleitungMit GnuCash kann man eine Vielzahl verschiedener Wertpapiere und auch Edelmetalle verwalten. Dazu gehören:
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.. VoraussetzungenUm diese auszulesen und u.a. für GnuCash zur Verfügung zu stellen, gibt es das eigenständige Projekt Finance::Quote (F::Q). Dorthin sind also auch eventuelle Fehlerberichte zu senden, falls etwa eine Seite ihr Format geändert hat. Die Installation wird in der GnuCash-Hilfe beschrieben. Weitere Möglichkeiten (gnc-fq-update und CPAN) sind in #Bei Formatänderung der Quelle: gnc-fq-update ff. erläutert. Quellen in Finance::QuoteUm 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 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-updateSchließ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.
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 ModulenNeuere 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
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 QuelleDa das Symbol ein und desselben Papiers bei den verschiedenen Kursquellen recht verschieden sein kann, hier eine Faustregel:
Felder im AktieneditorFür F::Q wichtig sind das Symbol und die Quelle, wobei eben das Symbol je nach Quelle verschieden sein kann. Voller NameNa, 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. SymbolDas 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.
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.
Eine Heuristik zur SymbolsucheLeider muß man bei diesen Symbolen ziemlich kreativ sein, um zum Erfolg zu kommen.
TypDer 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:
sollte kann sie also so gruppieren, wie es für einen selbst sinnvoll ist, etwa nach
Falls man sehr viele hat, kann man sie weiter gruppieren, indem man z.B. :<Währung> anhängt:
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 CodeDies 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 PapiereAuch 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:
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.
Um Verwirrung zu vermeiden, sollte man bei diesem Ansatz vermeiden, nachträglich eine Buchung in Drittwährung vor der Eröffnungsbuchung einzufügen.
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:
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 gekauftUm einen Kaufbeleg "IBM-Aktie in USD notiert, für EUR gekauft" nachzustellen, kann man folgende Struktur verwenden:
Kaufbeleg erfassen:
Weitere MaßnahmenEs 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 ErfolgskontenDamit man später auch eine brauchbare Auswertung seiner Investitionen erhält, empfiehlt es sich, zu jedem Anlagekonto auch
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übersichtHat 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 PortefolioErfahrungsgemäß 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 BuchungGrundsä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
gehen und Aktie suchen. (In unserem konkreten Fall wäre das "VOW.DE")
Automatisierter Kursabruf mittels cronWie 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 DevisenbuchungenGrundsätzlichesGrundsä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 minimierenZur 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 bebuchenBug 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 VerkaufWenn 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-VerwaltungWenn man nun aber mehrere Positionen eines Papiers zu unterschiedlichen Kursen erworben hat, beispielsweise werden
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:
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. HandelskontenAb 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 beendenWenn 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
SpeicherorteIn der unkomprimierten Gnucash-Datei (in Bearbeiten, Einstellungen, Allgemein das Häkchen bei "Datei komprimieren" entfernen) findet man
Fehlersuche im Zusammenhang mit Finance::QuoteWenn GnuCash meldet, dass es einen Kurs nicht aktualisieren kann, führt man am Besten die folgenden Schritte aus. Stufe 1: gnc-fq-checkZunächst sollte überprüft werden, ob FQ einwandfrei installiert ist.
Stufe 2: gnc-fq-dumpGerade, 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-helperLeider 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 bastelnWer 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
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. |