楽天証券の口座でデイトレの自動売買に挑戦しようと、Windows / Excel 上で動作する マーケットスピード II RSS を利用した Python アプリ (Kabuto) を開発しています。
今日の日経平均株価
| 現在値 | 59,284.92 | -632.54 | -1.06% | 15:45 | |
|---|---|---|---|---|---|
| 前日終値 | 59,917.46 | 04/28 | 高値 | 59,560.57 | 09:00 |
| 始値 | 59,484.71 | 09:00 | 安値 | 58,928.20 | 13:32 |
※ 右の 15 分足チャートは Yahoo! Finance のデータを yfinance で取得して作成しました。
【関連ニュース】
- 米消費者信頼感指数、4月は予想外に上昇-見通し改善が寄与 - Bloomberg [2026-04-28]
- OPECに訪れた存亡の危機、UAE脱退で原油市場の均衡揺らぐ - Bloomberg [2026-04-29]
- 【欧州市況】国債利回りが戦争開始以降のピークに接近、テック株売り - Bloomberg [2026-04-29]
- 【米国市況】株下落、OpenAI報道でAI投資の行方を懸念-159円台後半 - Bloomberg [2026-04-29]
- 米3月耐久財コア受注、約6年ぶり大幅増 設備投資が成長下支え | ロイター [2026-04-29]
- グーグル、AIの機密業務利用で米国防総省と合意-社内で反発 - Bloomberg [2026-04-29]
- 【欧州市況】国債、株式とも続落-海上封鎖長期化見通しで原油高 - Bloomberg [2026-04-30]
- FOMC、政策金利据え置きを決定-3人が緩和バイアスの文言に異議 - Bloomberg [2026-04-30]
- アルファベット、四半期売上高が予想上回る-クラウド部門好調 - Bloomberg [2026-04-30]
- 米クアルコム、売上高見通しが予想下回る-スマホ市場の低迷響く - Bloomberg [2026-04-30]
- 米メタ、通期設備投資予測を引き上げ-市場予想上回る、株価下落 - Bloomberg [2026-04-30]
- マイクロソフト、クラウド事業「Azure」力強い伸び-AI需要取り込む - Bloomberg [2026-04-30]
- 【米国市況】円が終盤に一段安、年初来安値を更新-原油高で国債下落 - Bloomberg [2026-04-30]
- アンソロピック、企業評価9000億ドル超で資金調達検討-OpenAI超えも - Bloomberg [2026-04-30]
- 3月鉱工業生産は2カ月連続マイナス、無機・有機化学工業などが低下 - Bloomberg [2026-04-30]
- 中国の製造業活動、4月は拡大維持-イラン戦争に伴う下押し圧力でも - Bloomberg [2026-04-30]
- ファーウェイのAI半導体、需要急増 ディープシークの新モデル発表で | ロイター [2026-04-30]
- 村田製作所株が上場来高値更新、1500億円上限自己株買いや増配を好感 - Bloomberg [2026-04-30]
- 【日本市況】超長期金利が大幅上昇、原油高で円は安値更新-株式下落 - Bloomberg [2026-04-30]
強化学習の沼
5 月の連休にゆっくりバックテストができそうなので、それまでにどれだけ強化学習モデルを育てられるかに挑んでいます。
エージェント
学習・推論用の環境は、下記のように分離しました。ただし、推論環境 InferenceEnv は、学習環境 TrainingEnv を継承しています。
graph LR
subgraph make_env_training
A[TrainingEnv] --> B[[Monitor]]
end
subgraph make_env_inference
C[InferenceEnv] --> D[[Monitor]]
end
B --> E[[DummyVecEnv]]
D --> E[[DummyVecEnv]]
今までの進捗を振り返って、強化学習が実用上使い物になるレベルまで洗練されるには時間がかかりそうです。それまで、粛々と学習と推論の評価を続けるわけにもいかないので、推論用の環境では、エントリ(建玉)と、利確・ロスカットによる返済の妥当性を確認するロジックを加えています。
このやり方を突き詰めると「アルゴリズムで建玉や返済を決めれば良い」ということになり、「わざわざ強化学習モデルを使う必要があるのか?」という本質的な疑問にぶつかってしまいました。
再びアルゴリズムのみの取引に戻すかどうか決めかねていますが、おそらくは、週末からアルゴリズムのみに戻してプログラムを整理してバックテストを始めることになりそうです。
今日、明日は、今までの取り組みを継続します。
学習環境 TrainingEnv(gymnasium.Env)
学習環境の概略です。
- 行動空間 Action Space
- HOLD : 何もしない
- BUY : 「買建」または「返済」
- SELL : 「売建」または「返済」
- 「返済」を行動空間に加えると学習が進まなかったことを踏まえ「返済」は環境側で制御。ナンピン禁止を行動マスクで制御
- PositionType に対する mask [HOLD, BUY, SELL]
- WARMUP [True, False, False](寄り付き後、売買できない期間を設定)
- NONE [True, True, True ]
- LONG [True, False, True ]
- SHORT [True, True, False]
- 観測空間 Observation Space
- 株価、インジケータなど
- MA1 / 始値 : 短周期の移動平均
- MA2 / 始値 : 長周期の移動平均
- Momentum : モメンタム
- Profit : 含み損益
- ProfitMax : 最大含み損益
- n_trade : 約定回数
- count_negative : 含み損の継続カウンタ
- cost_contract : 約定コスト
- dd_ratio : ドローダウン率
- クロス・オシレータ関連
- DiffMA : MA乖離率 = (MA1 - MA2) / MA2
- DiffVWAP : VWAP乖離率 = (MA1 - VWAP) / VWAP
- RSI : 相対力指数
- ポジションを One-Hot エンコーディング
- SHORT [1. 0. 0.]
- NONE [0. 1. 0.]
- LONG [0. 0. 1.]
- 報酬 Rewards
- 建玉なし : ゴールデン/デッド クロス・シグナル近辺の報酬分布の一部をペナルティとして付与
- 建玉保持 : 含み損益の一定割合を付与+前ステップの含み益からの増減の一定割合を付与
- 返済時 : 直前の含み損益を付与
- 約定コスト : 建玉、返済時いずれも固定の約定コスト+α(前回約定時との時間差に応じて)をペナルティとして引く
- 連続含み損 : 許容回数を超えたらペナルティを急激に増大
- 終了条件 Episode End
- terminated
- "目的を達成した/失敗した" など、エージェント側の原因で終了
- 終端として扱う(価値は 0)
- なし(「約定回数の上限で終了」を評価予定)
- truncated
- 時間制限・ステップ制限・データ終端など “外的理由” で終了
- 終端ではない(価値を bootstrap)
- ティックデータが最終行に達した時
- 終了時、建玉があれば強制返済。報酬条件、約定コストは同じ
- 約定回数に応じて報酬付与。現在は 25 回が極大になる式を適用(ただし約定回数は偶数)。
複数のティックデータで学習
特徴量のスケーリングを委ねようと VecNormalize を使用していましたが、問題に直面して使用を諦めたので、まだ特徴量のスケーリングの対応が不十分ですが、少し確認してパフォーマンスを確認しました。
推論用環境
推論トレンド
学習に使用したティックデータ + 本日収集したティックデータを順番に推論しました。
本日分の推論詳細を示しました。
現在、「強化学習モデル+エントリと返済の妥当性を確認アルゴリズム」と、アルゴリズムのみにした場合のパフォーマンス差を評価する検討をしています。
参考サイト
- マーケットスピード II RSS | 楽天証券のトレーディングツール
- マーケットスピード II RSS 関数マニュアル
- 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
- PythonでGUIを設計 | Qtの公式Pythonバインディング
- Python in Excel alternative: Open. Self-hosted. No limits.
- Book - xlwings Documentation



