English Русский 中文 Español Deutsch Português
preview
価格変動:数理モデルとテクニカル分析

価格変動:数理モデルとテクニカル分析

MetaTrader 5トレーディングシステム |
23 0
Aleksej Poljakov
Aleksej Poljakov

はじめに

世界最大の金融市場であるFX市場には、為替レート変動から利益を得ようとする膨大な数のトレーダーが集まっています。しかし、市場の高いボラティリティと不確実性により、価格変動を正確に予測することは極めて困難です。そのため、効果的な予測モデルの開発と応用は、トレーダーにとって最重要課題の一つとなっています。

外国為替市場における価格変動は、一見ランダムに見えるものの、実際には一定の規則性に従っています。しかし、それらを利用した高精度な予測は依然として難しい課題です。統計分析に基づく数学モデルは、過去データからこうした規則性を抽出し、価格変動を予測可能な形式的アルゴリズムを構築することを目的としています。これらのモデルは、大まかに言えば「複雑なもの」と「非常に複雑なもの」に分けることができ、さまざまなシナリオの発生確率を評価し、より合理的なトレーディング判断を可能にします。

一方で、チャート分析やインジケーター活用に基づくテクニカル分析は、より直感的な予測アプローチを提供します。トレーダーは価格チャートを分析し、サポート・レジスタンス水準を特定し、各種インジケーターを用いて売買判断を行います。

本記事では、価格変動予測に利用される数学モデルおよびテクニカル分析手法の双方を取り上げます。それぞれのアプローチ、その長所・短所を検討するとともに、両者を組み合わせることでトレード戦略の有効性を向上させる可能性について議論します。数学モデルとテクニカル分析がどのように機能するかを理解することで、トレード効率を改善し、損失リスクを抑えながら、成功トレードの可能性を高めることができます。


シンプルなモデル

以下のルールを持つトレード戦略を考えてみましょう。

  • 新しいバーが始まるたびに、既存ポジションを決済する
  • オープンするポジション方向はランダムに決定する

「それのどこが新しいのか?」と思われるかもしれません。新しい点は、私が突然効率的市場仮説の支持者になったことです。もしあなたもこの仮説を支持するなら、価格変動を予測すること自体に意味はないと考えるはずです。価格は好きな方向へ、好きなように動きます。市場には、価格変動が生じる根拠となる何らかの完全な情報が存在しており、価格はそれに従って変化すると考えられますが、トレーダーはその情報を持っていません。そのため、自分の判断が市場方向と偶然一致することを期待するしかないのです。

それでは、この戦略を試してみましょう。唯一の調整可能パラメータは、乱数生成器の初期化シード値です。この値を変更することで、異なるトレード系列を生成できます。

ご覧の通り、800回の最適化パスを実施しても、利益の兆候すら見られません。この結果は、スプレッドの影響による可能性があります。スプレッドの存在により、ポジションのオープン価格とクローズ価格の差分がマイナスになることさえあります。この問題を避けるために、より高い時間足へ移行することも考えられます。しかし、それは実質的にポジション保有時間を延ばすことと同義です。そこで、得られた結果を踏まえ、戦略にいくつか修正を加えます。

  • ポジション方向は依然としてランダム
  • ポジション保有時間をトレーダーが設定
  • 他にポジションが存在しない場合のみ新規ポジションをオープン
  • ポジションはストップロス注文やテイクプロフィット注文によって決済

ストップロスおよびテイクプロフィット値については、別記事で使用したものを流用しました。最適化対象パラメータは変わりません。どうやら、これらの変更は戦略に良い影響を与えたようです。利益が出るパターンがいくつか確認できます。

一般的に、最適な初期化シード値を見つけるには、「 秘書問題アルゴリズムを利用できます。N個の候補が存在する場合、探索すべき候補数は以下の式で求められます。

この場合、以下の値が得られます。

まず最良結果を記録し、その後も残り候補を探索します。もし保存済み結果を上回るものが現れた場合、その時点で探索を停止できます。非常に高い確率で、全候補中の最適解を発見したことになります。

このアルゴリズムの唯一の欠点は、実装に非常に時間がかかる可能性がある点です。しかし、この戦略のポテンシャルを完全に引き出したいのであれば、この方法を使用する必要があります。私は単純に1000回のパス実行後の最良結果を選択しました。結果はかなり良好でした。

これまでは、オープンするポジション方向をランダムに決定していました。しかし、価格変動には、方向選択に役立つ何らかのパターンが存在するのでしょうか。そこで、ナイーブな予測手法を試してみます。この予測は、「過去が未来を決定する」という形で定式化できます。しかし、チャートを少し見るだけで、この方法が機能しないことは明らかです。そこで、予測モデルを少し変更して、「次の価格 = 現在価格 + 誤差」とします。

このアプローチでは、予測に最も影響を与えるのは価格そのものではなく、「誤差」です。私は予測モデルの都合上、この項を「誤差」と呼んでいますが、「価格変化量」と呼び替えても本質は変わりません。それでは、この価格変化量の統計分布を見てみましょう。

ラプラス分布のようです。金融時系列を研究する多くの研究者は、古典的分布を用いて結果を説明しようとします。このアプローチは非常に便利です。なぜなら、それら分布の性質は既によく知られており、それを用いた時系列モデリングも比較的容易だからです。しかし、現実はそれほど単純ではありません。古典的分布は数学的抽象であり、実世界で完全に一致するケースはほとんど存在しません。

トレーダーにとって本当に重要なのは、実際の価格分布です。このような分布は「経験分布」と呼ばれます。これは理論的仮定ではなく、観測データから直接得られるものです。現在、私たちは価格変化量の経験分布を持っています。ここで、最も小さい増分群と最も大きい増分群のそれぞれ上位3分の1を除外してみます。すると、未来価格を予測するために利用できるチャネルが得られます。

注目すべき点は、この予測に必要なのが「現在価格のみ」であることです。もちろん、このモデルをさらに柔軟に拡張することも可能です。しかし、それを実現するには、かなり大きな複雑化を伴います。もし興味があれば、ぜひコメントで教えてください。それでは次に、より高度なモデルへ進みましょう。


線形トレンド

すべてのトレーダーはトレンドを好みます。特に、自分のポジション方向とトレンド方向が一致している場合はなおさらです。線形トレンドは、単純な方程式によって定義されます。

線形トレンド方程式では、時間が独立変数として使用されます。MetaQuotesでは、時間の起点を1970年1月1日として定義しています。しかし、本当にそれが正しいのでしょうか。もしかすると、2月29日から数え始めるべきだったのかもしれません。ここで、この欠点を取り除き、より正確な「時間の起点」を探してみましょう。

連続する2本のバーに対する線形トレンド方程式は、次のようになります。

さらに、それらの差分を取ると

この式を整理すると、以下のような表現が得られます。

ここで、時間差を価格観測間のバー数として表現すると、式はさらに単純になります。

注目すべき点は、トレンドパラメータの一つと時間変数そのものが不要になっていることです。次の価格は、「現在価格 + トレンド率」によって求められます。しかし、この単純化の後に新たな難しさが現れます。トレンドパラメータは、たとえば最小二乗法によって推定できます。しかし、別のアプローチも存在します。

ここでは、「既にトレンド率を知っている」と仮定します。そして、新しい価格が到着するたびに、以下のルールに従ってトレンド率を更新します。このルールは、別の形でも設定できます。すなわち、トレンド率は比較的長い期間にわたって安定しているべき、という考え方です。式は次のようになります。

その結果、更新後のトレンド率を計算するための次の式が得られます。

トレンドの存在を認識するためには、一定本数のバーにわたって一定方向への価格変動が必要です。この場合、次のような複数の式が得られます。

これらの式を1つにまとめると、トレンドの速度は平均価格値に対して測定されることになります。この平均価格値はSMAによって求めることができます。そして、トレンド率の式は最終的に次の形になります。

この式を用いて構築したインジケーターは、次のようになります。

このインジケーターを基に、シンプルな売買戦略を作成できます。ポジションのオープンおよびクローズは、インジケーター値の符号が変化したタイミングでおこないます。

一定の結果は得られましたが、インジケーター自体にはさらなる研究と改良が必要です。トレンド率の変化そのものにも独自のトレンドが存在する可能性があります。そして、それらのトレンドも抽出する必要があります。そうしたトレンドの総和(実際に存在するのであれば)によって、より正確なシグナルを得られるようになります。


チャートに沿った動き

興味深いモデルの1つに、ランダムウォークに関連するものがあります。価格変動がランダムである場合、価格が移動した距離と時間は次のような関係になります。

任意の時間指数を持つ可能性があると仮定してみます。つまり、価格変動は次のパターンに従うとします。

それでは、時間指数と比例係数を計算するために使用できるアルゴリズムを見ていきます。まず、インジケーター期間Nを設定する必要があります。時間については単純で、時間は1からNまでの整数で表されます。一方、移動距離の計算には少し工夫が必要です。価格の移動距離は、連続する2つの価格差の絶対値を加算することで求められます。

この場合、移動距離は過去から未来に向かって計算し、新しい値を以前の値に加算していく必要があります。具体的には次のようになります。

次に、得られた距離を正規化する必要があります。そのために、すべての値を最小移動距離R[N-1]で割ります。

これにより、実際の距離ではなく相対距離を測定することになります。残る作業はわずかで、得られた値の対数を取るだけです。さらに、距離だけでなく時間についても対数を取る必要があります。

なお、最も古い距離および時間の値の対数は0になります。これらは以降の計算には影響しません。この点を考慮すると、指数および比例係数は次の式によって求められます。

それでは、この指数が履歴全体を通じてどのように変化するかを見てみます。

このパラメーターは、価格変動の性質を評価するために使用できます。値が0に近い場合、価格変動が弱いこと、つまりレンジ相場であることを示します。線形トレンドの場合、この指標は1になります。指数は0からおよそ2.5まで非常に広い範囲で変化します。そのため、直近の価格値を重視するインジケーターが重要になります。代表的なものとして、よく知られているEMAやLWMAがあります。

ここでは、図形数(figurative numbers)を用いて重みを決定するインジケーターを開発してみます。Lを数のレベルとすると、n番目の多角数は次の式で計算できます。

これらの数値がインジケーターの重みとして使用されます。このようなインジケーターは、LWMAよりも価格変動に素早く反応します。一方で、「記憶」はEMAより長いため、時系列をより滑らかに平滑化できます。

それでは、このインジケーターを、価格がインジケーターラインをクロスしたときにシグナルを生成するシンプルな戦略でテストしてみます。

テスト結果はそれほど印象的ではありません。しかし重要なのは、図形数を基に多数のインジケーターを構築でき、それぞれが異なるトレンドに反応するという点です。各インジケーターからのシグナルを個別に処理すれば、結果は非常に興味深いものになる可能性があります。


結論

本記事では、外国為替(FX)市場における価格変動の記述および予測に関するさまざまなアプローチを検討しました。単純にポジション方向をランダムに選択するだけの戦略であっても、ポジション保有時間やストップロス・テイクプロフィットレベルといったパラメータを適切に最適化することで利益を上げることが可能です。このことは、リスク管理の重要性と、市場環境への適応の重要性を強調しています。 

FX価格変動を予測するための多様なアプローチは、特定の市場環境およびトレーダーの目的に応じて適切なモデルを選択する重要性を示しています。本分野におけるさらなる研究と開発は、より効率的かつ信頼性の高い予測モデルの構築につながる可能性があり、それによってトレーダーはより情報に基づいた意思決定をおこない、収益性を高めることができます。

この記事の執筆には、以下のプログラムを使用しました。

名前種類管理
EA Picky BrideEA
  • Seed:初期化番号
  • Duration:想定保有期間(1以上)
Errorスクリプト
  • Duration:価格変化量を計算するバー数(1以上)
  • ScreenShot:有効にすると、Filesフォルダへ画像を保存します
Price Incrementsインジケーター
  • Percent:予測を作成する際に破棄する最大値と最小値の割合(1~99)
Trendインジケーター
  • iPeriod:インジケーター期間(1以上)
EA TrendEA

Wanderingインジケーター
  • iPeriod:インジケーター期間(3以上)
Figurative Numbersインジケーター
  • iPeriod:インジケーター期間(2以上)
  • Lvl:図形数タイプ(1 - SMA、2 - LWMA、そして古典的な図形数が続く)
EA Figurative NumbersEA

MetaQuotes Ltdによってロシア語から翻訳されました。
元の記事: https://www.mql5.com/ru/articles/18086

添付されたファイル |
EA_Picky_Bride.mq5 (5.62 KB)
Error.mq5 (2.19 KB)
Trend.mq5 (2.36 KB)
EA_Trend.mq5 (3.28 KB)
Wandering.mq5 (3.26 KB)
マルコフ連鎖に基づく行列予測モデル マルコフ連鎖に基づく行列予測モデル
マルコフ連鎖に基づいた行列予測モデルを作成します。マルコフ連鎖とは何でしょうか。また、マルコフ連鎖を外国為替取引にどのように活用できるのでしょうか。
市場シミュレーション(第20回):SQL入門(III) 市場シミュレーション(第20回):SQL入門(III)
約10件程度のレコードを含むデータベースでも操作をおこなうことはできますが、15,000件を超えるレコードを含むファイルを使って作業したほうが、内容をはるかに理解しやすくなります。つまり、そのようなデータベースを手作業で作成しようとすると、膨大な作業になってしまうということです。しかし、教育目的で利用可能な、そのようなデータベースをダウンロードできる場所を見つけるのは簡単ではありません。ですが、実際にはその必要はありません。MetaTrader 5を使えば、自分たちでデータベースを作成できるからです。本日の記事では、その方法について見ていきます。
エラー 146 (「トレードコンテキスト ビジー」) と、その対処方法 エラー 146 (「トレードコンテキスト ビジー」) と、その対処方法
この記事では、MT4において複数のEAの衝突をさける方法を扱います。ターミナルの操作、MQL4の基本的な使い方がわかる人にとって、役に立つでしょう。
初級から中級まで:継承 初級から中級まで:継承
間違いなく、本記事の内容を理解し、それがどのように、そしてなぜ機能するのかを把握するためには、かなりの時間を要するでしょう。というのも、ここで示されている内容はすべて、一見するとオブジェクト指向的に見えますが、実際には構造化プログラミングの原理に基づいているためです。