こんにちは、よだかです。
最近、『アルゴリズムトレーディング入門』を久しぶりに読み返しました。
ロバート・パルドの本で、トレーディングシステムの検証、最適化、評価、ウォークフォワード分析などを体系的に扱った本です。
以前にも読んでいるので、今回は最初から最後までじっくり読むというより、ざっと再読しながら、今の自分に引っかかったところをメモしていきました。
やってみると、思っていたより軽い作業でした。
しばらくやっていないことって、なぜか実際より重く感じることがあります。
「本を読み返して、読書メモを作る」というだけなのに、始める前には少し面倒そうに感じていた。
でも、実際にやったら普通にできた。
最近こういうことが結構あります。
久しぶりの作業は、実際の作業量ではなく、「手順を忘れている感じ」まで込みで重く見積もってしまう。
このあたりは、作業そのものだけでなく、自分が認知コストをどう見積もっているのかも時々チェックした方がよさそうです。
本の内容より、自分とのズレが気になった
今回メモしたのは、主に以下のような内容でした。
- ヒストリカルデータとアウトオブサンプルデータ
- オーバーフィッティングの回避
- ウォークフォワード分析
- トレーディングエッジ
- 客観性、規律、一貫性
- リスク管理
- ポジションサイジング
- 戦略の言語化
- 予備検証
- 探索と最適化
この辺りは、アルゴトレーディングをやっている人なら特別珍しい話ではないと思います。

むしろ今回面白かったのは、本の内容そのものよりも、
「今の自分は、この研究工程のどこで詰まりやすいんだろう?」
と考え始めたことでした。
特に気になったのがウォークフォワード分析です。
本では、戦略を検証し、最適化し、ウォークフォワード分析などを通して堅牢性を確認していく流れが体系化されています。
ただ、読みながら一つ疑問が出ました。
そこまで到達する前に、相当な数のアイデアが捨てられているはずでは?
ということです。
ウォークフォワード分析まで持っていく価値のある戦略候補は、最初からそこに存在しているわけではありません。
市場を見て、
「これ、何かあるんじゃない?」
と思い、
仮説を作り、
少し調べ、
簡単な検証をして、
「やっぱり違うな」
と捨てる。
たぶん実際には、この前工程がかなり長い。
そして今の自分に足りていないのは、むしろこちら側なのではないかと思いました。
コードを書く前の部分を鍛えたい
ここ一年ちょっとbotを作ってきて、実装そのものについては以前よりかなり何とかなるようになりました。
もちろん分からないことはいくらでもあります。
インフラやシステム周りの理解もまだまだ必要です。
ただ、それ以上に最近気になっているのが、
市場で起きている現象を、検証可能なエッジ仮説まで言語化する能力
です。
「なんとなく歪んでいる気がする」
ではbotにはできません。
誰が動いているのか。
なぜその人は取引する必要があるのか。
どこに価格形成のズレが出るのか。
そのズレは何を観測すれば確認できるのか。
どんな結果が出たら仮説を捨てるのか。
ここまで言葉にできて初めて、必要なデータや実装も見えてきます。
逆に、ここが曖昧なままコードを書き始めると、実装だけが膨らみます。
これはあまり賢くない。
AIを使えばコード自体はいくらでも増やせます。
でも、自分が理解できていない実装を増やすと、あとで触り直すときの認知コストまで増えていきます。
動くものを増やすことと、自分が扱えるものを増やすことは別です。
最近はこの辺りをかなり意識するようになりました。

BTC積立botも、広い意味では同じ
先週、BTC積立botを作りました。
これは短期売買botではありません。
BTCが大きく調整した局面から積立を始めた場合に、過去どうだったのかを調べ、他資産との比較も行い、その結果をもとに購入頻度や金額を決め、自動執行できる形に落としました。
振り返ってみると、これも広い意味では同じことをしています。
市場を観察する。
問いを作る。
データで確認する。
条件を決める。
実行可能なルールにする。
そしてbotにする。
そう考えると、「エッジ」という言葉を短期的な価格予測能力だけに限定する必要もないのかもしれません。
重要なのは、
市場について持った仮説を、再現可能な意思決定ルールに変換できること
なのだと思います。
一般論は捨てず、自分用に調整する
今回もう一つ考えたのが、一般論との付き合い方です。
アルゴトレーディングには大量の定石があります。
検証方法、オーバーフィッティング対策、リスク管理、システム設計。
経験の少ない領域では、当然こういう一般論に頼る割合が大きくなります。
自分の引き出しがないので、まずは誰かが積み上げたものを借りるしかありません。
ただ、経験が増えてくると、
「一般的にはこう言われているけれど、自分の場合はどうなんだろう?」
というズレも見えてきます。
ここで一般論を捨てる必要はありません。
逆に、自分の経験だけを絶対視するのも危ない。
今のところ自分には、
一般論を初期値として持ち、自分の実測が増えたら重みを調整していく
くらいの扱いが合っている気がします。
一般論としての強さと、自分への適合度は別です。
そして自分への適合度は、自分で動いてみないと分からない。
研究方法そのものも、少しずつ修正・調整していく必要があるのだと思います。
「1日1bot」ではなく「1日1市場テーマ」
読書メモを書いた直後は、
「1日1botアイデアを考えて、実装・検証する」
くらいのことを考えていました。
ただ、これは少し違う気がしてきました。
botを作ることをノルマにすると、実装そのものが目的になりやすい。
それより、
1日1つ、市場について問いを作る
くらいの方がいい。
例えば、
- 今日気になった値動きは何か
- なぜその動きが起きたのか
- 誰が売買していた可能性があるか
- どこに歪みが出ているか
- 何を観測すれば確認できるか
- どうなったら仮説を捨てるか
このくらいまで考える。
結果として何もなければ、それでいい。
むしろ100個考えて95個捨てるくらいでいいのかもしれません。
エッジを見つける能力だけでなく、
エッジではないものを安く捨てる能力
も必要だからです。

自分の研究方法そのものを研究する
今回の再読では、新しいトレード手法を発見したわけではありません。
むしろ書いてあることの多くは、以前から知っていた内容でした。
それでも読み返してよかったと思います。
知識として知っていることと、
今の自分の課題として理解していること
は別だからです。
以前なら検証方法そのものに目が向いていたところで、今回は「そもそも何を検証対象に持ってくるのか」という前工程が気になりました。
同じ本でも、自分の経験値が変わると引っかかる場所が変わります。
しばらくは、
市場を見る → 問いを作る → 仮説を言語化する → 小さく検証する → 捨てるか深掘りする
という部分を意識的に回してみます。
botを増やすより先に、自分の中の「エッジ探索器」を少し鍛えてみる。
今の自分には、そちらの方が必要そうです。
それでは、また。