Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2642

 
Maxim Dmitrievsky #:
Combinado com outros métodos, ele pode fazer alguma coisa.
Como é isso?
[Excluído]  
mytarmailS #:
O que está acontecendo?
Eu ainda não fiz isso. Tenho uma lógica complicada, preciso descobrir onde colocá-la.
[Excluído]  

Esse é o tipo de sinal que recebi. Correlacionar porque a base são incrementos de ordens de magnitude próximas


Fórmula de exemplo: preço - MA(n) * std(n) * coef, onde MA e std - média móvel e desvio padrão de ordem arbitrária e coeficiente de nivelamento, quanto maior - mais estacionária é a série. Nesse caso, é 50000.

Por alguma razão, meu MO mostra estabilidade melhor do que apenas em incrementos

com coef 20.

Acontece que é algo semelhante à diferença fracionária, mas conta instantaneamente.

Talvez alguém possa pensar em outras opções

 
Maxim Dmitrievsky #:

Esse é o tipo de sinal que recebi. Correlacionado, porque a base é composta por incrementos de ordens de magnitude próximas

O que são essas curvas em geral?

Maxim Dmitrievsky #:

talvez alguém apareça com outras opções

Aqui vamos nós, regressão simbólica para o resgate

[Excluído]  
mytarmailS #:

Afinal, para que servem as bolas curvas?

Bem, a regressão simbólica vem em socorro.

A fórmula está escrita.
Sugira uma variante de como aproximar as cotações da série estacionária usando cf
 
Maxim Dmitrievsky #:
A fórmula está escrita
Sugira uma variante de como aproximar as cotações da série estacionária por meio de cf

Vou apresentar algo, vou lhe mostrar um exemplo mais simples sem SR.

[Excluído]  
mytarmailS #:

Vou apenas montar algo e mostrar a você um exemplo mais simples sem SR.

Não é possível fazer isso com apenas uma variante, você precisa construir atributos e verificar e treinar com eles.

No entanto, os sinais não são estúpidos, mas, pelo menos, significativos, caso contrário, você pode continuar indefinidamente.
 
Maxim Dmitrievsky #:

Com o SR, leva mais tempo para codificar e planejar, portanto, para simplificar, agilizar e esclarecer, simplifiquei...

Em vez de criar uma fórmula em tempo real, crio um "resultado da fórmula" - uma curva - e a utilizo como meta para o modelo.


Crio uma função de adequação que maximiza a correlação entre o preço e o resultado do modelo, mas o resultado do modelo tem uma limitação: ele só pode estar entre -1 e 1.

Ou seja, obtemos uma série que deve se correlacionar com o preço, mas "fixada" dentro dos limites dos valores estacionários. Se você precisar de uma verdadeira estacionariedade de acordo com Dickie Fuller e assim por diante, basta alterar a função de adequação para o que você precisa.



crie dados e treine o modelo com genética

par(mar=c(2,2,2,2))
#  для простоты Создаю цену 
P <- cumsum(rnorm(300))
plot(P,t="l")

hankel <- function(x,n) embed(x, n)[ ,n:1]
#  Создаю данные для обучения Х ,скользящее окно виде матрицы
X <- t(apply(hankel(P,11),1,function(x) cumsum(diff(x))))
P <- tail(P,nrow(X))

#  Делаю разметку индексов для трейн и тест и валидации
tr <- 1:100
ts <- 1:200
al <- 1:nrow(X)

library(randomForest)
#  Создаю фитнес сункцию , подбираем генетикой для фореста такой таргет чтобы 
#  на выходе был максимально коррелированый с ценой ряд
fit <- function(Y){
set.seed(123)
rf <- predict(  randomForest(Y~.,X[tr,],ntree=100) ,   X[ts,])
return( cor(rf, P[ts]) )}

library(GA)
GA <- ga(type = "real-valued", 
         fitness =  fit,
         lower = rep(-1,100), 
         upper = rep(1,100), 
         popSize = 100,
         maxiter = 100,
         run = 40)
plot(GA)
GA_Y <- tail(GA@solution,1)[1,]

testar o modelo.

#  Получаем нашу модель которая делает то что нужно
set.seed(123)
rf <- predict(  randomForest(GA_Y~.,X[tr,],ntree=100) ,   X[al,])

layout(1:2)
plot(P,t="l",main="original price") ; abline(v=c(100,200),lty=2,col=c(3,4))
plot(rf,t="l",main="model out") ; abline(v=c(100,200),lty=2,col=c(3,4))
abline(h=0,col=3,lty=3)

layout(1:2)
plot(P,t="l",main="original price") ; abline(v=c(100,200),lty=2,col=c(3,4))
plot(cumsum(rf),t="l",main="model out cumsum") ; abline(v=c(100,200),lty=2,col=c(3,4))

As linhas verticais são a separação de treinamento, teste e validação.


Como você pode ver na figura, o modelo aprendeu a usar o preço como entrada, e a saída é uma série estatística que se correlaciona com o preço.

Para maior clareza, podemos fazer uma soma cumulativa do resultado do modelo.


como este )))) E você não precisa inventar nada, tudo pode ser feito automaticamente.

[Excluído]  
mytarmailS #:

Com o SR, você precisa de mais tempo para o código e o planejamento, portanto, para simplificar, agilizar e esclarecer, eu o simplifiquei.

Em vez de criar uma fórmula em tempo real, crio um "resultado da fórmula", uma curva, e a utilizo como alvo para o modelo.


Criei uma função de adequação que maximiza a correlação entre o preço e o resultado do modelo, mas o resultado do modelo tem uma limitação: só pode estar entre -1 e 1.

Ou seja, obtemos uma série que deve se correlacionar com o preço, mas "fixada" dentro dos limites dos valores estacionários. Se precisarmos da verdadeira estacionariedade de acordo com Dickie Fuller e assim por diante, basta alterar a função de adequação para o que precisamos.



criar dados e treinar o modelo com genética

validar o modelo

As linhas verticais são a separação de treinamento, teste e validação.


Como você pode ver na figura, o modelo aprendeu a usar o preço como entrada, e a saída é uma série de estatísticas que se correlaciona com o preço

Para maior clareza, podemos fazer uma soma cumulativa a partir do resultado do modelo


como este )))) E você não precisa pensar em nada, tudo pode ser feito na máquina

Interessante, vou tentar pensar nisso mais tarde, hoje está um dia de festa, é difícil pensar.
 
Maxim Dmitrievsky #:
Interessante, vou tentar pensar nisso mais tarde, mas hoje estamos tomando um bloody mary, é difícil pensar.

Fico imaginando quantas linhas seriam necessárias em python.....

provavelmente milhares em µl))))))))))))))))))))))))))))