初心者入門

システムトレード

システムトレード

そもそも『システムトレード』とは、リアルタイムの相場状況は一切加味せず、最初に決めた「取引ルール」に基づいて、ひたすら機械的にトレードを続けるトレードスタイルのひとつです。

FXのシステムトレードは儲かる?メリット・デメリットは?

FX

システムトレードとは?


そもそも『システムトレード』とは、リアルタイムの相場状況は一切加味せず、最初に決めた「取引ルール」に基づいて、ひたすら機械的にトレードを続けるトレードスタイルのひとつです。

システムトレードのメリット

メリット


それでは、ここからはより具体的に、『システムトレード』のメリットについてご紹介していきます。

メリット1:『EA』を使って24時間利益を狙うことが可能

メリット2:専門的な知識や分析の必要がない

メリット3:感情に左右されずに取引ができる

システムトレードのデメリット

デメリット


ここまで『システムトレード』の良い面ばかりを紹介してきましたが、もちろんそこにはデメリットもあります。

デメリット1:万能ではない

『システムトレード』Aパターン → トレンド相場が得意
『システムトレード』Bパターン → レンジ相場が得意
『システムトレード』Cパターン → ペナント相場が得意
『システムトレード』Dパターン → V時回復相場が得意

デメリット2:相場が急変したときに対応できないことがある

システムトレードの種類(タイプ)

種類


ところで『システムトレード』には、大きく分けて2つのタイプがあります。
ここではその2つのタイプについて詳しくご紹介していきますね。

種類1:開発型システムトレード

種類2:選択型システムトレード

システムトレードと裁量トレードの違いは?

違い


ちなみに、『システムトレード』とは対照的な手法として語られるのが、トレーダーの個人的なスキルによって売買を行う『裁量トレード』ですね。

システムトレードにおける注意点

注意点


続いて、ここでは『システムトレード』を利用する際の注意点についてご紹介いたします。

決めたルールに従い続けられるか?

そのシステムは信頼できるのか?

システムトレードに関するおすすめ本本
それでは最後に、『システムトレード』に関するおすすめの本を2冊ご紹介いたします。

おすすめ本1:システムトレード 基本と原則

著者 ‏ : ‎ ブレント・ペンフォールド
出版社 ‏ : ‎ パンローリング

◆トレード計画を開発する方法
◆効果的な売買ルールを見極め、それを作る方法
◆成功する資金管理戦略
◆トレーダーの心理を理解する

おすすめ本2:システムトレード発見のポイント-売買ルールの着眼点から売買ポートフォリオの最適化まで-

著者 ‏ : ‎ 斉藤 正章
出版社 ‏ : ‎ パンローリング

◆アイデアの発想と公式化
◆売買ルールの評価と改良方法
◆資金管理
◆売買ルールの組み合わせ方(売買ポートフォリオ)

【システムトレード】カーブフィッティングについてわかりやすく解説!

「カーブフィッティング」という言葉を抜きにシステムトレードを行うことは 非常に危険 です。世の中には「この通りにやったらこのような利益が出た」というような良いデータが記載されたシステムトレードが多く出回っていますが、そのなかにはこのカーブフィッティングによって、事実上機能しないシステムが多いのも事実です。
ここでは、このカーブフィッティングの意味や、そのようなシステムを見抜くためにはどうすればいいのかを、わかりやすく解説いたします。

「カーブフィッティング」とは?

カーブフィッティング

「カーブフィッティング」とは、システムトレードの売買ルールを、過去の相場の状況にあうように、過剰に最適化すること です。ひらたく言えば、統計のパフォーマンスの結果や勝率をよく見せるために、ルールをやたらに追加したり、取引の条件を限定したりして、「システムに都合のいいデータを出してしまうこと」を言え、日本語で「曲線あてはめ」とも言われます。 カーブフィッティングとなってしまっているバックテストのパフォーマンスはかなりよいものに見えますが、実際に売買を行うと、長い間利益が出なかったり、取引回数が極端に少なくなってしまうなどして、機能しないことも多い です。

カーブフィッティングのルールができてしまう原因

原因

様々なシステムトレードは、そのルールで実際に売買を行ったらどのような結果になったか、または実際に売買を行ってこのような結果となっているいうような「バックテスト」が行われており、そのデータが公表されています。よりよいパフォーマンスが提示されているものほど魅力的なものに見えるので、システム開発者も、よりよいデータを提示するために、様々な検証を行い、よりよいデータを探します。ただ、本来のシステムトレードの目的は、 「今までで素晴らしい結果を残すルールを開発すること」ではなく、「今後の相場で利益をとることができるルールを開発すること」 です。そこが気づかない間に 「より高い統計数値を出すこと」に特化していまい、片偏りが生じる ことによって発生していまいます。

「よい数値を出そうと昔の相場の動きに合わせ杉、通常の相場に対応できなくなっていることに気づかない」うちに、このカーブフィッティングのルールができてしまうのです。

カーブフィッティングのシステムを避けるために

「過去の相場でそのようになっただけであって、今後もそのような利益を上げられることが保障されているわけではない」ことは、システムトレードの共通のデメリットです
しかし、今後もそのシステム・ルールが成り立つかどうかは、「カーブフィッティング」かどうかを見ていかなかければなりません。

☝長い期間でのバックテストをされているものにする

カーブフィッティングをさける1つの方法として、なるべく長い期間バックテストが行われているものを使用すると いう方法があります。自分自身でシステム・ルールを開発する際にも、できるだけ長い期間を見ていくといいでしょう。

相場の状況は刻一刻と変化しています。日経平均先物で考えても、2007年には夜間取引が開始され徐々にその取引時間が延び、日中の寄付が8:45から取引できるようになったことで、ほぼ一日中取引が可能になりました。2006年には日経先物ミニが開始されて少額での取引が可能になり、個人投資家が増えるなかで、技術革新によってさまざまなアルゴリズムが発達し、急激に相場が変動することもでてきました。同時にFXの開始、活性化によって、先物市場から離れた投資家も多くいるでしょう。

そして、今までもたくさんの変化が起きた来たように、これから変化し続けます。 長い期間のバックテストを乗り越え、様々な当時の相場乗り越え利益を上げてきたシステムは、今後の新しい相場でも利益を上げ続けることができる可能性が高いと考えることができるのです。

☝「たくさんの短い期間」でのバックテストがされている

長い期間検証されているのと同時に、「その中でも短い期間のバックテストが行われているもの」 も、おすすめです。
例えば、「10年間でプロフィットファクターが3.0」というようなすさまじいシステムだとしても、たまたまそのうちの1年間がうまくルールに当てはまる相場であっただけで、それ以外の年はほとんど損失となっているような、「たまたま短い期間出た大きな利益がカバーしているだけ」の可能性もあります。月間ごとのパフォーマンスを含め、ドローダウンにも注意する必要もあります。

☝売買ルールはシンプルなほうがいい

システムのルールはなるべく少なくシンプルであるほうが、カーブフィッティングを防ぐことができているとされています。 特に「このようなときは取引をしない」というような売買を限定するようなルールが多い場合、統計結果をよくするために、過剰に取引実績をよくしている可能性があります。

売買システムが複雑であればあるほど、カーブフィッティングに陥っている可能性が高いといわれており、最適なルールなのかカーブフィッティングなのかを見極める必要があるのです。

☝なにかの理由がなければ、様々な時間軸、金融商品で応用できる

また、特定の理由がなければ、様々な時間軸や、金融商品で応用できるシステムは、カーフィッティングが少ないといわれています。
FXであれば、様々な通貨ペアで応用できるともいわれます。

「より良いルールの追加」と「カーブフィッティング」の差は非常微妙

ここまで、システムトレードで気をつけなければならない「カーブフィッティング」について見てきました。システムトレードの本来の目的は「その売買で将来利益を得ること」のため、一概にバックテストの結果だけでは言えません。しかし、システムトレードの作成者は「統計結果をよくしたい」という気持ちがあるのは当たり前です。だから言って過去の状態の合わせすぎると、結果がいいのはあくまでその期間においてだけで、最終的にはそのシステムのパフォーマンスを邪魔することとなってしまいます。

「システムをよりよくし、将来利益をさらにあげるためのもの」なのか、「ただ過去の数値をよく見せるものなのか」という非常に曖昧な区別を見ていかなければならないのです。

Pythonで機械学習を使った暗号資産のシステムトレードに入門する

例えば、下のコードのように数行書くだけで、Binance取引所のBTC/USDT板の「Open(始値)、High(高値)、Low(低値)、Close(終値)、Volume(出来高)」の1分足を取得することができます。

3. 取引戦略

本記事では、以下の2つの取引戦略をバックテストします。ここで、説明のために、Open(始値)、High(高値)、Low(低値)、Close(終値)、Volume(出来高)をそれぞれ O , H , L , C , V O,H,L,C,V O , H , L , C , V システムトレード  を使って表すこととします。

SMA クロスオーバー 戦略

非常にシンプルで、上記の「長期移動平均(SMA_L)と短期移動平均(SMA_S)システムトレード を比較し、SMA_L < SMA_S ならば、上昇トレンドとして買いポジション(long)、逆にSMA_L >SMA_Sなら下降トレンドとして売りポジション(short)を取る」という取引戦略です。それぞれの移動平均のサイズ N_L、N_S(ただし、N_L > N_S)がチューニング可能なパラメータとなります。

SuperTrend 戦略

まず、SuperTrend 戦略の理解に必要な要素を説明していきます。TrueRenge(TR)と呼ばれるテクニカル指標は、一つ前のローソク足の終値を C P C_P C P ​  とすると、以下のように計算することができます。

  1. TRのEMA (n = period) をとりATRを求める。
  2. HLに、ATRを システムトレード multiplier 倍した数値を上下に足してバンドを作る。
  3. 上の2つバンドを、一つ前の終値および、一つ前のバンドと比べて、最終的なバンドを決定する。
  4. 最終的なバンドと、終値および一つ前の最終バンドとの位置関係で、最終的なバンドのどちらかをSUPERTREND 指標とする。
  5. 終値のEMA (n = ema_period) を求め、その値がSUPERTREND 指標 より上だった場合ロングポジション、下だった場合はショートポジションをとってホールドする。

4. バックテスト

以下、SMAクロスオーバー戦略での実装例を紹介します。
戦略はbacktestingのStrategyクラスを継承することで実装します。
初期値とdataを与えることで、簡単にバックテストをすることができます。
簡単に、指定した条件でのパラメータの最適化を試すこともできます。
以下は、SMAクロスオーバー取引戦略をバックテストした結果です。
より詳しい使い方は、T.I.さんの過去記事で解説されています。ご参照ください。

5. パラメータの最適化

  1. グリッドサーチ(全探索)
    指定した全てのパラメータの組み合わせを試して、最も性能がよかったパラメータを求める方法です。パラメータの取りうる値の範囲が広くなる、パラメータ数が多くなるほど、パラメータの組み合わせ数が増大することになります。
  2. ランダムサーチ
    そこで、パラメータの組み合わせをランダムに選択し、上限に設定した回数までテストします。グリッドサーチと比較して、回数を制限している分、計算が高速に終わりますが、最適なパラメータに辿り着けるかは運任せになります。
    ベイズ最適化 (Bayesian Optimization) とは、形状がわからない関数 (ブラックボックス関数) の最大値 (または最小値) を求めるための手法です。考え方はシンプルで、各ステップまでに調べた点をもとに、探索対象の変数から目的関数の形を推定しながら、平均と分散が大きくなる(最大化の場合)ように、次のステップで調べる点を決定することを繰り返します。このようにして、最終的に得られるのが、最適解になります。
    遺伝的アルゴリズムも、ベイズ最適化と同様、ブラックボックス最適化の手法の一つです。「選択」、「交叉」、「突然変異」などの生物の進化メカニズムを最適解の探索に応用した手法です。
    • 選択:世代の中からランダムに個体を選び、その中から適応度(取引では損益)の高い個体を取り出す
    • 交叉:ある一定の確率で2個体の遺伝子の一部を交換し、子孫となる2個体を生成する
    • 突然変異:個体の各遺伝子をある一定の確率で書き換える
    パラメータの最適化問題では、遺伝子→パラメータ、個体→パラメータの組み合わせ、世代→パラメータの組み合わせのセットと読み替えることができます。
    より詳しい内容は、過去記事をご確認ください。

6. 実験と結果

  1. データ取得条件
    • 取引所:Binance
    • 板:BTC/USDT
    • ローソク足:1分足
    • 学習データの期間:2022/01/01 00:00:00 UTC ~ 2021/01/07 23:59:00 UTC
    • テストデータの期間: 2022/01/08 00:00:00 UTC ~ 2021/01/08 23:59:00 UTC
  2. バックテストの設定値
    • 予算:100000 USDT
    • 手数料:0.002 USDT
  3. パラメータ探索の範囲
    • “period”: range(5, 20, 5), [5, 120), [5, 120)システムトレード
    • “ema_period”: range(100, 200, 10), [100, 500), [100, 500)
    • “multiplier”: range(1, 11), [1, 11), [1, 11)
    (グリッドサーチ、ベイズ最適化、遺伝的アルゴリズムの順番に記述)

次世システム研究室では、ビッグデータ解析プラットホームの設計・開発を行うアーキテクトとデータサイエンティストを募集しています。興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧からご応募をお願いします。 一緒に勉強しながら楽しく働きたい方のご応募をお待ちしております。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる