日本株式でできるだけ無料でシステムトレードを開発できる環境メモ
日本株式でシステムトレードを開発するにあたり、できるだけ無料で利用できる環境を調べました。
条件は以下のとおりです。
- ある程度無料で検証できること(最初から大きなお金はかけない)
- 信頼性があること
- リアルタイム性があること
J-Quants
👉 公式サイト
サービス概要
日本取引所グループ(JPX)が提供する、投資家向けデータ分析プラットフォーム。株価や財務情報などをAPIで取得できるサービスです。
特徴
- 無料プラン(フリープラン)では、**12週間遅れの日足データ(過去2年分)**が取得可能
- データ取得後、テクニカル分析やシンプルな評価を行うには十分
- さらに多くのデータが必要であれば、有料プランに1ヶ月だけ加入する選択肢もあり(「投資のための投資」と考えるのもアリ)
- スイングトレードで一定の目処が立ったり、AIを活用してファンダメンタル分析を組み込みたい場合は、有料プランを本格的に検討する価値あり
Kabuステーション(kabuステAPI)
👉 公式ドキュメント
サービス概要
auカブコム証券が提供する株式取引用ツール「kabuステーション」と連携して利用できる公式API。株価データや発注機能をプログラムから直接操作できます。
特徴
- Windows環境で「kabuステーション」ソフトを常時起動しておく必要がある
- 早朝に強制ログアウトされる仕様があるため、完全自動化には工夫が必要
- PUSH APIを利用することで、リアルタイムに近い株価データの取得が可能
- デイトレードやスキャルピングなど、短期売買のシミュレーション検証に活用できる
立花証券(e支店)
👉 公式サイト
サービス概要
立花証券が提供する個人向けネット証券サービスで、APIは公式には提供されていませんが、Web画面をPythonで自動操作することで取引を自動化する利用例が過去に共有されていました。
特徴
- 手数料が比較的安く、信用取引の金利も低め
- 公式APIはないため、Selenium などを使った独自実装が必要
- ログイン画面の変更やセッション管理の変化に弱いため、長期運用には向かない
- 取引自動化というより「データ取得用」として割り切る方が現実的
料金・データ比較表
三者の特徴を横並びに整理すると次のようになります(2026年時点の私が確認した範囲の情報です)。
| 項目 | J-Quants | kabuステーション | 立花証券 e支店 |
|---|---|---|---|
| 公式API | あり(REST) | あり(REST/PUSH) | なし |
| 無料で使える範囲 | 12週間遅れ日足 | 口座開設後、月 0〜 | 口座開設のみ無料 |
| リアルタイム性 | ×(遅延あり) | ◎(PUSH対応) | △(画面スクレイプ) |
| 銘柄数 | 全銘柄 | 最大50銘柄同時 | 全銘柄 |
| OS要件 | 不問 | Windows必須 | Windows/Mac |
| 自動化しやすさ | ◎ | ○(強制ログアウト) | × |
Python から J-Quants API を叩く例
J-Quants は REST API なので、以下のように requests ライブラリから直接呼び出せます。
import os
import requests
# リフレッシュトークンは公式マイページで発行
REFRESH_TOKEN = os.environ["JQUANTS_REFRESH_TOKEN"]
# IDトークンを取得
auth_res = requests.post(
"https://api.jquants.com/v1/token/auth_refresh",
params={"refreshtoken": REFRESH_TOKEN},
)
id_token = auth_res.json()["idToken"]
# 日足データを取得(例: トヨタ自動車)
headers = {"Authorization": f"Bearer {id_token}"}
quotes = requests.get(
"https://api.jquants.com/v1/prices/daily_quotes",
headers=headers,
params={"code": "7203", "from": "2025-01-01", "to": "2025-12-31"},
).json()
for q in quotes["daily_quotes"][:5]:
print(q["Date"], q["Close"])
無料プランでも「12週間以上前のデータ」なら過去2年分が取得できるため、スイングトレードのバックテスト用としては十分使えます。
kabuステーション API の呼び出し例
kabuステーション API は、kabuステーション本体を起動した状態でローカルの localhost:18080 に REST リクエストを送る構成になっています。Python からの最小構成は以下のようになります。
import requests
# 事前に kabuステーションの [API] → [API 設定] でパスワードを設定
API_PASSWORD = "your-api-password"
# トークンを取得
token_res = requests.post(
"http://localhost:18080/kabusapi/token",
json={"APIPassword": API_PASSWORD},
)
token = token_res.json()["Token"]
# 銘柄コード指定で現在値を取得
headers = {"X-API-KEY": token}
board = requests.get(
"http://localhost:18080/kabusapi/board/7203@1", # トヨタ東証
headers=headers,
).json()
print(board["CurrentPrice"], board["BidPrice"], board["AskPrice"])
本番モードと検証モードでポート(18080 / 18081)が分かれているため、発注系のテストは必ず検証モードで試すようにしています。
用途別の使い分け
私の経験上、それぞれ次のように役割分担するのが現実的でした。
- バックテスト・スイングトレード検証: J-Quants(遅延データでも影響が小さい)
- デイトレード検証・擬似リアルタイム: kabuステーション(Windows常時起動が許容できる場合)
- 短期〜中期の運用自動化: 最終的には有料データベンダー or 証券会社の独自API
一つのサービスにすべてを任せるのではなく、開発フェーズに応じて組み合わせるのが無料運用を長続きさせるコツだと感じています。
まとめ
やはり、APIでデータを取得できる環境が最も実装しやすいと感じます。
今後は、より多くの証券会社に公式APIの提供を広げてもらえると、個人開発者にとってシステムトレードの環境が一層整うでしょう。