×[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
・DLLによるDBアクセス
多変量解析を行う場合、DBの有無によって、その開発効率には大きな差があると思われる。
以前からのタスクであったDLLを介したDBアクセスの環境構築を行った。
MT4からのDBアクセスの環境構築について、insertの実装は簡単だが、selectの実装はかなり難しい。
いずれにしても、ライブラリ(DLL)を利用するのが一般的な導入になると思われる。
これにあたり、Forex-TSDにアップロードされていたDBアクセス用ライブラリ(DLL)を活用することにした。
しかし、ポインタや値の受け渡しについて、理解することが難しく作業は難航した。
そもそもダウンロードしたDLLがまともに動作せず、修正せざるを得ない状況にあったり(※)、
MT4側のDLL利用コーディングをあまり書き慣れていなかったりと、かなりの混乱があった。
気づけば朝になっており、上記がすべて解決出来たのは今朝の7時だった。
一言で言えば、とにかく大変だった。
※
プロジェクトファイルごとアップロードされていたが、そもそもTSDのログを見る限り完成していない様子だった。
私のPC特有の問題かもしれない。
・テスト
今回は先日収集した市場データをDBアクセスにより取得し、それを解析(大袈裟)した上で、売買判断を行うEAを作成した。
上記のように、まだまだ発展途上だが未来はある。
多変量と銘打ったが、今回は2変量を利用している。
エクセルでの検証も良いが、バックテスト、最適化機能があるMT4で検証を行うというのは大いに意味があるだろう。
今、収集しているデータについても、効果がありそうな変量であれば検証していくのも面白い。
めちゃくちゃ疲れたが、今後の多変量解析における開発コストは激減しただろう。
次は自己相関だが、こちらは難しすぎて停滞している。
[2回]
PR
微増。
クローリングは順調。
さらに、過去データ一括取得も順次実行中。
これで、バックテストもOK。
今日明日にもつくるぞ・・・。
・
そういえばアルパリジャパンの口座開設しました。
スプレッドは良い感じです。まだ、売買はしていません。ここは実験系のEAを使うかなー?と考えています。
平均スリッページなどを計測してみる必要はあるでしょう。
いい感じといえば、最近フォレックス・ドットコムもスプレッド縮小を行いました。非常に良い業者が増えたのではないかと思います。
[1回]
微負け。
最近、Javaで単項目のWebクローリングシステムを作った。
これは個人的に以前から作りたかったもので、
URLとタグをDBに登録することで、指定URLサイトのHTMLからテキストを抽出し、DB登録していく。
タグも正規表現対応済み。
DBテーブルは、テーブルレイアウトのみExcelで設計し、create後、hibernateフレームワークを用いて、マッピングクラス、マッピングxmlをリバースエンジニアリングで作成する。
いちいちSQLを記述する必要もないので楽。
設計と実装が詰め切れていないので、1テーブル1クラスになっているのがヌルイところ。つーか知識と技術が無いとも言う。
仕事の勉強も兼ねて使ったが予想以上に良い。。まだまだ、使っていない機能が多い上、さらに作業が楽になりそうなので暇があれば調べたい。
上記のWebクローリングは、重回帰分析、多変量解析、マルチファクターモデルを用いた分析を行う際に有用だ。
Webクローリングを行う上で、JavaなどよりExcel、Access、VBAに明るいのであれば、下記サイトが鉄板。
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsWinHTTP1.html
近日中に、MT4EAを用いて、DB参照を行い売買判断を行うEAを作成するつもり。
(と宣言しておけばやるだろう・・・たぶん)
過去データも探して、インポートしないとな。
2つくらいやりたいネタがある。。一つは多変量解析系で、一つはソーシャルフィルタリングとでも呼べるかな?
・
多変量解析をやるにしても、自己相関をやるにしても、それだけじゃ足りないような気がしてる。
特に今年の値動きは、解析方法のレベルでは対応出来ないことが多かったように思える。
つまり、多変量解析を使うのか、自己相関を使うのか以前の段階で、どういった戦略を使うべきなのか否なのか。そおもそも多変量解析も自己相関も適用できない相場なのか。
そういった判断を行える仕組みも必要かもしれない。
[1回]
今週も微負け。
まったく何も改良しておりません。。
少しずつ前進あるのみです。
[0回]
8月の悪夢再び。
VAR超過してます。。。
VAR監視とVAR以降、低ロット化機能と、PIPS換算復帰モードを実装する必要がありそうです。
回帰系スキャルが活動していないときに、トレンドフォローが振るわないので連携すると面白いかもと考えてたり。。これは要検証だけど。
最近、職場が変わって、スキルを求められるようになったので、それに対する勉強を家で進めてます・・・。
丁度、WEBDBマガジンとソフトウェアテストの総集編が出たので買いました。
かなり、お買い得なのでおすすめですよ。
[1回]
きちぃ。
このスパンで突き抜けない相場の動きはトレンドフォローにとって辛い。
[0回]
今週は負け。
EURUSDが食らってしまった。まぁさすがに行き過ぎてたのかな。
EURGBPは絶好調。
絶好調というかあんまり負けると一気に収益力がダウンするからこれくらいがいいな。
[2回]
今週は大きく勝った。
EURUSDのトレンドに乗り切ったので。
EURGBPのスキャルもまぁまぁ。
[1回]
微負け。
回帰系でEURGBPが復活出来たので今後が楽しみ。
[0回]
テスト期間:2006/10/01 - 2011/10/16
回帰系
特徴:
観点の異なる独自の撤退ロジックを実装することで、停滞期間でも大幅なDDは起こさせない。
また停滞期間においても過度のエントリーは控える。
適応移動平均線を用いて、安全度の高いポイントで逆張りを行う。
ボラティリティに適応的であることを改良点として挙げられる。
[0回]
テスト期間:2006/10/01 - 2011/10/16
回帰系
特徴:
観点の異なる独自の撤退ロジックを実装することで、停滞期間でも大幅なDDは起こさせない。
また停滞期間においても過度のエントリーは控える。
適応移動平均線を用いて、安全度の高いポイントで逆張りを行う。
以下エントリー例
[0回]
テスト期間:2006/10/01 - 2011/10/16
トレンドフォロー
客観的なトレンド計測を行い、かつボラティリティを見極めてエントリーを行う。
相場はランダムであるという思想と相場は継続するという思想を持ち合わせることで利益最大化を狙う。
以下エントリー例
[1回]
今週は大勝でした。
EURUSDのトレンドフォローは8月のDDを復帰し、通算3126PIPSとなりました。
今後もこいつが柱にはなりますが、回帰系EAについても勝てる時期を捉えることが出来るようになれば鬼に金棒です。
トレンドフォローについては運用面もVARでストップし、監視する仕組みを自動化すれば大体OKかなと思います。
[1回]
今週は微負けでした。
少し前から移行していますが、
当分はトレンドフォロー9割掛けで、回帰は1割というか最低単位で回そうかと思います。
今は、次期システムのために、勉強あるのみです。
本を読んで、その計算式などをエクセル上に表現して、本の図解と一致させてみたり、章末問題に挑戦しつつ著者に質問してみたり割と勉学に励んでいます。
その結果、章末問題の間違いが発覚したりw
エクセル上に落とし込んだ計算式を今度はプログラムに落としこむ作業が待っていますが、当分先のことでしょう。
そのプログラムの実装もどこのプラットフォームに行うかは未定です。
しかし、私は文系というか学が無いので、本当に理解するのは難しいですね。
理解についても、アウトプットしていかないと深まらないものですが、こういった投資系の勉強はアウトプットにも場所を考えないといけないですし・・・。
ただ、理解出来たとか答えがあっていた時のカタルシスは半端じゃないです。
結構楽しんでます。
そんなこんなでもう10月です。日々精進。
[1回]
・
今週は負け週。
来週から損益の出方がマイルドになる予定。。
・
ATC2011
新たな情報が公開されましたね。
といっても、ATC2010の情報のようです・・・。
http://championship.mql5.com/2011/en/news/86
参加EA別の特性を分析されたようです。
ダントツでEURUSDが多いですね。テクニカルが効きやすいのでしょうか。
時間枠は1Hがダントツ。
私もEURUSDで1Hですね。
・
2011の参加EAは、397個みたいですね。
http://championship.mql5.com/2011/en
[0回]
・VAR
世の中的にはVAR(バリュー・アット・リスク)と呼ばれる指標を用いて、
突発的な損失を予想し、それに対して準備金を備えているそうです。
例えば、
三井住友フィナンシャルグループ
や、
東京三菱UFJ銀行(PDF注意)
などの金融機関にとっても一般的なリスク指標として公開しています。
他の大手銀行も同様です。
今だと、証券も結構そんな感じです。
VARは、統計的アプローチから非常に根拠の示しやすい指標として重宝します。
だからこそ、多くの企業で採用されている実情があります。
・基本的な考え方
基本は、「過去は繰り返す」という態度を取る立場です。
統計的に起こりうる最大損失を過去のデータから予測しようという試みです。
損益というものが個々に独立し、同一の確率分布に従うという前提をとります。
その前提のもと、その損益分布の99%地点の損失額をVARと定義しています。
今回はバックテストデータによりVARを求めてみます。
利用するテストデータは、こちらのテスト結果から使います。
一番信頼しているEAです。
テストデータによる試算および
シミュレーションより求めるモンテカルロ法をテストします。
・テストデータによる試算
2つの考え方があると思います。
①バックテスト時の実現最大損失。
これは簡単でバックテストのconsecutive lossで良いと思います。
②過去損益の確率分布99%点の損失。
こちらは、平均損益 - 2.33 * 損益標準偏差 で求めます。
下記グラフは、バックテスト時の損益確率分布図です。
全体損益における1%を占める損失額を見ます。
・モンテカルロ法
バックテスト時の平均損益およびその標準偏差と
1日の平均トレード数およびその標準偏差を用いて、シミュレーションを行い計算します。
前提とする分布は正規分布です。これはバックテスト時の損益の分布から判断します。
今回は、10000回試行し、テストデータにおける実現値との比較を行いました。
結果は以下の画像です。
まず、シミレーションの結果から見ていきます。
当然、VBAマクロで自動化しています。
・平均損益、平気損益標準偏差
これはさすがに近似しますね。
・VAR/1Day
単純に平気損益と平気損益標準偏差より、99%点のVARを求めています。
テスト時の1トレードにおける最大損失に近い値ですね。
1日あたりの損失のため、1トレードあたりより低い値というのは納得出来る範囲だと思います。
これはテストデータにも書いてありますが、1日一回トレードすること自体が稀なためです。
トレードしない日が発生する確率を考慮しているということです。
・一日最大損失
1日おいて発生した最大損失です。
トレード数が極端な回数となり、かつ損が多かった場合に、このような結果が予想されます。
ライブ口座でも、2011/8/7 に、
- 473.1pipsを巨額損失を計上しています。
これを見ると、起き得ることだったことが分かります。
ちなみに、1日の最大損失を算出するようにしたのは私がサラリーマンだからです。
1トレードを基準にVARを求めてもあまり意味が薄いと考えています。
自分がシステムに手を加えられるタイムフレームでVARを利用していくべきでしょう。
・最大連日損失
これも面白い結果が出ました。
ライブ口座でも、2011/8/7より2011/8/15の期間で大ドローダウンがこのシステムに訪れるのですが、
実際の最大連日損失は
- 947.6pips
を計上しています。
これはほぼシミレーションの計算と一致する結果となりました。
これもまた、テスト時から想定されることだったのでしょうか。
・まとめ
じっくり取り組んでみましたが、得るものは多かったと思います。
個人的にはVARをオススメします。
上記のテストから改めて、いまのシステムを信ずるに足る根拠が出来たと思います。
また、1日VARを求めて、システムストップ条件に導入するのも良いかもしれません。
実際、8/7の1日最大損失後もDDが続いたため、8/7時点でシステムストップを行うか、
ロットを最小単位にし、監視状態に入るなどの対応も出来たと思います。
・参考書
VARの概要から始まり、確率の基礎、統計の基礎の記述があり、
VARの計算方法が説明されています。
大きな字でとても読みやすく、どう利用していけば良いのかが理解出来ると思います。
統計についても易しいので、統計とVARをまとめて勉強したい方にも入門書としておすすめです。
[6回]
今週は微勝ち。
トレンドフォローEAも少しずつ調子を戻してきたかな。
お勉強継続ー。
[0回]
やはりバックテスト&フォワードテストにおいては、
通常のMT4で出力される評価項目だけでは心もとないことが分かってきました。
そこで、兼ねてから検討していた回帰分析を評価項目として出力するようにコードをEAに埋め込みました。
埋め込んだコードの基本的な作りとしては、
①start()関数実行ごとに、OrdersHistoryTotal()関数にて、トレードの増加(残高の変化)をキャッチし、
取引ごとの資産残高を配列に記録していきます。
②deinit()関数実行時には、その資産残高配列をもとに、回帰分析を行い、評価項目をファイル出力します。
まぁ、こんなもんです。
で、事前に、2011/01/01~2011/08/01で最適化したパラメータセット群で、
2006/10/01~2011/09/11までをテストしてみました。(バックフォワードテスト??)
結果が下記のエクセルです。
ファイル出力したものをエクセルに転記しております。
ソートが効くので、R2でソートした状態です。
試しに、R2の最も高いTEST_NO=1635をテストしてみます。
こんな感じにしておけば、
再現性指数のテストでも使いやすい形となると思います。
それではテストしてみますと、
なんという直線。
たしかに、R2はめちゃくちゃ高そうですが・・・・・。
次点の339番を確認してみます。
避けられないDDはありますが、かなり良い直線ですね。
トレード回数が素敵ですね。
また、同じくR2が高く、トレード回数が少ないものは、
似てますね。こちらもいい感じ。
さて、R2の高いものを確認してみましたが、
MT4の標準の評価項目である資産残高で見ていきます。
バックテスト時に資産残高が最も高かったパラメータセットでテストしてみますと、
こうなりました。
標準誤差: 51.64573073 /
R2 : 0.62991803 /
cut : 8837.64660626 /
Inclination : 9.70851672
バックテストの資産残高だけで選んでいると、
結構ひどいものが選ばれている可能性もあるのかもしれないですね。
まぁ、未知の過去期間と未知の未来期間を含んでいるので厳しいの自明です。
最後に、去年の12月からずっと使い続けているパラメータセットだと、、、
標準誤差 : 52.30667450 /
R2 : 0.96745513 /
cut : 8030.72849178 /
Inclination : 54.05610452
鉄板でした。
結局、パラメータセットの変更は必要ないという結論に至りました。
・まとめ
個人的に、標準誤差が低いものがいいのではないかと考えていたのですが、
それよりもR2で考えていった方が良さそうな印象です。
R2が高くて、傾きもそれなりに高いパラメータセットがいい感じ。
次は平均含み損益なども出せるようにすると面白いかもしれません。
今回の検証に利用した参考書はこちらです。
私のような高校数学をまるごと放棄してきた人間でも分かりやすく書かれています。
統計基礎、相関、回帰分析(単回帰)までをカバーしています。
[3回]
・
今週は負け週。
CHFに対する介入でとんでもないことに。。
裁量は一度も入れず。EURUSDが下げ続けてタイミングが無かった。一回だけエントリーするか悩んだところがあったけど、エントリーしたら負けてたし。
・
ATCやっとテストにも合格しました。
バグ取りがだるかった。
Chromeのおかげで英語サイトもなんとか読めますね。
史上最高人数の参加者ですね。。。
[0回]
現在モデル系のお勉強をしております。
上記は、その中で出てきた関数を利用したランダムレートの出力です。
ランダムな係数でここの価格を出していますが、これを根拠のある係数にできたら相場を説明出来るかも。という夢を抱きつつ。
高ボラ、低ボラの表現もできるし、トレンド、レンジの表現も出来るので、これだけでもおもしろい。
あと、モンテカルロシュミレーターの作り方も分かったので収穫ありですね。
[1回]
・システム
今週は勝ち。
大きな損益が出ているのが、モデル系EA。
前の日記でモデル系は自己データ含まないとか書いたけど、嘘ですた。
いま動かしているのはテクニカル分析を行わない。自己相関モデルって言うと大げさなんだろうけど。
・裁量トレード
裁量を改めてちょこちょこやっている。
EURUSDで。
サポートレジスタンスのみで、確実そうなところを待ってエントリーしているけれど、上手くいってる。
確実そうなところというのは、リスクリワードが高いと感じるところ。
累計1000PIPS超えたらロット増やそうかな。
・おべんきょ
いろいろ勉強中。
faiさんのやっていることがうっすら分かってきた。かも。
[1回]
EAの組み換えしてからさらに凄まじい負けっっぷりw
1000通貨だからいいけど・・・。
Forex.comではいい感じ。
[1回]
損益率の公開は停止しようと思う。。悲しいだけだw
初心に帰り、調査を積み重ねようかと思います。
上の画像がForex.comです。
下の画像が海外業者です。
Forex.comでも勝てるような仕組みを考えます。
また、EAの配置換えを行いました。
具体的にはモデル系EAの追加です。
モデル系とは自己価格以外で価格を予想しようということです。
回帰系、トレンド系と標榜していましたが、やはりモデル系が堅牢なシステム作りには必要と考えました。
回帰系、トレンド系と考えているEAを捨てるわけではないですが、有効活用しきれていない現実があります。
モデル系を学ぶことで、上記を生かすことも出来るようになると考えます。
また、
モデル系は道のりが長く、敷居も高いです。
私から見たら、EA作り以上に、誤解の罠というかデータマイニングの罠が多く怖いものです。
モデル系の派閥の方から見たら、私のようなEAを作るだけの人間の方が怖いという話でしょうがw
いずれのアプローチにせよ、売買単位が縮小したので、見ていてハラハラしなくなりましたね。
あ、今日の飯代浮いた。とか思うw
さて、今、取りかかっているタスクとして、
日々、エバーノートに考えを溜め込んでいき、それに対する検証・考察を実データを用いて検討しています。
まず、偉そうな文を書きます。自分の仮定というか想定を書きます。簡単に言うと、独断と偏見です。
次に、当然根拠のない前述の文に批判・考察・検証を行います。電車で、考察を入れて、家に帰ってデータ探したり、検証したりします。
精進。
[2回]
ちょっと書けないくらい損をしました・・・。
運用手法を構築しないことにはにっちもさっちも行かないようです。。
今回のようにCHFJPY がトレンド型通貨にシフトしたことをキャッチする方法が必要です。
時間もできつつあるので、リベンジ頑張ることとします。
当分は、最低ロットでウォッチすることになりそうです。
・
ツイッターをやっているのですが、注目しているシステムトレーダーの方達は全く動揺せずに淡々としていましたね。
やはり大きな差があるようです。
[0回]