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.
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.
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.
Combinado com outros métodos, ele pode fazer alguma coisa.
O que está acontecendo?
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
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
Afinal, para que servem as bolas curvas?
Bem, a regressão simbólica vem em socorro.
A fórmula está escrita
Vou apresentar algo, vou lhe mostrar um exemplo mais simples sem SR.
Vou apenas montar algo e mostrar a você um exemplo mais simples sem SR.
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
testar 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 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.
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, mas hoje estamos tomando um bloody mary, é difícil pensar.
Fico imaginando quantas linhas seriam necessárias em python.....
provavelmente milhares em µl))))))))))))))))))))))))))))