Automatische Erstellung von Klassifizierungen

Ich will einfach extern erstellte Klassifikationsdaten mit dem genannten Datenmodell von PP abgleichen / in es importieren koennen. Dazu brauche ich ein Interface, wie saehe das aus? Wie docke ich da als Programmier an, ohne mich mit PP-Interna befassen zu muessen? Also ganz konkret:

Fuer die Vanguard Fonds kann ich mehrere Excel sheets downloaden, die die Bestandteile aufschluesseln. Beim All-World mindestens nach Regionen und nach ICB (Branchen wie sie FTSE definiert). Um die in PP zu bekommen, brauche ich ein Interface. Ich will einfach nur wissen, wie oder ob das von aussen angesprochen werden kann.

Ich selbst wuerde fuer den Anfang meine Excelsheets hernehmen und so transformieren, dass PP das versteht. Diese Info muss ich dann aber irgendwie aus PP einlesen koennen. Wie macht man das? Mein Teil waere die Aufbereitung. Z.B. wuerde ich fuer den Moment die ICB-Daten fuer den Vanguard in GICS-Daten wandeln, weil PP (noch) keine vorgefertigte ICB-Klassifizierung kennt.
Auf Dauer und am Schoensten waere es natuerlich, wenn man das erweitern koennte, also jede Art von Klassifikationsschema extern erstellen und dauerhaft in PP importieren koennte. Und danach dann die Daten des konkreten Wertpapiers/Fonds, die in verschiedenster Form vorliegen koennen und durch spezialisierte Importer fuer PP und seine Klassifikationen verstaendlich aufzubereiten waeren. Wenn eine oeffentliche Schnittstelle definiert waere, kann das komplett aus der eigentlichen Programmentwicklung ausgelagert werden.

Zusammengefasst waeren das folgende Komponenten:

  1. Schema, welches eine Klassifikation definiert
  2. Daten die durch Importer so vorbereitet werden, dass sie durch diese Schemata/Klassifizierungen beim Einlesen evaluiert werden koennen
  3. Weiterverarbeitung in PP selbst durch sein internes Datenmodell.

Ich hoffe ich bringe jetzt nicht noch mehr Verwirrung rein, aber meint ihr mit “Klassifikation” beide das gleiche? Es geht doch hier @traits um die Info, die in PP “Taxonomie” genannt wird. Und die liefert Portfolio Report doch nicht, oder?

Ich denke schon.

Nein, „Klassifikation“. Nur in der englischen Fassung heißt sie „taxonomy“.

Prinzipiell schon:

1 Like

Okay, danke für die Klarstellung. Dann habe ich nur noch eine Frage und bin dann wieder weg: wo finde ich Infos über die Schnittstelle mit der ich bei Portfolio Report die “Klassifikation” abholen kann.
Ach gerade im JSON gefunden:

"securityTaxonomies":[
	{"weight":"100","taxonomyUuid":"3185127f-fe60-4d01-8aff-5072e2d6a180","rootTaxonomyUuid":"5b0d5647-a4e6-4db8-807b-c3a6d11697a7"}
],

Das war mir neu.

1 Like

Ich versuch nochmal mich einzumischen :slight_smile:

Stand der Dinge ist, dass ‘Portfolio Report’ Klassifikationen zentral in der Datenbank speichert und sie per JSON-Web-API bereit stellt. Aktuell scheint das nur ein Klassifikationsbaum zu sein (“Country”) aber theoretisch können dort viele Klassifikation gepflegt werden.

Eine automatische Übernahme der Daten in ‘Portfolio Performance’ ist angedacht (aber noch nicht in Arbeit?).

Falls Portfolio Performance Klassifikations-Daten von Portfolio Report importieren könnte, kann man (@traits ) sich eventuell auch in den Import einklinken und auf dem selben Weg eigene Klassifikationsdaten (die es vielleicht in P-Report noch nicht gibt) importieren.

Was ich jetzt an der Situation etwas unschön finde, ist dass Portfolio Report mit seinen taxonomyUuid nicht so recht kompatibel ist mit den vorhandenen Klassifikationen (z.B. Regionen MSCI oder Industrie GICS), die von vielen User schon genutzt werden. Die vorhandenen Klassifikationen haben (soweit ich das sehe) zufällige UUIDs und Portfolio Report wird für diese nie die passende Info liefern können. Portfolio Report wird immer eigene Klassifikations-Bäume (mit eigenen nicht zufälligen UUIDs) mitbringen müssen, die neben den schon vorhandenen Klassifikationen importiert werden müssen.

Falls ich wieder meilenweit neben der Spur sein sollte, würde ich mich über einen nachsichtigen Wink freuen.

Gruß
Tom

Ah, ich sehe gerade einen eigenen Irrtum, vielleicht ging das gegenseitige Verstehen deshalb leicht suedwaerts: :slightly_smiling_face:

Es ging urspruenglich um Klassifikationen fuer Portfolio Report. Mmh, ich persoenlich wuerde das gern in PP selbst haben wollen. Die Onlinegeschichte sehe ich nur als einen speziellen moeglichen client, der auch darueber kommunizieren koennte. Ich wuerde mich ungern fest an einen solchen Dienst binden.

Naja, irgendwas muss Portfolio Report als Schlüssel benutzen :wink:
Die UUIDs von PR können – das hast Du korrekt beschrieben – nicht identisch sein mit den UUIDs, die PP ggf. schon vergeben hat. Daher werden z.B. bei Wertpapieren zwei UUIDs in PP gespeichert. Die für PP eindeutige und die für PR eindeutige. (Plus die Möglichkeiten dieser Verknüpfung herzustellen bzw. zu lösen.)

Bei den Klassifikationen gibt es in PR darüber hinaus an jedem Knoten einen Code (der innerhalb des Baums eindeutig ist). Bei den Ländern ist das der zweistellige ISO-Ländercode. Ist schon eine ganze Weile her, dass ich mit @AndreasB darüber gesprochen hatte, aber ich meine damit sollte ein Mapping möglich sein.

Grundsätzlich sehe ich zwei Möglichkeiten, wie man die Klassifikationen von PR nach PP bekommen kann:

  1. Klassifikationen von PR werden mit den Klassifikationen, die in PP gepflegt werden können gemischt. Dann muss man mappen (siehe oben) und mit allen Spezialfällen, die dabei auftreten können, umgehen (Löschen, Umbenennen, Verschieben, Widersprüche, …). Dafür ist der Nutzer flexibel und kann für bestimmte Wertpapiere eigene/abweichende Klassifikationen pflegen, für andere die von PR nutzen. Evtl. ist genau das aber auch verwirrend und führt zu Fehlern (ähnlich wie die Anlage eigener Wechselkurse).
  2. Klassifikationen von PR verhalten sich in PP anders als die übrigen Klassifikationen und können in PP nicht geändert werden. Dann spart man sich die Behandlung vieler Fälle und sorgt für einheitliches Verhalten dieser Klassifikationen bei allen Nutzern. Änderungen dieser Klassifikationen können nur zentral erfolgen. Das wäre momentan meine favorisierte Lösung und erstmal ein Anfang, den man ggf. weiter ausbauen kann.

Wenn Du Interesse hast, daran zu bauen, lass uns gerne mal dazu sprechen/telefonieren.

Nein, von Portfolio Report für Portfolio Performance.

1 Like

Ich bin noch nicht so 100% überzeugt. Eigentlich habe ich einen anderen Ansatz im Zusammenhang mit den Klassifikationen verfolgt: einen strukturierten JSON-Ex- und Import aller Meta-Daten zu einem Wertpapier in Portfolio Performance inklusive der Klassifikationszuordnung (und auch Logo und anderer Parameter) aber ohne Käufe, Verkäufe oder Kurse etc. Damit wären dann User in der Lage die eigene mühsam erstellte Klassifikationen für z.B. einen ETF anderen Usern zur Verfügung zu stellen. Oder User könnten sich das JSON aus eigenen Quellen selbst erzeugen und dann einfach importieren.

Der Weg über Portfolio Performance macht ja nur dann Sinn, wenn von dort auch wirklich die Klassifikationen kommen, die sich die User wünschen und die Flexibilität, die mein Ansatz bringen würde, eigentlich garnicht gebraucht wird.

Aber auch mein Ansatz krank daran, dass die internen IDs für die Klassifikationsbäume nicht eindeutig sind. Vielleicht muss man erstmal an diesem Problem etwas ändern.

Ein Nebenthema dabei finde ich noch die Internationalisierung der Klassifikationsbäume. Ich hab das Gefühl, dass die Anzahl der User, die mit deutschen Klassifikationsnamen nicht glücklich werde, doch inzwischen recht hoch ist. Portfolio Report stellt ja momentan auch nur deutsche Texte zur Verfügung, oder gibt es da schon eine Lösungs-Idee?
(Farben liefert Portfolio Report zu den Klassifikationen aktuell auch nicht. Aber die kann man wohl beim Import erzeugen.)

Und noch ein Gedanke zum Mapping der Klassifikationen von P-Report zu P-Performace: als User würde ich erwarten, dass für die schon jetzt vorhandenen Klassifikationen (insbesondere MSCI-Regionen und Industries GICS) eine nahtlose Integration erfolgt. Bei solchen Standard-Klassifikationsbäumen sehe ich aber auch keinen Grund für den User sie strukturell zu ändern. Wenn z.B. MSCI etwas ändert, sollte das automatisch (entweder durch ein PP Update oder einen PR-Import) erfolgen. Und etwas anderes als Standard-Klassifikationen wird Portfolio Report ja wohl nicht liefern.

Ich glaube ich muss noch etwas über das Thema nachdenken…

2 Likes

Ich finde den Austausch über das Export-Format eine gute Idee. Ich sehe nur die Frage, wo soll der Austausch denn praktisch stattfinden? Im Forum Anhänge hochladen? :wink: Geht aber ist nicht wirklich toll.

Und ich glaube da sind unsere Ideen gar nicht so weit auseinander:
Ich sehe eben Portfolio Report als Austauschplattform. Der erste Schritt wäre da, dass der “Tausch” nur in eine Richtung von PR in die jeweiligen Portfolios geht. Im nächsten Schritt kann man auf der Website Klassifikationen ändern (die dann automatisch in die Portfolios kommen) und/oder in PP Klassifikationen ändern, die dann an den Server gepusht werden und von dort wieder an die Nutzer verteilt werden (die die jeweilige Klassifikation nutzen).

Vielleicht noch ein Satz, weil ich das bislang nicht sauber sprachlich getrennt habe. Unter “Klassifikation” verstehe ich sowohl den Taxonomie-Baum (z.B. welche Länder gibt es eigentlich), als auch die Zuordnung einzelner Wertpapiere darin (z.B. wieviel Prozent von dem ETF sind denn in Spanien investiert). Beides sind Informationen, die nicht n mal, sondern nur einmal gepflegt werden sollten.

Bezüglich Internationalisierung: Es gibt aus meiner Sicht zwei Lösungen, die Du auch schon beschrieben hast. Entweder PP macht die Internationalisierung über den Code (ES = Spanien, Spain oder Espana je nach lokaler Einstellung) oder PR liefert das über die API mit. Aus meiner Sicht ist beides möglich. Ich würde aber im ersten Schritt nicht alles machen. Mit englischen Texten können vermutlich 80% der Nutzer schon mal was anfangen.

@Tom

Aber auch mein Ansatz krank daran, dass die internen IDs für die Klassifikationsbäume nicht eindeutig sind.

Sind sie das? Intern haelt ja PP offensichtlich seine eigenen Klassifikationen auch jetzt schon auseinander, inklusive von Usern erstellte. Aus meiner Sicht sollte man die Standardklassifikationen ueber z.B. MSCI und FTSE in PP selbst pflegen und ein eindeutiges Mapping zu solchen Klassifikationen von Performance Report statisch festlegen, alles fest verdrahtet. Alles andere zaehlt als user-defined und arbeitet mit UID’s, sobald soetwas von aussen hereingereicht wird (oder in der GUI manuell erzeugt wird) .

Internationalisierung der Klassifikationsbäume […] die mit deutschen Klassifikationsnamen nicht glücklich werde, doch inzwischen recht hoch ist.

Ja, ich arbeite selbst auf einem Gemisch, meine eigenen Klassifikationen sind oft englisch, PP’s mitgebrachte sind deutsch. Aber das koennte man in einem Schema mit unterbringen (auch optional mit fallback auf meinetwegen Englisch). Hier einmal ein Link auf eine GICS-Abbildung ueber JSON . Dort koennten ja lokalisierte Varianten der Namen als optionale Attribute im zugehoerigen JSON-Schema mit drin sein (wobei wahrsch. ein XML-basierter Ansatz besser waere, ich habe dunkel in Erinnerung, dass JSON-Strings betreffs Unicode limitiert sind).

Wenn z.B. MSCI etwas ändert

Der Ferrari waere ein prinzipielles range tag in der Schemadefinition. Zeitintervalle oder zumindest ein Versionierungsschema, die die Gueltigkeit beschreiben, so etwas in der Art (Pseudocode):

# alles Folgende auch einzeln optional
"version": 
      "number": "1.2.7"
      "start_date": 2020-09-17  
      "end_date": 2022-03-19  

Damit koennte auch in der Historie richtig abgebildet werden.

Michael

:slight_smile: Lass uns doch erstmal die Straße bauen…

Ich habe mal etwas aufgemacht:

1 Like

Um das hier auch einmal am Leben zu halten: Durch ein paar andere Schnellschussprojekte dieser Art auf github habe ich jetzt gelernt, wie eine Klassifikation im xml eines PP-Projekts abgebildet wird. Die genannten Programmier-Projekte haben dann ihre Strukturen hart in dieses xml eingepatcht. Das ist nun mehrfach unbefriediegend (zumal auch verschluesselte Varianten dieser xml-Dateien existieren) und laesst mich die FRage einer stabilen API dazu noch einmal in den Vordergrund ruecken. Vielleicht koennte sich der Hauptentwickler von PP auch einmal dazu aeussern. Sonst endet mein Projekt im Ende nicht anders als die anderen Versuche und befriedigt meine unmittelbaren Beduerfnisse ohne einem Normaluser die entsprechenden Mittel an die Hand zu geben.

1 Like

Ich kann ja mal Sicht erläutern. Die Kategorien kranken daran, dass sie keinen richtigen “key” haben. Es gibt zwar eine ID. Die ist aber bei jedem User anders. Ohne Key kann man weder Klassifikationen im- und exportieren noch kann man Wertpapier-Zuordnungen zu Klassifikationen ex- und importieren, so dass die Daten ausgetauscht werden können. Für mich wäre das die Grundlage für jede weitere API.

Daher mein erster Schritt hier zu dem ich diese Woche einen Pull-Request bereit stellen werde. Dann wird man weiter sehen.

2 Likes

Du willst also einen key fuer jeden Knoten haben (auch den root einer Taxonomy), richtig? Innerhalb eines trees sollen die keys eindeutig sein, aber nicht zwingend ausserhalb, damit du bequemerweise auch gleich mitgebrachte Dinge wie z.B. die Sector/…/Sub-Industry Nomenklatur (z.B. 60101080) von GICS als key verwenden kannst. In Kombination mit dem root key wird es auch eindeutig. Dem kommt aber dann eine besondere Bedeutung zu und PP muss einen ausreichenden range von root keys erhalten, den niemand benutzen darf, um selbst-verwaltete Taxonomien kontrollieren zu koennen. Ich gehe davon aus, dass das beginnend mit den schon genannten, dann eine wachsende Zahl sein wird/werden kann. Klingt OK fuer mich. Bietet auch weitere Moeglichkeiten, wie Konverter zwischen Taxonomien zu schreiben.

Die Lesbarkeit der Knotenschluessel laesst sich natuerlich auch durch assoziierte [Frei-
]Textfelder erhoehen, die dann an geeigneter Stelle angezeigt werden .

Ja, so in der Art habe ich mir das gedacht. Im ersten Schritt wäre der Key aber kein Pflichtfeld und automatisch würde ich den nur dort setzen, wo es sich um original PP Klassifikationen handelt.

Danach könnte man auf der Basis Wertpapiere beim Import und Export klar zuordnen (z.B. “100%,industry-gics,1010”) so dass die Info zwischen Usern ausgetauscht werden kann oder durch andere Programme erzeugt oder verarbeitet werden kann.

2 Likes

Nur einmal als Einwurf, weil ich selbst gerade vor dem Problem stand. Das wird sicherlich in Zukunft kommen. Aber i.M. muss man sicher nicht alles vorwegnehmen wollen.

Hallo,

ich habe für mich selbst mal in Java reinschauen wollen und habe ebenfalls eine eigene Implementierung eines Imports von Klassifikationen anhand der vorhandenen ETF umgesetzt.
Diese ist nicht unbedingt die Nutzerfreundlichste, eventuell möchte es aber dennoch jemand ausprobieren und hat Verwendung dafür.

Github

5 Likes

A post was merged into an existing topic: Automatic import of classifications

Der lange Thread beginnt ja damit, dass es bereits schön wäre Klassifizierungen/Taxonomien in CSV importieren zu können. Eine Export-Funktion finde ich, wenn ich eine Klassifikation anklicke, oben rechts im Menü. findet sich auch irgendwo eine Importfunktion dafür?

Wäre toll wenn man seine Klassifikation zumindest in CSV exportieren, dann in CSV bearbeiten (und stark erweitern bzw. mit anderen CSV-Daten im vorhandenen-exportierten Format überführen & zusammenführen kann) und dann wieder importieren kann.

1 Like