有限オートマトン(finite automaton)という言葉を聞いたことがあるでしょうか? オートマトンとは、有限個の状態と遷移と動作の組み合わせからなる仮想の機械です。 オートマトンの状態は、開始状態から受理状態へと変遷します。

自動販売機がよく例えとして利用されています。 お金を払う、おつりの有無の判断、お金が足りているかの判断、そして、商品とおつりの受け渡し……これがオートマトンの「基礎」です。

システムもまたこれと同じオートマトンだと考えています。

  • シグナルが点灯する(開始状態)
  • 各種フィルターで確認する(遷移)
  • 無視、または、取引(受理状態)

オートマトンには、「決定性有限オートマトン」と「非決定性有限オートマトン」があります。 この差は、決定性有限オートマトンには、「入力がない遷移はあり得ない」という制限があり、非決定性有限オートマトンには、この制限がありません。

この考え方は、システム構築には大変、重要な示唆を含んでいると考えています。

非決定性有限オートマトン的発想をシステムに組み込むことにより、システムが相場のことを考えるようになるのでは……と考えています。

たとえば、出来高判断と言えば、多い、少ない、ぐらいの判断しか出来ないのですが、相場環境を機械が考えるように仕組めば、非決定性有限オートマトンの遷移に引き込むことができるのではないかと、考えています。

きょうの出来高3,000枚と、あすの出来高3,000枚は、同じ3,000枚でも、相場環境によって違う意味を持つはずです。

相場の上下動には、様々なパターンがありますが、特定のパターンが出現すると、非常に高い確率で、相場はトレンドを形成します。

もっとも有名な「起点パターン」は、ろうそく足の「高値陰線」、「安値陰線」、「長いヒゲ」ではないでしょうか。しかし、ただ単純に、このパターンだけを探し、売買を繰り返しても、利益を上げることはできません。

つまり、「起点パターン+α」が必要なのです。 こうした相似形を探す作業の中で、「正規表現」のロジックに注目しました。

正規表現の起源は、1940年代に遡ります。1940年代に神経生理学者によって熱心に研究され、「神経系統モデル」として、体系立てられました。 その後、このモデルはアメリカの数学者、スティーヴン・コール・クリーネ(Stephen Cole Kleene)によって、手が加えられ、現在の正規表現の基礎となったのです。

彼の功績は、この正規表現だけではありません。帰納的関数論や、クリーネ代数、クリーネ閉包、クリーネの再帰定理、クリーネ不動点定理については、どこかで聞いたことがある言葉だと、思われる方は多いのではないでしょうか。

さて、クリーネが提唱した正規表現の基礎を書けば以下になります。

  1. 文字列の集合をΣとして考える
  2. 0文字の文字列(空文字)は正規表現である
  3. Σ内に含まれる任意の1文字は正規表現である
  4. 正規表現が2つ連続する連接は正規表現である
  5. 2つの正規表現の和は、正規表現である
  6. 正規表現の0個以上の連続(閉包)は正規表現である
  7. 演算の優勢順位は、閉包、連接、和の順に強い

チャートと何の関係があるの? と怪訝そうにこれを読まれる方がいても、まったく不思議ではありません。 ただ、考えてみてください。何も書かれていない紙に、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; 

難しい話になってしまいましたが、簡単に書けば、目の前に置かれたメロンを切って、食べてみるまで、どのくらい甘いか、分かりません。どのくらい甘いのかを知るために、表面の感触や、変色具合から、「甘さ」を見極めようとします。

食べ頃判断の要素は、まさに、シグナルのフィルターです。しかし、フィルターを通過したメロンでさえ、まだ、早かったというときもあれば、遅かったというときもあります。 システム売買の考え方とは、このような思考回路なのです。 条件があり、これにマッチするときを探すのは、人間よりも早く正確です。 しかし、ひとつでも条件にマッチしなれば、融通は通りません。

システムのメリットは、「機械的な判断」であり、そして、デメリットもまた、融通がきかない「機械的な判断」なのです。

(イラスト : チカダジロー)