KURENAI NO SYSTEM
http://kurenainosystem.jp/

デジタル信号処理技術で相場に挑む

目次



はじめに

 人は失敗してしまうと、また失敗するかもしれないと恐怖にフォーカスし、自分の可能性に限界を作ってしまうものです。人生というのは悪いことも起こります。 しかし、あなたの意味付けによって、人生を変える可能性もあるのです。行動こそ結果を生む唯一の方法です。

完全自動売買システム

 投資において、ほとんどの皆さんが最初は裁量トレードから始められると思います。 一部の方は裁量トレードで良い成績を残しますが、多くの方はそこで損をしてしまうのではないかと思います。 なぜ損をするのかといえば、売買のルールが明確でないからです。 利益が乗ってくると一刻も早く売りたくなり、また逆に損がかさんでくると塩漬けにしてしまったりします。 システムトレードというのは、ある一定のルールに基づいた取引を繰り返すトレードで、そこには人の感情を一切排除できるという利点があります。 完全自動売買システムとは、人間による一切の感情を除いた究極のシステムである。

 近年の為替市場では、コンピューターモデルやテクニカル分析を駆使して短期的トレンド形成を見つけ、差益を狙った売買を頻繁に繰り返すことで収益獲得を狙う投資家の存在感が高まっているとされている。 こうした投資家が持つ最大の特徴として、高度な統計分析や計量分析によってトレンド形成を判断し、システマティックに売買を行いながら、多くのケースにおいて順張り的発想で相場の流れにうまく乗る点を挙げることができる。 テクニカル分析は、一般的に取引対象の資産の過去の取引価格・取引頻度・出来高などから相場を分析・予測する手法のことであり、マクロ・ファンダメンタルズ分析に基づき投資判断を行うマクロ系ファンドとは対極的な位置づけにある。
 しかしながら、テクニカル分析と言えば聞こえがいいが、いずれも曖昧で用いられ方が作為的である。

 相手はランダムウォークに限りなく近いものです。 いくら凝った計算方法やアルゴリズムを使ったとしても答えを出せるような代物ではありません。 また、あらゆる人が同じく満足するシステムは存在しません。 許容できるリスク(損失)と満足できるリターン(利益)というのも人それぞれ違うはずです。

 重要なのは、システムを使いこなすということです。 システムトレードでリスクの許容範囲を広く取るということは、ギャンブル的な要素が強いのではと思われるかもしれません。 しかし、実はその逆で、リスクの許容範囲を広くすれば、リスクが許容範囲内に収まる確率が高まります。 そうすると、希望リターンが小さくてもその確率が高ければ長期的に見て資産を増やすことができます。

 つまり、損失にフォーカスせずに総合的に判断する大局観が求められます。 「戦略を信じるしかない」と言ったところでしょうか。

 現在の個人がシステム取引を行うことのできる現状の環境を鑑みると、リアルタイムに価格を取得でき土日を除いて24時間取引が可能である為替取引(店頭外国為替証拠金取引)を対象にシステムを構築することが効率上望ましいと考えている。 ただし、為替取引に分析対象(投資対象)を限定するものではありませんので、株や金を含めすべての商品で24時間取引システム取引ができるようなインフラが整備されれば、開発したシステムはそのまま活用できるはずです。

 完全自動売買システムの構築には、MetaTrader4を利用します。 MetaTrader4はロシアのMetaQuotes社(メタクォーツ社)が開発している無料で利用できるフリーソフトですが、テクニカルインディケータが豊富で、バックテスト機能も充実しています。 またシステムの構築時にはプログラミング言語がC言語に似たMQL言語というものを使いますが、かなり自由度が高いため、売買ルールの作成時において非常に細かな指示を与えることができます。 思い通りのシステムを作るにうってつけのソフトだといえるでしょう。ただし、投資対象はMetaTrader4で取り扱われるものに限定されます。

MetaTrader4の特徴

・テクニカル指標が豊富である。MT4に搭載されているもの以外に、ネット上で配布している数え切れないほど大量のテクニカル指標を自由に使える。
・テクニカル指標の計算方法も変更でき、自分だけのオリジナル手法も作れる。
・プログラムを組めばカスタマイズしたテクニカル指標で確立した売買ルールで自動売買できる。

「頭の中にある『こんなテクニカル指標があればいいな』というイメージを実現できるのはMT4しかない」といわれている。

(注意)
・時間表示が日本時間ではない
・提供会社によっては、1週間に日足が6本表示される


Back to Top

投資判断を行うまでの4つのステップ

 MetaTrader4を利用して為替取引(店頭外国為替証拠金取引)の完全自動売買システムを構築します。 単一通貨の時系列データを分析し、特にUSドルと円をモデルとして仮説の検証や予測しますが、すべての商品に当てはまるのはもちろんです。 なお、交差時系列は今回の分析対象から除外しています。

( ステップ 1 )トレンド成分の抽出

 「線形トレンドが有意に継続する」と仮定し、ベイズ統計の手法により既知の事象の知識を使って事後確率分布を求める。

( ステップ 2 )サイクル成分の周波数分解

 周期多重解像度解析(ウェーブレット変換)を用いて時間と周波数を同時に二次元で分析することで一過性の変動や微小な不連続を解析する事を可能とした。

( ステップ 3 )予測

 サイクル成分の将来の値を予測するためのツールとして自己回帰モデルを利用します。 時系列分析では,あるデータの動きの特徴を探るときは、そのデータ自身の持っている特性をモデルに基づいて詳細に探るというアプローチをとる。 また、サイクル成分はヒルベルト変換により位相を進めることにより、事前に相場の転換点を確認することがでる。

( ステップ 4 )投資の判断

 機会学習(パターン認識による分類)にて投資のタイミングを判別する。しかし残念ながら「市場を予測」については、人間が予測できないものを、機械に予測させること自体、無意味に思える。 「瞬時に判断する」ために利用すると考えるのが妥当である。
 過去の学習データから最も良い方法を探索し、問題を解決する。 パターン認識法の一つであるサポートベクトルマシンでは、データの生成確率を推定することなくパターン認識に最低限必要な決定境界を直接学習する。 つまり、過去のデータを与えるだけで答えを導き出せるということ。


Back to Top

分析

トレンド分析

 Bayesian treed Gaussian process modelsはマルコフ連鎖の性質を利用して任意の確率分布から乱数を生成し、解析的に求めることの難しい確率分布を推定する方法【MCMC(マルコフ連鎖モンテカルロ)法】。 この手法は意思決定ツリーとも呼ばれる手法で、ツリー構造と呼ばれる図を作り出し、アウトプットには分類を行なうためのルールを作成します。 これを別な形で表現すると、IF THEN形式のルールになります。

モンテカルロとは?
 誤差は正規分布だけと考えず、実際の誤差に合うようにサイコロを振って予測する。

マルコフスイッチとは?
 相関が強いとき、弱いときを自動的に切り代えて予測することが出来れば、より良い気がする。 マルコフ過程とは、一期前の事だけに次に起きて来ることが依存すると言う確率過程のこと(昔のことは覚えていない)。 そういった確率過程の上で、強いときと弱いときをスイッチ(切り替え)して予測するのがマルコフスイッチ。

 時系列データ(為替相場)への適用には高値、安値それぞれ別に事後確率を求め、分布を適切にとらえると、トレンドを明確に判断できる。
 下図の分布は、中期と短期の高値及び安値についてそれぞれ適用し、当該期間での中で高値(安値)になる確率を示している。 したがってこの分布のラインは高値、安値のトレンドを明確に表している。


直線回帰(最小二乗法)モデルの適用

 現在のトレンドラインが継続する仮定で、その確率を算出するため直線回帰(最小二乗法)を利用する。 平面に当てはめたn個の点からy=a+bxの式を導き出すのが直線回帰である。


Back to Top

サイクル分析

ウェーブレット変換

 フーリエ変換は周波数成分を解析するための手法であり、コンピュータ処理するためのFFT(Fast Fourier Transform)が有名である。 フーリエ変換では信号のもつ性質をすべて周波数情報に置き換えてしまうため、時間に関連する情報が失われてしまう。 言い換えれば、時間とともに刻々と変動する信号であっても、フーリエ変換では周波数成分だけしか得られないので大ざっぱな信号情報しか見いだせない。

 ウェーブレットでは、信号の時間と周波数の関係を同時に解析するため、基準とする物差しとしてマザー・ウェーブレットと呼ばれる小さな波の欠片かけらが用意されている。 この小さな波の欠片をいろいろな縮尺に引き伸ばすことにより、周波数の物差しであるウェーブレットを多数用意して、時間軸方向に平行移動させながら解析したい信号にあてがい、時間と周波数の情報を同時に得るのである。

 ウェーブレット変換により分解された各サイクル成分に自己回帰モデルによる予測を行う。(下図) 自己回帰モデルは時間と一緒に変動する値に対してModelを適用し、時系列データに隠れた何かしらの情報を導きだす事を目的としています。




ヒルベルト変換

 ヒルベルト変換とは,ある信号I(t)から、それと「直交する」信号Q(t)を導出することである。

 ウェーブレット変換により分解された各サイクル成分の有効な成分だけを抽出し合成すると、ノイズと遅延のない信号(KNS基準線という)となる。また、ヒルベルト変換により位相を進めた信号(KNS先行線という)によりサイクルの「山」と「谷」を判断することができる。

 遅延のないKNS基準線(青波線)とヒルベルト変換により位相を進めたKNS先行線(黒線)は、売買のすべきタイミングを明確に示している。


Back to Top

機会学習

 隠れたルールや法則を見つけ出すのにも機械学習は有効です。 データマイニング(大量のデータから知識を取り出す)はその最たるものの一つです。 商品購入情報を分析して「ビールを購入した人は紙おむつもあわせて購入することが多い」という傾向を発見した的なお話は耳にしたことがある人も多いのではないでしょうか。
「学習」とは,なにがしかの仮定から導き出した誤差関数を最小に,あるいは尤度関数や事後分布を最大にするパラメータを求めることです。




Back to Top

ニューラルネットワーク


 生物の神経回路網による情報処理では、従来のコンピュータにはない優れた能力がいくつかある。
•曖昧な情報に対する処理が可能
–従来のコンピュータでは曖昧な情報は受け付けられない。
–従来のコンピュータでは判断するすべてのパターンをあらかじめ用意しておかなければならない。
–従来のコンピュータは動作をすべてあらかじめプログラミングしておく必要がある。

サポートベクターマシン


 サポートベクターマシン(Support Vector Machine:SVM) は、T&TのV.Vapnikによって統計的学習理論の枠組みで提案された学習機械のことである。 SVMは、特にパターン認識の能力において、最も優秀な学習モデルの1つであることが知られている。

次元データの分類 マージン最大化




 与えられたデータを分類するということは、与えられたデータを用いて、それらをどのように分類したらよいかをSVMが学習している、と解釈できる。 学習の本当の目的は、あらかじめ与えられたデータをうまく分類することではなく、学習に用いなかった未知のデータをうまく分類させることである。 このような能力を、学習理論では汎化能力と呼んでいる。

SVMでは、分離超平面と2種類のデータとの間の距離(これをマージンと呼ぶ)が最大になるような分離超平面が、最も汎化能力の高い超平面になるということを利用している。 マージンを最大化する方法を定式化すると、2次計画問題に帰着することができる。 そのため、最適解が唯一に定まり、局所的最適解に陥る心配がない。 これがSVMの利点の1つである。

Back to Top


損益分岐点(勝率)・ポジションサイジング・破産確率

 どのように投資をしたら良いか以下のケースで考えてみる。
-ドル円の1つの売りまたは買のポジションに投資する。
-14銭(0.14円)上がった、または下がった時ポジションを閉じ勝ち負けを決める。


損益分岐点

ドル円の為替の取引の場合0.01円をスプレッドとして勝って13pips、負けて15pipsとなる。
勝率53%の場合 0.13 * 53% - 0.15 * 47% = -0.0016
勝率54%の場合 0.13 * 54% - 0.15 * 46% = +0.0012 となり、損益分岐点は54%となる。
ちなみに、1トレード当たりの期待収益額は元本100に対し、勝率60%の時+0.018、勝率65%で+0.032、勝率70%で+0.046となる。


ポジションサイジング

 ポジションサイジングとはトレードで大事な要素の一つで、「1回の取引にいくら使うのか」ということ。
毎回いくら投資をすれば最も多くなっているか考える。

「勝つ確率が60%のコンピューターゲームを100回してもらう。手持ちの掛け金は1000ドルずつで、毎回好きなだけ賭けてよい。どの人も、資金管理がこの種のゲームに与える影響についての知識はない。」

n回目の単位賭け金あたりの勝ち分をe(n):とおく
P(e(n)=+1) =p,P(e(n)=+1) =q, p>q, p+q = 1として
C(n):n回目の賭け金(0<= C(n) <=Z(n-1))
Z(n):n回目を終えた後の財産
Z(n) - Z(n-1) = C(n)*e(n) という式ができる。
F(n) = σ(e(1),...,e(n))
E(log(Z(n))|F(n-1)) = E(log(Z(n-1))|F(n-1)) + E(log(1+C(n)e(n)/Z(n-1))|F(n-1)
となるが、第2項はf(x) = plog(1+x) + qlog(1-x)とおくとf(C(n)/Z(n-1))である。
今、0<=x<=1のもとでf(x)はx=p-qで最大値a(a= plogp+qlogq+log2)をとるため、
Y(n)=log(Z(n)) - n*aとおくと、E(Y(n)|F(n-1))<=E(Y(n-1)|F(n-1))となり、優マルチンゲールである。
常にp-q=C(n)/Z(n-1)を満たすようにC(n)を決定すればよい。

最適解は全財産の(p-q)*100%=(60-40)%=20%を賭け続けることである。




「ケリーの公式」 F=〔(R+1)×P-1〕÷R

勝てば賭け金のR倍がもらえ、負ければ賭け金が全て没収というゲームで、勝率をPとする。
上記の例ではF=( (1+1) * 60% - 1 ) / 1 = 20%

しかし、収益を最大化しようとする事は、言い方を変えれば限界までリスクをとる事を意味します。


破産の確率

【賭け金が一定の場合】

勝つと a 円もらえ、負けると b 円失う賭がある。勝つ確率を P とする。
あなたは、現在、n 円持っている。
この賭を際限なく繰り返すとき、破産する(所持金が0以下になる)確率はいくらか。

まず損益比 R を R=a/b で定義します。
0<x<1 の範囲における、次の方程式の解を S とします。

このとき、次の評価式が成立します。

n/b と R がともに整数の場合は、右辺の等号が成立します。つまり、破産の確率=Sn/b です。

【賭け金が一定の比率の場合】

賭け金を一定にするのではなく、資金に対して一定の比率で賭けていく場合はどうでしょうか。
つまり、その時点の資金を A 円とするとき、一定の比率 k (0<k<1)を用いて、勝てば R×k×A 円儲け、負ければ k×A 円損するように賭けるとします。

たとえば、損益比 R(=利益÷損失)が 2 とします。k=0.1 なら、常に資金の 10%をリスクにさらします。資金 100万円なら、負けは 10万円の損、勝ちは 20万円の得となるように賭け、それに勝って資金が 120万円になれば、次は、負けは 12万円の損、勝ちは 24万円の得となるように賭けるわけです。
はじめの資金を A0 円とし、資金が B 円以下になったら破産とします。

【注】 定率の場合、破産基準の B 円の設定は不可欠です。なにも条件を課さないと、たとえば k=0.5 の場合、残金が1円でも 0.5円を賭け、それに負けると次は 0.25円を賭け、さらに負けても 0.125円を賭け … と次々に小さな金額を賭けてくるので、いつまでたっても破産しません。



W 回勝って、L 回負けたとき、資金が B 円以下になって破産する条件は、次の式です。



対数をとって変形すると次のようになります。



a、b、n を次のように定義します。



損益比 R(=利益÷損失)は利益=1.3、損失=1.5で損益比 R=0.866
k=(投資率)、P=(勝率)、資産が10分の1に減少した時点で破産としたときの不等式における破産の確率の上限は以下の表のようになる。

 (不等式における破産の確率の上限)



勝率60%の時、7.5%をリスクにさらした場合の破産確率は0.197%500人に1人資産を失うことになる。安全とは言えない。

同様に勝率60%のとき、5%をリスクにさらした場合の破産確率は0.0003%以下となる。この場合、元本100万円の投資資金は1回目の投資は5万円負けることが許される投資を行うことができる。

想定投資元本 * 15BP(損失率) = 5万円(損失額)

想定投資元本 = 3,333万円 つまり100万円に対し33倍のレバレッジをかけることになる。



結論としては勝率60%で損益比(利益=1.3 / 損失=1.5)の場合、25倍のレバレッジをかけて資産の5%をリスク(1回の取引による損失額)にさらす投資を行うことは安全である。

ただし、「ケリーの公式」F=〔(R+1)×P-1〕÷R(F = ( (0.866 + 1) * 60% -1 ) / 0.866 = 13.81%)から算出される効率的な投資は13%であることを鑑みると効率は悪くなる。

したがって、5%~13%でリスクに応じ投資額を決定することが効率的であると判断できる。



最適化・検証

 「最適化」というのは、「リターン」を最大化するためのパラメータを求めるということで、実用的にも重要です。ソフトでもハードでも実際のモノづくりには欠かせないものです。
 ところが、システムトレードにおいては、そういう最適化はカーブフィッティング、あるいは、オーバーフィッティングと呼ばれ、嫌われます。 つまり、最適化を行った期間以外では全く機能しないものになってしまう可能性を指摘しているからです。

戦略での検証をしてみる。

 当初設定した初期パラメータ(分析期間()、対象データ(15分足)、時系列分析の対象とする期間)を変更しないで使用し、全件判定の対象データとし、15分ごとに24時間後の価格の上昇または下落を予想する。 そして、その結果、上昇または下落が一致している場合、その識別を成功したとして、その度合いを一致した率で考えてみる。

 全件を分析の対象とした判別率は期間により若干ばらつきはあるものの55%あたりで収束する。

 これでは、損益分岐は超えたものの、実際の運用には耐えられない。
 しかしながら、すべての期間投資をする必要はなく、特徴的なタイミングを捉え投資することで正解率を上げることができる。
 データの選別が必要であるが、ただ、機会学習を用いるとブラックボックスになるため、管理人の趣味ではやはり条件式を明示したいと考えている。



Back to Top

目次

inserted by FC2 system