はじめに
2026年5月18日、kabu STATION API の Ver5.41 アップデートに合わせて eスマート証券の国内株手数料が無料化されました。
しかしこのリリースには「破壊的変更」が含まれており、従来の Python コードが発注時にエラーになるという問題が発生しています。
本記事はこんな方向け
- kabu STATION API を使った自動売買/ボットを運用している
- Ver5.41 以降に「発注が通らない」「API エラーになる」という症状が出ている
- 修正箇所が多くて手作業では時間がかかる
対処ツールを OSS として公開したので、紹介します。
何が変わったか
問題の根本は市場コード TSE (1) の廃止です。
| 項目 | Ver5.41 以前 | Ver5.41 以降 |
|---|---|---|
| 市場コード |
1 ("TSE") |
廃止 |
| 移行先 | — |
9 ("SOR") または 27 ("TSE+") |
| 影響 API | — | 発注・板照会など exchange を指定する全 API |
SOR と TSE+ どちらを使うか
通常は SOR (コード 9) を推奨します。
- SOR (コード 9): 複数市場を横断して最良価格で執行。eスマート証券の手数料無料化もこちらが対象。
- TSE+ (コード 27): 東証を優先して執行。特別な理由がある場合のみ。
自動診断・修正ツール: kabu-sor-migrate
修正箇所を手作業で探すのは漏れが出やすいため、自動で診断・修正するツールを作りました。
git clone https://github.com/ballondol/kabu-sor-migrate
cd kabu-sor-migrate
# まず診断(コードは変更されません)
python migrate.py diagnose your_kabu_script.py
# 問題なければ自動修正
python migrate.py fix your_kabu_script.py
診断の出力例
============================================================
⚠️ kabu STATION API Ver5.41 SOR移行 診断結果
============================================================
対象: your_kabu_script.py
検出件数: 2 件
📄 your_kabu_script.py
行 10 [numeric JSON PascalCase]
現在: "Exchange": 1,
推奨: "Exchange": 9,
行 26 [JSON lowercase]
現在: "exchange": "TSE"
推奨: "exchange": "SOR"
診断だけなら既存コードは一切変更されません。安心して実行できます。
対応しているコードパターン
以下のパターンをすべて検出・修正します。
JSON / dict スタイル
{"Exchange": "TSE"} # → {"Exchange": "SOR"}
{"exchange": "TSE"} # → {"exchange": "SOR"}
{"Exchange": 1} # → {"Exchange": 9}
{"exchange": 1} # → {"exchange": 9}
キーワード引数スタイル
exchange="TSE" # → exchange="SOR"
exchange=1 # → exchange=9
ライブラリ定数スタイル(kabusapi パッケージ使用時)
ExchangeType.TSE # → ExchangeType.SOR
Exchange.TSE # → Exchange.SOR
手動で修正する場合
ツールを使わず手動で修正する場合は、以下を置換してください。
# 修正前
"Exchange": "TSE"
"Exchange": 1
# 修正後
"Exchange": "SOR" # または "TSE+"
"Exchange": 9 # SOR
"Exchange": 27 # TSE+
修正後の確認
修正後は必ず動作確認をしてください。
kabu STATION を起動した状態で、小額で発注テストを行うことを強く推奨します。自動修正後のコードを本番環境で無確認のまま使わないでください。
おわりに
Ver5.41 の破壊的変更は、手数料無料化という良いニュースと同時に来たため見落としがちです。
同じ問題で詰まっていた方の参考になれば幸いです。バグ報告・改善要望は GitHub Issues へどうぞ。
この記事は Zenn の同記事 を Qiita 向けに改稿したものです。