シミュレーションの方法を再考

先週は、気温が上がってきているにも係わらず、
ついつい、安定しているサーバを過信して、
熱暴走をさせてしまった。
今週末はその対策として、日頃は使わないWindows7マシンを、
シミュレーションのDBサーバにして、処理を行わせることにした。
元々環境は作っていたが、久しぶりに動かすと、
いろいろと不具合が出てきて対応に追われてしまった。
メインサーバから、シミュレーションに必要なデータを転送して、
その後メインサーバからシミュレーションに必要なSQLを、
Win7サーバに送信して処理をさせている。
ほとんどの作業はシングルタスクなので、メインのQuadマシンと
そんなに処理時間は変わらない予定。
基本的な指標を絞り込んだので、水曜日くらいに終われればいいと思ってます。

シミュレーション指標の軽量化

今までに何度も書いているが、
うちのシステムは、かなりの指標を毎週計算している。
1週間分のシミュレーションに1日半。
その結果を分析するのに、1週間。
なので、分析は月に1回回せればよい方。
本来は分析までをその週に終わらせられれば、
新鮮な指標で翌週うごかせる。
そういいながら、この2,3年は、なにもできなかった。
理由は過去に必要と考えた指標の組み合わせから、
指標を捨てることができなかったから。
今回、きっぱりと3分の1にした。
まだまだ、落とせるかもしれないけど、
この状況で一度稼働させてみたい。
先ほど作業が終わったので、明日の朝には、
毎週の計算が終わっているはず。
分析は今までの蓄積データが膨大なので、
明日時間をかけて整理してから、
分析処理をやってみたい。
一日で終わってくれればいいですけどね。

GWかけて分かったこと

このGW期間は、様々なシステムの修正を行いました。
中でもこのBlogに書いているFX取引システムの取引指標の選定については、
かなりの時間を費やしました。
家族との外出時にもNotePCを持ち出し、仮想PC上の開発環境を使いながら、
様々な検証を行いました。
その結果分かったことは
「過去の履歴から見つけ出した指標を臨機応変に運用しても利益にはならない」
と、いうことでした。
今回は1ヶ月、3ヶ月の過去の取引履歴から用意して9000以上の指標を当てはめて
最適な指標を見つけ出し、その後の1週間の取引を決める。
と、いうことを1年間分シミュレートしました。
その結果、初めから一定のルールで取引したときよりも悪い結果がでてしまいました。
かなり寂しい結果ですが、シストレとはこういうものだということが
認識できたことは有意義であったと思います。
その後、過去一年間の履歴から見つけ出した指標を、今年の1月から4月の履歴で
シミュレーションしたところ、概ね想定していた利益がでることが分かりました。
明日からはこの指標を用いてシステムを稼働していきます。
今週も為替相場は乱降下が予想されますが、相場の良いときにだけ取引していたのでは、
シストレの検証にはならないので、明日から稼働させたいと思います。
うまくいければ本番運用に入りたいです。

過去履歴を利用した将来履歴の集計

変なタイトルです。
ただシストレを自作されている方には、
ごく普通のことだと思います。
過去の一定時期において、それ以前のデータを利用して、
それ以降の取引データで検証を行います。
今までも行ってきた手法ではありますが、
従来は9000ある指標のうちから、選りすぐりの108指標を使って、
過去にさかのぼってシミュレーションをしてきました。
1年間を通して、なんとか黒字は確保できているものの、
予測している利益率にはほど遠い状況にあります。
過去のカーブフィッティングした指標を、将来に適用しても、
うまく利益が上がらないということの証明のようなものです。
おそらく指標数を108から9000に増やしても同じような状況になるかもしれませんが、
このシミュレーションを行うために、MySQLのチューニング、プログラムの見直しを行って、
数十倍の処理速度となりました。
これで新しいマシンを買うことなく、テストすることができます。
明日の朝までに一段階。
明日の夜には最終の状況がわかると思います。
今回のデータは全て去年の1月から12月のデータで作業を行っているので、
ここで一定の結果がだせれば、この作業を4月分まで行って、実稼働に入りたいと思います。
1年程度のブランクがあり、かなり怖い感じもしますが、
なんとかがんばっていきたいと思います。

新しい指標の作成

以前から書いているように、去年から逆バリ系のシステムを構築している。
完全に逆バリオンリーで貫き、トレンド時はフィルタでなんとか対応を
とろうと思っていた。
ただ、現実的には大きなトレンドがおこると、フィルタでは対応できず、
大きな損失がでてしまう。
今後のことを考えると、順バリ系のシステムと併用するか、
順バリ指標のシグナルと、逆バリシステムに取り入れるか。
どちらかの対策を取らないと、維持していくことがかなり難しいと
考えるようになった。
頭では以前から考えているが、システムを構築することを考えると、
躊躇してしまい、なかなか実現することはできなかった。
ただ、先週の損失は、今までのシステムは不十分であることを、
自分で証明したような取引内容であったことから、
奮起して週末に作成することにした。
今回のシステムは、前にも書いたようにかなり汎用的にプログラムを書いた。
指標の追加だけでなく、他の商品、先物、現物、CFD等も対応できるようにしていた。
結果、数時間で順バリ系システムができた。
実際のコーディングは本当に100ステップもないくらいだ。
ただ、パラメータがどのような種類がいるのか、試行するのに少し時間がかかったので、
結局、先ほどから、シミュレーションを開始した。
指標の数は、前の指標に比べ相当減り、375個で済んだ。
これは、新しく作った検証システムがあるので、
シミュレーション結果から、最適な指標を作成できるようになったからである。
今週は仕事がばたばたしそうであるが、うまくいけば、
来週からデモ口座での取引に使えるようになればと思う。

本番処理うまく動くかな

はじめに・・
今週はかなりばたばたしておりまして、Blogを更新することができませんでした。
そんなわけで今からまとめて投稿いたします。
ただ、テーマ毎に記事を分けたいので、分割して投稿します。

まずは、タイトルのとおり、今週から本番処理を再開しました。
4月末に逆バリシステムの限界から、大きな流れに流され、想定以上の損失が
出てしまったことから、本番取引を中止しました。
その後、システム運用の方法を含め、いろいろと試行錯誤し、
結果的に指標を作る過程を見直し、それに併せてシステムの更新を行いました。
そのシステムは先週に、デモ口座で稼働させ、想定通りの成績を出すことができました。
いよいよ今週はその新しいシステムで本番取引をすることになります。
ただ・・・
このシステムは計算量が膨大で、クアッドコア1台で処理をして、
二日もかかってしまいました。
(自動的に土曜日の朝7時から処理が開始されます。)
月曜日からの運用の予定が、指標の計算が終了したのが、月曜の夜、
計算結果の検討などで火曜の夜からの運用とすることにしました。
月曜日の夜は必死に計算結果を検討し、一つの指標をピックアップしました。
稼働させる準備をし、火曜日は仕事をさっさと終わらせて、午後7時に帰宅。
いよいよ本番処理を開始・・・のはずが・・・

取引システムのパラメータ数

長いと思っていたGWもいよいよ終わりに向かっている。
このGW中は実取引とともに、大規模なシミュレーションをしていた。
そのシミュレーションもあと2時間程度で終了する。
今回の大量のシミュレーション結果の分析をこれからしていくが、
問題になってくるのは、取引シミュレーションのパラメータをどうするか。
元になるストラテジーは比較的シンプルだが、トリガーになる指標と、
フィルタになる指標がある。
トリガーの指標はあまりいじると、カーブフィッテングすることになるので、
あまり増やしたくないが、フィルタになる部分を増やして、資金効率を上げたいと思っている。
ただ、このフィルタもあまりかけすぎると、カーブフィッテングすることになるので、
どこまでフィルタで絞り込むのかが問題になる。
現在は週毎の動的な指標により取引しているが、
最近の日々変わる動きに対しては、なんらかの方法で対処しないと、
どうしても、大きなロスが出てしまう。
悩みどころだ・・・。
今まで他のWEBや雑誌、書籍は見ずに構築してきているが、
そろそろ外部の情報も入手しながら、やっていこうかな・・。

シストレって結構地味・・

この3連休はシストレ開発に費やせる時間はそんなに多くは無かった。
連休前に
・システムの修正、補正
・新たなロジックの開発
・新たな指標のシミュレーションの開始
・今ある取引LOGの分析
と、どれをするか考えた。
結局最後の「分析」をすることにした。
それも多くの指標についての統計的な検討ではなく、
OpenOfficeのCalcや、それこそ電卓を利用しながら、
先日から運用している2つのものに限定して掘り下げた分析をした。
今までは成績の悪いものは捨てて、成績の良いものを選別していったが、
地道な分析作業は本当に必要なものであることを再認識した。
縦横斜め立体的に分析をした。
結果的に、取引すべきシグナルに原始的なフィルタをかけることで、
リスクの軽減と利益を増加させれることがわかった。
これも一つのパラメータとして、システムに組み込んだ。
結構なステップを修正したので、これから再度シミュレーションを
していきたい。
今日はあまり大きな動きはないようだが、できれば、明日の夕方くらいから、
再度、本番の処理ができればと思う。

激動の一ヶ月のシミュレーション開始

先週は大きな痛手を受けてしまった。
その結果、ある程度振り切れた部分があったのも事実。
金曜日は朝から稼働させ、一定の成果を得た。
今週も月曜日から稼働させたいと思う。
現在利用している指標たちは、7/21から9/20のデータをもとにして
シミュレーションをした結果から選抜したものである。
リーマンショックは加味しているが、その後の激動の一ヶ月が
入っていないことから、今週末はこのシミュレーションを開始することを
考えていた。
現在、有効と考えている指標は、約1800あることから一定の時間がかかる。
いつもはこのブログでも書いた、AcerPower1000(改)を利用しているが、
事情により使えないことになってしまった。
ただ、ちょうどタイミング良く、我が家に最新のiMacがやってきた。
我が家最速のCore2Duo搭載マシンである。
こちらを使ってシミュレーションをすることにする。
環境などをつくるのに少し時間がかかったのと、シミュレーションそのものの内容で
ないので、別の記事として書くことにする。

ディトレードとトレンド判定

この週末は、先週の反省から、確実な仕掛けができるように、
現在のシステムに最適なフィルタを試していた。
システムを組む前に、OpenOfficeのBaseとCalcをつかって、
蓄積されたデータから、良い指標となるものがないか検討をした。
トレンドの判定には、MACDをはじめいろいろな手法があり、
どれも有効そうな感じであるが、実際に自分のシステムのシグナルと
あわせてみると、どうしても、トレンドの判定が遅延して、
仕掛けが有効な場面でフィルタにかかったり、逆に、フィルタにかかるのが
遅くてすでに数回の仕掛けをしており、一番フィルタにかかってほしいところで、
かからなかったりして、良いものが見つからない。
分足などをつかって取引をする場合は、当然にトレンドの判定をフィルタにしていると
思うが、うちのような短期のトレードでは、あまり有効には働かないようだ。
今、考えているのは、フィルタをあまりかけずに、
逆に、逆バリには順バリ、順バリには逆バリの仕掛けをして、
リスクを軽減しようかと思っている。
先週は一瞬で証拠金が9割以上消失するという経験があり、
守りに入った思考になっていたが、いろいろと検証すると、
私には攻めの仕掛けを考える方があっているようだ。
現在、CPUを換装したAcerPower1000が、がんばってシミュレーションをしてくれている。
この結果が水曜日くらいにでると思うので、このあたりの指標を検討し、
今週、木曜、金曜くらいに再度参戦できればと思う。