Roadmap und aktuelle Konzeptionen

Themen-Voting durch User

Nicht ohne Relevanz ist für Anwender die Zukunft des eingesetzten Programms. SHAREholder wird in meiner Freizeit vorangetrieben, aus Spaß und Experimentierfreude an der Entwicklung und an der Börse. Hintergrund bei der Arbeit ist immer die eigene persönliche Nutzung des Systems. Dies steht dabei aus meiner Sicht nicht im Widerspruch zur kostenpflichtigen Bereitstellung des Programmpaketes, da Änderungswünsche von Anwendern eingearbeitet, Support geleistet und eine Basisinfrastruktur für Website, Softwarelizenzen und Betrieb finanziert wird. Jede verkaufte Lizenz bestätigt mich dabei, indem was ich tue und motiviert mich weiter zu machen. Einen komplett idealistischen Ansatz fahre ich damit nicht.

Shareholder ist in der Entwicklung vollständig unabhängig von wirtschaftlichen Entwicklungen eines Geschäftsmodells/-betriebes, da es unter dem Motto "Hobby" läuft. Die Entwicklung ist damit allein abhängig von meiner Zeit für das Projekt. Diese besteht jedoch bereits ab 1999, so dass hier eine gewisse Kontinuität auch in der Zukunft vorausgesetzt werden kann.

Grundsätzliches Projektvorgehen

Als Grundvorgehensmodell nutze ich ein SCRUM-Verfahren mittels JIRA. Dabei werden Stories in einem Themenspeicher (Backlog) organisiert und regelmäßig priorisiert. Die Release-Zyklen sind auf mind. einem wichtigen Release pro Monat geplant, wobei Bug-Fixes, auch auf Tagesbasis jederzeit verfügbar gemacht werden können.

Priorisierungen

Die Weiterentwicklung wird grundsätzlich durch Anwender-Stories bestimmt, d.h. Anfragen, die zu SHAREholder gestellt worden sind. Die hierfür möglichen Klassifizierungen sind immer "Bug" oder "Verbesserung". Die Stories werden in Releases geplant, die so transparent planbar sind. Sie haben in SHAREholder unter Updates / Voting die Möglichkeit für die zukünftig geplanten Aktivitäten Ihre Stimme abzugeben. Bitte nutzen Sie gerne diese Möglichkeit, da dies für mich in der Priorisierung berücksichtigt wird.

image-1655628512318.png

Systematisches Depot-Balancing

Problem und Use-Case

Aktuell wird das Depot ohne die Möglichkeit auf spezifische Ausrichtungen von Ziel-Vektoren aufgebaut. Das Programm fehlt ein echtes variables Portfolio-Balancing. Das Portfolio muss gegen Wunsch-Ziel-Vektoren z.B. Branchen/Länder/Asset/Risiko/Nachhaltigskeit-Mix ausgerichtet werden können.

Dabei sind drei Hauptthemen zu adressieren:

Balancing-Vektoren

Die Vektoren beschreiben die Einfluss-Vektoren, die für die Ausrichtung eines Depots relevant sind. Die Vektoren verändern sich dabei über die Zeit und sind nicht lebenslang gültig für einen Anleger. Es hängt dabei z.B. von der eigenen Risiko-Neigung und dem Anlagehorizont und Lebenssituation ab, welche Vektoren welchen konkreten Zielwert erhalten. Wird beispielsweise die Assetklasse als Ausrichtungsvektor genommen kann z.B. 60% Aktien, 20% Immobilien und 20% Edelmetalle verwendet werden. Dieser Wert verschiebt sich aber über die Lebenszeit des Anlegers gewöhnlich in Richtung sicherer Assetklassen, da im Alter der Vermögenserhalt im Vordergrund steht.

Grundsätzlich kann jedes Attribut und jede Kennzahl eines Titels als Vektor genutzt werden. Dabei ist zwischen einem frei zu benennenden Vektor und einem Vektor mit einem eindeutigen Funktionsindex aus den Stammdaten zu unterscheiden. So können die Landeszuordnungen aus den bisherigen Stammdaten genutzt werden ohne erneut als  Vektor beschrieben werden zu müssen (=Funktionsindex). Ich kann aber beispielsweise die Risikogruppe als eigenen Vektor hinterlegen, der bisher nicht abgebildet wurde. Diese sollte aber dennoch erfassbar und genutzt werden können z.B. mit einem Rating-Ansatz 1..5 Sterne. Als Nutzer muss man damit die gewünschten zu nutzenden Vektoren selbst aufbauen, benennen und priorisieren können. Mindestvoraussetzung ist dabei, dass die Ausprägungen sich tatsächlich gruppieren lassen. Wenn jeder Titel einen eigenen Wert besitzt, ist dieser Vektor sinnlos. Ein Ziel-Vektor nach ISIN wäre ein derartiger unsinniger Fall.

Welche Vektoren sind beispielsweise sinnvoll:

Wahrscheinlich
sinnvolle Basis-Priorität und
damit auch Hierarchiestufe
Name
Beispiel-Ausprägungen
Details und Ergänzungen
Heute Abbildung
1 Laufzeithorizont
  • Trading (z.B. für Optionen, <1 Monat)
  • Shortterm (< 1 Jahr)
  • Midterm (1 Jahr .. 3 Jahre)
  • Longterm (>3 Jahre)

-
1 Risikogruppe Ausfall und Verlust-Risiko Es kann bei Fonds den Ratings entsprechen -
1 Assetklassen
  • Rohstoffe
  • Aktien
  • Indizes
  • ETFs
  • Fonds
  • Immobilien
  • ...

Nur mit einer einfachen Zuordnung bisher
1 Anlagestil
  • Subtranz
  • Neutral
  • Wachstum


2 Branche
  • Finanzen
  • Gesundheit
  • Hightech
  • Energie
  • Handel
  • Chemie 
  • ...

Nur mit einer einfachen Zuordnung bisher
2 Region
  • USA
  • Asien 
  • ...


2 Land
  • ...

Nur mit einer einfachen Zuordnung bisher
3 Marktkapitalisierung d.h.
Firmengröße
  • Small
  • Mid
  • Large

Als Marktkapitalisierungsfunktion vorhanden, aber ohne Werte-Bereiche, was ein Small/Mid/Large-Titel ist
3 Währung



Anforderungen für die Umsetzung

Auswahl und Auswertung der Balancing-Vektoren für das aktuelle Portfolio

Auswahl der Ziel-Vektoren

Die Vektoren sind vom Nutzer in einer gewünschten Reihenfolge in dem Reiter "Portfolio-Balancing" auszuwählen, so dass sich daraus die spätereren Hierarchien ableiten. Es können dabei 1 .. n der Vektoren ausgewählt werden. Die Vektoren wurden dabei zuvor durch den Nutzer selbst definiert (Name, Mögliche Ausprägungen, Soll-Werte).

image-1655628536163.png

Darstellung der Ziel-Vektoren in einer Hierarchie

Die Depotwerte werden nachfolgend entsprechend der Reihenfolge in einer Baumhierarchie dargestellt. Die Soll-Balancing-Spalte verfärbt sich dabei mit Farbcodes, je nachdem ob die Zielstruktur erreicht wurde. Bei orangen Werten wird der Zielwert überschritten oder unterschritten, bei grünen Werten liegt es zwischen Min und Max % Wert. Gelbe Werte könnten in einem Toleranzbereich von +-5% liegen.

Hier als angedeutete Mockup-Implementierung:

image-1655628540199.png

Wertermittlung für die IST-Wert-Betrachtung

Die IST/SOLL-Balancing-Werte orientieren sich dabei immer am aufsummierten aktuellen Wert-Volumen der Depot-Währung oder am Kaufvolumen in der Depot-Währung.

Die IST-Werte können damit schwanken mit dem tagesaktuellen Kurswert, wenn das Wert-Volumen genutzt wird. Dies würde aber auch dazu führen, dass gut laufende Titel im Balancing "rot" angezeigt werden, was die falsche Wirkung haben kann. Daher soll bewusst auch nur das Kaufvolumen genutzt werden können und somit das Balancing insb. bei Neukauf von Titel unterstützend wirken. Das RE-Balancing kann dann periodisch z.B. alle 6 Monate genutzt werden, um "Wert-Cluster" deutlich über der Norm wieder anzupassen oder abzugleichen. 

Justierung im Balancing

Beim Balancing kann auch bewusst der Einfluss von Faktoren angepasst werden d.h. nicht nur das Depot in Richtung der SOLL-Werte angepasst werden, sondern auch die SOLL-Werte auf Basis der aktuellen Depotentwicklung um insb. gut laufende Titel hier zu justieren.

Pflege der Balancing-Vektoren

Definition

Es werden Definitions-Masken benötigt, die festlegen welche Vektoren gewünscht sind und wie diese sich aus den Daten (automatisch) ableiten lassen.  
Dabei können die Werte manuell gesetzt werden, wie hier oder automatisch aus bereits vorhandenen gepflegten Stammdaten z.B. für Assetklassen, Branchen, Länder etc.

image-1655628546677.png

Wird eine Funktion benutzt, erfolgt die Vorbelegung der möglichen Werte auf Basis der vorhandenen Ausprägungen über alle Titel (Funktions-Ziel-Vektor). Die Min-Soll auf das % zu verteilende Gesamtvolumen der Anlage, ebenso wie der Max-Soll % Wert muss immer hinterlegt werden, unabhängig ob die Werte manuell oder automatisch generiert worden sind.

Es sollte dabei möglich sein eine bewusste selektive Übernahme von Werten aus den Stammdaten vorzunehmen. Eine pauschale Übernahme aller vorhandenen Ausprägungen wird nicht sinnvoll sein ohne gleichzeitig auch die Min/Max-Soll % Werte festlegen zu wollen. Es muss eine selektive Vorauswahl erfolgen.

Sonderposition Sonstiges

Damit wird am Ende nie eine komplette Funktionsabbildung verwendet, sondern eine automatische "Übernahme" unterstützt. Werte z.B. für Branchen die nicht zugeordnet sind, werden unter "Sonstiges" geführt. Der Wert "Sonstiges" wird automatisch eingetragen und kann auch eigene SOLL-Werte erhalten. Die Funktionsabbildung besitzt in der Ziel-Vektor-Definition damit keine Auflösung zur Laufzeit! Die Funktionsindexe werden nur in der Ausprägung pro Titel nur automatisch aufgelöst.

Gesamtabbildung und Toleranzen

Die Gesamtsumme der Werte sollte dabei inkl. Toleranz in der Theorie nicht mehr als 100 % umfassen.
Leider wird ein Depot aber selten vollständig bei hoch differenzierten Abbildungen alle Einzelausprägungen umfassen, daher soll es möglich sein bewusst eine Einzelwert-Sicht zu definieren unabhängig ob damit die Gesamtsumme der % Verteilung mehr als 100% umfasst.

image-1655628576261.png

Hier in einer optimierten Detail-Ansicht:

image-1655628583555.png

Pflege der Ausprägungen pro Titel

Für den ersten Entwurf muss es möglich sein die Ausprägungen pro Titel  (Aktie, Fonds ...) festzulegen z.B. die Branchenverteilung mit den IST-Werten zu hinterlegen.
Nachfolgend wieder am Beispiel der Branchenstruktur.

 

 

image-1655628631010.png

Die Eingabe ist nur dort notwendig, wo Vektoren genutzt werden, die manuelle Werte erfordern und nicht durch die eine einfache "Funktion" berechnet werden kann z.B. durch Übernahme aus den Standard-Stammdaten. Für die Startphase wird das Balancing hohe manuelle Aufwände produzieren, da die Werte manuell zu hinterlegen sind. In späteren Ausbaustufen soll/kann dies automatisch erfolgen. % Werte sollten grafisch visualisiert dargestellt werden.

In der Eingabe sollte zwischen den Einzel-Vektoren mit Tabs (hier noch nicht berücksichtigt) umgeschaltet werden können.

image-1655628608858.png

Überlegungen für die erweiterte Nutzung in Handelsstrategien

Um Handelsstrategien zu nutzen (siehe AddOns für ShareHolder) werden diese mit Parametern gestartet und liefern automatisiert Ergebniswerte mit einer Sortierung nach Ranking. Wird ein Balancing-Setup verwendet, sollte es nun möglich sein, den "Fit" eines Titels in der Zielstruktur des Portfolios einzeln zu bewerten. Dabei wird versucht entsprechend dem Ranking der Titel aus einer Strategie der "Fit-Score" der Reihe nach zu berechnen d.h. verbessert sich das Balancing durch Aufnahme des Titels oder verschlechtert sich das Portfolio entsprechend der Zielstruktur eher.

Beispiel-Prozess zur Abbildung:

  1. Nach Ausführen der Strategie über einen definierten Markt liegt eine Sortierung entsprechend der Strategie vor z.B. nach Ranking-Score-Werten
  2. Nun wird geprüft, welche der ersten 20 bis 30 Aktien valide sind d.h. für welche man ein "gutes Gefühl" hat
  3. Die Guten wählt man zunächst z.B. über Checkboxen aus für die weitere Betrachtung
  4. Es wird nun ein Ziel-Portfolio gewählt, wo entsprechend der Ziel-Balancing-Struktur ein ausbalanciertes Depot gebildet werden soll. Im Default ist es das aktuell gerade aktive Portfolio.
  5. Nun vergleicht der Algorithmus, welche sind dazu gekommen und welche kommen nicht mehr vor ebenfalls wird dargestellt, wieviel muss ich von welcher Aktie nachkaufen um eine Target-Verteilung zu haben
    (z.Bsp.: Gleichverteilt oder nach Sektoren gewichtet wie in meinem Excel oder nach Momentum gewichtet....)


Anforderungen für interne Berechnungs-Features zum Balancing

Abgeleitet insb. für die Nutzung im Zusammenspiel mit Handelsstrategien ergeben sich einige notwendige Berechnungsfunktionen:

Releasemanagement

Shareholder wird nach festen Regeln im Releasemanagement aktualisiert. Folgende Regeln sind definiert und angewendet. Bei einer angenommenen Release 20.8.3.0 ist folgende Semantik anzuwenden:

<MajorRelease><ModulReleases><SecondReleases><SubRelease>

Im Minimum wird das SubRelease aktualisiert mit jeder veröffentlichten Programmversion.

Veröffentlichung

Neue Versionen werden über die Website: "Releases" unter https://www.shareholder24.de/ veröffentlicht.

Eine einfache Kontrolle der aktuellen Version kann im Programm über das Menü erfolgen über "Prüfe Version". Dies wird auch beim Programmstart automatisch ausgeführt, kann aber auch in den Programmeinstellungen deaktiviert werden.

image-1655632960354.png

Normale Release-Zyklen für SubReleases sind aktuell 2 Wochen. Für SecondReleases jeden Monat.

Major-Releases auf Jahresebene

Entwicklungen auf Jahresebene verdichtet von 1999 bis 2020

Jahr

Wichtige Entwicklungen

Ende 1999

Ende 1999 als Videotext-Kursdaten-Depotverwaltung

2000

Kursaktualisierung über dynamische Internetadressbildung inkl. Variablennutzung und HTML-Parsing, Umbau des Chartmoduls inkl. OO-Indikatoren(gruppen)system mit Signalbildung und -abbildung

2001

Integration eines Neuronales Kursprognosenetz zur Kursprognose als Diplomarbeit

2003

Integration eines Dynamischen Filtersystems für Strategiesysteme

2004

Einbindung von Techniken des Moneymanagement, Auswertungen zum Monitoring der eigenen Handelstechnik (Tradingmatrix, Kapitalkennzahlen, Systemkennzahlen), Integration von BO-Statistiken/Fundamentaldaten, Verbesserung der Anbindung von Tai-Pan®

2005

Ausbau von speziellen Tradingtechniken insb. Candlestickformationen, Verwendung und Arbeit mit Watchlisten, Web-Publishing

2006

Ausbau von Money-Management-Funktionen (Transaktionsbewertungen, Automatisches Fortführen, Usability), Mehrsprachenunterstützung insb. Englisch für Website, Installation und Programm, Website-Umzug (3xfache Performance), MS-Vista-Support (Nutzung "Eigene Dateien"), Änderung des Hilfesystems (MS WinHelp zu MS HTMLHelp). Einführung der Listendarstellung von Indikatoren, um weitere Möglichkeiten zu erschließen, sowie die Erweiterung der vorhandenen Indikatoren.

2007

Anbindung Tai-Pan Realtime bzw. Tai-Pan RT, Automatische DUnit-Tests (Integrationstest zur Qualitätssicherung), Excel/CSV - Im-und Exportmodul fürs Depot, Kontenabgleich z.B. für flatex, Optimierungen für die Nutzung von Zertifikaten und Optionsscheinen, Automatischer Titelimport aus Tai-Pan, Tai-Pan RT oder OnVista, Unterstützung für MS Vista, Einführung Aktualisierungsgruppen, Umstellung von WKN zu ISIN als interner Primärschlüssel

2008

Redesign Oberfläche/Usability deutlich angehoben durch Ribbon-Bars und Nutzung von Office 2007 Styles, Performanceverbesserungen, Tai-Pan8 Support, VISTA Support

2009

Einführung JIRA als Bug-Tracking-Tool und WIKI als Dokumentationssystem für die Hilfe, Abarbeitung der 180 offenen Issues auf nunmehr 80 offene. Weitere Verbesserungen in der Usability und Stabilität des Systemes.

2010

Automatische Handelssysteme und Einführung von Optimierung von Indikatorensystemen mit genetischen Algorithmen, Verbesserung der Gesamtperformance, Umstellung Datenbankdesign mit verbesserter Performance und Aufhebung von Limitierungen. 

2011

Verbesserung der kostenlosen Kursdatenversorgung auf aktuell mehr als 10 angebundenen Kursdatenlieferanten

2012 Reactivate-Börse-Online-Import, Inkrementelle Kursdaten-Updates, Markt-analysemodul ("Oracle") mit eigenem Setting und 
Einstellungen, Personalisierung, Ausführbare autarke Sicherungsdateien (SFX)
2013 FXCM-Broker-Anbindung, Datenbank-Management-Tools, Automatische-Job-Steuerungen
2014 Fundamentaldaten-Import aus Tai-Pan 14, Refactoring von Eingabe-Masken und UXP, Scripting-Studio
2015 Anbindung ML-Downloader, Quandl.COM, Bereitstellung eigene EOD-Datenbank + Synchronisation
2016 Auto-Increment-Updates, Auto-Trade-Imports
2017 Autoimport für Trades, Flexibisierung Depot-Daten-Import-Schnittstelle, Unterstützung weiterer Depots, Handelsstrategien-Studio mit eigenen Scripten, Implementierung der Susan Levermann - StrategieFundamentaldaten-Imports mit konfigurierbaren Quellen
2018 Fundamentaldaten-Editor, Konfigurierbarer Fundamentaldaten-Abruf, Integratiom der Machine-Learning-Plattform H2O, Einführung einer 64Bit-Version, Automatische Kursprognose-Berechnungen auf GBM, DRF-Modellen
2019 Individualisierbare Einträge für Watchlisten, Aktien etc., Unabhängige Kursvorhersage-Apphttps://www.ml-algotrader.com,  Support-Blog
2020 Depot-Import-AssistentCloud-SynchronisationenOptimierung Fremd-Währungs-Unterstützung, Umbau Kursdatenbank auf SQLiteTipp-des-TagesCleanUp-Funktionen