フラルのFXシステムトレード研究室

FXで機械学習トレードを実行中

トレード理論SVM の記事一覧

SVMで明日の相場を予測する4

2013.03.27 (Wed)
SVMで明日の相場を予測する4


さて、結果です。

③リアル投入後の収益カーブ
130327a.png


なんだかなあ...って感じです。
②のカーブのイメージからすると、
まだまだ長期で考えないといけないようにも見えますが、
ドローダウンからして、あまり現実的なモデルではなさそうです。
運用するには一工夫必要です。


■■■ これまでのまとめ ■■■

この方法、まだまだ研究が足りないようです。

1年以上稼動させてパッとしないということは、
「使えない」と判断すべきでしょう。
しかし、不肖の息子のごとくSVMモデルは可愛かったのです。
素直に覚えてくれるもので...。
(システムなのに裁量っぽいぞ!いつものことだが...。)

SVMの名誉のために断言しておきますが、
SVMは優秀な学習システムです。
要は使い方です。
まあ、つまりは使い方が悪いのでしょう。


今後の研究の余地というか、検討事項というか...
①入力の前処理をどうすればよいのか?
②そもそも市場間分析をこんなやり方でやって分析できるのか?

また、今回は多重共線性(マルチコリニアリティ)については
無視してみました。SVMの超平面展開で吸収されるものと
仮定したからです。でも実はよく考えないといけないかも知れません。
(まだ考えてない。というより、よくわからない)


「おいおい、フラルはなんだかわからないものを実践投入するのか!」
と聞こえてきそうですが、これは性格です。
勢いで突っ込んでしまいました。よくあることです...。(^^;


とりあえず完。(つづくかも。)
スポンサーサイト

SVMで明日の相場を予測する3

2013.03.05 (Tue)
SVMは、ほんとによく学習してくれます。
学習データに用いたデータに関しては、サポートベクター数を抑えても、
とても良い成績を出してくれました。
(トレードの成績のことではありません。学習能力です。)

サポートベクター数を抑えたのは「汎化性」向上のためです。
ソフトマージンのパラメータ調整もしましたが、
バランスがこれでよいのかは、イマイチ手探りでした。

さて、今回の計画では、こんな仮説を立ててみました。

仮説:
サポートベクター数を抑えることは
いわゆるカーブフィッティング(過学習)対策として、
うまく使えるのではないか?

以下、学習結果です。


①こちらが、学習に使ったデータの収益カーブ
130305c.png


②フォワードテストの収益カーブ
130305d.png


横軸は日数、縦軸は金額(万円)です。


①と②のカーブが似たような成績なら万々歳だったのですが、
どうもそうではないようです。
まあ、バックテストとフォワードテストなので、
あたりまえと言えば、そうなのですが。

さながら昔のチャートの外形をを丸暗記しているトレーダが
相場をやっているようなものでしょうか?

とりあえずはフォワードテストでも右肩上がりっぽいのを観測したので、
なにかの利益エキスがあるかもしれないと勝手に思い込み...。


そして、どうなるかの実験がてらゲンナマつっこんでみることにしました。

続く...


SVMで明日の相場を予測する2

2013.02.14 (Thu)

各市場の状況をインプットし、明日の GBP/JPY が
上がる(出力+1)のか、下がる(出力-1)のかをを出力しようという計画です。

問題は、何を入力データにするのかということ。
当然ですが、市場の数値をそのまま入れてもNGです。
なので、

入力データ = 日経平均[前日] - 日経平均[5日前]

とか

入力データ = ln(日経平均[前日] / 日経平均[5日前])

のようにして、前処理をしてあげます。
(この場合は、5日ベースのトレンド検出)


市場ごとに同じ処理を入れたり、日数を変更したり、
はたまたオシレータ系のインジケータも入れてみたりと
いろいろ楽しめます。(オイオイ...勝たないと意味ないのでは?)

FTSEとかDJIAとかも突っ込んで...
ついでに VIX なんかも...。

つまりは
「市場間分析をSVMにやらせちゃおう」
ということです。

これが超平面に写像されて
フラルの知らないところで、
勝手にレジームスイッチ的なものが出来上がって
「ウハウハ!」なんて期待しながらコーディングしていました。


過学習を回避するためにサポートベクター数を少なくしたりして、
調整をしてみました。


続く...


SVMで明日の相場を予測する1

2013.02.06 (Wed)
フラルのシステムは現在20個ほど(増殖予定)のモデルから構成されています。
それぞれのモデルには、さまざまな理論(理屈?He理屈?)が埋め込まれており、
まったく違った個性を持っています。

これらモデルの中にはサポートベクターマシン(以下SVM)を用いたものがあります。
このSVMがなかなかの優れものなのです。(トレードに使えるかは別の話ですが。後述)

以前ニューロンネットワークを使ってテストしたりしましたが、
どうにも学習結果の収束ができないでいました。

うろ覚えなので詳しいことは忘れましたが、
当時バックプロパゲーションで反復学習させていました。
入力信号が少ないときはまだ良いのですが、
入力信号を増やしたりするとたちまち分けがわからん状態に...。

そもそも、ニューロン数をいくつにすれば良いのか、
ニューロン数と学習係数の関係をどうすればいいのか。

...

これに対してSVMは、サポートベクタの数を規定するアルゴリズムを
どうにかでき(どうにかする必要もあるのだけれど)、
無理やり収束させたりもできるので、
このあたりの問題がかなり改善できます。
(SVMはニューロンと違い、
境界の算出なので出力の意味が違うのですけれど。)

以下の図がテストプログラムの様子です。


130206a_SVM1.png


教師信号をランダムで発生させて、画面中央の赤い点とその周りの青い点の境界線を
導き出しています。
水色とピンクの点は、XYデータをスキャン的に入力して、
出力の分布を表示させました。
食い込んだ点も大雑把に境界付けしているのがわかると思います。
この例はXとYの入力の2つだけですが、もちろん、多数の入力についても境界分けできます。


ほんとに、よく学習してくれるので、これをトレードに使おうというわけです。

続く...

 | HOME |