ある人と株の話をしていたら、「本に、”トレンドラインは何回も引きなおしましょう”ってある」って言う話をきいた。
うん?何回も引き直したら、自分に都合のいいように引かれてしまうんではないのかなあ?とおもって、考えたんだけど、そもそも、トレンドを示す線というのを自動的に引くことは出来るのだろうか?
かりにトレンドラインがでているとすれば、株価データは、点(株価)のあつまりだけど、その点の真ん中あたりを線で繋げるっていうことになる(理科の実験のとき、データの真ん中あたりに線を引くような感じ)。
そして、その線を中心に、データは正規分布することになると思う。
つまり
株価=トレンド+(データのランダムウォーク:これは正規分布に従う)
っていうことになると思う。
実際、債権などを求めるブラックショールズの微分方程式の元となる考え方である、伊藤過程は、
株価=トレンドの関数+(データのランダムウォーク:これは正規分布に従う)
であり、トレンドの部分が関数だと、伊藤過程、たんなるトレンド「ライン」だと、一般化したウィナー過程であると思う。今回は、トレンド「ライン」の問題なんで、一般化したウィナー過程で考える。つまり、
株価=トレンドを示す線+(データのランダムウォーク:これは正規分布に従う)
と考えられる。
そのとき、トレンドを示す線はどのように求められるか?ということになる。
まあ、最小二乗法でもいい気がする。。。
でも、ふと思ったんだけど、離散している点の線を引いて、特徴(トレンド)を求めるのなら、ハフ変換でもいいんじゃないかなあ?と思った。
で、最小二乗法にしろ、ハフ変換にしろ、求めた直線に関して、このトレンドが正しければ、このラインから実際の株価との差を平均との差と同等と考えて、シグマを求めた場合、
2σの値に95.5%程度が入るはずである。
同様な理論としてボリンジャーバンドがあるが、一般のボリンジャーは、トレンドからでなく、単純に株価から2σを求めてしまう。
したがって、ランダムウォーク分だけしか考慮していないので、トレンドが出たような、正規分布を崩す要因(大幅な決算下方修正、TOBによる株価上昇など)が現れると、2σにはりついてしまうことになる。
そして2σに張り付く前の段階、1σぐらいのときは、ランダムウォークの正常値なのか、トレンドが出ていているのかが、わからない。
トレンドを考慮することにより、トレンドによる売買と、2σによるリスク範囲の想定ができるようになる。
このような論点からの具体的な売買は、別のときに考えることにして、今回は、ハフ変換のこの考えが正しいかどうかについての調べ方を考えてみたい。
1.ハフ変換は、ここのひとがここにおいていたりする。
2.この人のやり方だと、
(1) 宣言をします.
(2) g_ht.AllocateHoughTable() を用いて、ハフ変換用のメモリを確保します
(3) g_ht.HoughTranform() を用いて、元画像をハフ変換します
(4) g_ht.SaveRecognitionImage() を用いて、逆ハフ変換を実行します
とやるようだ(斜体は上記ソースコードのコメントより引用)
3.元画像は、
画像のサイズは 横 x=360, 縦 y=720pixelのようなので、
横は360日分(180日分で2ドットずつ同じ値を書いてもいい、90日分、4ドットずつ。。)をとる。
縦は、最大最小で幅を決めて、
株価に相当するところを適当な色で、SetPixel(いろをつける関数)すればいい。
4.かりに線が出てきたとしたら、どうするかについては次の機会に。。