Manuel Kukla's Blog

IT, Finanzen, Aktien, Kuriositäten und alltägliches

Das Ende von Brokerjet...

Heute möchte ich mich mit einem Thema an euch wenden, welches mich persönlich sehr trifft. Am Donnerstag kam ein Mail eines Börsenverlags in meinen Posteingang, welches ich anfangs noch belächelte. Es hatte den Betreff "Wenn einem der Online-Broker spontan kündigt...". Ich dachte mir nichts dabei und schmunzelte ein bisschen darüber, bis ich las was tatsächlich dahinter steckte: Brokerjet stellt seine Dienste ein. Halt - Moment... Brokerjet? Das ist doch mein Broker! Nun ja, *Augen reib* das betraf mich doch tatsächlich selbst.

Ich war so ziemlich baff. Ich musste doch tatsächlich in einem Börsenbrief lesen, dass mir mein Broker gekündigt hatte. Keine Mail, kein Brief - nein - ausgerechnet durch einen Börsenbrief! Einen Tag später kam dann doch noch ein Brief, welcher mich mit "Lieber Herr Kukla," begrüßte. Sehr fein! Ein Kündigungsschreiben mit "Lieber Herr" zu beginnen grenzt doch schon an Verarschung, oder?

 

Die Auswege aus dem Schlamassel

Ausgerechnet einer (der in meinen Augen) besten Broker, welcher im Vorjahr mit der "Erste Group" fusionierte, setzt jetzt rund 37.000 Kunden vor eine ziemlich besch* Wahl.

  • Sie können entweder ihre Aktien einpacken, und irgendwo anders hin gehen. Brokerjet freut sich über Übertragsspesen / Lagerstellenwechselgebühr.
  • Sie können ihre Aktien verkaufen. Brokerjet freut sich über die Verkaufsgebühren.
  • Sie können mit dem Depot zur Erste wechseln und dort jährlich saftige Kontoführungsgebühren und Depotgebühren bezahlen.

Wie das dann mit dem automatischen KeSt-Verlustausgleich aussieht, steht aber in den Sternen.

Merkt ihr etwas? Brokerjet / bzw. die Erste Group gewinnt in allen Fällen.

Was kann man dagegen tun? Nunja - Versuchen einen Broker zu finden, der die Spesen übernimmt, und möglichst viel Negativwerbung machen.

 

Was ich bereits gemacht habe

*Mich auf Facebook beschwert

Dies hatte einen Anruf eines höheren Mitarbeiters des Kundenservice zur Folge. Außer viel Gerede, gab es jedoch keine konkreten Angebote oder Lösungsvorschläge. Es half mir jedoch das ganze ein bisschen besser zu durchblicken. Sie haben im Vorjahr die Fusion durchgeführt und müssen nun aus gesetzlichen Gründen auch die beiden Banksystem verschmelzen. Dies kostet jedoch Geld, was sie anscheinend nicht ausgeben möchten. Sie möchten dieses Kapital lieber in George stecken. (was mir nebenbei angemerkt überhaupt nicht gefällt, da dies jetzt schon eine zu große Datenkrake ist.)

Es war nun eine Managemententscheidung die Notbremse zu ziehen und die Entwicklung bzw. Brokerjet einzustellen. Aus meiner Sicht zahlt sich das vielleicht am Papier aus, es wird aber noch sehr viel Geld kosten, um das Kundenvertrauen wieder herzustellen. Ich wünsche ihnen jedenfalls einen orkanartigen Shitstorm :-)

Meine Frage bzgl. Sparplänen wurde auch negativ beantwortet. SDI (das Alternativsystem bei der Erste) bietet keine Sparpläne mehr, man kann nur mit dem Bankberater Investitionspläne für Erste-Fonds abschließen. Das nennt sich dann wohl Fondssparen?

*Meinen Bankberater bei der Sparkasse angerufen

Sehr nettes Gespräch - Er ist ebenfalls einer der 37.000 und versteht mich voll und ganz. Er hat auch schon den Unmut von anderen Kunden mitbekommen. Konkretes Angebot konnte er mir keines machen. Witzigerweise musste er mich dann auch noch zur Konkurrenz verweisen, da er selbst weiß, dass das neue System nur einen Bruchteil von Brokerjet kann. Stichwort Intradaytrading, Sparpläne, ...

*Versuchte Kontaktaufnahme mit dem Gewinnmagazin

Um sie zu fragen, ob sie nicht im nächsten Heft ein bisschen darüber berichten möchten.

*Versuchte Kontaktaufnahme mit dem VKI

Da ich es nicht ganz einsehe, warum ich bei einseitiger Vertragsbeendigung die Gebühren für den Lagerstellenwechsel auf meine Kappe nehmen soll.

 

*Was ich noch machen werde

Tja, das muss ich mir noch überlegen. Ich werde auf jeden Fall versuchen möglichst viel Staub aufzuwirbeln und versuchen zu verhindern, dass die Lemminge ins Verderben laufen.

Eventuell meine neue Rechtsschutzversicherung testen, wenn sich das mit der Wartefrist ausgeht.

To be continued...

 

Was mich an dem Thema besonders stört

  • Warum fusioniert man, und kündigt 1 Jahr später alle Kunden?
  • Warum macht man die Kündigung in der Sommerzeit wo halb Österreich auf Urlaub ist?
  • Warum setzt man die Frist so kurz an? Ich hätte deutlich besseres zu tun, als mich mit diesem Thema herumzuschlagen!
  • Warum wusste man es nicht vorher, dass man eine Systemumstellung braucht, die Geld kostet?
  • Wie kann man die neuen deutlich teureren Konditionen als Sonderangebot bezeichnen?
  • Warum vertröstet man Kunden darauf, dass George in 2-3 Jahren vielleicht wieder die selbe Funktionalität bietet? Ich möchte die Tankstelle sehen, die Ihren Kunden verklickert, dass es erst wieder in 2-3 Jahren Diesel gibt und in der Zwischenzeit Benzin getankt werden soll.
  • Wie naiv muss das Management sein, um zu glauben, dass das die günstigste Lösung war?
  • Mein Vertrauen zur "Erste" ist dadurch massiv ge/zer-stört worden.

 

Bitte teilen, damit möglichst viele der 37.000 in Österreich wachgerüttelt werden!

Edit: Ich habe eine Facebookseite erstellt - vielleicht mag sie ja der eine oder andere nutzen, um sich auszutauschen.

https://www.facebook.com/LebenNachBrokerjet

Mein "Addon" für Brokerjet...

Ich bin seit längerem Kunde bei Brokerjet.at und verwende dort den "WebTrader" als Trading-Plattform. Diese ist eigentlich nicht schlecht, jedoch gibt es einen großen Minuspunkt: Man hat in der Depotansicht keinerlei Überblick, welche Aktie in der letzten Zeit gut gelaufen ist, und wo es gerade bröselt.

Nehmen wir hier als Beispiel eine meiner Lieblings-Depotleichen: Ein ETF auf den "ARCA GOLD BUGS"-Index, zu sehen in meiner Standard-Depotansicht: 

Hier sieht man, dass die Position derzeit etwa 13,8% im Minus liegt - schön und gut, wenn man weiß, dass sie auch schon Mal viel schlimmer dastand - das weiß ich jedoch nicht bei jeder Einzelnen meiner derzeit etwa 20 Positionen.

Ein aktuelles Chart erhält man via http://www.finanzen.net/etf/ComStage_NYSE_Arca_Gold_BUGS_UCITS_ETF welches dann folgendes Bild zutage bringt:

     

 

Man beachte, dass Finanzen.net den Preis in USD angibt. Aber auf boerse-frankfurt.de gibt es auch ein Chart in EUR.(http://www.boerse-frankfurt.de/de/etfs/comstage+nyse+arca+gold+bugs+ucits+etf+etf+LU0488317701)

Je nach Art und Weise der Teesud-Leserei und Skalierung, könnte man hier auch einen beginnenden Aufwärtstrend sehen - schön und gut - die Spitze im Februar 2015 inkl. einem möglichen Ausstiegszeitpunkt ist mir jedoch komplett entgangen.

 

Ich hoffe dass das Problem soweit erklärt ist - die Lösung beginnt mit einem kleinen "Wrapper" mit C# und dem Webbrowser-Control. Ich werde in den folgenden Absätzen die Lösung etwas erklären und die kleinen Herausforderungen darstellen. Source-Code werde ich vorerst keinen veröffentlichen - den gibt es möglicherweise nach individueller Anfrage bei mir :-)

 

Herausforderungen:

  • Automatischer Login im Depot - nur so können zuverlässig Kursdaten gesammelt werden.
  • Auslesen der Kursdaten aus dem HTML
  • iFrame-Konstrukte auf der Seite
  • Weiterleitungen während des Logins und auch später
  • Skriptfehler
  • Auswertung

 Automatischer Login im Depot

Finden der beiden Felder im Webbrowser für Username und Passwort, sowie Befüllen dieser mittels:

webBrowser.Document.GetElementById("Feldname").InnerText = "Wert";

Sofern die Felder befüllt sind, kann das Formular abgesendet werden. Dazu wird einfach das JavaScript ausgeführt:

object y = webBrowser.Document.InvokeScript("window.opener.refreshAfterPopupLogin()");

 

Auslesen der Kursdaten aus dem HTML

Sofern man über das Login zur richtigen Depotseite gekommen ist, geht's ans Auslesen der Daten. Hierfür empfiehlt sich ein Splitten der Tabellen nach Zeilen, und dann nach Spalten:

String[] sSplitLine = s.Split(new String[] { "<tr>""</tr>" }, StringSplitOptions.None);
String[] sSplitCols = sLine.Split(new String[] { "<td>""</td>" }, StringSplitOptions.None);

Anschließend müssen nur noch die minimalen HTML-Formatierungen entfernt werden, und die Daten lassen sich schon recht Schnell in eine Datenbank verpacken. Als Ausgangspunkt kann hier folgende DB-Struktur dienen:

CREATE TABLE [dbo].[PreisInfo](
  [PreisInfoId] [int] IDENTITY(1,1) NOT NULL,
   [Name] [nvarchar](100) NULL,
   [ISIN] [nvarchar](12) NULL,
   [Menge] [decimal](18, 3) NULL,
   [LetzterKurs] [decimal](18, 3) NULL,
   [DurchKaufpreis] [decimal](18, 3) NULL,
   [Marktwert] [decimal](18, 3) NULL,
   [PerformanceInkl] [decimal](18, 3) NULL,
   [PerformanceExkl] [decimal](18, 3) NULL,
   [Ertrag] [decimal](18, 3) NULL,
   [per] [datetime] NULL
) ON [PRIMARY] 

 iFrame-Konstrukte auf der Seite

 Nachdem ich die Daten-Auslesefunktion fertig hatte, und meine ersten Daten aus dem HTML-Source in die Datenbank übertragen hatte, kam ich noch auf ein recht nerviges Sicherheitsproblem: Auf der Seite werden iFrames mit verschiedenen Domains verwendet - hier schlägt der IE mit einer UnauthorizedAccessException zu, wenn man auf das Document zugreifen möchte. Die einfache Lösung ist die Umgehung der Frames, und Aufruf der direkten Unterseite. Wenn dies nicht funktioniert, kann man via http://stackoverflow.com/questions/10645143/webbrowsercontrol-unauthorizedaccessexception-when-accessing-property-of-a-fram einen CrossFrame-Zugriff versuchen - mir ist dieser jedoch nicht gelungen. Ich habe mich dann aus Zeitgründen für die einfachere Lösung entschieden.

Weiterleitungen während des Logins und auch später 

Leider besteht der Login bei Brokerjet aus mehreren Weiterleitungen - dies lässt sich am besten im DocumentCompleted-Event des Webbrowsers mit einem if behandeln:

if (e.Url.ToString().EndsWith("MySite.html"))

Skriptfehler

 Der eingebettete IE (WebBrowser) wirft gerne Skriptfehler. Dies lässt sich mit folgender Zeile abschalten:

webBrowser.ScriptErrorsSuppressed = true;

Auswertung

Gibt es für einen Programmierer etwas schöneres als korrekt aufbereitete, rohe SQL-Daten? Ja, klar - eine bereits fertige Statistik. Aber wer traut denn schon fremden Statistiken? ^^

Also zurück zum Start, ein bisschen Datum-Frickeln und ein paar Joins später kommt man auf folgendes Select:

 

DECLARE @VortagBeginn datetime
DECLARE @HeuteEnde datetime
SET @VortagBeginn = convert(nvarchar(20), dateadd(d, -1, getdate()), 104) + ' 00:00:00'
SET @HeuteEnde = convert(nvarchar(20), getdate(), 104) + ' 23:59:59'
SELECT @VortagBeginn as Von, @HeuteEnde as Bis
 
SELECT x.ISIN, PMin.Name, 
       PMin.LetzterKurs Kurs1,
       PMin.Marktwert Wert1,
       PMin.per Datum1, 
       PMax.LetzterKurs Kurs2,
       PMax.Marktwert Wert2,
       PMax.per Datum2,
       PMax.Marktwert - PMin.Marktwert as Diff,
       cast(ROUND((PMax.LetzterKurs-PMin.LetzterKurs) / PMin.LetzterKurs * 100, 2) as decimal(18,2)) as Veraenderung
			FROM 
			(
				SELECT ISIN, Min(PreisInfoId) as MinPreisInfoId, Max(PreisInfoId) as MaxPreisInfoId
				FROM PreisInfo
				WHERE per BETWEEN @VortagBeginn AND @HeuteEnde
				GROUP BY ISIN
			) x
			INNER JOIN PreisInfo PMin ON PMin.PreisInfoId = x.MinPreisInfoId
			INNER JOIN PreisInfo PMax ON PMax.PreisInfoId = x.MaxPreisInfoId        
			

Was nun folgendes Ergebnis liefert:

 

-> Seit gestern etwa 3,2% und 170€ Gewinn - sehr schön. Kluge Leute bemerken sicher, dass ich bei diesem Screenshot zu wenig entfernt habe. Aber wer sich die Arbeit macht, dem sei die Information gegönnt.

In diesem Sinne wünsche ich euch noch ein schönes Wochenende. Fehlersuche und Feedback ist natürlich gerne erwünscht.