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,]
モデルをテストする。
# Получаем нашу модель которая делает то что нужно
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))
他の方法と組み合わせれば、何かできるかもしれない。
どうした?
そういうサインだ。ベースが近い桁の増分であるため相関する
式の例価格 - MA(n) * std(n) * coef、ここでMAとstdは任意の次数の移動平均と標準偏差と平準化係数、大きい - より定常的な系列。この場合、50000である。
私のMOは、なぜか増分よりも安定性を示しています。
coef 20.
これは分数差に似たものであることがわかりますが、瞬時にカウントされます。
誰かが他のオプションを思いつくかもしれない
そういうサインが出たんだ。ベースが近い桁の増分であるため、相関がある
一般的に、これらの曲線は何ですか?
マキシム-ドミトリエフスキー#:
たぶん誰かが他の選択肢を思いつくだろう
さあ、シンボリック回帰の出番だ。
カーブボールはどうしたんだ?
さて、記号的回帰による救済だ。
式は次のようになる。
SRを使わないもっと簡単な例をお見せしましょう。
SRを使わない、もっと簡単な例をお見せしましょう。
SRの場合、コーディングやプランニングに時間がかかるので、シンプルに、速く、わかりやすくするために...。
リアルタイムで計算式を作成する代わりに、「計算式の結果」である曲線を作成し、それをモデルのターゲットとして使用する。
価格とモデル出力の相関を最大化するフィットネス関数を作りますが、モデル出力には制限があります。
つまり、価格と相関するはずの系列が、統計的な値の範囲内で「クランプ」されるのです。ディッキー・フラーなどに従った真の統計性が必要な場合は、フィットネス関数を必要なものに変更するだけです。
データを作成し、遺伝学を用いてモデルを訓練する。
モデルをテストする。
縦線は、訓練、テスト、検証の分離である。
図を見てわかるように、モデルは価格を入力として学習し、出力は価格と相関のある統計系列です。
よりわかりやすくするために、モデル出力の累積和を作ることができます。
このように ))))そして、あなたは何も発明する必要はありません。すべてが自動的に行われます。
SRの場合、コードとプランニングに多くの時間が必要なので、シンプルさ、スピード、わかりやすさを重視して、よりシンプルにした。
リアルタイムで計算式を作成する代わりに、"計算式の結果"、つまり曲線を作成し、それをモデルのターゲットとして使用する。
価格とモデル出力の相関を最大化するフィットネス関数を作りますが、モデル出力には制限があります。
つまり、価格と相関するはずの系列が、統計値の範囲内で「クランプ」されてしまうのです。ディッキー・フラーなどに従った真の統計性が必要な場合は、フィットネス関数を必要なものに変更するだけでよい。
データを作成し、遺伝学を用いてモデルを訓練する
モデルを検証する
縦線はtrain、test、validationの分離。
図を見てわかるように、モデルは価格を入力として学習し、出力は価格と相関のある統計系列です。
より明確にするために、モデルの出力から累積和を作成することができます。
を作ることができる。)何も考えなくても、すべて機械でできるんだ
面白いね、後で考えてみるよ。今日はブラッディマリーだから、考えるのが大変なんだ。
pythonだと何行かかるんだろう...。
おそらくμlで数千行)))))))))))))))))))))))。