Zurück zur GnuCash Wiki Hauptseite


Inhalt

1. Maschinelle Kursabfrage mit GnuCash

1.1. Nomenklatur

The name of the game

Jede Kursabfrage setzt zwei Angaben voraus:

Um Eindeutigkeit zu gewährleisten, werden in der Praxis nicht die Umgangssprache, sondern wohldefinierte Bezeichnungen, oder Schlüssel, verwendet.

Leider ist der Standardisierungsprozess noch nicht so weit fortgeschritten, daß nur eine Identifikation für ein und dieselbe Größe verwendet wird. Da eine genaue Kenntnis der Bezeichnungsvielfalt für die Kursabfrage essentiell ist, soll die Nomenklatur hier kurz dargestellt werden. Der Schwerpunkt liegt dabei auf Deutschland.

1.1.1. Die Wertpapier-Kenn-Nummer (WKN) in Deutschland

Die Wertpapier-Kenn-Nummer (WKN) wurde 1955 zur eindeutigen Identifizierung von Wertpapieren (Aktie, Anleihe, Option etc.) in Deutschland eingeführt und wird von den Wertpapier Mitteilungen vergeben. Ursprünglich war die WKN eine sechstellige numerische Größe ohne Prüfziffer. Der Nummernraum war dabei in verschiedene WKN-Kreise eingeteilt, die jeweils eine Gruppe an Wertpapieren repräsentieren. Darüber hinaus enthielt die letzte Ziffer eine gewisse Systematik: 0 = Stammaktien, 1 = junge Aktien, 2 = jüngste Aktien, 3 = Vorzugsaktien.

WKN-Kreise

Bereich

Gruppe

Schuldverschreibungen

100 000 - 199 999

Bund, Länder, Gemeinden, öffentliche Verbände

200 000 - 349 999

Emissionsinstitute

350 000 - 399 999

Industrieunternehmen

400 000 - 499 999

ausländische Emittenten

Aktien, Anteilsscheine, Kuxe, Optionsscheine

500 000 - 789 999

Industrieunternehmen

790 000 - 799 999

Kuxe

800 000 - 819 999

Banken

820 000 - 839 999

Verkehrsunternehmen

840 000 - 846 939

Versicherungen

Sonstige

847 000 - 849 939

inländische Investmentzertifikate

850 000 - 879 999

Auslandsaktien

880 000 - 909 999

Bezugsrechte

910 000 - 939 999

Junge Aktien

940 000 - 969 999

Jüngste Aktien, Sonderfälle

970 000 - 979 999

ausländische Investmentzertifikate

980 000 - 999 999

Immobilienzertifikate

Ältere Wertpapiere können anhand Ihrer Nummer noch einer dieser Gruppen zugeordnet werden.

Da die Nummernkreise jedoch vor der ISIN-Einführung zu klein wurden, mussten sie im Jahr 2000 zu größeren Bereichen zusammengefasst werden. Auch die Systematik der letzten Ziffer wurde im Jahr 2000 aufgehoben. Darüber hinaus wurde der Zeichensatz der Wertpapier-Kenn-Nummern im Jahr 2003 von rein numerisch [0-9] auf alphanumerisch [0-9A-Z] erweitert.

Quelle: http://www.pruefziffernberechnung.de/W/WKN.html

1.1.2. Die International Securities Identification Number (ISIN)

Spielte das Cross-Border-Geschäft in der Vergangenheit nur eine untergeordnete Rolle, da nur wenige Marktteilnehmer international investierten, änderte sich dies Mitte der 80er Jahre, als internationale Investoren und Broker ihre Investments international diversifizierten. Zu diesem Zeitpunkt nutzten diese Marktteilnehmer die nationalen Nummerierungssysteme (NKN), in Deutschland die Wertpapier-Kenn-Nummer (WKN). Dadurch war für das Cross-Border-Geschäft die Konvertierung von einer NKN in eine andere erforderlich. Die eindeutige Zuordnung ausländischer Wertpapiere erwies sich als extrem schwierig, da für ein einzelnes Wertpapier sogar eine Doppelvergabe innerhalb eines nationalen Systems möglich war.

Obwohl der ISO-Standard 6166 (ISIN) zu diesem Zeitpunkt bereits existierte, wurde er kaum genutzt. Daher gründete eine Gruppe von ISIN-Experten ein Komitee innerhalb der ISO (ISO TC68/SC4), das sich die Aufgabe gesetzt hatte, die Länder bei der Implementierung der ISIN zu unterstützen.

Der ISO Standard 6166 stellt der Finanzindustrie nicht nur eine eindeutige Identifizierung, sondern auch einheitliche Regularien für die ISIN-Vergabe zur Verfügung. Durch die Substitute Numbering Agencies werden ISINs auch für die Emerging Markets vergeben, in denen eine Vergabestelle noch nicht existiert. Dadurch ist eine 100%ige weltweite ISIN-Abdeckung garantiert. Dieses Instrumentarium hat die Finanzindustrie überzeugt, daß die ISIN exakt ihren Bedarf deckt.

Aus o.g. Gründen wurde im Jahre 1992 die Association of National Numbering Agencies, ANNA, durch 22 nationale Vergabestellen gegründet. Dieses Ereignis markierte den Beginn einer Serie von wichtigen Meilensteinen. Mehr Information über ANNA gibt es im Internet unter: http://www.anna-web.com

Kurz nach der Gründung wurde 1995 mit GIAM (Global ISIN Access Mechanism) eine elektronische Kommunikationsplattform für den Austausch ISIN-relevanter Daten geschaffen. Durch dieses Medium, das seit dem zweiten Quartal 1999 als GIAM-2 das Internet als Kommunikationsschiene nutzt, steht den nationalen Vergabestellen und anderen Marktteilnehmern (zzt. primär internationalen Datenanbietern) ein suchfähiger globaler ISIN-Referenzfile zur Verfügung. Die GIAM-Mitglieder haben Zugriff auf ca. 500.000 international relevante Finanzinstrumente sowie über die Internet-Seiten der nationalen Organisationen Zugriff auf die ISIN-Gesamtbestände der jeweiligen Länder.

Die ISIN ist weltweit anerkannt, nicht nur im internationalen Handel, Clearing und Settlement, sondern zunehmend auch national als Primärschlüssel in diversen europäischen Ländern, z.B. Spanien, Italien und den skandinavischen Ländern. Neben Deutschland begannen auch Frankreich, die Niederlande und Belgien im Jahre 2003 die Einführung der ISIN.

ISIN-Struktur

Bestandteil

Präfix

NSIN

Prüfziffer

Feldlänge

2

9

1

Bedeutung

Ländercode

nationale Kenn-Nummer

Ziffer (0-9)

Beispiel 1

DE

000723610

1

Beispiel 2

LU

005786592

4

Der Ländercode ist dabei gemäß ISO 3166 angegeben. Die Formel zur Berechnung der Prüfziffer findet man in Internet z.B. unter: http://www.pruefziffernberechnung.de.

Trotz der in Deutschland erfolgten Umstellung auf die ISIN als Primärschlüssel wird die WKN noch parallel geführt.

Quelle: ISIN-Einführung, Wertpapier Mitteilungen

1.1.3. Kürzel für Wertpapiere

Für den Handel mit Wertpapieren ist die Beobachtung der Kursentwicklung essentiell. Daher werden Wertpapierkurse seit langen durch eine Vielzahl kommerzieller Dienstleister angeboten, z.B. Reuters, Bloomberg, Börsen, ...

Letztere verwenden eigene Bezeichnungen für die Wertpapiere, Tickersymbole, Symbole, Börsenkürzel, Reuterskürzel, Bloombergkürzel etc. genannt. Leider ist hier ein ganzer Zoo an Kürzeln im Gebrauch.

Für die Siemens-Aktie findet man z.B. folgende Bezeichnungen

Zu beachten ist, daß Londen in diesem Fall dasselbe Symbol verwendet, wie die deutschen Börsen; im Allgemeinen sind jedoch auch hier unterschiedliche Kürzel im Gebrauch. Auch Reuters und Bloomberg verwenden verschiedene Kürzel.

1.1.4. Kürzel für Börsen

Auch für Börsenplätze und Handelssysteme ist keine einheitliche Bezeichnung im Gebrauch. Bekannt sind zum einen die bereits in der GnuCash Dokumentation aufgeführten Kürzel:

Marktkürzel, Tab. 1

Kürzel

Markt

BC

Barcelona

BE

Berlin

BI

Bilbao

BR

Bremen

CO

Kopenhagen

D

Düsseldorf

F

Frankfurt

FX

Xetra

H

Hamburg

HA

Hannover

L

London

MA

Madrid

MC

Madrid (MC)

MI

Milan

MU

München

O

Oslo

PA

Paris

ST

Stockholm

SG

Stuttgart

VA

Valencia

Zum anderen werden auch folgende Symbole verwendet:

Marktkürzel, Tab. 2

Kürzel

Markt

MUN

München

BER

Berlin-Bremen

FSE

Frankfurt

ETR

XETRA

STU

Stuttgart

HAN

Hannover

HAM

Hamburg

DUS

Düsseldorf

NYS

NYSE

NOO

Nasdac other OTC

NAP

Nasdac OTC BBS

EAV

WIEN

ZRH

Zürich

PSE

Paris

ASX

Amsterdamm

ISE

Londen Dom Quotes

ISS

London Ireland

VTX

VIRT-X

SON

Sonderwerte

ASE

Amex

DFK

Fondsgesellschaft

Beide Listen sind natürlich nicht vollständig. Neben der Angabe von Börsenplätzen bzw. Handelssystemen (z.B. XETRA) sind auch andere Angaben möglich, z.B. DFK für Fondsgesellschaft.

Fonds können nicht nur über Börsen sondern auch direkt bei der jeweiligen Fondsgesellschaft gehandelt werden. (Je nach Kurs kann dabei das eine oder das andere vorteilhaft sein.) Da jedem Fonds immer eindeutig eine Fondsgesellschaft zugeordnet ist, kann letztere durch ein allgemeines Kürzel spezifiziert werden: DFK.

1.2. Kursabfrage mit GnuCash

Get your prey

Die automatische Kursabfrage erfolgt nicht direkt durch die Anwendung GnuCash. Letztere stützt sich dazu vielmehr auf die Open-Source Anwendung Finance::Quote, einem Perl-Modul. Finance::Quote wiederum ist modular aufgebaut und kann Kurse bei verschiedenen Dienstleistern abrufen. Daher müssen zur maschinellen Kursabfrage drei Größen angegeben werden:

  1. Der Dienstleister
  2. Eine Bezeichnung des Wertpapiers
  3. Eine genaue Bezeichnung der Handelssystems bzw. -platzes

Leider hängen (2.) und (3.) im allgemeinen von (1.) ab. Dies erfordert zum einen die Kenntnis des oben beschriebenen Bezeichnungszoos, zum anderen ist ein Wechsel des Dienstleisters mit einem entsprechenden Aufwand zum Ändern der Stammdaten verbunden.

Der Dienstleister wird am Konto (vom Typ Aktie oder Investmentfonds -- der Typ Anleihe fehlt leider noch) angegeben (GnuCash Release 1.8.7).

Die Bezeichnungen des Wertpapiers und des Marktes werden im Feld Symbol/Abkürzung der Aktie bzw. des Investmentfonds angegeben, die dem Konto zugeordnet ist (GnuCash Release 1.8.7).

(Anmerkung: Die Datenstruktur ist diesem Problem nicht angepasst. Da die Angaben (1.) bis (3.) voneinander abhängen, müssen sie auch demselben Objekt zugeordnet werden, entweder dem Konto oder der Aktie etc. Beides macht Sinn, letzteres ist aber eine Einschränkung: Schließlich kann ein Anwender mehrere Depots haben, in denen sich z.T. dieselben Wertpapiere befinden. Unter Umständen möchte der Anwender aber derselben Aktie ein vom Depot abhängigen Kurs zuordnen. Herbert Thoma: Im CVS Head (GnuCash 1.9.x) sind alle Angaben (1 bis 3) der Aktie zugeordnet.)

Damit ist das Prinzip klar. Der Arbeitsaufwand besteht nun darin, zu jedem Modul von Finance::Quote zu dokumentieren, wie die Angaben (2.) und (3.) zu erfolgen haben. (Anmerkung: der Autor dieser Anmerkung hat sich aus Frustration ein eigenes Modul gebaut, da er mit angemessenem Arbeitsaufwand nicht herausfinden konnte, wie die Angaben (2.) und (3.) bei den einzelnen Dienstleistern zu wählen sind.) Die Spezifikation könnte folgendermaßen aussehen (Vorschlag):

Dienst XYZ (für das Beispiel wird das vom Autor selbst gebaute Modul angenommen, da er keine Aussage zu den anderen Modulen machen kann, s.o.)

Dienst XYZ

WP-Typ

Symbol/Abkürzung

Beispiel

Name

ISIN

Markt

Aktien

<Tickersymbol>.<Marktkürzel, Tab. 2>

SIE.ETR

Siemens AG NA

DE0007236101

XETRA

Fonds

<ISIN>.<Marktkürzel, Tab. 2>

DE0009752477.DFK

Activest Euro-Geldmarkt Plus

DE0009752477

Fondsgesellschaft

Anleihen (inkl. Optionsanleihen)

<ISIN>.<Marktkürzel, Tab. 2>

DE0001069540.FSE

Stada Arzneimittel MO 00/05

DE0001069540

Börse Frankfurt

1.3. Ein Modul zur Kursabfrage erstellen

Rollin' your own

Ein Modul zur Kursabfrage lässt sich leicht selbst erstellen. Perl-Kenner sollten dies in ca. 1 Stunde schaffen können, Neulinge in etwa einem Tag.

Folgende Dokumentation ist vorhanden:

1.3.1. Schnittstelle zwischen Finance::Quote und GnuCash

Die Angabe des Dienstes, des Wertpapiers und des Marksplatzes wurde oben bereits beschrieben. Die Daten werden durch GnuCash unverändert an Finance::Quote übergeben.

GnuCash ermittelt, welche Kurse abgefragt werden müssen, und ruft Finance::Quote einmal auf. Das Kommando enthält den Dienst und eine Liste aller Symbole. (Was passiert, wenn mehrere Dienste parallel genutzt werden? Herbert Thoma: Finance::Quote wird mehrfach, je einmal pro Dienst, aufgerufen.)

Anmerkung: GnuCash macht hier aktuell noch einen Fehler. Falls ein Wertpapier mehrfach als Konto, z.B. Aktienkonto, angelegt wurde, z.B. weil mehrere Depots verwaltet werden, die dasselbe Wertpapier enthalten, so wird der entsprechende Kurs auch mit der gleichen Kardinalität abgerufen und in die Preisdatenbank eingetragen. Er sollte nur einmal aufgerufen und in die Datenbank eingetragen werden. Herbert Thoma: Seit 1.8.10 wird der Kurs nur noch einmal in die Preisdatenbank eingetragen. (er wird aber immer noch mehrmals abgefragt ...)

Folgende Angaben scheinen keine Auswirkung auf die Kursabfrage zu haben:

Ein neues Modul kann mit Hilfe des Programms dump-finance-quote getestet werden. Letzteres informiert darüber, welche Daten das Modul zurückliefert und ob die notwendigen Angaben darin enthalten sind. Aufruf:

dump-finance-quote <Dienst> <Liste mit Symbolen>

oder in neueren Versionen

gnc-fq-dump <Dienst> <Liste mit Symbolen>

Aktuell (GnuCash Release 1.8.7) sind folgende Rückgabewerte erforderlich:

Da weder Finance::Quote noch GnuCash vorsehen, daß den einzelnen Modulen eine Schnittstellenbeschreibung in einem Metaformat beigefügt wird, sind bestimmte Konventionen zwingend einzuhalten, damit sich beide Anwendungen verstehen.

Kurse und Preise

Kurse und Preise müssen im US-Format an GnuCash übergeben werden, d.h. mit einem "." zum Abtrennen der Nachkommastellen. Beispiel für einen Kurs: 97.2.

Für den Preis bzw. den Kurs werden reine Zahlenwerte übergeben, eine Interpretation kann erst in GnuCash anhand des Wertpapiertyps erfolgen, da Finance::Quote diesen in der Regel nicht kennt.

Datum

Auch hier ist US-Format erforderlich. Verstanden werden (u.a.?)

Mögliche Datumsformate

MM/DD/YY

01/31/05

MM/DD/YYYY

01/31/2005

MM.DD.YY

01.31.05

MM.DD.YYYY

01.31.2005

(Frage: Geht vielleicht auch das hier sinnvollere ISO-Format, also YYYY-MM-DD? -- ChristianStimming 2005-02-07 10:00:36)

Währung

Die Verwendung des ISO-Codes für die Währung funktioniert.

Angaben zum Symbol

Gemäß dump-finance-quote ist die Angabe des Symbols auch als Rückgabewert von Finance::Quote an GnuCash erforderlich. Dies widerspricht jedoch dem Experiment. Auch wenn Blödsinn als Symbol zurückgeliefert wird, scheint die Kursabfrage zu funktionieren.

GnuCash/Kursabfrage (zuletzt geändert am 2007-12-23 22:50:00 durch localhost)