出航と潜伏──自動売買の夜明けと、封印された5年間

FX自動売買基盤『The XVI Architecture』と陸奥(Mutsu)の開発秘話を象徴するコンセプトイメージ

前回:洗礼──2002年の初陣で味わった敗北と、人間の弱さ

この記事は、シリーズ『陸奥 開発秘話』の第3回です。前回は、2002年の初陣で味わった敗北と、そこから見えてきた“人間の弱点”を振り返りました。今回は、自動売買との出会いと、金融案件によって封印されるまでの“静かな5年間”を辿ります。

目次

1. 出航:自動投資システムの夜明け

まずはじめに、私が要件定義した内容を分かりやすく1行で言うとこれです。

「取り決めたルールにしたがって、株式を自動売買できること」

そして、それを実現するためのヒントを見つけるべく、いくつか本を買って、より詳細に設計を詰めていきました。

しかし、ある程度のルールで株を売買しようと試みたところ、あるひとつの重大な問題に気づきます。
それは、時間をかけて面倒な分析を丹念に実行し、それを元に実際に取引しようとしたとき、そのタイミングと価格で取引できないことがあるのです。
なぜでしょうか。それは、その価格帯で買いたい人、売りたい人がすでに大量に溢れており、私が今更参入しようとしても遅いからです。
これなら儲かると思うものを見つけても、好きなタイミングで売買できないのです。

注文を出しても約定しない。
あるいは、約定したときには価格が大きく滑っている。
この板の薄さという『物理的な制約』が、私のロジックを無力化していました。

1.1. 聖域の放棄 ── 「株」から「為替」へのピボット

小学生の頃から、「株で絶対に大儲けしてやる」そんな野心めいたものを持ち続けてきました。
しかし、板の薄さという“物理的な制約”が、私のロジックを無力化します。
どれだけ分析を重ねても、好きなタイミングで約定できないのです。

では、より多くの銘柄を見定めればいいのではないか。
そう考えて、スクリーニングの自動化も視野に入れて検討しました。
だが、数千社を対象に「1社ずつ見定める」というアプローチ自体が、どう考えても筋が悪いです。
おそらく1日でスクリーニングが終わらないでしょう。──そう、私は静かに結論を出しました。

だから私は、子供の頃からのこだわりを、ここであっさりと捨てることにしました。
捨ててどうするのか。
視線を向けたのは、世界最大の流動性を誇り、どれほど巨大な注文であっても一瞬で飲み込んでしまう、底知れぬマーケット。

『為替(FX)』の世界へ、私は舵を切りました。

1.2. 新たな聖域の創造

当初、株式の自動売買のために構築していたのは、お世辞にも「スマート」とは言えないシステムでした。

自宅サーバーを立ち上げ、Excelで定義した内容にしたがい、UWSC(Windows操作マクロツール)でブラウザを無理やり操作して注文を出す。
画面のレイアウトひとつで崩壊しかねない、危うい橋を叩きながら渡るような構成です。

もちろん、この構成でも、証券会社との通信パケットを解析し、画面レイアウトが変わる程度であれば影響を受けないシステムを作ることはできました。
が、それに必要な労力を考えると頭の痛いところではありました。

そのため、ターゲットを為替(FX)に変えるなら、この継ぎはぎのシステムも捨てるべきです。
私はより「ネイティブ」で「堅牢」な、エンジニアとして納得できるプラットフォームを探し始めました。

そして2005年。私は運命のツールに出会います。MetaTrader 4(MT4) です。
当時、ライバルとしてTradeStationも存在しましたが、私がMT4を選んだのには、エンジニアとしての譲れない理由がありました。

1.2.1. プラットフォームの汎用性

特定の証券会社に縛られず、世界中のブローカーが採用している「共通基盤」であること。
これは、OSやフレームワークを選ぶ感覚に近いものです。

1.2.2. 言語の親和性

専用の独自言語ではなく、C言語に極めて近いMQL41で記述できること。

アセンブリ言語やC言語を叩き込んできた私にとって、これは単なる「投資のツール」ではありません。
紛れもなく「開発環境」でした。ようやく、自分の土俵で戦える準備が整ったのです。

1.3. 最初の一歩

2007年。離婚を経て、私の生活環境はリセットされていました。
そんな折。MetaTrader 4を得た私は、FX自動売買システムの開発に着手することにしました。

2008年4月。自分のイニシャルを冠しただけの「NKTrading」は、最初はただの検証用プログラムとして産声を上げました。
だが、書き始めると止まりません。注文処理、前日トレンド分析、さらにはモンテカルロ法2によるマネーマネジメント3
更新履歴は、私の熱量に比例するように、Ver.0.001から0.017まで、わずかな期間で積みあがっていきました。

1.4. リアルの洗礼と「封印」への予兆

取引所の口座仕様に振り回され、ロット計算のロジックを書き換える。
バックテスト4の結果に一憂し、パラメーターを調整。
実取引に向けた洗礼を受けますが、着々と整備を進めていました。

だが、この頃の私はまだ知りません。
この後、証券システムの深部に触れる仕事に就き、この「NKTrading」という戦友を、長きに渡って封印することになることを。

2. 潜伏:沈黙の5年と「なでしこ」によるデータ蓄積

2009年。私はこれまで、金融系の案件だけは避け続けてきたのですが、何事も食わず嫌いは良くありません。
ここらで金融系の案件を経験しておくのも悪くないだろう。そう思って、日本の証券システムの深部へと赴くのでした。

結果、その案件があまりにも多くの証券取引の根幹に関わっていたため、私は為替や株の取引を一切停止することにしました。
インサイダー取引5の疑念を招く行為は、プロとして万に一つもあってはならないからです。NKTradingの開発も、Ver.0.017で時を止めました。

だが、牙を抜かれたわけではありませんでした。
私は、特定の取引所から相場データを抽出・蓄積するプログラムを、日本語プログラミング言語『なでしこ』で書き上げました。


なでしこロゴ

クジラ飛行机さんの日本語プログラミング言語『なでしこ』には大変お世話になりました。

なぜ、一風変わった言語を選んだのでしょうか。
「日本語で書ける」という好奇心も確かにある。

だが、それだけではありません。
長年仕様書を書き続けてきた私にとって、それは「仕様書のようなものを書けば、そのまま動く」という魔法のような体験だったからです。


なでしこコード03

一部抜粋。仕様書のようなものを書けばと言っているものの、プログラムコードっぽいかも・・・。

このプログラムが、淡々とSQLiteへ為替レートを刻み込み続けました。
私が仕事で不在の間も、夏の猛暑でエアコンが唸る部屋の中でも。

厳密には、2011年の東日本大震災の際に、電力不足への協力として一時的にその火を消しました。
言い換えると、それ以外では「静かなる観測」は5年もの間、止まることはありませんでした。

次回は、文鎮と化した陸奥が再び動き出し、AWS・Pythonとの邂逅によって訪れた“覚醒”の瞬間をお話しします。

次回:覚醒と転換──文鎮化した陸奥が再び動き出す瞬間


  1. MQL4
    MetaTrader 4専用のプログラミング言語。
    C++をベースにしており、自動売買ロジック(EA)の記述に特化している。↩︎

  2. モンテカルロ法
    ランダムな値を大量に生成し、未来の結果を確率的に予測する手法。
    複雑な確率現象、物理シミュレーション、金融リスク分析、円周率の近似計算などに広く用いられる。
    試行回数が多いほど正しい値に近づくのが特徴。↩︎

  3. マネーマネジメント(資金管理)
    資金配分やリスク量を管理する考え方。
    投資における“生命線”とも言える概念。
    どれだけ優れた売買ロジックを持っていても、資金管理が破綻していれば最終的には市場から退場することになる。↩︎

  4. バックテスト
    過去の価格データを使って、売買ルールがどのような成績を残したかを検証する手法。
    実際に資金を投入する前に、ロジックの強みや弱点、想定されるドローダウンなどを把握できる。
    ただし、過去に通用したからといって未来も通用するとは限らない。
    そのため、“過剰最適化(オーバーフィッティング)”に陥らない設計が重要となる。↩︎

  5. インサイダー取引
    未公開の重要事実を知る者が、その公表前に対象銘柄を売買すること。
    証券業務に携わるエンジニアには非常に厳格な制限が課せられる。↩︎

目次