トレードシステム開発日記

今はトレードシステム開発中で、まだまだ完成は遠い。焦らずやっていこうと思う。

きっかけ

もともとは、広範なバックテストをやろうと思い立ったのだった。過去の自分の購入タイミングを元に、売却タイミングのバックテスト等をやっていたのだが、更に範囲を広げようと思った。

となると、購入タイミングを目視で判断するのではなく、自動化したいと思った。手動だとバイアスもかかるし、量に限度がある。なので自動化したくなった。コードに落とすのは、あるいみ究極の客観というか、後知恵バイアスを排除するよい方法のようにも思う。

で、購入タイミングの判断を自動化するなら、それはもうシステムトレードまで行き切った方がよくね?ほぼシステムじゃん、と思い、トレードシステムを作り始めた。

道具の勉強

システム開発はPythonを使っている。経験がほぼなかったので、文法を学ぶところから。

これまで動的型付け?言語をほぼ使ってこなかったので、戸惑う部分もあったが、もう割となれた。mypyやら型アノテーションやら、勉強しながらやっている。ライブラリが充実してるのも、手軽なのもよい。データ分析にはpandasやらnumpyやらが必須なので、こちらも探り探りというところだった。大分慣れた。

チャートパターンの認識とか、Deep Learningを使った方が筋がいいのでは?とも思いつつ、まずは安く早く作ることや、ホワイトボックス感を優先して、別の方法でやっている。

手法の勉強

トレードシステム開発の手法も、平行して勉強している。このあたりは、どう見ても先人の後を歩くほうが効率がよさそう。カーブフィッティング、過剰最適化あたりがやっぱり敵で、色々な手法・方法論がそれを倒すために編み出されてきているっぽい。その優位性探しの原則として、「優位性があるアイデア検討→データで検証」という順がよいらしい。逆だとカーブフィッティングまっしぐらになりそう。あとはウォークフォワード分析。トレードにおいては現状に対する適応が重要に思うが、カーブフィッティングに陥る心配もあって、理想で言うと最適化プロセス自体もシステムの一部とみなして、丸ごと良いシステムに仕上げるのが良いのかもしれない。

このあたりからどうにも学問的素養というか、知性が必要そうになってくる。最適化プロセスも、遺伝的アルゴリズムとか入ってくるし、結果の評価も統計学の素養が必要になってくる。ひとまず、まともに勉強してこなかった、統計学を勉強しなおしている。入門書的なのを数冊読み、教科書を買い、データ解釈的な本を読み、と色々している。Kaggleとか、データ分析を手を動かしてやるのも、やった方がよさそう。ちょっとかじりはじめている。今更ではあるけれど、こういう目的・意味づけをした成果、勉強は割と楽しい。

システム開発

平行してシステムも開発中だけれども、市販のツールではなく、自作している。確かに、バックテストのライブラリは世の中にあるし、なんならTradeingViewでもスクリプトを書いてバックテストはできる。ただ、大体これらは、個別株ブレイクアウト戦略のような、多数ある投資対象の中から選び出して売買するというより、単一の指標(先物とか株価指数とか通貨とか)に対して売買する前提のものが多い。それだと、これまでやってきた米国株ブレイクアウト手法は再現できないので、自作するに至っている。複数商品を扱う戦略の場合、とたんにプログラミング的難易度が上がるように思うが、ここは一応本業がプログラマーなので、なんとかこなせている。

そして、まずは予備検証というか、今までやってきたことが、多少なりとも優位性がある兆しがあるか?というのはすでに見ていて、まあ、やってみる価値はありそうだね、と言うのは確認できている。

スクリーニング、チャート認識、リスク管理、市況管理など、それぞれのモジュールで色々とアイデアはあるものの、手が追い付いていないという感じ。もどかしい部分はある。ひとまず、ハリボテでも一本通して、磨くのは後、と言うスタンスで開発を進めているのが現状である。

ただ、なにぶんシステム全体が自作であるので、解析に便利なツール、みたいなものを作って回るので手が一杯である。売買タイミングをチャート上に表示したりとか、購入後数日後の価格の変化率をヒストグラムで表示したりとか、CUIとか、色々勉強しながら作ってみて、というのをずっとやっている。

感想

システムにしようとすると、あいまいさは許されない。すべてを一から十まで書き起こしてやる必要がある。

おそらく達人クラスになると、うまく定式化できないがこう、みたいなものがあるのだろうが、僕クラスだとそこまでのことはできないので、単純に、今までテキトーにやってきたよね?というのを思い知らされる、という経験をしている。暗黙知の棚卸として、システム開発は割と有効なようにも思う。

あと、「優位性はアルゴが取ってるから人間が勝つのは無理」みたいな言説については、そう思うならとりあえずシステム作ってみたら?と思ったりする。

とある本で、トレードシステムは達人に勝てていないことを指摘したうえで、チェスのAIみたいなものだ、と言っていた。これはしっくりくる。実際、マーケットの魔術師とか見てても、年利数十%ぐらいが多いのよね、システム系魔術師は。

将棋とかチェスのAIを作っているようなものなのかもしれない。トレードシステムの最先端の人たちはAlphaTrade的な境地まで行ってるのだろうか。僕は森田将棋というか、人間の感覚をコードに落とし込むレベルで止まっていて、こんなんでええんやろか?という思いはあるのだけれど。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。