BTLMインジケータで計算できる他のモデル

テクニカル指標が「数学的に意味を持つ」こととマーケット予測能力は全く関係無い…という話を書いておきますかね..^^;
どんなテクニカル指標にも、その計算式の背後には、必ず何らかの値動きのモデルを想定しています。(モデルというよりも、値動きのどんな特徴を抽出したいのか?という目的があります..と言うべきかな。


仮に市場での資金の流れは、物理的な制約、取引限度額的な制約で一定速度でしか動けないとしましょう。その場合、それにつられて動く価格も極めて直線的な動きをすることが多いはず..と考えたとします。

↑そんな市場での価格予測は、線形近似を使うのがおそらく妥当でしょう。個々の価格には意味の無い動き=ノイズが含まれているので、それを取り除いて本来の直線の動きを抽出するわけです。


ところが、別の人は、そんなマクロの話は短期のデイトレには当てはまらない、投機市場では買いが買いを呼び、売りが売りを呼んで値動きは加速し、放物線を描くように動くのだ..と考える人もいます。

↑その前提では、2 次多項式の近似曲線を使うことになります。(ちなみに、この後の値動きは上昇してゆきました..が、ただの偶然でしょう


こうして、全く同じチャートに対して下がるという予測(上図)と上がるという予測(下図)が、(与えられたデータに対して数学的に意味のある形で)計算できてしまいました。マーケット予測の優劣は、どちらのモデルが市場の実態に合っているか?を統計的に調べることで判明しますが、それはテクニカル指標の計算式の性能の良し悪しとは別の問題になります。テクニカル指標は、単にある特定の仮定のもとで意味のある値を算出するだけで、仮定(仮説)が正しいかどうか?とは関係ないのです。




そう理解してもらった上で、今日の本題のBTLMインジケータで計算できる他のモデルですが、R の tgp パッケージがサポートしているモデルであれば少しの修正で簡単に計算できます。

RExecuteAsync(R, "model <- btlm(X=X,Z=hist...
↑この一行を
↓次のいずれかに書き換えると計算モデルが変わります。
RExecuteAsync(R, "model <- bcart(X=X,Z=hist...
RExecuteAsync(R, "model <- btgp(X=X,Z=hist...
RExecuteAsync(R, "model <- bgp(X=X,Z=hist...
他にも blm,btgpllm,bgpllm があります。

以下は実際に変更して計算した例です。



↑bcart は、価格水準が非連続に変わるようなモデルで、階段状に近似されます。

↑btlm は、価格が折れ線状に動くモデルです。私は今でもこのモデルが一番裁量では使いやすいのではと思ってます。仮に価格が曲線状に動いたとしても、複数の直線になるだけのことです。それから、人間のパターン認識は直線と相性がよいのかもしれない..とも思ったりします。


↑btgp(もしくは bgp) は、価格がうねうねと動くとするモデルです。正しくは、ガウス過程(Gaussian processes)に従っていると言うべきですが、興味のある人は自力で調べてください^^;直近の値幅予測には bgp が良いのかな?と思ったりしますが特に検証はしていません。


BTLMインジケータの愛用者が少なからずいらっしゃるようなので、改造するとこんなカタチもできるよ〜と少し紹介してみました。
(..べ、べつに コミPo! を試してみたかった..わけじゃないんだからねっ