Jump to content

Python, die verpasste Chance?


Recommended Posts

vor 21 Stunden schrieb Egoist:

Kamen in den letzten x Coups im Schnitt weniger F2 vor, als1/8 pro coup,

dann mangelte es dem Zufall kürzlich an Favoriten.

 

Danke @Ropro für Deinen Link!

Allerdings glaube ich etwas missverstanden worden zu sein.

 

Mir ging es um das durchschnittliche Auftreten eines F2, der kann durchaus mal 20 oder gar mehr Coups verweigert werden.

Aber was passiert danach?

Kann das sofort wieder passieren, und vielleicht noch ein drittes mal im Anschluss?

 

Eine 50:50 Chance kann auch 20x in Folge wegbleiben und noch öfter.

Kann sie das auch sofort 3x wiederholen?

 

Da wird es schon verdammt eng für den Zufall.

Nimmt man sich solche Phasen als Einstieg vor, könnte es eine Erleichterung geben,

aber wer weiss das schon...

 

vor 15 Stunden schrieb Ropro:

Leider nein, denn es wurden mehr als 20 Singles hintereinander beobachtet. Wenn Du also dann 20 Singles setzt ist Dir das Risiko schon klar.

Analog anwendbar für alle niedrigeren Anzahlen von Singles.

 

 

Wer stumpf 20 oder mehr Pleins pflastert, geht zurecht pleite.

 

vor 15 Stunden schrieb Ropro:

Es ist folgendes schon schwierig genug zu spielen:

In 13 Coups sollten 2 F2 auftreten. Spielt man von anbeginn alle gefallenen Zahlen nach bis man 12 Zahlen nachspielt, ist der Platzer so groß, daß die fast 92%ige Trefferchance nicht ausreicht.

 

Naja, zu spielen ist das leicht, aber nicht zu gewinnen.

Man macht mit sowas, genau wie mit der Martingale, üblicherweise sofort nette Gewinne und wird danach kalt abgeduscht.

 

 

Gruss vom Ego

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Stunden schrieb FavRad:

ABER: hast Du schon einmal angedacht, oder gar nachgeschaut, wie es aussieht, wenn Du nicht von  Anfang an nachsetzt (also 1+2+3+4 usw, sondern erst ab dem 8. oder begrenzt um den Erwartungswert von 9 herum, also z.B. vom 6. bis 12 (3 vorher und 3 hinterher)?

 

Hallo FavRad,

 

heute habe ich mich eher um die Restanten gekümmert. Also wunschgemäss um die letzten 7.

Ich weiss nicht recht, wie ich das hier kommunizieren kann, denn der Programmauswurf ist fürchterlich gross.

 

Konkret liesst mein Progrämmchen 2 Monate Wiesbaden ein und rödelt los.

Für die ersten 147 Coups konnte noch keine Aussage getroffen werden, weil nicht alle Plein 2x vorkamen.

Danach wirft mein Progrämmchen immer die letzten 7 aus und macht einen Haken, wenn einer davon einen Treffer hat.

Bei jedem Treffer gibt es eine Marke an welcher Stelle die Plein vorher war.

 

Mit Stelle ist die Rangfolge gemeint.

Stelle Dir ein Kartendeck mit 37 Karten vor.

Jede Plein hat seine Karte mit der eigenen Nummer drauf.

Fällt eine Plein, wird ihre Karte gezogen und oben aufgelegt.

 

Man kann mit der Methode auch im Casino arbeiten (keine Elektronik).

Will man 7 Restanten angreifen, deckt man die letzen 7 Karten auf und setzt nach...

 

Ich stehe so gar nicht auf Methoden, die man nicht real umsetzen kann, hier könnte man.

 

 

Gruss vom Ego

 

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 26.8.2018 um 03:04 schrieb Egoist:

Mir ging es um das durchschnittliche Auftreten eines F2, der kann durchaus mal 20 oder gar mehr Coups verweigert werden.

Aber was passiert danach?

Kann das sofort wieder passieren, und vielleicht noch ein drittes mal im Anschluss?

 

Ich habe folgende Auswertung aus meinem Archiv gefunden und ergänzt:

 

Es wurden 9185 Permanenzzahlen (handgeworfen) rollierend ausgewertet.

 

Nach 8 Coups waren noch 4093 Permanenzen ohne F2 oder höher. 44,59%

Diese Trefferlosen bildeten Serienlängen wie folgt:

image.png.bb917767c104d62ecd020b03fcc7b4fd.png

 

einen Coup später:

3222 Permanenzen ohne F2 oder höher. 35,11%

Serienlängen:

image.png.c8ad495290d3bcf56c2798741b9fde4a.png

 

bitte bei der Bewertung beachten, wie ich formuliert habe, sonst gibt es Fehlinterpretationen!

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Ropro:

 

Ich habe folgende Auswertung aus meinem Archiv gefunden und ergänzt:

 

Es wurden 9185 Permanenzzahlen (handgeworfen) rollierend ausgewertet.

 

Nach 8 Coups waren noch 4093 Permanenzen ohne F2 oder höher. 44,59%

Diese Trefferlosen bildeten Serienlängen wie folgt:

image.png.bb917767c104d62ecd020b03fcc7b4fd.png.

 

 

Hallo Ropro!

Habe ich das richtig gelesen? Du hast in 9185 Coup 37 Zahlen ohne Wiederholung gefunden.

Wenn das stimmt, ist das sehr bemerkenswert, im nächsten Coup müsste zwangsläufig 

der erste F2 kommen.

MfG hemjo

Link zu diesem Kommentar
Auf anderen Seiten teilen

@hemjo

 

das habe ich befürchtet!

vor 2 Stunden schrieb Ropro:

bitte bei der Bewertung beachten, wie ich formuliert habe, sonst gibt es Fehlinterpretationen!

Es wurden jeweils nur 8 Coups betrachtet.

37 mal war in den letzten 8 Coups kein F2 oder höher.

Das heißt, daß in diesem Zeitraum aber der erste F2 aus dem 9t-letzten, 10t-letzten oder weiteren Vorcoups entstanden sein könnte.

 

Also nicht: in den letzten 37 Coups

sondern: den den letzten 37 "8Coups-Teil-Perm-Abschnitten".

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb hemjo:

Mich interessiert dieses Thema weil es auch teilweise mein Spiel betrifft.

Die Frage von Ego wird aber nicht beantwortet, oder habe ich das wieder

nicht erkannt.

Dann lies meinen Post, da ist die Frage von Egoist zitiert, dann müsste sich auch dir die Antwort inhaltlich erschliessen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 13 Stunden schrieb Ropro:

Ich habe folgende Auswertung aus meinem Archiv gefunden und ergänzt:

 

Es wurden 9185 Permanenzzahlen (handgeworfen) rollierend ausgewertet.

 

Nach 8 Coups waren noch 4093 Permanenzen ohne F2 oder höher. 44,59%

 

Hallo Ropro,

 

vielen Dank für Deinen Beitrag!

Die Trefferrate von über 55% in den ersten 8 hat mich überrascht, genau wie die anderen Extreme von bis zu 37.

 

Deine 9185 waren ja noch überschaubar, also steht zu erwarten, es wird noch locker über 40 Ausbleiber geben,

wenn man länger dran bleibt.

 

Die Differenz zwischen 44,59% nach 8 und 35,11% nach 9 Coups rechtfertigt wohl keinen Angriff.

Man hätte 11,3% Treffer zu erwarten, wenn Deine Zahlen so bleiben.

 

1+2+3+4+5+6+7+8 = 36 bei Return 35 ist fast schon ein Minusgeschäft, besonders wenn Tronc droht.

 

Meine Schapsidee war allerdings etwas anders gedacht und schlecht erklärt.

Ich versuche es zu präzisieren:

  • Wir dürfen eine 50%++ (wie man sieht über 55%) Chance annehmen, die ein F2 in 8 Coups hat.
  • Traf der F2 in 8 Coups, bekommt die Trefferseite einen Haken.
  • Traf kein F2 in 8 Coups, bekommt die Nietenseite einen Haken.
  • Das kann durchaus auch rollierend gemacht werden.
  • Nähme man immer die letzten 99+8 Coups, dann hätte man ein Verhältnis zwischen Treffer und Nietenseite,
    die der prozentualen Erwartung entspricht (oder widerspricht)
  • Kamen in den letzten 107 Coups nur 30% F2 in 8, hätten wir 25 Treffer nicht bekommen,
    was eine extreme Abweichung wäre.
  • Nun könnte es sich lohnen, das kurzfristige Auftreten von F2 in 8C zu beobachten.
  • fängt es an sich zu normalisieren könnte ein Rücklauf kommen.

Praktisch habe ich den Angriff auf den 1. F2 schon öfter probiert, allerdings nur im Demomode.

Das war auch wirklich besser ohne echten Einsatz, denn man verliert vor lauter Treffern den Überblick.

Wenn man dann noch eine einstufige Martingale aufschaltet, rummst es, bevor man sein Kapital verdoppelt hat.

20-30% macht man damit aber fast immer rasch.

 

 

Gruss vom Ego

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gestern habe ich mich um Tensorflow und Keras gekümmert.

Es hat eine Weile benötigt, um es auf meinem Windows 10 Laptop mit alter Grafikkarte zum Laufen zu kriegen.

Auf meinem Win7 Desktop mit besserer GraKa klappte es bisher noch nicht.

 

Aber die ersten Probeläufe sind extrem ermutigend.

In unter 100 Zeilen Pythoncode kann man heutzutage schon ein Monster erzeugen, welches im Turbomodus lernt.

Das "Hello World" der Deep-Learning-Programme, mit dem MNIST-Dataset, funzte sogar nur mit der CPU ratzfatz.

 

Leider habe ich zur Zeit kein Tutorial fertig, welches ich hier einstellen könnte.

Wie und ob man das auch auf Zufallszahlen anwenden kann, ist noch unklar.

 

Wenn ich in der Richtung was versuche, wird es wohl erst was mit EC werden.

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wegen der Restanten hatte ich ja auch etwas unternommen, nur leider ist der Output zu gross.

Immerhin gibt es eine (hässliche) Grafik, die das verdichtet.

 

WBT2_2mon_180101.png.e4d3b530deed321f6a42800120eaafd3.png

 

Dargestellt sind die Trefferabstände von gut 14k Coups aus Wiesbaden Tisch 2, ab dem 01.01.2018.

Die Skalierung wurde logarithmisch gewählt, damit man auch die späten Treffer noch sieht.

 

Es liegen hier aber auch die Zahlen vor, die besagen, wann einer der letzten 7 Restanten traf und wann nicht.

Python rechnet sowas, incl Grafik, auch auf einem schwachen Rechner, unter 10 sec aus.

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich missbrauche diesen Thread mangels anderem Input mal als blog.

 

Durch meine Nachforschungen in Richtung Deep Learning blieb ich jetzt ein Weile bei "keras" hängen.

Dabei handelt es sich um eine mächtige Pythonlibrary (bzw Modul), die das Arbeiten mit mehreren Systemen extrem vereinfacht.

 

Bisher habe ich mich nur um Googles OpenSoft Tensorflow  gekümmert und das auch nur als Anfänger.

Es ist ganz erstaunlich, was man mit Tensorflow, keras und Python so machen kann.

 

Der nächste Seitenarm in dem zu erkundenden Tunnel hatte die Überschrift Docker, damit sollte es sogar möglich sein,

betriebsystemunabhängig komplette Entwicklungsumgebungen transportabel zu machen.

Das wäre dann eine Möglichkeit Leute von der Entwicklung profitieren zu lassen,

die keine Pythonumgebung installieren können bzw auf Mac oder Linux unterwegs sind. 

 

Eine weitere grosse Baugrube tut sich unter der Frage auf, wie strukturiere ich eine Permanenzfolge um,

damit es ein Neuronetz verarbeiten kann?

 

Um noch eine Idee hier festzuhalten:

Die Permanenzfolge hat pro gezogener Zahl sehr viele zusätzliche Merkmale.

Rot und Schwarz bzw Grün ist ist nur das offensichtlichte, aber Farbwechsel und Farbserie ist davon ableitbar.

Dann könnte man den Winkel zwischen den Kesselfächern der letzten 2 Coups ermitteln.

Auch der wird einen mittleren Erwartungswert aufweisen und um diesen oszillieren.

Jedes dieser Merkmale hat einen Schwankungsbereich und eine Schwankungsamplitude,

gerät der Bereich zu lang, gemessen an der Amplitude, setzen "Rückholkräfte" ein.

 

Diese "Rückholkräfte" sind natürlich keine Kräfte, aber trotzdem wirken sie sich auf Dauer aus.

Vielleicht sollte ich ihnen eine eigene Bezeichnung widmen, wie zB Tropfsteineffekt.

 

Über Eure Ideen, Einwürfe und Bedenken würde ich mich freuen...

 

 

Gruss vom Ego

bearbeitet von Egoist
typo
Link zu diesem Kommentar
Auf anderen Seiten teilen

Nur um den Faden erneut aufzunehmen, füttere ich mal den neuesten Input hier hinein.

Wenn es um KI bzw MachineLearning usw geht, scheint sich LSTM oder recurrent Network durchzusetzen,

wenn es um sequenzielle Daten geht.

 

Eine Permanenzfolge ist nun mal sehr sequenziell.

 

Ich bin etwas enttäuscht von der Beteiligung hier, das hätte ich mir durchaus lebhafter gewünscht.

Wenn kein weiteres Interesse besteht, mache ich dann im stillen Kämmerlein weiter.

 

 

Kein Problem

hat Ego

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 17 Stunden schrieb Egoist:

Nur um den Faden erneut aufzunehmen, füttere ich mal den neuesten Input hier hinein.

Wenn es um KI bzw MachineLearning usw geht, scheint sich LSTM oder recurrent Network durchzusetzen,

wenn es um sequenzielle Daten geht.

 

Eine Permanenzfolge ist nun mal sehr sequenziell.

 

Ich bin etwas enttäuscht von der Beteiligung hier, das hätte ich mir durchaus lebhafter gewünscht.

Wenn kein weiteres Interesse besteht, mache ich dann im stillen Kämmerlein weiter.

 

 

Kein Problem

hat Ego

Hallo Ego,

nicht resignieren bei diesem Thema!

 

Für mich hatte sich die "Urlauberei" etwas verlängert.

Seit 2 Tagen mühe ich mich wieder stundenweise mit Python ab. 

Ein gutes E-Book habe ich mir gekauft: "Time Series Forecasting with Python". (Dauer des Kaufvorgangs - Bestellen, Bezahlen, Download - ca. 5 Minuten!).

 

Es gibt noch eine Menge anderer Lernmethoden für Vorhersagen als Neuronale Netze.

Wenn Du schon mit Keras experimentierst, dann gehst Du ja gleich hoch ran!

Wir sollten noch darüber diskutieren, mit welchen Chancenarten wir welche Lernmethode(n) probieren.

Die verschiedenen Lernverfahren werden auch im scikit-Tutorial beschrieben.

 

Im genannten Buch gibt es ein Kapitel und Beispielcode für den "Random Walk" (Zufalsszahlenfolgen).

Die ersten 3 Schritte des Code-Beispiels:

1. Start with a random number of either -1 or 1.
2. Randomly select a -1 or 1 and add it to the observation from the previous time step.

3. Repeat step 2 for as long as you like.


Ich dachte, hey, da kann man ja gleich eine EC-Perm einsetzen, denn auch der line plot des Codebeispiels sieht genau so aus wie Novice's Grafiken.

Dann wendet der Autor des Buches statistische Tests an und zeigt damit, dass Random Walks "non-stationary" sind und kommt zu folgender Aussage:

A random walk is unpredictable; it cannot reasonably be predicted. Given the way that the random walk is constructed, we can expect that the best prediction we could make would be to use the observation at the previous time step as what will happen in the next time step. Simply because we know that the next time step will be a function of the prior time step. This is often called the naive forecast, or a persistence model (covered in Chapter 18). 

Diese Aussage bezieht sich auf die gesamte Stichprobe von 1000 Zufallszahlen.

Man sieht aber am Plot, dass es "stationäre" Teilstrecken gibt, zu erkennen an  "consistent mean and/or variance over time.". Diese sollten "predictable" sein.

Das ist ja auch die Hoffnung von Novice.

 

Demnächst werde ich da herum etwas probieren. Die Bereitstellung der EC-Random Walks funktionierte ja schon vor der Urlaubspause.

 

Bis bald!

Albert

 

 

 

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 36 Minuten schrieb Dr. Manque:

Das ist ja auch die Hoffnung von Novice.

 

 

 

 

 

Sagte ja, komme aus dem Tradingsbereich: Ich habe jede Teilstrecke als Swing betrachtet(wobei Swing eine Definition darstellt, die Praxisbezogen sein sollte) und diese dann mit Rectrementparameter angegriffen. Habe festgestellt, dass durchgängig immer wieder die gleichen Parameter in allen EC`s gleichmässig auftauchen(warum auch immer); dementsprechend stellen sie mögliche Umkehrpunkte dar, die sowohl als Einzelspiel als auch für Serienstrecken benutzbar sind; ABER - es rechnet sich m.e. nur mit hoher Size und wenn man Plein spielt oder wenn man nen Robot wie Dr. Manque in benutzt, hat.

Plein konnte ich mittlerweile auf 9 Zahlen +Zero eingrenzen und damit könnte man ohne Progressionen agieren, aber setzt mal 9 Zahlen und vorherige Analyse des letzten Coups. Bin zu alt für den Dreck - gibt besseres um Kohle zu verdienen

Ich pers. beschäftige mich nicht mehr mit der Problematik, und widme mich meinem Tagesgeschäft.

bearbeitet von novice
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Dr. Manque:

Hallo Ego,

nicht resignieren bei diesem Thema!

 

Moin Herr Dr.

 

natürlich resigniere ich nicht an dem Thema, ganz im Gegenteil.

Ich fühlte mich hier nur als Alleinunterhalter, worauf ich keinen Bock habe.

 

Zitat

Für mich hatte sich die "Urlauberei" etwas verlängert.

Seit 2 Tagen mühe ich mich wieder stundenweise mit Python ab. 

Ein gutes E-Book habe ich mir gekauft: "Time Series Forecasting with Python". (Dauer des Kaufvorgangs - Bestellen, Bezahlen, Download - ca. 5 Minuten!).

 

Sehr gut, allerdings finde ich Dein Buch so nicht bei Amazon, was kommt ist:

Deep Time Series Forecasting with Python: An Intuitive Introduction to Deep Learning for Applied Time Series Modeling (Englisch) Taschenbuch – 11. Dezember 2016

das ist vergriffen und kein ebook.

Hast Du noch den Verfasser?

 

Zitat

Es gibt noch eine Menge anderer Lernmethoden für Vorhersagen als Neuronale Netze.

Wenn Du schon mit Keras experimentierst, dann gehst Du ja gleich hoch ran!

 

Im Gegenteil, denn keras in der aktuellen Form nimmt einem jede Menge Kleinkram ab.

Bei dem Youtuber "sentdex" erwarte ich schon das nächste Video mit Spannung, da kommt glaube ich

was über rekurrrente Netze.

 

Zitat

Wir sollten noch darüber diskutieren, mit welchen Chancenarten wir welche Lernmethode(n) probieren.

 

Naja, mit EC anzufangen sollte kein Fehler sein.

Alle Lernmethoden, die keine Vorgeschichte verarbeiten, fallen flach.

Bisher kenne ich nur das rekurrente Verfahren, welches immer die die vorherigen Antworten einbezieht.

 

Zitat

Die verschiedenen Lernverfahren werden auch im scikit-Tutorial beschrieben.

 

Es gibt eine Menge zu lesen, es hapert manchmal an der Zeit, bin ja kein Rentner...

 

Zitat

Im genannten Buch gibt es ein Kapitel und Beispielcode für den "Random Walk" (Zufalsszahlenfolgen).

Die ersten 3 Schritte des Code-Beispiels:

1. Start with a random number of either -1 or 1.
2. Randomly select a -1 or 1 and add it to the observation from the previous time step.

3. Repeat step 2 for as long as you like.


Ich dachte, hey, da kann man ja gleich eine EC-Perm einsetzen, denn auch der line plot des Codebeispiels sieht genau so aus wie Novice's Grafiken.

Dann wendet der Autor des Buches statistische Tests an und zeigt damit, dass Random Walks "non-stationary" sind und kommt zu folgender Aussage:

A random walk is unpredictable; it cannot reasonably be predicted. Given the way that the random walk is constructed, we can expect that the best prediction we could make would be to use the observation at the previous time step as what will happen in the next time step. Simply because we know that the next time step will be a function of the prior time step. This is often called the naive forecast, or a persistence model (covered in Chapter 18). 

Diese Aussage bezieht sich auf die gesamte Stichprobe von 1000 Zufallszahlen.

 

Beim Roulette haben wir es ungleich schwerer, denn es ist nicht 50:50.

Sowie Dein Autor vorgeht, hat er keinerlei Chance einen Randomwalk zu beherrschen.

 

I know that the next time step depends on nearly all predecessors.

 

 

Zitat

Man sieht aber am Plot, dass es "stationäre" Teilstrecken gibt, zu erkennen an  "consistent mean and/or variance over time.". Diese sollten "predictable" sein.

 

Ich hatte es anders formuliert, aber ja.

 

 

Gruss vom Ego

bearbeitet von Egoist
es fehlte ein Buchstabe
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 32 Minuten schrieb novice:

Bin zu alt für den Dreck - gibt besseres um Kohle zu verdienen

Ich pers. beschäftige mich nicht mehr mit der Problematik, und widme mich meinem Tagesgeschäft.

 

Schade, aber ok.

Es könnte allerdings sein, dass wir hier noch recht ähnliche Ansätze prüfen werden.

 

Zieht man zB immer vom letzten Hochpunkt bis zum neuesten Tief eine Gerade (Zig-Zag-Indikator),

dann kann man zumindest an der Börse interessante Stellen im Chart finden.

 

Damals hatte ich dem ZigZag eine Bimmel verpasst, damit konnte ich immer blitzschnell einschreiten :D

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Besonders cool fände ich es, wenn es mir gelänge, einem Netz meine eigenen Satzentscheidungen beizubringen,

denn ich setze grundsätzlich (naja, nur wenn es stumpf zu testen gilt) immer, halt nur mit verschieden hohen Beträgen.

 

Natürlich wäre mein Spiel dann auch multiplikativ und im Differenzsatz ausführbar,

das zu beobachten sollte echt spannend sein.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

@novice

 

Es ist gut, dass Du Dich offen von diesem Thema abgemeldet hast.

So entstehen für Ego keine falschen Erwartungen, die enttäuscht werden, weil nichts geliefert wird.

 

Gestern ist mir das Buch "Der Schwarze Schwan" von Nassim Nicholas Taleb (ein Ami, im Libanon geboren) in die Finger gekommen

und hat mir den ganzen Tag "geraubt", weil ich es nach den ersten Seiten nicht mehr weglegen konnte.

Darin ist viel vom Traden und von (unfähigen!) Tradern die  Rede. Taleb war selbst Trader. Deshalb empfehle ich es Dir (8,41€ bei Amazon).

 

Schwarze Schwäne sind überraschende Ereignisse, bzw. Umbrüche, die mit den an Gauß orientierten statistischen Methoden nicht vorhersagbar sind,

aber oft die Welt mehr verändern als das statistisch bewertete "weiter so" (Beispiele: Börsencrashs, Kriege, 9/11, Ehescheidungen = negative Schwarze Schwäne)

Taleb unterscheidet "skalierbare" und "nicht skalierbare" Tätigkeiten und Berufe.

Skalierbar ist z.B. die Tätigkeit eines Bäckers. Sein Einkommen ist abhängig von der Menge der Brötchen, die er backt, und er muss für jedes Brötchen

annähernd den gleichen Aufwand leisten.

In nicht skalierbaren Berufen (Schauspieler, Trader, Schriftsteller, Glücksspieler etc.) gibt es mehr Freiheiten aber auch riesige Unterschiede beim Ertrag.

Hier gilt die Regel "The winner takes all", die anderen hungern.

Taleb zeigt nun, dass meistens der Erfolg der Winner nicht auf Talent beruht, sondern auf Glück und Zufall (= positive Schwarze Schwäne) - ein Zufall, der nicht berechenbar ist.

 

@Ego

 

Rein theoretisch sind Zweifel angesagt, ob der Roulette-Zufall mit Python besser beherrscht werden kann.

Also in den nächsten Tagen versuche ich, ein Programm hinzukriegen, mit dem man testen kann, ob man nach Jason Brownlee

höchstens den letzten Satz für die EC-Prognose verwenden kann oder ob  Deine Vermutung "I know that the next time step depends on nearly all predecessors."

richtig ist.

 

Jason Brownlee heißt der Autor des von mir erwähnten E-Books "Introduction to Time Series Forecasting with Python", Untertitel "How to Prepare Data and Develop Models

to Predict the Future".

 

Gruß!

Albert

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 5.9.2018 um 22:26 schrieb Egoist:

natürlich resigniere ich nicht an dem Thema, ganz im Gegenteil.

Ich fühlte mich hier nur als Alleinunterhalter, worauf ich keinen Bock habe.

 

Moin Ego,

 

mal ein kurzes Lebenszeichen von mir.

Bin zwecks Unternehmungsgründung ziemlich im Einsatz, da hier mehrer Köche mitwirken, und dieses Jahr eigentlich noch ausgelierfert werden sollte (bruhaha)....Nun ja, dieses Monat entscheidet sich wie mein Terminplan die nächsten Monate aussehen wird.

 

Lese auch derzeit im Forum nicht ganz mit...ausser natürlich hier.

 

Werde Python aber nicht ganz aufgeben, nur auf einem etwas anderem Weg. Das Thema KI und ähnliches ist zwar sehr interessant für mich, nur beisteuern kann ich hier nichts, und bis ich soweit sein würde, mitreden oder gar mitwirken zu können, bist Du wahrscheinlich schon fertig.

Doch unser mannigfaltiges Thema bedarf sowieso der Untersuchung der verschiedenen Gedankenwege, und wenigstens der Rückmeldung ob dieser Weg zielführend oder eine Sackgasse ist. Da bleiben für mich noch genügend programmiertechnisch einfachere Wege zur Erkundung übrig.

 

Gehe ich recht in der Annhame, dass es nicht mehr angedacht ist ein ganz fertiges Modul ins Forum zu stellen?

 

Servus

 

dermannmitdemschlechtenzeitmangement

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 7.9.2018 um 13:42 schrieb Dr. Manque:

 

Rein theoretisch sind Zweifel angesagt, ob der Roulette-Zufall mit Python besser beherrscht werden kann.

 

Hallo Albert,

 

damit hast Du natürlich recht. Wenn es gelingen soll, muss noch ein Quäntchen Hirnschmalz dazugegeben werden.

Ich frage mich, warum es mir regelmässig gelingt, nur mit Einsatzvariationen Gewinne zu erlangen,

starren Methoden aber nicht.

 

Am 7.9.2018 um 13:42 schrieb Dr. Manque:

Jason Brownlee heißt der Autor des von mir erwähnten E-Books "Introduction to Time Series Forecasting with Python", Untertitel "How to Prepare Data and Develop Models

to Predict the Future".

 

 

Auf Amazon wurde ich nicht fündig, wohl aber bei Google.

Der gute Jason betreibt eine Site, die kostenpflichtigen Inhalt feilbietet, muss ich da eintauchen?

 

 

Am 8.9.2018 um 20:27 schrieb wiensschlechtester:

mal ein kurzes Lebenszeichen von mir.

 

Danke, das beruhigt. Ich hatte mir schon Sorgen gemacht.

 

Am 8.9.2018 um 20:27 schrieb wiensschlechtester:

Gehe ich recht in der Annhame, dass es nicht mehr angedacht ist ein ganz fertiges Modul ins Forum zu stellen?

 

Ehrlich gesagt habe ich mir darüber wenig Gedanken gemacht.

Das bisher eingebaute Material ist doch noch gar nicht benutzt worden.

 

Was meinst Du mit ganz fertig?

Eine KI, die eine Perm gefüttert bekommt und dann (richtigere, als erwartbare) Prognosen rauspfeffert?

So arbeiten die Neuronetze nicht.

 

Vielmehr muss man ihnen eine Vielzahl von Beispielen zeigen, damit sie sich anschliessend in unbekanntem Terrain zurechtfinden.

Bis vorhin war ich schwer damit beschäftigt, meine schwächliche Laptop Graka (M950 4GB) mit CuDNN/Tensorflow/Keras zur Mitarbeit zu bringen.

 

Aber nun flutscht es 8-20x schneller, als mit der CPU :D

Die MNIST-Problematik wird zu 99% in unter 10 min gelöst...

 

 

Gruss vom Ego

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Forum,

 

ich habe heute unser Modul etwas aufgebohrt, daher vergebe ich auch eine neue Versionsnummer.

Folgendes sollte unter "roulib01.py" im eigenen Entwicklungsverzeichnis stehen, damit man weiter mitmachen kann.

 

Einfach alles aus folgendem Fenster herauskopieren und in eine so benannte Datei einfügen.

 

# Diese Datei bitte als roulib01.py ins aktuelle Arbeitsverzeichnis kopieren.
# man kann dann in allen weiteren *.py Dateien auf die Klassenelemente zugreifen,
# wenn man sein s_cript beispielsweise mit
# import roulib01 as r beginnt.
#
# r.RouldefWien.kess repräsentiert dann ein Tuple mit allen Plein in Kesselfolge
# im Uhrzeigersinn.
#
# usw.
#
# Bei Fragen, bitte fragen...


import numpy as np


# Definition nach Wiener Art

class RouldefWien():
    kess = (
    0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 24, 16, 33, 1, 20, 14, 31, 9, 22, 18, 29,
    7, 28, 12, 35, 3, 26)
    rono = (
    0, "R", "N", "R", "N", "R", "N", "R", "N", "R", "N", "R", "N", "R", "N", "R", "N", "R", "N", "R", "N", "R", "N",
    "R", "N", "R", "N", "R", "N", "R", "N", "R", "N", "R", "N", "R", "N")
    paip = (
    0, "P", "I", "I", "P", "I", "P", "I", "I", "P", "P", "I", "I", "P", "I", "P", "P", "I", "P", "I", "P", "P", "I",
    "I", "P", "P", "I", "I", "P", "P", "I", "I", "P", "P", "I", "I", "P")
    mapa = (
    0, "G", "K", "G", "K", "G", "K", "G", "K", "G", "K", "G", "K", "G", "K", "G", "K", "G", "K", "K", "G", "K", "G",
    "K", "G", "K", "G", "K", "G", "K", "G", "K", "G", "K", "G", "K", "G")
    dou = (
    0, 3, 2, 2, 1, 2, 1, 3, 2, 3, 1, 3, 2, 3, 1, 3, 1, 2, 1, 1, 2, 2, 3, 1, 2, 2, 3, 1, 2, 2, 3, 1, 3, 1, 3, 1, 3)
    col = (
    0, 2, 3, 1, 1, 3, 2, 1, 2, 1, 3, 3, 1, 3, 2, 3, 2, 2, 1, 2, 3, 1, 3, 1, 2, 2, 1, 3, 1, 3, 2, 1, 1, 3, 2, 3, 2)
    trs = (
    0, 31, 13, 19, 1, 19, 1, 25, 13, 31, 1, 25, 13, 31, 7, 25, 7, 19, 7, 1, 19, 13, 31, 1, 19, 13, 31, 7, 19, 13, 25, 7,
    25, 7, 31, 1, 25)
    trp = (
    0, 31, 13, 19, 4, 19, 1, 25, 16, 34, 4, 25, 13, 34, 10, 28, 7, 22, 10, 4, 22, 16, 31, 1, 19, 13, 31, 7, 22, 16, 28,
    7, 28, 10, 34, 1, 25)
    sek = (
    "Z", "Z", "Z", "G", "G", "G", "G", "G", "O", "O", "O", "K", "K", "K", "K", "K", "K", "K", "K", "K", "K", "K", "K",
    "O", "O", "O", "O", "O", "G", "G", "G", "G", "G", "G", "G", "G", "G")


# Ego's numerische Listen

class Roulette_franz():
    pl_kessel = [0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 24, 16, 33, 1, 20, 14, 31, 9,
                 22, 18, 29, 7, 28, 12, 35, 3, 26]
    pl_fach = [0, 23, 6, 35, 4, 19, 10, 31, 16, 27, 18, 14, 33, 12, 25, 2, 21, 8, 29, 3, 24, 5, 28, 17, 20, 7, 36, 11,
               32, 30, 15, 26, 1, 22, 9, 34, 13]
    ec_RS = [0, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, -1, 1, -1, 1, -1, 1, -1, 1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, -1, 1,
             -1, 1, -1, 1, -1, 1]
    ec_TH = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
             -1, -1, -1, -1, -1, -1]
    ec_UG = [0, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1,
             1, -1, 1, -1, 1, -1]
    dc_col = [0, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1,
              2, 3]
    dc_duz = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
              3, 3]
    c6_tvs = [0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,
              6, 6]
    c12_tvp = [0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11,
               11, 12, 12, 12]
    c9_car = [(0, 1, 2, 3), (1, 2, 4, 5), (2, 3, 5, 6), (4, 5, 7, 8), (5, 6, 8, 9), (7, 8, 10, 11), (8, 9, 11, 12),
              (10, 11, 13, 14), (11, 12, 14, 15), (13, 14, 16, 17), (14, 15, 17, 18), (16, 17, 19, 20),
              (17, 18, 20, 21), (19, 20, 22, 23), (20, 21, 23, 24), (22, 23, 25, 26), (23, 24, 26, 27),
              (25, 26, 28, 29), (26, 27, 29, 30), (28, 29, 31, 32), (29, 30, 32, 33), (31, 32, 34, 35),
              (32, 33, 35, 36)]
    c18_che = [(0, 1), (0, 2), (0, 3), (1, 2), (1, 4), (2, 3), (2, 5), (3, 6), (4, 5), (4, 7), (5, 6), (5, 8), (6, 9),
               (7, 8), (7, 10), (8, 9), (8, 11), (9, 12), (10, 11), (10, 13), (11, 12), (11, 14), (12, 15), (13, 14),
               (13, 16), (14, 15), (14, 17), (15, 18), (16, 17), (16, 19), (17, 18), (17, 20), (18, 21), (19, 20),
               (19, 22), (20, 21), (20, 23), (21, 24), (22, 23), (22, 25), (23, 24), (23, 26), (24, 27), (25, 26),
               (25, 28), (26, 27), (26, 29), (27, 30), (28, 29), (28, 31), (29, 30), (29, 32), (30, 33), (31, 32),
               (31, 34), (32, 33), (32, 35), (33, 36)]
    format_Farbe = ['\x1b[1;42;30m  0 \x1b[0m', '\x1b[1;41;37m  1 \x1b[0m', '\x1b[1;40;37m  2 \x1b[0m',
                    '\x1b[1;41;37m  3 \x1b[0m', '\x1b[1;40;37m  4 \x1b[0m', '\x1b[1;41;37m  5 \x1b[0m',
                    '\x1b[1;40;37m  6 \x1b[0m', '\x1b[1;41;37m  7 \x1b[0m', '\x1b[1;40;37m  8 \x1b[0m',
                    '\x1b[1;41;37m  9 \x1b[0m', '\x1b[1;40;37m 10 \x1b[0m', '\x1b[1;40;37m 11 \x1b[0m',
                    '\x1b[1;41;37m 12 \x1b[0m', '\x1b[1;40;37m 13 \x1b[0m', '\x1b[1;41;37m 14 \x1b[0m',
                    '\x1b[1;40;37m 15 \x1b[0m', '\x1b[1;41;37m 16 \x1b[0m', '\x1b[1;40;37m 17 \x1b[0m',
                    '\x1b[1;41;37m 18 \x1b[0m', '\x1b[1;41;37m 19 \x1b[0m', '\x1b[1;40;37m 20 \x1b[0m',
                    '\x1b[1;41;37m 21 \x1b[0m', '\x1b[1;40;37m 22 \x1b[0m', '\x1b[1;41;37m 23 \x1b[0m',
                    '\x1b[1;40;37m 24 \x1b[0m', '\x1b[1;41;37m 25 \x1b[0m', '\x1b[1;40;37m 26 \x1b[0m',
                    '\x1b[1;41;37m 27 \x1b[0m', '\x1b[1;40;37m 28 \x1b[0m', '\x1b[1;40;37m 29 \x1b[0m',
                    '\x1b[1;41;37m 30 \x1b[0m', '\x1b[1;40;37m 31 \x1b[0m', '\x1b[1;41;37m 32 \x1b[0m',
                    '\x1b[1;40;37m 33 \x1b[0m', '\x1b[1;41;37m 34 \x1b[0m', '\x1b[1;40;37m 35 \x1b[0m',
                    '\x1b[1;41;37m 36 \x1b[0m']

    # Hier auch eine erste Funktionsdefinition innerhalb der Klasse
    # der Aufruf erfolgt erst in einen S_cript, welche diese Datei importiert.
    # Die Methode macht noch nicht viel Sinn, weil die Konsole zu langsam reagiert.

    def print_Segment(self, start, stop, beginn="\r", ende=""):     # Die Methode wirft einen Kesselsektor auf die Konsole aus
        step = 1                                                    # hier wird geschaut,
        if start > stop:                                            # ob links, oder rechtsrum
            step = -1
        else:
            step = 1
        print(beginn, end="", flush=True)                           # Es wird der Parameter beginn= zuerst ausgeworfen.
                                                                    # war er leer, wird der Cursor nach links geschoben.
        for i in range(start, stop, step):                          # Alle Zahlen zwischen start und stop
            x = i % 37                                              # der Reihe nach auswählen
            if x < 0:                                               # bei Über- oder Unterlauf
                x += 37                                             # eingreifen

            print(self.format_Farbe[self.pl_kessel[x]], end="")     # nächste Kesselzahl farbig ausgeben

        print(ende, end="")                                         # nach der letzten die end= Phrase ausgeben
                                                                    # das wäre sinnvollerweise ein Zeilenvorschub.

# Hier starten nützliche Erweiterungen für EC-Spieler, denn es werden die EC ausgewertet.
# get_EC_RS() erzeugt eine (neue) Liste, nach Übergabe einer Permanenz (perm).
# Die Liste enthält immer eine +1, wenn ROT getroffen wurde und -1 bei Schwarz.
# Zero wird in der Liste als +-0 abgelegt.

    def get_EC_RS(self, perm):
        rs = []
        for i in range(0, len(perm)):
            rs.append(self.ec_RS[perm[i]])
        return rs

# Hier das gleiche für TiefHoch
    def get_EC_TH(self, perm):
        th = []
        for i in range(0, len(perm)):
            th.append(self.ec_TH[perm[i]])
        return th

# Und auch für UngeradeGerade
    def get_EC_UG(self, perm):
        ug = []
        for i in range(0, len(perm)):
            ug.append(self.ec_UG[perm[i]])
        return ug

# Wirft man die oben erzeugten Listen hier hinein (ec), kann man sie aufummieren lassen.
# Wenn also Rot überwog und man das über die ganze Permanenz beobachten will,
# kann man aus der entstehenden Liste "hist" eine Graphik plotten.
# Man muss nicht mehr zwischen RS, TH oder UG unterscheiden, da alle eine gleichwertige "ec" Liste haben.
    def get_histEC(self, ec):
        hist = [ec[0]]
        for i in range(1, len(ec)):
            hist.append(hist[i - 1] + ec[i])
        return hist

# Nun kann man sich noch um Serien kümmern.
# War die aktuelle EC von gleicher Qualität,wie die davor, entsteht eine +1 in der Ergebnisliste,
# war das nicht der Fall, dann eine -1
# Sonderbehandlung bei und nach Zero, weil es danach weder Serie noch Wechsel ist.
    def get_seriEC(self, ec):
        seri = [0]
        for i in range(1, len(ec)):
            if ec[i] == 0:
                seri.append(0)
            elif ec[i - 1] == ec[i]:
                seri.append(1)
            elif ec[i-1] == 0:
                seri.append(0)
            else:
                seri.append(-1)
        return seri

# Die letzte Methode summiert wieder etwas auf
# Dieses Mal sind das die Serientreffer und die Wechseltreffer,
# auch dieses Ergebnis kann man dann plotten.
    def get_wechEC(self, seri):
        wech = [0]
        for i in range(1, len(seri)):
            wech.append(wech[i - 1] + seri[i])
        return wech

 

Viel Spass und Erfolg mit Python,

wünscht Ego

Link zu diesem Kommentar
Auf anderen Seiten teilen

Damit man das auch testen kann, hier noch eine Beispieldatei.

Bitte zu beachten, dass es zwingend erforderlich ist, eine (unbearbeitete) Wiesbadendatei in D:\temp

mit entsprechendem Namen zu haben.

Ansonsten einfach die path-Variable anpassen.

 

import re                   # Modul für Regular Expressions
import numpy as np
import matplotlib.pyplot as plt
import roulib01 as roul     # Unsere eigene Library, sie hat eine neue Versionsnummer.

r = roul.Roulette_franz     # Kurzform, "r" ist nun mit Methoden unserer Library ausgestattet.
                            # hier nur meine Klasse Roulette_franz, in der Methoden definiert wurden.

path = 'd:\\Temp\\Permanenzen_SBWB_2018_Tisch 2.txt'    # Pfad ANPASSEN an den eigenen Rechner!!!
                                                        # und auch WB_Permanenzen dort lagern.

coupZahlen = r" *[0-9]"     # der Suchstring beginnt mit einem kleinen "r" vor einer Zeichenkette,
                            # das bedeutet, es folgt eine Regular Expression(re)  (bitte googlen).
                            # Die Expression beginnt mit einem SPACE also Leerzeichen,
                            # gefolgt von einem "*" was 0-n Leerzeichen bedeutet.
                            # Der Ausdruck in den eckigen Klammern besagt, Zeichen von 0 bis 9
                            # werden erwartet.

# parsePermFile ist noch Baustelle, heute wird nur der fünfte Eintrag benutzt.
# das ist parsePermFile[4]
parsePermFile = ["Spielbank Wiesbaden", "Tisch:", "Datum:", "N  Z  R", coupZahlen]
sizePF = len(parsePermFile)
print(sizePF)               # nur zur Info
print (parsePermFile)       # bei ausgefallenen re kann man sehen wie sich das auf coupZahlen ausgewirkt hat


file = open(path) # Pfad bitte an den eigenen Rechner anpassen
lines = file.readlines()    # Alle Zeilen der Datei werden in einem Rutsch eingelesen
print(len(lines))           # Jede Zeile hat nun einen eigenen Listeneintrag in "lines"
file.close()                # Datei schliessen.

x = 0                       # Zeilenzähler auf 0 setzen
perm = []                   # Permanenz löschen

for each in lines:          # Alle Zeilen durchhampeln
    if re.match(parsePermFile[4],lines[x]):     # Hier wird auf eine Zahl nach Regular Expr. geprüft
        temp = lines[x].strip(" \t\n\r")        # war es eine, werden Leerzeichen, Tabulatoren etc entfernt
        temp = int(temp[:3])
        # print(x, temp)                          # zur Prüfung ausgeben
        # Achtung, hier fehlt noch eine Gültigkeitsprüfung!
        perm.append(temp)                       # neue Permanenzzahl speichern
    x += 1                                      # nächste Zeile ansteuern

permlen = len(perm)                             # Anzahl der gelesenen Coups feststellen
print("Anzahl Coups:",permlen)                  # und ausgeben
print(perm)                                     # kann entfallen, ist nur zur Kontrolle
rs = r.get_EC_RS(r, perm)           # Hier werden die Rot-Schwarz-Zero Ergebnisse aus "perm" extrahiert.
th = r.get_EC_TH(r, perm)           # Tief-Hoch-Zero
ug = r.get_EC_UG(r, perm)           # Ungerade-Gerade-Zero

hist_rs = r.get_histEC(r, rs)       # hist_rs enthält einen Verlauf der betreffenden EC (R-S-Z)
hist_th = r.get_histEC(r, th)       # dito (T-H-Z)
hist_ug = r.get_histEC(r, ug)       # dito (U-G-Z)

seri_rs = r.get_seriEC(r, rs)       # Auswertung der Serien hier füt R-S-Z
seri_th = r.get_seriEC(r, th)       # dito T-H-Z
seri_ug = r.get_seriEC(r, ug)       # dito U-G-Z

wech_rs = r.get_wechEC(r, seri_rs)  # Verhältnis von Wechsel zu Serie hier für R-S-Z aufsummiert.
wech_th = r.get_wechEC(r, seri_th)  # etc
wech_ug = r.get_wechEC(r, seri_ug)  # ...

# Kann entfallen ist nur zum Prüfen, ob alles stimmt
print("TH:    ", th)
print("HistTH:", hist_th)
print("SeriTH:", seri_th)
print("WechTH:", wech_th)

# Nun wird es mal ausgegeben
# nur die einfachsten pyplot Befehle wurden benutzt
plt.plot(hist_rs, label="Rot")
plt.plot(wech_rs, label="Farbserie")
plt.plot(hist_th, label="Tief")
plt.plot(wech_th, label="Tiefserie")
plt.plot(hist_ug, label="Ungerade")
plt.plot(wech_ug, label="Ungeradeserie")
plt.title("EC Verteilung: "+path.split("\\")[-1])
plt.legend()
plt.show()

 

Viel Spass und Erfolg mit Python,

wünscht Euch Ego

bearbeitet von Egoist
path statt pfad
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie ist deine Meinung dazu?

Du kannst jetzt schreiben und dich später registrieren. Bereits registrierter Teilnehmer? Dann melde dich jetzt an, um einen Kommentar zu schreiben.
Hinweis: Dein Beitrag wird nicht sofort sichtbar sein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Neu erstellen...