自動売買の再構築、決められなかったことが決まった話
先日、恥ずかしい失敗をしました。朝、いつも通り決済したつもりで一日を過ごしていたのですが、その日はずっと忙しく、スマホを確認する余裕もありませんでした。家に帰ってようやく一息つき、当日分の新規注文を入れたところで気づきました。前日の建玉が、決済されないままそのまま残っていたのです。
決済したつもりが、実はできていなかった。しかも気づいたのは半日以上経ってからです。手動でトレードしている今でも、こういうことは起こります。そして実はこれ、前回の記事に書いた自動売買の再構築の検討で、ずっと引っかかっていたものと根っこは同じ問題でした。
前回、自動売買化を検討中と言いながら何も決められていない、という記事を書きました。UWSCが使えるかも分からない、設計の方向性も定まっていない、そもそも今の成績で投資する判断がつかない。書き出してみると、進んでいない理由ばかりがはっきりする、そんな内容でした。
あれから特に何か大きなきっかけがあったわけではないのですが、今日は腰を据えて、止まっていた項目を一つずつ潰していきました。結果として、検討すべきことはほぼ全部決まりました。今日はその過程をそのまま書いておこうと思います。
止まっていた本当の理由は、UWSCではなかった
「UWSCが使えるかどうか」が検討の入り口で止まっていた最大の理由だと思っていたのですが、改めて自分に聞き直してみると、少し違いました。6年間の自動売買環境で一番こたえていたのは、ログインが不安定で、結局スマホでポジションの有無を確認しに行っていたことです。そして、それが「自動化していても心のどこかで見ておかないと落ち着かない」という感覚につながっていました。
冒頭に書いた前日の建玉の一件も、まさにこれです。決済できたかどうかを確認する手段がなかったから、半日以上気づけなかった。つまり本当の不満は、発注操作そのものではなく、「発注や決済がちゃんとできたかどうかを、自分で見に行かなくても確認できる手段がなかった」ということだったわけです。ここが分かったことで、再構築の設計の軸がはっきりしました。前と同じものを作るのではなく、実行結果を確認する仕組みを最初から組み込む。これが今回の一番の方針です。
UWSCは、今も一応使える
肝心のUWSCですが、調べてみるとWindows11でも基本的には動作するようです。ただし、開発自体は数年前に終わっていて、今公開されているものが恐らく最終バージョンです。今動いているからといって、この先もずっと動く保証はありません。また、Internet Explorer関連の操作コマンドは、Windows11にIEが搭載されていないため使えなくなっています。幸い、以前の仕組みは画面上でマウスを動かしてクリックする形の自動化だったので、IEを直接操作する処理さえ入っていなければ、この制限は影響しないはずです。
監視の仕組みを、発注ロジックより先に決めた
普通に考えれば、まず「どうやって陽線・陰線を判定して発注するか」から設計しそうなものですが、今回はあえて監視の仕組みから決めました。ここが今回の教訓を一番反映させたい部分だからです。
発注や決済が成功したかどうかは、実行ログとスクリーンショットの両方で残す。証券会社側のAPI連携に頼る方法も考えたのですが、今使っているGMOクリック証券のCFD口座にそういう機能があるかどうか、調べても確証が持てませんでした。だとしたら、証券会社側の対応状況に左右されない、自分で完結できる方法を選んだ方が確実だという判断です。
異常を検知したときの通知先はDiscordにしました。以前使えていたLINE Notifyはもうサービス終了しているので、今から組むなら別の手段が必要でした。Discordは無料でWebhookという仕組みを使えば、プログラムからスマホへの通知が組めます。通知を受け取ったら、リトライはせず、即座に「手動対応が必要」と分かる形にする。中途半端に自動でリトライさせるより、失敗したことがすぐ分かる方が、冒頭の建玉のような見落としを根本から防げると考えたからです。
PCの予備は、あえて用意しないことにした
前回の環境は、専用PC1台が電源の故障で丸ごと壊れて終わりました。この反省を活かすなら予備機やクラウド環境を用意するのが筋かもしれませんが、今回はそこまではしないことにしました。壊れたらまた手動運用に戻せばいい。以前もそうしてきたわけですし、コストをかけてまで冗長化するほどの規模でもありません。何でも手厚くすればいいというものでもないと思っています。
着手する基準を、数字で決めた
一番の懸案だった「いつ投資に踏み切るか」も、数字で決めました。理論値バックテストの直近12か月のローリング平均が、日経平均-NYダウ手法かTOPIX-S&P500手法、どちらか一方でもプラスに転換したら着手する、という基準です。
両方揃うのを待つ必要はないだろうと考えました。仕組み自体は両方の手法に対応させて作っておいて、実際に有効化するタイミングだけ、先に回復した方から順にする。発注ロジックや監視の仕組みは、指数と銘柄が違うだけでほぼ共通なので、後から追加する分の手間はそれほど大きくないはずです。
コストを計算していたら、Excelの壁にぶつかった
ここまでは順調だったのですが、最後のコスト見積もりで一つ引っかかりました。以前の判定ロジックはExcelのVBAマクロで組んでいたのですが、今、手元にExcelのライセンスがありません。
だったら判定ロジックをExcelなしで、無料で作り直せばいいのではと考えたのですが、そう単純でもありませんでした。日経平均・TOPIXの始値終値を取得していたマーケットスピードIIのRSS機能は、Excel専用の仕組みです。Excelをやめるということは、判定ロジックの書き直しだけでなく、データの取得方法自体を一から探し直すということでもありました。
無料で使えそうな代替手段もいくつか調べてみました。日経平均プロフィルの公式ダウンロードセンターは無料でCSVを提供していますが、当日分がいつ反映されるか分からず、自動売買の判定に使ってよいかも規約上はっきりしません。Yahoo!ファイナンスの非公式なデータ取得も試算しましたが、いつ仕様変更で使えなくなってもおかしくない上に、TOPIXの方は精度が落ちる傾向があります。他にもいくつかのデータ配信サービスを見てみましたが、当日の取引に間に合うタイミングで、日経平均とTOPIXの両方を、自動取得できる形で、無料で提供しているところは見つかりませんでした。
判定に使う数字が不正確だったり、ある日突然取れなくなったりするリスクを考えると、これは節約するところではないと判断しました。結局、Office Home 2024を買い切りで購入し、実績のあるマーケットスピードIIのRSSをそのまま使う方針にしました。
結局、費用はこれくらい
最終的な見積もりはこうなりました。
- PC本体(新規購入):5万円前後
- Office Home 2024(買い切り、Excel込み):41,380円
- UWSC・Discord・タスクスケジューラ:0円
- 継続的にかかるのは電気代くらい
初期費用でおよそ9万円台、その後の継続コストはほぼ電気代のみという計算です。サブスクリプションのような毎月の出費が積み重なる構成ではないので、これなら着手基準を満たしたときに、そこまで悩まずに動けそうです。
おわりに
前回の記事では「進んでいません」という報告しかできませんでしたが、今回は腰を据えて一つずつ言葉にしていっただけで、ここまで具体的な形になりました。止まっていた本当の理由が「UWSCが使えるかどうか」ではなく「実行結果を確認する手段がなかったこと」だと気づけたのが、今回一番大きな収穫だったと思います。
冒頭の建玉の一件は、正直かなり凹みました。ただ、この失敗があったからこそ、監視の仕組みを何より優先して設計する、という今回の方針に迷いがなくなったのも事実です。あとは、理論値バックテストの直近12か月平均を定期的に確認しながら、着手基準を満たす日を待つだけです。動きがあれば、またこの場で報告します。

