Rhino ~犀~
どうもー、miccoです^^
先日久しぶりにサイトを更新したら、道ができたというか何というか、筆を執る手(キーボードを叩く指)が軽くなった様な気がします。笑
ところで、サブタイトルに使った漢字「犀」ですが、これ読めましたか?
私は読めませんでした。笑
さて、今回は自作EAについてです。
実はこっそりフォワードテストをしていた自作のEAがありまして、問題なく稼働できているのが確認できましたので、そのEAについてお話させていただきます。
そのEAの名前は
「 Rhino 」です。
Check
Rhino
正式名称 : Rhinoceros(ライノセラス)
短縮形 : Rhino(ライノ)
意味 : サイ
アフリカ、東南アジアに生息する大型の哺乳類。種類によってばらつきはあるが、大きいもので体長4mにも達する、象に次ぐ大きさを誇っている。その皮膚はとても硬く、まるで鎧のようである。
最大の身体的特徴は頭部に生えた角であり、一本もしくは二本の角が顔の前面に突き出している。この角は骨よりも、人間の爪や髪の毛に近く、折れても時間がたてば再生する。
またサイの角は古くから漢方薬や工芸品の材料として重用されており、それを目当てにした乱獲が絶滅を危惧させる要因となっている。現在サイはワシントン条約によって保護されているが、それでも密猟は行われている。そのためあらかじめ角を切っておくなどの処置がとられている。
ニコニコ大百科 より
まぁ、サイの説明はいいでしょう。笑
どんな EA?
Rhinoの概要を簡単に説明すると、通貨ペアは USD/JPYで、トレードスタイルはトレンドフォローのデイトレードです。
1時間足で稼働させるため、短時間足稼働のEAよりも相場のノイズを拾いにくく、長時間足よりもテンポ感のあるトレードをします。値動きのある相場を得意とし、値動きが比較的穏やかな時間帯はエントリーを控えます。
エントリーは始値で行い、最大ポジション数は 1ポジションです。両建てはしません。
ナンピンやマーチンゲールといった、リスクの高いトレードも行いません。
それと後述しますが、このサイは逃げ足が速いです。
また、相場のボラティリティに応じてストップロスが変動し、不必要に大きな損失につながる機会を極力抑える仕様にしました。
その他に、サマータイムの自動切換え機能を搭載しています。
と、こんな感じの Rhinoですが、ハイリスク・ハイリターンを追いかけるには少し物足りないロジックかもしれません。ですが、ローリスクでミドルリターンを好む私としては気に入った仕上がりになりました。特に勝率とリスクリワードのバランスが気に入っています^^
特徴
Rhino の特徴をご説明します。
極めてシンプルなロジック設計
Rhino はできる限りシンプルなロジック設計になるようにこだわりました。
コアロジックは、EAにはあまり採用されていない「RCI」を使用しています。
また、長時間軸の方向性を意識することで、環境認識を備えたエントリーロジックとなっています。
逃走モード搭載でローリスク設計
Rhino にはエントリー後、値動きがポジションと反対方向に動いた際に発動する「逃走モード①」と「逃走モード②」を搭載しました。パラメータ設定でON/OFFを切り替えることができます。
- 逃走モード①
ポジションと反対方向に動きそうな兆候を察知すると、ストップロスまで待たずにポジションを決済して痛手を負う前に逃走します。
- 逃走モード②
エントリー後、値動きがポジションと反対方向の急騰急落の兆候を察知できた場合にポジションを決済して捕食される前に逃走します。
逃走モードをONにすることでポジションを素早く手仕舞い、損失を最小限に抑えて次のエントリーチャンスに備えます。
バックテストより、逃走モードがONの際に損失になったトレードの内、約85%以上が最大ストップロスより少ない損失での逃走に成功している事が確認できています。
↓参考までに逃走モード①&②がONの際のトレード様子です。
「プロフィットモード」と「勝率モード」を搭載
Rhino はトレイリングストップ機能を搭載しています。
トレイリングストップ機能のON/OFFを切り替えることで Rhino の性格を変えることができます。
- プロフィットモード
トレイリングストップ機能をOFFにすると「プロフィットモード」です。
勝率を抑える代わりにリスクリワード(RR)が 上がります。勝率が抑えられる分負けトレードも増えますが、リスクリワードが1.2を超えているため、1度の損失以上の利益を1度の勝ちトレードで獲るので早いリカバリーに期待できます。
損小利大タイプとなり安定的に利益を積み重ねます。
勝率:51.70% RR:1.23 RF:15.31 純益:$7,230 MAXDD:$472
- 勝率モード
トレイリングストップ機能をONにすると「勝率モード」です。
リスクリワードを抑える代わりに勝率が上がります。エントリー後に値動きが安定してプラス方向に動いた際に、まずテイクプロフィット(TP)を解除し、次にその値動きの勢いが衰えるまでとことん追従して利益の取りこぼしを防ぎます。
勝率:59.44% RR:0.91 RF:17.13 純益:$6,474 MAXDD:$377
相場のボラティリティに応じてストップロスが変動
どの様な相場でも、ストップロスが固定値であればリスク管理がしやすいというメリットがあります。しかし、相場のボラティリティによっては設定したストップロスが大きすぎる、または小さすぎるという事が起こり得ます。
Rhino は相場のボラティリティに応じてストップロスを変動させるロジックを搭載しました。
ただし、単純に全てのボラティリティに応じていると数百pipsという大きなストップロス設定になってしまう場面にも遭遇する可能性もあります。
そこで、パラメータ設定で許容する最大ストップロスを設定できるようにしました。
他のEAとの相関関係
Rhino は前述のとおりコアロジックにRCI を採用しています。
RCI の正式名称は “Rank Correlation Index” で、日本語で「順位相関係数」といいます。時間と価格に順位を付け、その相関関係を指数化したもので、直近の値動きに比重を置いたインジケーターです。
RCI はEAのロジックに採用されることが少なく、このRCI をコアロジックに採用している Rhinoのトレードは、これまでに販売されてきた他のEAとの相関関係が低くなりやすくポートフォリオの向上に期待できます。
そこで、Gogojungle で販売されている(販売されていた)他のEAを任意のカテゴリー別に分け、Rhino と各EAの月単位での損益の相関関係をQuant Analyzer を使って月単位での損益相関について確認してみました。(画像クリックで大きな画像が表示されます)
- シストレ売れ筋ランキングTOP20(2019/09/03時点)
比較EA一覧・・・Swing_Max_GBPUSD, NEO_Sca_Morning_USDJPY, TurtleMagic_GY, Pips_miner_EA, 一本勝ち, Jellyfish_Forex, レバレッジセオリー, デュアル・キャスト, Beatrice DELTA4, メガ・ストラテジー, Prospect_FX_AUDNZD, コペルニクス・ベーシックUSDJPY版, ユーロエーン EURJPY, Pips_miner_EA_EURAUD, LEGALO, EA-HANA-Dev.Edition, Scal_System_EURUSD, Avail -USDJPY-, 3本の矢, 雷神EA(2019/09/03時点のランキング順)
Quant Analyzer では「0.4以下」が相関が低いとされています。
画像のとおりRhino はGogojungleのシストレFXランキングTOP20の全てのEAとの損益相関が「0.3」を超えるものは無く相関関係は低いことが確認でき、ポートフォリオの向上に期待できます。
- 同じUSD/JPYで稼働するEAとの相関
比較EA一覧・・・Angel Heart Lono, AngelHeart, Bee_3_USDJPY, Color Your Life V2, EGOIST (USDJPY), Hornet USDJPY, MB-TradingSystem, MultiLogicShot_EA, NEO_Sca_Morning_USDJ, Ririy&Racco’s Hippo, SilverCoyote, White Bear Z USDJPY, YellowBicycleScalper, オンリーワン(スタンダート), ギガガルーラUSDJPY, スキャルピングドラゴン, ブレイクスキャルシステム, ホワイトフェニックス, 梓弓_USDJPY, 一本勝ち, 上がり3ハロン, 勢いに乗るっす(昇順)
Rhino と同じ通貨ペアであるUSD/JPYで稼働させる他のEAとの損益相関を確認しました。
こちらも全体的に相関が低いことが確認でき、また、半数以上が「0.1以下」で、全てのEAとの相関が「0.3以下」であり、同じUSD/JPYで稼働させるEAであっても全体的に相関は低いことが確認できました。
- 人気EAとの相関
比較EA一覧・・・3本の矢, Angel Heart Lono, AngelHeart, Beatrice DELTA2, Beatrice-07, Beatrice-ADX01, BlackPanther USDJPY, Color Your Life V2, EA_final_max_5pair, EA_final_max_w_mix, EA-HANA-Dev.Edition, EGOIST (USDJPY), Estoc, Flashes_v8_for_EURUSD, Forex Racco V2, Forex Solid, Forex_SnowLeopard_EU, Hornet USDJPY, InstaFX, InstaFX Evolution, MB-TradingSystem, MultiLogicShot_EA, MultiLogicShot_T2, NEO_Sca_Morning_USDJPY, Pips_miner_EA, Pips_miner_EA_EURAUD, Ririy&Racco’s Hippo, Spiral_M1AUDCAD, White Bear Z USDJPY, YellowBicycleScalper, オンリーワン(スタンダート), ギガガルーラ_EURUSD, ギガガルーラUSDJPY, スキャルピングゼウス, スキャルピングドラゴン, ブレイクスキャルシステム, ホワイトフェニックス, ユーロエーン EURJPY, 一本勝ち, 上がり3ハロン, 勢いに乗るっす, 百花繚乱_EURUSD, 粉雪(利用者数250人以上のEA:昇順)
ここでは、利用者数が250人以上で、かつ、成績が現在もプラス推移しているEAを人気EAと定義しました。それらを対象にRhino との相関を確認しました。
相関が0.2以上になるEAはわずか2つで、それでも0.3以下と、やはり相関は低いことが確認できます。
また、これだけの数のEAとの相関を確認してもその半数以上が0.1以下という相関の低さが確認できました。
充実した時間制御系の設定を搭載
Rhino には時間制御に関する様々な機能を搭載することで、ポジションがリスクに曝される機会を抑制できる仕様にしました。
- ポジション保有時間制限
デフォルト設定ではポジション保有時間を最大23時間に設定し、ポジションの保有時間が設定時間に達すると強制的にポジションをクローズし、リスクに曝される機会を制限できるようにしました。 - 週末ポジション強制決済
週末に有事が起こることが多いため、週末にポジションを持ち越さない設定ができるようにしました。 - 年末年始のエントリーを制限
年末年始は世界的に相場参加者が少なくなり値動きが荒れやすいため、相場が安定するまで年末年始のエントリーを制限できるようにしました。 - サマータイム自動補正
パラメータ設定でGMTと、サマータイムタイプに米国式サマータイム、もしくは英国式サマータイムかを設定するだけで、それぞれのサマータイム時期にGMTが自動的に補正されます。 - ロールオーバー時間の考慮
ほとんどのブローカーでロールオーバー時間前後は注文を受け付けません。そのタイミングにエントリー、もしくは決済のフラグが立った場合にロールオーバー時間が経過するまで発注を遅延させることでエントリーや決済の機会を逃さない仕様にしています。 - 瞬間的な注文エラーへの対応
裁量トレードをされた事がある方であれば経験があるかと思いますが、EAのフォワード運用でも同様に瞬間的に注文が通らない事があります。そういった場合に、数百ミリ秒後に注文をリトライすることで対応(最大リトライ回数 3回)し、エントリーや決済の機会を逃さない仕様にしています。 - その他の注文エラーへの対応
通信途絶等の数秒~数分間程度の通信障害や、その他何らかの原因で注文エラーがあった場合に備え、注文エラーから数分後にリトライする仕様にしています。
Rhino ができるまで
Rhino のロジックは Dukascopyのティックデータを使用し、2006年~2016年の間の値動きを基に開発しました。そしてそのロジックをそのまま2017年~2019年の期間でアウトサンプルテスト(バックフォワードテスト)を行いました。
アウトサンプルテストの期間に直近3年分は欲しいと考え、またロジックの優位性を確認するためのバックテストの期間に10年間分のデータが欲しいと考えていた結果、現在から逆算したところ 2006年~2016年をロジック開発の期間に、そして直近3年間の 2017年~2019年をアウトサンプルテストの期間に採用することとなりました。
比較のために、ロジック開発に使用した2006/8/1~2016/7/31 までの期間(インサンプル)を直近から3年ごとに区切ったバックテスト結果をQuantAnalyaer で表示したものを掲載します。3年ごとに区切る都合上、2006/8/1~2007/7/31 の1年間は省いています。
主だった項目を表にしました。
ロジックの開発には使用していない 2016/8/1~2019/7/31 の成績と、他の期間の成績を比較してみると、概ね同等の成績であり、むしろアウトサンプルの方が良い成績になっていることがわかります。
これらの期間をQuantAnalyzerで合成した損益グラフが以下です。
この損益グラフを見ても、ロジックの開発に使用したインサンプル期間以降のアウトサンプル期間でもそのままの成績で収支が推移していることが視覚的にも確認できました。
以上ことから、このロジックは実運用に耐えられるロジックであると判断しました。
以上の結果を踏まえ、パラメータをチューニングし Rhino が誕生しました。
チューニング後のRhino 成績は以下のとおりです。
■ プロフィットモード
■ 勝率モード
スプレッド耐性について
Rhino がどの程度のスプレッドに耐えられるか確認してみました。
バックテストの際に設定するスプレッド値を 1.5pips~ 3.0pipsの範囲で段階的に設定し、固定スプレッドでバックテストを実施しました。
■プロフィットモード
スプレッド 1.5pips |
スプレッド 2.0pips |
スプレッド 2.5pips | スプレッド 3.0pips |
■勝率モード
スプレッド 1.5pips |
スプレッド 2.0pips |
スプレッド 2.5pips | スプレッド 3.0pips |
どちらのモードでも、固定スプレッドが 3.0pipsのバックテストでは最終的にマイナスとなり、2.5pipsのバックテストはマイナスにならずとも苦戦している様子が損益グラフに表れています。2.0pipsのバックテストは 1.5pipsに比べてやや勢いが弱い印象ですが、概ね使用可能範囲だと考えます。
以上より、Rhinoの推奨スプレッド上限は 2.0pipsとなります。
バックテストの再現性について
9月上旬から OANDAにてフォワードテストを実施していました。
↓各モードはこんな感じで推移しています。(2019/10/11 現在)
■ プロフィットモード(フォワード)
プロフィットモードの現在のフォワード成績は上のとおりです。プロフィットモードのトレードの傾向は、勝率が抑えられる代わりにリスクリワード(ペイオフレシオ)が高くなります。
前述のバックテストのレポート結果と比較してみると、勝率については現在のフォワードの方がやや低いですが、リスクリワードおよびプロフィットファクターについては大きく上回る結果が出ています。
■ 勝率モード(フォワード)
勝率モードの現在のフォワード成績は上のとおりです。勝率モードのトレードの傾向は、勝率が上がる代わりにリスクリワード(ペイオフレシオ)がやや抑えられます。
前述のバックテストのレポート結果と比較してみると、現在のフォワード成績では勝率モードの傾向があまり出ていませんが、リスクリワードとプロフィットファクターの成績は期待値以上になっています。まだ取引回数が少ないので今後、本来勝率モードが持つトレードの傾向に成績は集約されていくと考えています。
ご覧いただいたとおり、どちらのモードも勝ったり負けたりしながらフォワードでもしっかりと利益を残すトレードができています。
そこで、このフォワードと同じ期間を Tick Data Suiteを使ってバックテストして再現性を確認してみます。
■ プロフィットモード(フォワード期間バックテスト)
■ 勝率モード(フォワード期間バックテスト)
こんな感じですが、このままでは比較し辛いので、このバックテストのレポート結果をMyfxbookに読ませて、前述したフォワードの成績と同じフォーマットで表示させました。
それを並べてみたものがこちらです。
■ プロフィットモード(上:フォワード、下:バックテスト)
並べて比較するとわかりやすいですね。ほぼ同じ曲線を描いています。
プロフィットモードの比較については、損益グラフを含め、獲得pips、平均勝ちトレード額、平均負けトレード額、勝率、プロフィットファクター等、ほぼ同様のトレード結果であることが見て取れます。
■ 勝率モード(上:フォワード、下:バックテスト)
次に、勝率モードの比較です。
こちらは損益グラフに若干の違いが見えますが、良く似た形状でプラス方向に進んでいます。
バックテストの方が取引回数が多いですが、全体的な成績としてはフォワードの方が良い成績となっています。
以上の比較から、若干の違いはあるものの、概ね同様のトレードがされていると考えられます。
上記期間のプロフィットモード、勝率モードそれぞれのバックテストのレポート結果を Myfxbookにインポートしたものの詳細は下記リンクからご覧いただけます。
→ プロフィットモード (2019/9/16~2019/10/10)
→ 勝率モード (2019/9/16~2019/10/10)
以上より、、、と結論付けるにはフォワード期間が短いため、まだ少し早いとは思います。
ですが、現時点での結果を基に述べさせていただくと、どちらのモードもバックテストとフォワードの乖離が少ないことが確認できており、再現性の高さに十分に期待が持てます。
これまで様々なEAに触れてきた私の見解として、また、 Rhinoの開発者としての立場から申し上げると、Rhinoはバックテストの再現性が高いEAであると考えられます。
直近までのバックテストの結果
月単位で直近(2019/9/30)までの期間をバックテストしてみました。ロットは0.1Lotです。
参考になれば幸いです。
■ プロフィットモード
■ 勝率モード
正確なフォワード状況確認のススメ (Myfxbook 公開 )
現在の Rhinoのトレード状況をリアルタイムで確認していただける様にMyfxbook のウィジェットを貼っておきます。是非ウィジェットをクリックして詳細をご覧ください。
ウィジェットをクリックすると、Rhinoのフォワード状況を反映させたMyfxbook のページに飛びます。そこで各トレードやその他詳細をご確認いただけます。
ゴゴジャンでもフォワードを計測をしていただいていますが、動作が不安定で、私が同じブローカー(OANDA)でフォワードを計測しているものと成績が異なります。
そのため、私が手元でフォワードを計測している正確な成績を参考にしていただけると幸いです。
— ここから ※2020/5/9更新 —-
OANDA JAPANより「OANDA MT4 サーバー名変更」の連絡通知がありました。それに伴いフォワード計測中口座の証拠金額は据え置かれていましたが、これまでのフォワード詳細が全て消えてしまいました。
消える直前にキャプチャを残していましたので掲載いたします。
— ここまで ※2020/5/9更新 —-
→ 「Rhino」はじめました。 ←
Rhino の販売ページを公開させていただきます。
私がEAの購入を検討する際に「もし自分ならこういうところが気になるな」という事項を思いつく限り列挙してみました。そして、それら全ての回答をここに記載させていただきました。
お気付きの点やご不明な点等ございましたら、お気軽にご指摘いただければ幸いです。
宜しくお願いいたします。^^
あとがき
今までEAを使う側として検証したり吟味したりとしてきましたが、こうして公開するとなるとドキドキするものなんですね^^;
身を置いてみて初めてわかる事ばかりです。
今後、 Rhinoについて何かと発信することがあると思いますので、もしよろしければ私の Twitterアカウントをフォローお願いいたします。
それでは、今後とも宜しくお願いいたします。
では^^
Comment
[…] Rhino, Cradle, THE […]