有限オートマトン(finite automaton)という言葉を聞いたことがあるでしょうか? オートマトンとは、有限個の状態と遷移と動作の組み合わせからなる仮想の機械です。 オートマトンの状態は、開始状態から受理状態へと変遷します。
自動販売機がよく例えとして利用されています。 お金を払う、おつりの有無の判断、お金が足りているかの判断、そして、商品とおつりの受け渡し……これがオートマトンの「基礎」です。
システムもまたこれと同じオートマトンだと考えています。
- シグナルが点灯する(開始状態)
- 各種フィルターで確認する(遷移)
- 無視、または、取引(受理状態)
オートマトンには、「決定性有限オートマトン」と「非決定性有限オートマトン」があります。 この差は、決定性有限オートマトンには、「入力がない遷移はあり得ない」という制限があり、非決定性有限オートマトンには、この制限がありません。
この考え方は、システム構築には大変、重要な示唆を含んでいると考えています。
非決定性有限オートマトン的発想をシステムに組み込むことにより、システムが相場のことを考えるようになるのでは……と考えています。
たとえば、出来高判断と言えば、多い、少ない、ぐらいの判断しか出来ないのですが、相場環境を機械が考えるように仕組めば、非決定性有限オートマトンの遷移に引き込むことができるのではないかと、考えています。
きょうの出来高3,000枚と、あすの出来高3,000枚は、同じ3,000枚でも、相場環境によって違う意味を持つはずです。
相場の上下動には、様々なパターンがありますが、特定のパターンが出現すると、非常に高い確率で、相場はトレンドを形成します。
もっとも有名な「起点パターン」は、ろうそく足の「高値陰線」、「安値陰線」、「長いヒゲ」ではないでしょうか。しかし、ただ単純に、このパターンだけを探し、売買を繰り返しても、利益を上げることはできません。
つまり、「起点パターン+α」が必要なのです。 こうした相似形を探す作業の中で、「正規表現」のロジックに注目しました。
正規表現の起源は、1940年代に遡ります。1940年代に神経生理学者によって熱心に研究され、「神経系統モデル」として、体系立てられました。 その後、このモデルはアメリカの数学者、スティーヴン・コール・クリーネ(Stephen Cole Kleene)によって、手が加えられ、現在の正規表現の基礎となったのです。
彼の功績は、この正規表現だけではありません。帰納的関数論や、クリーネ代数、クリーネ閉包、クリーネの再帰定理、クリーネ不動点定理については、どこかで聞いたことがある言葉だと、思われる方は多いのではないでしょうか。
さて、クリーネが提唱した正規表現の基礎を書けば以下になります。
- 文字列の集合をΣとして考える
- 0文字の文字列(空文字)は正規表現である
- Σ内に含まれる任意の1文字は正規表現である
- 正規表現が2つ連続する連接は正規表現である
- 2つの正規表現の和は、正規表現である
- 正規表現の0個以上の連続(閉包)は正規表現である
- 演算の優勢順位は、閉包、連接、和の順に強い
チャートと何の関係があるの? と怪訝そうにこれを読まれる方がいても、まったく不思議ではありません。 ただ、考えてみてください。何も書かれていない紙に、5分おきに、チャートが描かれてゆく様子をイメージしてください。
09:00と15:10の線の「相関関係」を求めることは、非常に難しいと考えます(そもそも、相関関係があるかどうかも疑問です)。 しかし、09:00と09:05の線には、高い確率で「ギャップ」は存在しません。 09:00の値動きから09:05の値動きを予想することは、09:00から15:10を予想することよりも簡単なはずです。
09:00と09:05、09:05と09:10、09:10と09:15……隣同士の線には、それぞれ、非常に強い相関があり、これは、まさに、正規表現で言う、「閉包の連接」ではないかと考えました。
非常に抽象的なので、少し具体的に、かみ砕いて、ご説明します。
ここに一冊の本があります。 この本の文章から、「社長」という文字を検索するとしましょう。 社長という文字を検索すれば、「社長」、「副社長」、「代表取締役社長」、「社長秘書」、「社長秘書室室長」……様々な「社長」を検索することができるはずです。 しかし、これでは、「正しいシグナル(社長)」を検索することはできないのです。
社長(正しいシグナル)だけを検索したい!
これを検索するときのロジックが、正規表現であり、有限オートマトンの考え方なのです。
ここにひとつの自動売買システムがあります。 この「心臓部分」を見てみましょう。 17の条件にマッチするものだけをシグナルとして扱っています。 開発者(プログラマー)が考えた条件をクリアーするものが、シグナルとして扱われるのですから、これは決定性有限オートマトンに他なりません。
現実の相場では、17項目のうち、16項目マッチし、無視したものの、「急騰・急落」というパターンもあれば、17項目「満点」だけど、損切りとなるものもあります。 これを「決定性有限オートマトンの限界」と考えています。
与えられた仕事しかしない……もちろん、機械ですから、「当たり前」なのですが、少しは考えてくれれば……と思うことは多々あります。
if
b0_check = 1 and
b1_check = 1 and
L_check = 1 and
V_check = 1 and
Z_check = 1 and
Q_check = 1 and
P_check = 1 and
HL_check = 1 and
BX_check = 1 and
S_check = 1 and
KD_check = 1 and
G_check = 1 and
R_book = 1 and
C_book = 1 and
H_book = 1 and
T_book = 1 and
G_book = 1 and
then begin
condition = 1;
end;
難しい話になってしまいましたが、簡単に書けば、目の前に置かれたメロンを切って、食べてみるまで、どのくらい甘いか、分かりません。どのくらい甘いのかを知るために、表面の感触や、変色具合から、「甘さ」を見極めようとします。
食べ頃判断の要素は、まさに、シグナルのフィルターです。しかし、フィルターを通過したメロンでさえ、まだ、早かったというときもあれば、遅かったというときもあります。 システム売買の考え方とは、このような思考回路なのです。 条件があり、これにマッチするときを探すのは、人間よりも早く正確です。 しかし、ひとつでも条件にマッチしなれば、融通は通りません。
システムのメリットは、「機械的な判断」であり、そして、デメリットもまた、融通がきかない「機械的な判断」なのです。
(イラスト : チカダジロー)