Bayes'sche Regression - Hat jemand einen EA mit diesem Algorithmus erstellt? - Seite 40

 

Und ich möchte mich immer wieder mit dem Thema der vermeintlich normalverteilten inkrementellen Zitate beschäftigen.

Wenn jemand dafür ist, werde ich Argumente nennen, warum dieser Prozess nicht normal sein kann. Und diese Argumente werden für jeden verständlich sein und gleichzeitig mit den CPT übereinstimmen. Und diese Argumente sind so trivial, dass es keinen Zweifel geben sollte.

 
-Aleks-:

Und was wird die Wahrscheinlichkeit ausdrücken, die Prognose für den nächsten Balken oder den Bewegungsvektor der nächsten Balken?

Die Wahrscheinlichkeit gibt die Vorhersage für den nächsten Tick (Inkrement) an. Ich möchte es einfach:

- die Werte der zukünftigen Ybayes-Ticks berechnen, für die die Wahrscheinlichkeit nach der Bayes-Formel maximal ist.

- Vergleichen Sie Ybayes mit den tatsächlich eingehenden Yreal-Zecken. Erfassen und verarbeiten Sie die Statistiken.

Wenn die Differenz der Werte in einem vernünftigen Bereich liegt, werde ich den Code veröffentlichen und fragen, was als nächstes zu tun ist. Regression? Vektor? Skalpieren?

 
Yuri Evseenkov:

Die Wahrscheinlichkeit drückt die Vorhersage des nächsten Ticks (Inkrement) aus. Ich möchte es einfach:

Warum auf Zecken heruntergehen? Sie können lernen, die Richtung der Ticks in 5 Minuten mit einer Genauigkeit von 70 % vorherzusagen, aber 100 Ticks im Voraus wissen Sie, dass die Genauigkeit abnehmen wird.

Versuchen Sie es in Schritten von einer halben oder einer Stunde im Voraus. Das ist auch für mich interessant, vielleicht kann ich in irgendeiner Weise helfen.

 
Yuri Evseenkov:

Die Wahrscheinlichkeit drückt die Vorhersage des nächsten Ticks (Inkrement) aus. Ich möchte es einfach:

- die Werte der zukünftigen Ybayes-Ticks berechnen, für die die Wahrscheinlichkeit nach der Bayes-Formel maximal ist.

- Vergleichen Sie Ybayes mit den tatsächlich eingehenden Yreal-Zecken. Erfassen und verarbeiten Sie die Statistiken.

Wenn die Differenz der Werte in einem vernünftigen Bereich liegt, werde ich den Code posten und fragen, was als Nächstes zu tun ist. Regression? Vektor? Kurve? Skalpieren?

Was ist falsch an ARIMA? In Paketen wird die Anzahl der Diffs (Inkremente von Inkrementen) automatisch in Abhängigkeit vom Eingabestrom berechnet. Viele Feinheiten im Zusammenhang mit der Stationarität sind in dem Paket versteckt.

Wenn Sie wirklich so tief gehen wollen, dann etwas ARCH?

Ich habe es einmal versucht. Das Problem ist folgendes. Der Zuwachs kann leicht berechnet werden. Wenn wir jedoch das Konfidenzintervall dieses Inkrements zum Inkrement selbst addieren, wird es entweder KAUFEN oder VERKAUFEN lauten, da der vorherige Kurswert innerhalb des Konfidenzintervalls liegt.

 

Ja, der klassische Ansatz ist, wie SanSanych schreibt, Datenanalyse, Datenanforderungen und Systemfehler.

Aber in diesem Thema geht es um Bayes, und ich versuche, in Bayes'schen Begriffen zu denken, wie der Soldat im Schützengraben, der die nachträgliche (nach der Erfahrung) Wahrscheinlichkeit berechnet. Ich habe oben ein Beispiel für einen Soldaten genannt.

Eine der wichtigsten Fragen ist, was als A-priori-Wahrscheinlichkeit zu betrachten ist. Mit anderen Worten: Wen sollen wir hinter den Vorhang der Zukunft, rechts von der Nullleiste, stellen? Gauß? Laplace? Wiener? Was schreiben professionelle Mathematiker hier (für mich ein dunkler "Wald")?

Ich habe mich für Gauß entschieden, weil ich eine Vorstellung von der Normalverteilung habe und an sie glaube. Wenn es nicht "schießt", dann ist es möglich, andere Gesetze zu nehmen und Gauß anstelle der Bayes-Formel zu ersetzen, oder zusammen mit Gauß als Produkt zweier Wahrscheinlichkeiten. Versuchen Sie, ein Bayes'sches Netz zu erstellen, wenn ich es richtig verstehe.

Natürlich schaffe ich das nicht allein. Ich möchte das Problem mit Gauß lösen, das ich unter dem Strauß formuliert habe. Wenn jemand bereit ist, sich mir auf freiwilliger Basis anzuschließen, dann bitte. Hier ist ein tatsächliches Problem.

Gegeben: МТ4 Generator für Zufallszahlen.

Bedarf: Schreiben Sie MQL4-Code als Funktion FP(), die MT4[]-Array, das durch den Standard-RNG gebildet wird, in ND[]-Array mit Normalverteilung umwandelt.

Vasily (ich kenne meinen Vatersnamen nicht) Sokolov zeigte mir die Transformationsformeln unter https://www.mql5.com/go?link=https://habrahabr.ru/post/208684/.

Der Altruismus und die Freundlichkeit wird eine grafische Darstellung der Ergebnisse sein, obwohl ich die Charts der berechneten Arrays direkt im MT4-Fenster zoomen kann. Ich habe es in meinen Projekten getan.

Ich verstehe, dass viele Leute hier dieses Problem mit ein paar Klicks in Mathepaketen lösen können, aber ich möchte in einer Sprache sprechen, die von Händlern, Programmierern, Wirtschaftswissenschaftlern und Philosophen allgemein verstanden wird: MQL4.

Преобразование равномерно распределенной случайной величины в нормально распределенную
Преобразование равномерно распределенной случайной величины в нормально распределенную
  • habrahabr.ru
Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста. Пометьте топик понятными вам метками, если хотите или закрыть
 
Yuri Evseenkov:

Ja, der klassische Ansatz ist, wie SanSanych schreibt, Datenanalyse, Datenanforderungen und Systemfehler.

Aber in diesem Thema geht es um Bayes, und ich versuche, in Bayes'schen Begriffen zu denken, wie der Soldat im Schützengraben, der die nachträgliche (nach der Erfahrung) Wahrscheinlichkeit berechnet. Ich habe oben ein Beispiel für einen Soldaten genannt.

Eine der wichtigsten Fragen ist, was als A-priori-Wahrscheinlichkeit zu betrachten ist. Mit anderen Worten: Wen sollen wir hinter den Vorhang der Zukunft, rechts von der Nullleiste, stellen? Gauß? Laplace? Wiener? Was schreiben professionelle Mathematiker hier (für mich ein dunkler "Wald")?

Ich wähle Gauß, weil ich eine Vorstellung von der Normalverteilung habe und an sie glaube. Wenn es nicht "schießt", dann ist es möglich, andere Gesetze zu nehmen und Gauß anstelle der Bayes-Formel zu ersetzen, oder zusammen mit Gauß als Produkt zweier Wahrscheinlichkeiten. Versuchen Sie, ein Bayes'sches Netz zu erstellen, wenn ich es richtig verstehe.

Natürlich schaffe ich das nicht allein. Ich möchte das Problem mit Gauß lösen, das ich unter dem Strauß formuliert habe. Wenn jemand bereit ist, sich mir auf freiwilliger Basis anzuschließen, dann bitte. Hier ist ein tatsächliches Problem.

Gegeben: МТ4 Generator für Zufallszahlen.

Bedarf: Schreiben Sie MQL4-Code als Funktion FP(), die MT4[]-Array, das durch den Standard-RNG gebildet wird, in ND[]-Array mit Normalverteilung umwandelt.

Vasily (ich kenne meinen Vatersnamen nicht) Sokolov zeigte mir die Transformationsformeln unter https://www.mql5.com/go?link=https://habrahabr.ru/post/208684/.

Allerdings kann ich und ich kann Charts von berechneten Arrays direkt im MT4-Fenster skalieren. Ich habe es in meinen Projekten getan.

Ich verstehe, dass viele Händler dieses Problem mit ein paar Klicks mit mathematischen Paketen lösen können, aber ich möchte die MQL4-Sprache verwenden, die für Händler, Programmierer, Ökonomen und Philosophen allgemein zugänglich ist.

Hier ist ein Generator mit verschiedenen Verteilungen, einschließlich der Normalverteilung:

https://www.mql5.com/ru/articles/273

Статистические оценки
Статистические оценки
  • 2011.03.15
  • Victor
  • www.mql5.com
Оценка статистических параметров последовательности очень важна, так как большинство математических моделей и методов строятся исходя из различного рода предположений, например, о нормальности закона распределения, или требуют знания значения дисперсии или других параметров. В статье кратко рассматриваются простейшие статистические параметры случайной последовательности и некоторые методы ее визуального анализа. Предлагается реализация этих методов на MQL5 и способ визуализации результатов расчета при помощи программы Gnuplot.
 

Kurze Verteilungsanalyse in R:

# load data
fx_data <- read.table('C:/EURUSD_Candlestick_1_h_BID_01.08.2003-31.07.2015.csv'
                           , sep= ','
                           , header = T
                           , na.strings = 'NULL')

fx_dat <- subset(fx_data, Volume > 0)

# create open price returns
dat_return <- diff(x = fx_dat[, 2], lag = 1)

# check summary for the returns
summary(dat_return)
      Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
-2.515e-02 -6.800e-04  0.000e+00 -3.400e-07  6.900e-04  6.849e-02 

# generate random normal numbers with parameters of original data
norm_generated <- rnorm(n = length(dat_return), mean = mean(dat_return), sd = sd(dat_return))

#check summary for generated data
summary(norm_generated)
      Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
-8.013e-03 -1.166e-03 -7.379e-06 -7.697e-06  1.152e-03  7.699e-03 


# test normality of original data
shapiro.test(dat_return[sample(length(dat_return), 4999, replace = F)])

	Shapiro-Wilk normality test

data:  dat_return[sample(length(dat_return), 4999, replace = F)]
W = 0.86826, p-value < 2.2e-16


# test normality of generated normal data
shapiro.test(norm_generated[sample(length(norm_generated), 4999, replace = F)])

	Shapiro-Wilk normality test

data:  norm_generated[sample(length(norm_generated), 4999, replace = F)]
W = 0.99967, p-value = 0.6189


############## comparison of distributions
d1 <- density(dat_return)
d2 <- density(norm_generated)

p1 <- hist(dat_return, breaks = "Scott", freq = T)
p2 <- hist(norm_generated, breaks = "Scott", freq = T)

plot(p1, col = rgb(0,0,1,1/4), xlim = c(-0.01, 0.01))
lines(p2, col = rgb(1,0,0,1/4), xlim = c(-0.01, 0.01))

plot(d1, col = rgb(0,0,1,1/4), xlim = c(-0.01, 0.01))
lines(d2, col = rgb(1,0,0,1/4), xlim = c(-0.01, 0.01))


Wir schätzten die Parameter der Normalverteilung anhand der verfügbaren Eröffnungskursinkremente der Clock-Bars und zeichneten sie auf, um die Häufigkeit und Dichte für die ursprüngliche Reihe und die Normalreihe mit denselben Verteilungen zu vergleichen. Wie Sie selbst mit bloßem Auge sehen können, ist die ursprüngliche Reihe von Inkrementen von Stundenbalken weit davon entfernt, normal zu sein.

Übrigens befinden wir uns nicht in einem Tempel Gottes. Es ist nicht notwendig und sogar schädlich zu glauben.

 

Hier ist eine merkwürdige Zeile aus dem obigen Beitrag, die das widerspiegelt, was ich oben geschrieben habe

summary(dat_return)
      Min.    1st Qu.     Median       Mean    3rd Qu.       Max.  

-2,515e-02 -6,800e-04 0,000e+00 -3,400e-076,900e-04 6,849e-02

Soweit ich es verstanden habe, sind 50% aller Inkremente auf der Uhr kleiner als 7 Pips! Und die anständigeren Zuwächse befinden sich in den dicken Schwänzen, d.h. auf der anderen Seite von Gut und Böse.

Wie wird die TS also aussehen? Das ist das Problem, nicht der Bayesianer und andere, andere, andere....

Oder sollte es anders verstanden werden?

 
СанСаныч Фоменко:

Hier ist eine merkwürdige Zeile aus dem obigen Beitrag, die das widerspiegelt, was ich oben geschrieben habe

-2,515e-02 -6,800e-04 0,000e+00 -3,400e-076,900e-04 6,849e-02

Soweit ich das in den Quadranten verstanden habe, sind 50 % aller Inkremente auf dem Stundentag weniger als 7 Pips! Und die anständigeren Zuwächse befinden sich in den dicken Schwänzen, d.h. auf der anderen Seite von Gut und Böse.

Wie wird die TS also aussehen? Das ist das Problem, nicht der Bayesianer und andere, andere, andere....

Oder sollte es anders verstanden werden?

SanSanych, ja!

####### quantiles
hour1_quantiles <- data.frame()
counter <- 1
for (i in seq(from = 0.05, to = 0.95, by = 0.05)){
        
        hour1_quantiles[counter, 1] <- i
        hour1_quantiles[counter, 2] <- quantile(dat_return, probs = i)
        counter <- counter + 1
}

colnames(hour1_quantiles) <- c(
                                        'probability'
                                        , 'value'
                                        )

plot(hour1_quantiles$value, type = 's')

#View

hour1_quantiles
   probability      value
1         0.05 -0.0025375
2         0.10 -0.0016600
3         0.15 -0.0012100
4         0.20 -0.0009000
5         0.25 -0.0006800
6         0.30 -0.0005050
7         0.35 -0.0003600
8         0.40 -0.0002300
9         0.45 -0.0001100
10        0.50  0.0000000
11        0.55  0.0001100
12        0.60  0.0002400
13        0.65  0.0003700
14        0.70  0.0005100
15        0.75  0.0006900
16        0.80  0.0009100
17        0.85  0.0012100
18        0.90  0.0016600
19        0.95  0.0025300
plot(y = hour1_quantiles$value, x = hour1_quantiles$probability, main = 'Quantile values for EURUSD H1 returns')


## what is absolute statistics of hourly returns?

summary(abs(dat_return))
    Min.  1 st Qu.   Median     Mean  3 rd Qu.     Max. 
0.000000 0.000300 0.000690 0.001097 0.001420 0.068490 

Interessant ist auch, dass der durchschnittliche absolute Zuwachs auf stündlichen Bars 11 Pips beträgt! Insgesamt.

 
Alexey Burnakov: die Reihe der stündlichen Balkeninkremente ist alles andere als normal.
So kommen wir langsam zu dem faszinierenden Thema der Transformationen)))), denn wenn es keine Normalverteilung gibt, ist es möglich, eine zu erstellen.
Du wirst es lange machen müssen, denn du brauchst Rückverwandlung und... Und das gefällt Box-Cox gar nicht)))) Es ist nur schade, dass Sie nicht die Möglichkeit haben
Es ist nur schade, dass es keinen großen Einfluss auf das Endergebnis hat, wenn man keine normalen Prädiktoren hat...