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?
 
mytarmailS #:
O que está acontecendo?
Eu ainda não fiz isso. Tenho uma lógica complicada, preciso descobrir onde colocá-la.
 

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

 
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.

 
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.

 
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))))))))))))))))))))))))))))