Translate

2017年2月3日金曜日

[FX] 最小二乗法でトレンドを把握する

こんばんは。
今回も前回に引き続きFX関連です。

数理モデル

現在時刻を$t=0$として、株価が
$$f_{\epsilon}(t)=a_0+a_1t+a_2t^2+\epsilon$$
と表されると仮定します。$\epsilon$はノイズです。

ノイズ項を無視すれば、$a_1$と$a_2$はそれぞれ(定数倍を除き)$f'(0)$と$f''(0)$に対応していることがわかります。つまり$a_1$は現在のトレンド、$a_2$はトレンドの変化を表しています。


重み付き最小二乗法

最小二乗法とは一般的に
$$y_i=f(t_i)+\epsilon_i$$
となるときに
$$\sum_i {\epsilon_i}^2$$
で表される自乗誤差が最小にするようなパラメータを求めます。今回は時系列データでなるべく最新のデータが重要視されるようにしたいので、この最小二乗法をすこしいじり、
$$\delta=\sum_{i=-\infty}^0 c_i{\epsilon_i}^2$$
で表される重み付き自乗誤差を代わりに使います。$c_i$は$c_i<c_{i+1}$が成り立つ適当な配列を用意します。

以下表記の簡略化のため、総和$\sum_{i=-\infty}^0x_i$を単に$x_i$と表記することにします。

$$\delta_i=c_i(y_i-(a_0+a_1t_i+a_2{t_i}^2))^2$$
となるため、
$$\frac{\partial \delta_i}{\partial a_0}=0 \iff c_iy_i=c_i(a_0+a_1t_i+a_2{t_i}^2)$$
$$\frac{\partial \delta_i}{\partial a_1}=0 \iff c_iy_i=c_i(a_0t_i+a_1{t_i}^2+a_2{t_i}^3)$$
$$\frac{\partial \delta_i}{\partial a_2}=0 \iff c_iy_i=c_i(a_0{t_i}^2+a_1{t_i}^3+a_2{t_i}^4)$$
となります。総和の記号が省略されているので$c_i$で約分することはできないことに注意してください。

これを行列表示すると
$$c_i\begin{pmatrix}y_i\\t_iy_i\\{t_i}^2y_i\end{pmatrix}=c_i\begin{pmatrix}1_i&t_i&{t_i}^2\\t_i&{t_i}^2&{t_i}^3\\{t_i}^2&{t_i}^3&{t_i}^4\end{pmatrix}\begin{pmatrix}a_0\\a_1\\a_2\end{pmatrix}$$

よって逆行列をかければパラメータが求まります。

ぼやき

機械学習でトレーディングするとき、データとしてナマの株価を与えるのではなく、代わりに複数の$\beta$にたいする$a_1$、$a_2$を与えて学習させたほうがうまくいきそう。。。

0 件のコメント:

コメントを投稿