楽天証券の口座でデイトレの自動売買に挑戦しようと、Windows / Excel 上で動作する マーケットスピード II RSS を利用した Python アプリ (Kabuto) を開発しています。今月は、来るゴールデン・ウィークに存分に強化学習モデルのバックテストができるように準備を進めています。
今日の日経平均株価
| 現在値 | 59,716.18 | +575.95 | +0.97% | 15:45 | |
|---|---|---|---|---|---|
| 前日終値 | 59,140.23 | 04/23 | 高値 | 59,763.68 | 15:04 |
| 始値 | 59,407.44 | 09:00 | 安値 | 59,225.37 | 09:04 |
※ 右の 15 分足チャートは Yahoo! Finance のデータを yfinance で取得して作成しました。
【関連ニュース】
- 米失業保険申請は小幅に増加、レイオフは依然抑制水準 - Bloomberg [2026-04-23]
- 米総合PMI上昇、拡大ペースの加速示す-販売価格は22年来の高水準 - Bloomberg [2026-04-23]
- JPモルガン、プライベートクレジット本格参入へ-巨額投資で巻き返し - Bloomberg [2026-04-24]
- 【欧州市況】利上げ観測拡大し、英国債続落-株は方向感欠く動き - Bloomberg [2026-04-24]
- 【米国市況】株安・原油高、イラン停戦崩壊警戒-ドルは159円台後半 - Bloomberg [2026-04-24]
- 消費者物価は5カ月ぶり伸び拡大、中東情勢受けエネルギーの低下幅縮小 - Bloomberg [2026-04-24]
- 【日本市況】日経平均が最高値、インテル決算で収益期待-金利は上昇 - Bloomberg [2026-04-24]
強化学習の沼
月末から始まるゴールデンウィークにゆっくりバックテストができそうなので、それまでにどれだけ強化学習モデルを育てられるかに挑んでいます。
学習環境 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
- 株価、インジケータなど [-inf, +inf](おまかせ「標準化」)
- MA1 / 始値 : 短周期の移動平均
- Profit : 含み損益
- クロス関連 [-inf, +inf](符号が重要なので「標準化」なし)
- DiffMA : MA乖離率 = (MA1 - MA2) / MA2
- DiffVWAP : VWAP乖離率 = (MA1 - VWAP) / VWAP
- カウンタ関連 [0, +inf](おまかせ「標準化」)
- n_trade : 約定回数
- count_negative : 含み損の継続カウンタ
- ポジションを One-Hot エンコーディング
- SHORT [1. 0. 0.]
- NONE [0. 1. 0.]
- LONG [0. 0. 1.]
- 報酬 Rewards
- 建玉なし : ゴールデン/デッド クロス・シグナル近辺の報酬分布の一部をペナルティとして付与
- 建玉保持 : 含み損益の一定割合を付与+前ステップの含み益からの増減の一定割合を付与
- 買建/売建時 : 約定コスト(ペナルティ)+ゴールデン/デッド クロス・シグナル近辺の報酬分布から報酬を付与
- 返済時 : 直前の含み損益を付与
- 約定コスト : 建玉、返済時いずれも固定の約定コストをペナルティとして引く
- 連続含み損 : 許容回数を超えたらペナルティを急激に増大
- 終了条件 Episode End
- terminated
- "目的を達成した/失敗した" など、エージェント側の原因で終了
- 終端として扱う(価値は 0)
- なし(「約定回数の上限で終了」を評価予定)
- truncated
- 時間制限・ステップ制限・データ終端など “外的理由” で終了
- 終端ではない(価値を bootstrap)
- ティックデータが最終行に達した時
- 終了時、建玉があれば強制返済。報酬条件、約定コストは同じ
- 約定回数に応じて報酬付与。現在は 25 回が極大になる式を適用(ただし約定回数は偶数)。
複数のティックデータで学習
昨日、過去のティックデータ全てに対して各 5 エピソード分のファイルリストの順番をシャッフルして初期学習を実施したところ、モデルの報酬トレンドがプラス圏に定着せず、学習量に物足りなさを感じました。
そこで 5 → 20 エピソードに増やして昨晩、新たに学習をさせたところ、初期から報酬トレンドがプラス圏にほぼ定着してしまいました。学習量を増やしたのに拍子抜けの結果になりました。
ティックデータをシャッフルしているので、上手くいかない場合もあるのかもしれません。日々、ティックデータは増えていくので、とりあえず初期学習量を 1 日分のティックデータあたり 5 エピソードに戻すことにしました。
報酬条件を追加してあらためて初期学習
下記の目的で、最近はモデルの初期学習ばかりを実施しています。
- 目的は、報酬でモデルの行動を誘導するコツを掴むことです。
- 題材は、短長周期の移動平均線のクロス・シグナルでエントリさせることです。
- クロス・シグナルでエントリすることが目的であれば、そのためのアルゴリズムを作りますが、それが目的ではありません、念の為。
- → モデルが望ましい行動を取れば、エピソード報酬がプラスになるように報酬設計
学習用のティックデータには移動平均に合わせてあらかじめ報酬分布を作っています。
- 買建
- ゴールデン・クロス時のエントリに対する報酬
- 売建
- デッド・クロス時のエントリに対する報酬
この状況で報酬トレンドはプラス圏に定着するようになりましたが、エントリは依然としてクロス・シグナルに沿っているようには見えません。
もう少し強く誘導してもいいかもしれないと考えて、エントリが逆だった場合のペナルティを加えてみました。
- 買建
- ゴールデン・クロス時のエントリに対する報酬
- デッド・クロス時のエントリに対するペナルティ
- 売建
- ゴールデン・クロス時のエントリに対するペナルティ
- デッド・クロス時のエントリに対する報酬
1 日のティックデータあたりの学習量を 5 エピソードに戻して新たに初期学習をさせました。報酬設計を厳しくしても、報酬トレンドはなんとかプラス圏に残りました。
推論トレンド
学習に使用したティックデータ + 本日収集したティックデータを順番に推論しました。
推論では利確やロスカットを入れています。それでも通算の(シミュレーション上の)収益は大した額にななりません。
本日分の推論詳細を示しました。
売買シミュレーションの売買明細は下記のとおりです。
注文番号 銘柄コード 売買 約定単価 約定数量 損益 備考
注文日時
2026-04-24 09:16:55.957242012 1 9984 買建 5868.0 1 NaN
2026-04-24 09:17:54.082166910 2 9984 売埋 5841.0 1 -27.0 単純ロスカット
2026-04-24 09:17:56.104971886 3 9984 買建 5834.0 1 NaN
2026-04-24 09:18:02.118283987 4 9984 売埋 5830.0 1 -4.0
2026-04-24 09:18:04.119205952 5 9984 売建 5827.0 1 NaN
2026-04-24 09:18:44.261392116 6 9984 買埋 5814.0 1 13.0 ドローダウン利確
2026-04-24 09:18:46.265976906 7 9984 売建 5816.0 1 NaN
2026-04-24 09:24:39.285621881 8 9984 買埋 5796.0 1 20.0 ドローダウン利確
2026-04-24 09:24:41.292150974 9 9984 買建 5792.0 1 NaN
2026-04-24 09:25:03.376605034 10 9984 売埋 5787.0 1 -5.0
2026-04-24 09:25:05.379053116 11 9984 売建 5788.0 1 NaN
2026-04-24 09:27:15.859980106 12 9984 買埋 5817.0 1 -29.0 単純ロスカット
2026-04-24 09:27:17.859225988 13 9984 売建 5823.0 1 NaN
2026-04-24 09:28:36.069082022 14 9984 買埋 5850.0 1 -27.0 単純ロスカット
2026-04-24 09:28:38.086570978 15 9984 売建 5846.0 1 NaN
2026-04-24 09:29:54.382440090 16 9984 買埋 5857.0 1 -11.0 益→損ロスカット
2026-04-24 09:29:56.403312922 17 9984 売建 5861.0 1 NaN
2026-04-24 09:34:09.086606979 18 9984 買埋 5839.0 1 22.0 ドローダウン利確
2026-04-24 09:34:15.089134932 19 9984 売建 5854.0 1 NaN
2026-04-24 09:36:31.219809055 20 9984 買埋 5883.0 1 -29.0 単純ロスカット
2026-04-24 09:36:33.236402035 21 9984 買建 5886.0 1 NaN
2026-04-24 09:39:35.752676010 22 9984 売埋 5859.0 1 -27.0 単純ロスカット
2026-04-24 09:39:37.757611036 23 9984 買建 5861.0 1 NaN
2026-04-24 09:44:28.386259079 24 9984 売埋 5872.0 1 11.0 ドローダウン利確
2026-04-24 09:49:13.315283060 25 9984 売建 5841.0 1 NaN
2026-04-24 09:49:25.366324902 26 9984 買埋 5870.0 1 -29.0 単純ロスカット
2026-04-24 09:49:27.373552084 27 9984 買建 5875.0 1 NaN
2026-04-24 09:54:02.089586973 28 9984 売埋 5912.0 1 37.0
2026-04-24 09:54:04.094320059 29 9984 売建 5913.0 1 NaN
2026-04-24 09:59:21.016161919 30 9984 買埋 5902.0 1 11.0 ドローダウン利確
2026-04-24 09:59:23.004600048 31 9984 買建 5902.0 1 NaN
2026-04-24 10:11:12.925218105 32 9984 売埋 5947.0 1 45.0
2026-04-24 10:11:14.942454100 33 9984 売建 5945.0 1 NaN
2026-04-24 10:15:35.865712881 34 9984 買埋 5973.0 1 -28.0 単純ロスカット
2026-04-24 10:15:37.873572111 35 9984 売建 5973.0 1 NaN
2026-04-24 10:21:20.705820084 36 9984 買埋 5984.0 1 -11.0 益→損ロスカット
2026-04-24 10:21:22.722320080 37 9984 買建 5986.0 1 NaN
2026-04-24 10:21:24.735408068 38 9984 売埋 5982.0 1 -4.0
2026-04-24 10:21:26.747241974 39 9984 売建 5985.0 1 NaN
2026-04-24 10:32:58.904886007 40 9984 買埋 5970.0 1 15.0 ドローダウン利確
2026-04-24 10:33:00.894062042 41 9984 売建 5969.0 1 NaN
2026-04-24 10:38:01.783025026 42 9984 買埋 5945.0 1 24.0 ドローダウン利確
2026-04-24 10:39:01.906418085 43 9984 売建 5917.0 1 NaN
2026-04-24 10:40:54.032305955 44 9984 買埋 5945.0 1 -28.0 単純ロスカット
2026-04-24 10:40:56.035309076 45 9984 買建 5940.0 1 NaN
2026-04-24 10:52:05.898718119 46 9984 売埋 5970.0 1 30.0
2026-04-24 10:52:07.916615963 47 9984 売建 5970.0 1 NaN
2026-04-24 10:57:44.970211983 48 9984 買埋 5949.0 1 21.0 ドローダウン利確
2026-04-24 11:03:36.191855907 49 9984 売建 5902.0 1 NaN
2026-04-24 11:04:34.377187967 50 9984 買埋 5928.0 1 -26.0 単純ロスカット
2026-04-24 11:04:36.392412901 51 9984 買建 5929.0 1 NaN
2026-04-24 11:09:55.241024017 52 9984 売埋 5917.0 1 -12.0 益→損ロスカット
2026-04-24 11:11:29.550215960 53 9984 売建 5912.0 1 NaN
2026-04-24 12:33:19.096071005 54 9984 買埋 5861.0 1 51.0 ドローダウン利確
2026-04-24 12:33:23.112534046 55 9984 買建 5859.0 1 NaN
2026-04-24 12:36:01.471270084 56 9984 売埋 5855.0 1 -4.0
2026-04-24 12:36:03.476455927 57 9984 売建 5856.0 1 NaN
2026-04-24 12:37:49.712742090 58 9984 買埋 5844.0 1 12.0 ドローダウン利確
2026-04-24 12:37:51.709139109 59 9984 売建 5844.0 1 NaN
2026-04-24 12:39:22.052175045 60 9984 買埋 5871.0 1 -27.0 単純ロスカット
2026-04-24 12:39:24.064601898 61 9984 売建 5869.0 1 NaN
2026-04-24 12:42:16.550908089 62 9984 買埋 5880.0 1 -11.0 益→損ロスカット
2026-04-24 12:42:18.563697100 63 9984 売建 5879.0 1 NaN
2026-04-24 12:45:19.256484031 64 9984 買埋 5867.0 1 12.0 ドローダウン利確
2026-04-24 12:45:21.256089926 65 9984 売建 5865.0 1 NaN
2026-04-24 12:48:43.876497030 66 9984 買埋 5892.0 1 -27.0 単純ロスカット
2026-04-24 12:48:45.880898952 67 9984 売建 5891.0 1 NaN
2026-04-24 13:02:16.263433933 68 9984 買埋 5878.0 1 13.0 ドローダウン利確
2026-04-24 13:02:18.265723944 69 9984 売建 5877.0 1 NaN
2026-04-24 13:05:34.717513084 70 9984 買埋 5903.0 1 -26.0 単純ロスカット
2026-04-24 13:05:36.705279112 71 9984 買建 5902.0 1 NaN
2026-04-24 13:11:07.624011993 72 9984 売埋 5876.0 1 -26.0 単純ロスカット
2026-04-24 13:11:09.630553007 73 9984 買建 5877.0 1 NaN
2026-04-24 13:18:42.880261898 74 9984 売埋 5890.0 1 13.0 ドローダウン利確
2026-04-24 13:19:26.992872953 75 9984 売建 5893.0 1 NaN
2026-04-24 13:25:27.905783892 76 9984 買埋 5930.0 1 -37.0 単純ロスカット
2026-04-24 13:25:29.905756950 77 9984 買建 5929.0 1 NaN
2026-04-24 13:41:40.499631882 78 9984 売埋 5941.0 1 12.0 ドローダウン利確
2026-04-24 13:41:42.503470898 79 9984 買建 5942.0 1 NaN
2026-04-24 14:00:57.841245890 80 9984 売埋 5930.0 1 -12.0 益→損ロスカット
2026-04-24 14:17:56.735774994 81 9984 買建 5961.0 1 NaN
2026-04-24 14:54:57.385721922 82 9984 売埋 5942.0 1 -19.0 連続含み損
2026-04-24 15:01:24.537041903 83 9984 買建 5975.0 1 NaN
2026-04-24 15:09:17.760077000 84 9984 売埋 5991.0 1 16.0
2026-04-24 15:09:19.778187990 85 9984 売建 5991.0 1 NaN
2026-04-24 15:24:48.705945015 86 9984 買埋 5984.0 1 7.0 強制返済
--- 実現損益 : -101.0 円/株, 約定回数 : 86 回
約定回数が多いですが、それよりも、多くが見て納得できるようなエントリになっていないことがまず問題だと考えています。
とりあえず、移動平均のクロスシグナルでエントリするように誘導しても、モデルの行動がそのように誘導されているようにはまだ見えません。報酬設計がまだ甘いようです。
今後、評価したい特徴量があるので、観測空間を広げて再学習を始めます。また、週末に今までの成果を整理して今後の方針を検討します。
参考サイト
- マーケットスピード II RSS | 楽天証券のトレーディングツール
- マーケットスピード II RSS 関数マニュアル
- 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
- PythonでGUIを設計 | Qtの公式Pythonバインディング
- Python in Excel alternative: Open. Self-hosted. No limits.
- Book - xlwings Documentation





0 件のコメント:
コメントを投稿