Point and Figure データモデル化
とりあえずPYTHONのソースを見つけたので、参考にさせていただくこととした。
マーケットデータは前に参考にさせていただいたソースのものを使うことにした。
テスト
- EURUSDの日足データから、P&Fの元になる数列を入手した。
- ブロックの基準数(セル高さ)は、全範囲の(MAX-MIN)/200とした。
- データ長さは、圧縮前5000行だったが、P&F数列は531となった。
試行錯誤
ブロック基準数とデータ圧縮
いまP&Fチャートの特徴をよくよく考えてみると、これはデータを圧縮する方法だと気づく。
その際に基準数を大きくすると、おそらくデータ長さは小さくなると考えられる。
一般的に為替チャートは、基準足の長さによって、日足、週足、月足というふうに、データの粒度が変わってくる。しかしながら、P&Fチャートではトレンドが転換した場合のみにね次の足に更新されるという概念であるため、時間の更新に対して一律に足が更新されるわけではない。
マルチタイムフレーム分析
また一般的なテクニカル指標であれば、基準足に対して、複数の時間尺度を用いて、総合的に相場の局面を判断することが一般的であり、マルチタイムフレーム分析という手法が存在する。
ブロックの基準数を可変すると、データ長さが変わる特性があることから、P&Fにおけるマルチフレームの概念については、複数のブロック基準数をもとに決定するマルチブロック分析が有効と考えられる。
AIアルゴリズム
また、一般的な時系列データに対するAI学習の一般論として、過去のデータの影響を考慮する再帰的学習(リカレントネットワーク)が使われるが、これはレンジ相場のような周期的な変動の場合には有効と考えられる。しかしながら、為替変動の場合はテクニカル的な重要サイン(ブレイクアウトを起点)によるトレンド変化を捉えることが最も重要と考えられるため、再起的な学習よりはパターンの組み合わせ的な条件判断が要求される。AI学習の観点からも、マルチブロックのパターン分析を行う方が理にかなっていると考える。(そもそもRNNに関しては、通常のAI分析に対して計算コスト的にも厳しい状況が想定される。)
今回はいろいろなハイパーパラメータを構成する因子の中に、複数のブロック基準数も加えて、パラメータのチューニングをしてみようかと思う。
モデル
PFの特徴をみると、以下のことがわかる。
- ×と〇は常に繰り返されている
- ×→〇の変化では、一段下から始まる
- 〇→×の変化では、一段上から始まる
この特徴は、全くもって無視しても構わないことになる。
とりあえず下記のP&Fチャートであれば、
×の数をプラス、〇の数をマイナスの数値におきかえると、
このチャートは、下記の数列に等しくなる。
12 , -7 , 7 , -5 , 5 , -3 , 12 , -5 , 5 , -5 , 6 , -6 , 3 , -6 , 2
さらに前後の和を取って、
5 , 0 , 2 , 0 , 2 , 9 , 7 , 0 , 0 , 1 , 0 , -3 , -3 , -4 max = 9 , min = -4 , Range = 13
という風に、ダイナミックレンジを下げることができる。
AIで言えば、学習機の感度が上がる方向になる。
ちなみに、もう一回やるのは、ダメな模様
5 , 2 , 2 , 2 , 11 , 16 , 7 , 0 , 1 , 1 , -3 , -6 , -7 max = 16 , min = -7 , Range = 23
そしてAI的には、次の数字が予想できれば、
トレードのポジションの転換点を知ることができる。
P&Fチャートの優れているところは、
このように数列の羅列の中に、ありとあらゆる値動きが
織り込まれている点だ。
というわけで、先ずはモデルの定義が終わったので、
為替データから上記の数列を出すところから、
コーディングすることとする。