2025-11-03

自動売買への道 (2025-11-03)

楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用して Python であれこれ取り組んでいます。この「自動売買への道」のトピックでは、プログラミングの話題にも踏み込んで、日々の活動をまとめていきます。

デイトレ用自作アプリ

以下は株価に関連する情報の流れを示しています。

株価データの流れ(Windows 11)

楽天証券では、Python からネットワーク越しに直接取引できるような API が提供されていないので、マーケットスピード II RSS を介して取引をする構成を取っています。

現在、強化学習を利用して、取引モデルを育成中です。

報酬設計の評価 2025-11-03

条件を変えながら報酬設計を試しているうちに、モデルの推論パフォーマンスが落ちてきて、遂に収益がマイナスばかりになってしまいました。そこで、一旦シンプルな報酬設計に戻して、ひとつひとつ変更を確認してそれを簡単にまとめながら進めることにしました。

強化学習のチューニングの話題は、現在のところ、自分のためだけの備忘録と化してしまっています。🙇🏻

推論に使用するティックデータ : ticks_20251019.xlsx, 7011

推論に使用するティックデータは 9:00:00 から 15:24:50(ランチタイムを除く)までの 19,490 ステップ(最大)のティックデータです。実際には寄り付いてからのデータになります。

今のところ、推論に使用する過去のティックデータは以下 (ticks_20251019.xlsx, 7011) に固定しています。

含み損にペナルティを付与 ①

前回の評価で、いつも同じようなタイミングで大きめの損失が出ていることが気になりました。そこで、含み損が出ている時の保持回数をカウントし、下記のようなロジックでペナルティを付与してみました。

\[ if\quad{PnL}_{unrealized} \lt 0\quad{:}\\[2mm] \quad{reward} \mathrel{+}= {PnL}_{unrealized} \times (1 + {count}_{HOLD} \times {ratio}) \]

動作確認のため ticks_20251019.xlsx, 7011 で学習および推論をしました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                    注文日時 銘柄コード        売買  約定単価  約定数量   損益
0    2025-09-19 09:01:22  7011        売建  3719     1  NaN
1    2025-09-19 09:01:27  7011        買埋  3720     1 -1.0
2    2025-09-19 09:01:36  7011        売建  3718     1  NaN
3    2025-09-19 09:01:56  7011        買埋  3717     1  1.0
4    2025-09-19 09:02:50  7011        買建  3711     1  NaN
..                   ...   ...       ...   ...   ...  ...
285  2025-09-19 15:16:12  7011        買埋  3686     1 -3.0
286  2025-09-19 15:17:12  7011        売建  3685     1  NaN
287  2025-09-19 15:18:40  7011        買埋  3687     1 -2.0
288  2025-09-19 15:18:50  7011        売建  3685     1  NaN
289  2025-09-19 15:24:59  7011  買埋(強制返済)  3689     1 -4.0

[290 rows x 6 columns]
一株当りの損益 : 25.0 円
モデルへの報酬分布
n: 19387, mean: 0.001, stdev: 0.005
観測数 : 9

報酬分布

観測値のトレンド

含損益のトレンドは、含み益が出る方向を示しているように見えます。

含み損にペナルティを付与 ②

過去 51 日分のティックデータで順番に学習したモデルに対して ticks_20251019.xlsx, 7011 のデータで推論をしました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                    注文日時 銘柄コード  売買  約定単価  約定数量   損益
0    2025-09-19 09:04:04  7011  売建  3722     1  NaN
1    2025-09-19 09:04:16  7011  買埋  3717     1  5.0
2    2025-09-19 09:04:44  7011  売建  3723     1  NaN
3    2025-09-19 09:04:46  7011  買埋  3720     1  3.0
4    2025-09-19 09:06:51  7011  売建  3728     1  NaN
..                   ...   ...  ..   ...   ...  ...
295  2025-09-19 15:11:40  7011  買埋  3681     1  2.0
296  2025-09-19 15:11:43  7011  売建  3683     1  NaN
297  2025-09-19 15:11:44  7011  買埋  3683     1  0.0
298  2025-09-19 15:11:57  7011  売建  3683     1  NaN
299  2025-09-19 15:12:00  7011  買埋  3681     1  2.0

[300 rows x 6 columns]
一株当りの損益 : 61.0 円
モデルへの報酬分布
n: 19387, mean: -0.000, stdev: 0.002
観測数 : 9

総収益は確かにプラスにはなっていますが、13 時過ぎに大きめの損失が出ています。ただし、スケールを考慮すると対して大きな損失ではありません。むしろ小さな収益を頻繁に重ねているのが気になります。

報酬分布

学習を重ねると、平均値が 0 になり標準偏差が小さくなり、対数軸ではありますが、まるで正規分布に回帰してしまっているみたいです。

観測値のトレンド

取引回数が 300 回程度と、それほど大きくないのに、含損益のトレンドの起伏がほとんどありません。学習を重ねると、損失がでないが収益も上がらない方向に学習が進んでしまっているようにも見えます。

まとめ

よくよく考えてみると、含み損にペナルティを与えるだけでは、含みがある時に長く建玉を持つようには学習しません。いっそのこと建玉を保持している時に損益に応じて報酬・ペナルティを与えることを評価してみます。


🎯 建玉保持に報酬・ペナルティ付与

建玉を保持している間、損益の符号に応じて報酬・ペナルティを付与した場合のモデルの挙動についてまとめました。

いままでの評価では、過去の複数データで学習を重ねると、対数軸とは言え、報酬分布がなんとなく報酬 0 を中心とする正規分布に回帰してしまっているように見えて不満だったのですが、今回は顕著な差を確認できました。そのため、今後のチューニング材料にするために備忘録として残します。

以下のようなロジックで確認しました。

\[ if\quad{PnL}_{unrealized} \gt 0\quad{:}\\[1mm] \quad{reward} \mathrel{+}= {PnL}_{unrealized} + {count}_{HOLD} \times {ratio}\\[3mm] if\quad{PnL}_{unrealized} \lt 0\quad{:}\\[1mm] \quad{reward} \mathrel{+}= {PnL}_{unrealized} - {count}_{HOLD} \times {ratio} \]

建玉を持っていることで含み益であれば報酬を、含み損であればペナルティを付与しますが、持てば持つほど報酬あるいはペナルティが比例的に増えるという設定です。現時点では、含み損益の大きさに関係なく、保持時間(回数)に応じて算出した報酬・ペナルティを付与しています。

なお、含み益の大きさにも対応させるには、

\[ {reward} \mathrel{+}= {PnL}_{unrealized} \times (1 + {count}_{HOLD} \times {ratio}) \]

とすれば良いのですが、シンプルさを優先したかったので、今回は見送りました。今後の課題とします。

このような報酬・ペナルティは、ややもすると、モデルが建玉をずっと持ち続けてしまう状態になってしまう可能性があります。

数式で示したロジックの countHOLDratio に相当する部分の設定です。

"""
含み損益の保持のカウンター
含み損益のインセンティブ・ペナルティ比率
"""
self.count_unreal_profit = 0
self.ratio_unreal_profit = 0.0001

self.ratio_unreal_profit0.000001, 0.00001, 0.0001 と増やして確認しましたが、下記の条件での確認結果を残しました。

  1. self.ratio_unreal_profit = 0.00001
    • 1 個のファイルの初期学習で分布がプラス側に偏っている。
    • 51 個の複数ファイルでの学習では報酬分布が収束した
  2. self.ratio_unreal_profit = 0.0001
    • 1 個のファイルの初期学習で分布がプラス側に偏っている。
    • 51 個の複数ファイルでの学習でも報酬分布が収束しなかった

建玉保持に報酬・ペナルティ付与 1. self.ratio_unreal_profit = 0.00001

self.ratio_unreal_profit = 0.00001 は、ザラ場中(最大 19,490 ステップ前提)に株価が単調に上昇あるいは下降している局面で、ひたすら報酬・ペナルティ付与し続けることになっても、1 ステップあたりの報酬・ペナルティの絶対値が 1 を超えない比率です。

※ 報酬の基本設計は 1 ステップの報酬の絶対値が 1 を超えないようにしています。

まず ticks_20251019.xlsx, 7011 で学習および推論をしました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                   注文日時 銘柄コード        売買  約定単価  約定数量   損益
0   2025-09-19 09:01:09  7011        売建  3714     1  NaN
1   2025-09-19 09:01:44  7011        買埋  3717     1 -3.0
2   2025-09-19 09:01:50  7011        買建  3716     1  NaN
3   2025-09-19 09:02:19  7011        売埋  3713     1 -3.0
4   2025-09-19 09:02:27  7011        売建  3711     1  NaN
..                  ...   ...       ...   ...   ...  ...
93  2025-09-19 15:22:44  7011        買埋  3685     1  4.0
94  2025-09-19 15:22:45  7011        売建  3685     1  NaN
95  2025-09-19 15:24:47  7011        買埋  3689     1 -4.0
96  2025-09-19 15:24:51  7011        売建  3689     1  NaN
97  2025-09-19 15:24:59  7011  買埋(強制返済)  3689     1  0.0

[98 rows x 6 columns]
一株当りの損益 : 21.0 円
モデルへの報酬分布
n: 19387, mean: 0.017, stdev: 0.023
観測数 : 9

報酬分布

報酬分布は、平均値 (mean) が示すとおり、プラス側に偏っています。

観測値のトレンド

建玉保持に報酬・ペナルティ付与 1. self.ratio_unreal_profit = 0.00001

過去 51 日分のティックデータで順番に学習したモデルに対して ticks_20251019.xlsx, 7011 のデータで推論をしました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                     注文日時 銘柄コード        売買  約定単価  約定数量   損益
0     2025-09-19 09:01:04  7011        売建  3719     1  NaN
1     2025-09-19 09:01:05  7011        買埋  3719     1  0.0
2     2025-09-19 09:01:06  7011        売建  3718     1  NaN
3     2025-09-19 09:01:08  7011        買埋  3714     1  4.0
4     2025-09-19 09:01:12  7011        売建  3713     1  NaN
...                   ...   ...       ...   ...   ...  ...
8269  2025-09-19 15:24:42  7011        買埋  3687     1  2.0
8270  2025-09-19 15:24:48  7011        買建  3688     1  NaN
8271  2025-09-19 15:24:49  7011        売埋  3688     1  0.0
8272  2025-09-19 15:24:59  7011        買建  3689     1  NaN
8273  2025-09-19 15:24:59  7011  売埋(強制返済)  3689     1  0.0

[8274 rows x 6 columns]
一株当りの損益 : -173.0 円
モデルへの報酬分布
n: 19387, mean: -0.001, stdev: 0.004
観測数 : 9

学習を重ねるた結果、売買頻度が増えてしまいました。建玉を保持している時間(ステップ数)に比例して付与する報酬・ペナルティが、学習するには小さすぎるのかもしれません。

報酬分布

学習を重ねると報酬分布は、平均値 (mean) が示すとおり、0 近辺に戻って、標準偏差 (stdev) も小さくなってしまいました。

観測値のトレンド

取引頻度が増加に反比例するかのように、含損益の起伏が少なくなってしまいました。


建玉保持に報酬・ペナルティ付与 2. self.ratio_unreal_profit = 0.0001

self.ratio_unreal_profit = 0.0001 は、ザラ場中(最大 19,490 ステップ前提)に株価が単調に上昇あるいは下降している局面で、ひたすら報酬・ペナルティ付与し続けると、1 ステップあたりの報酬・ペナルティの絶対値が 10,000 秒(≈ 166 分)で 1 を超えてしまう比率です。

※ 報酬の基本設計は 1 ステップの報酬の絶対値が 1 を超えないようにしています。

まず ticks_20251019.xlsx, 7011 で学習および推論をしました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                    注文日時 銘柄コード        売買  約定単価  約定数量   損益
0    2025-09-19 09:01:12  7011        売建  3713     1  NaN
1    2025-09-19 09:01:21  7011        買埋  3717     1 -4.0
2    2025-09-19 09:01:22  7011        売建  3719     1  NaN
3    2025-09-19 09:01:32  7011        買埋  3718     1  1.0
4    2025-09-19 09:01:38  7011        売建  3719     1  NaN
..                   ...   ...       ...   ...   ...  ...
367  2025-09-19 15:18:09  7011        買埋  3688     1 -2.0
368  2025-09-19 15:18:11  7011        売建  3688     1  NaN
369  2025-09-19 15:19:55  7011        買埋  3688     1  0.0
370  2025-09-19 15:19:56  7011        売建  3688     1  NaN
371  2025-09-19 15:24:59  7011  買埋(強制返済)  3689     1 -1.0

[372 rows x 6 columns]
一株当りの損益 : 27.0 円
モデルへの報酬分布
n: 19387, mean: 0.104, stdev: 0.151
観測数 : 9

報酬分布

報酬分布は、平均値 (mean) が示すとおり、プラス側に偏っていて、形状もいびつです。

観測値のトレンド

建玉保持に報酬・ペナルティ付与 2. self.ratio_unreal_profit = 0.0001

過去 51 日分のティックデータで順番に学習したモデルに対して ticks_20251019.xlsx, 7011 のデータで推論をしました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                    注文日時 銘柄コード        売買  約定単価  約定数量    損益
0    2025-09-19 09:02:29  7011        買建  3710     1   NaN
1    2025-09-19 09:02:32  7011        売埋  3712     1   2.0
2    2025-09-19 09:02:43  7011        買建  3710     1   NaN
3    2025-09-19 09:02:50  7011        売埋  3711     1   1.0
4    2025-09-19 09:02:53  7011        買建  3710     1   NaN
..                   ...   ...       ...   ...   ...   ...
473  2025-09-19 13:19:15  7011        売埋  3598     1  -6.0
474  2025-09-19 13:19:16  7011        買建  3596     1   NaN
475  2025-09-19 13:19:17  7011        売埋  3596     1   0.0
476  2025-09-19 13:19:19  7011        買建  3597     1   NaN
477  2025-09-19 15:24:59  7011  売埋(強制返済)  3689     1  92.0

[478 rows x 6 columns]
一株当りの損益 : -13.0 円
モデルへの報酬分布
n: 19387, mean: 0.360, stdev: 0.270
観測数 : 9

13:00 前後で取引が頻繁になってしまっていることが残念です。

報酬分布

総収益はマイナスになってはいますが、報酬分布を見ると、分布幅が収束せずに複数の学習を経ても分布が極端に偏っているのが維持されています。

1 ステップの報酬は、tanh で [-1, 1] に収まるようにしていて、追加の「建玉保持に報酬・ペナルティ付与」を例外的にそのまま扱っています。そのため、報酬分布に 1 を超えたものがあります(最後の強制決済時の報酬)。今後、スケーリングの整合性を検討します。

観測値のトレンド

前述したように 13:00 前後で取引が頻繁になってしまっていることが残念でが、「含損益」のトレンドはおおむね期待通りにプラス側(含み益側)に偏っています。

建玉保持に報酬・ペナルティ付与 2. self.ratio_unreal_profit = 0.0001

念の為、さらに追加学習(強化学習)をして、報酬分布が想定外に収束してしまわないことを確認しました。

学習済みモデルに対して、さらに過去 51 日分のティックデータで順番に追加学習したモデルに対して ticks_20251019.xlsx, 7011 のデータで推論をしました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                    注文日時 銘柄コード        売買  約定単価  約定数量    損益
0    2025-09-19 09:01:05  7011        買建  3719     1   NaN
1    2025-09-19 09:01:09  7011        売埋  3714     1  -5.0
2    2025-09-19 09:01:10  7011        買建  3715     1   NaN
3    2025-09-19 09:01:17  7011        売埋  3714     1  -1.0
4    2025-09-19 09:01:18  7011        買建  3716     1   NaN
..                   ...   ...       ...   ...   ...   ...
127  2025-09-19 13:19:14  7011        買埋  3598     1  -1.0
128  2025-09-19 13:19:17  7011        買建  3596     1   NaN
129  2025-09-19 13:19:18  7011        売埋  3597     1   1.0
130  2025-09-19 13:19:19  7011        買建  3597     1   NaN
131  2025-09-19 15:24:59  7011  売埋(強制返済)  3689     1  92.0

[132 rows x 6 columns]
一株当りの損益 : -55.0 円
モデルへの報酬分布
n: 19387, mean: 0.378, stdev: 0.298
観測数 : 9

報酬分布

再学習を重ねても、分布幅が収束せずに右側に偏ったままです。

観測値のトレンド

まとめと次のステップ

今回は報酬分布の形状を重視して、条件の水準を変えれば報酬がプラスに偏ったままになる境界を厳密ではありませんが確認できました。

学習を重ねると報酬分布が 0 を中心とした正規分布に近づくということは、試した評価が実はあまり効果がなかった証のように思うのですが、今回は学習を重ねても期待する方向に分布が偏ってくれました。効果の有無が確認できる領域を確認できたということが収穫です。

今回扱ったパラメータ self.ratio_unreal_profit0.00001 - 0.0001 という水準は、今後、より良い条件を探すためのチューニング材料として活用します。

全体のパラメータが固まっていないので、報酬設計についてはひとまずここまでとします。次のステップは、株価の観測値の改善に取り掛かります。

現在、株価は下記のような加工をしていますが、トレンドを見る限り [-1, 1] の間の動きは他の観測値に比べて随分穏やかに見えます。

\[ {Observation}_{price} = (\frac{{Price}_{current}}{{Price}_{first}} - 1.0) \times 10 \]

株価の変動こそ最も重要な情報であるにもかかわらず、生成 AI が推奨するがままに放置してしまったので、あらためて観測値用に加工するアプローチを検討します。

参考サイト

  1. マーケットスピード II RSS | 楽天証券のトレーディングツール
  2. マーケットスピード II RSS 関数マニュアル
  3. 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
  4. Gymnasium Documentation
  5. Stable-Baselines3 Docs - Reliable Reinforcement Learning Implementations
  6. PyTorch documentation
  7. PythonでGUIを設計 | Qtの公式Pythonバインディング
  8. Python in Excel alternative: Open. Self-hosted. No limits.
  9. Book - xlwings Documentation
にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村

2025-11-01

自動売買への道 (2025-11-01)

楽天証券の口座でデイトレの自動売買に挑戦しようと Windows / Excel 上で利用できる マーケットスピード II RSS を活用して Python であれこれ取り組んでいます。この「自動売買への道」のトピックでは、プログラミングの話題にも踏み込んで、日々の活動をまとめていきます。

デイトレ用自作アプリ

以下は株価に関連する情報の流れを示しています。

株価データの流れ(Windows 11)

楽天証券では、Python からネットワーク越しに直接取引できるような API が提供されていないので、マーケットスピード II RSS を介して取引をする構成を取っています。

現在、強化学習を利用して、取引モデルを育成中です。

報酬設計の沼にハマる (3)

条件を変えながら報酬設計を試しているうちに、モデルの推論パフォーマンスが落ちてきて、遂に収益がマイナスばかりになってしまいました。そこで、一旦シンプルな報酬設計に戻して、ひとつひとつ変更を確認してそれを簡単にまとめながら進めることにしました。

推論に使用するティックデータ : ticks_20251019.xlsx, 7011

使用するティックデータは 9:00:00 から 15:24:50(ランチタイムを除く)までの 19,490 個(最大)のティックデータです。実際には寄り付いてからのデータになります。

今のところ、推論に使用する過去のティックデータは以下 (ticks_20251019.xlsx, 7011) に固定しています。

損益 0 の売買にペナルティをかける ②

高頻度な売買を減らすために、まずは損益 0 の売買に -0.5 円(-0.5 ティック)のペナルティをかけて、過去 51 日分のティックデータで学習をしました。

学習したモデルに対して ticks_20251019.xlsx, 7011 で推論させてみました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

売買頻度が増えてしまいました。

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                     注文日時 銘柄コード        売買  約定単価  約定数量   損益
0     2025-09-19 09:01:11  7011        売建  3715     1  NaN
1     2025-09-19 09:01:13  7011        買埋  3713     1  2.0
2     2025-09-19 09:01:15  7011        売建  3715     1  NaN
3     2025-09-19 09:01:17  7011        買埋  3714     1  1.0
4     2025-09-19 09:01:19  7011        売建  3716     1  NaN
...                   ...   ...       ...   ...   ...  ...
1803  2025-09-19 15:24:49  7011        買埋  3688     1  1.0
1804  2025-09-19 15:24:51  7011        売建  3689     1  NaN
1805  2025-09-19 15:24:53  7011        買埋  3688     1  1.0
1806  2025-09-19 15:24:59  7011        売建  3689     1  NaN
1807  2025-09-19 15:24:59  7011  買埋(強制返済)  3689     1  0.0

[1808 rows x 6 columns]
一株当りの損益 : 471.0 円
モデルへの報酬分布
n: 19387, mean: 0.000, stdev: 0.003
観測数 : 9

報酬分布

報酬分布では 0 付近(ややマイナス)の部分の頻度が(スリット状に)極端に少なくなっています。報酬 0 のペナリティの効果があったと言えそうですが、その分、損益が +1 のところが増えて、結果として売買頻度が高くなってしまったのかもしれません。

観測値のトレンド

損益 0, +1 の売買にペナルティをかける ①

高頻度な売買を減らすために、まずは損益 0, +1 の売買に -0.5 円(-0.5 ティック)のペナルティをかけてみます。

ticks_20251019.xlsx, 7011 で学習・推論させてみました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

取引回数はまずまず減りましたが、含み損になってもなかなか返済をしなくなったようにも見えます。

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                   注文日時 銘柄コード        売買  約定単価  約定数量    損益
0   2025-09-19 09:01:20  7011        売建  3717     1   NaN
1   2025-09-19 09:06:47  7011        買埋  3727     1 -10.0
2   2025-09-19 09:06:49  7011        売建  3726     1   NaN
3   2025-09-19 09:51:04  7011        買埋  3743     1 -17.0
4   2025-09-19 09:51:12  7011        売建  3743     1   NaN
5   2025-09-19 10:00:34  7011        買埋  3730     1  13.0
6   2025-09-19 10:00:41  7011        売建  3729     1   NaN
7   2025-09-19 10:04:24  7011        買埋  3728     1   1.0
8   2025-09-19 10:04:33  7011        売建  3729     1   NaN
9   2025-09-19 10:19:46  7011        買埋  3737     1  -8.0
10  2025-09-19 10:19:58  7011        売建  3737     1   NaN
11  2025-09-19 10:56:02  7011        買埋  3732     1   5.0
12  2025-09-19 10:56:10  7011        買建  3732     1   NaN
13  2025-09-19 10:56:34  7011        売埋  3732     1   0.0
14  2025-09-19 10:56:43  7011        売建  3732     1   NaN
15  2025-09-19 11:00:07  7011        買埋  3728     1   4.0
16  2025-09-19 11:00:10  7011        売建  3729     1   NaN
17  2025-09-19 11:05:44  7011        買埋  3730     1  -1.0
18  2025-09-19 11:05:52  7011        売建  3730     1   NaN
19  2025-09-19 11:08:02  7011        買埋  3728     1   2.0
20  2025-09-19 11:08:03  7011        買建  3728     1   NaN
21  2025-09-19 11:08:05  7011        売埋  3728     1   0.0
22  2025-09-19 11:08:26  7011        売建  3727     1   NaN
23  2025-09-19 11:18:59  7011        買埋  3723     1   4.0
24  2025-09-19 11:19:16  7011        売建  3721     1   NaN
25  2025-09-19 12:50:06  7011        買埋  3706     1  15.0
26  2025-09-19 12:50:10  7011        売建  3706     1   NaN
27  2025-09-19 12:53:10  7011        買埋  3710     1  -4.0
28  2025-09-19 12:53:17  7011        買建  3711     1   NaN
29  2025-09-19 12:53:21  7011        売埋  3711     1   0.0
30  2025-09-19 12:53:41  7011        売建  3708     1   NaN
31  2025-09-19 13:07:25  7011        買埋  3677     1  31.0
32  2025-09-19 13:07:44  7011        売建  3672     1   NaN
33  2025-09-19 13:14:47  7011        買埋  3631     1  41.0
34  2025-09-19 13:14:49  7011        売建  3630     1   NaN
35  2025-09-19 13:33:53  7011        買埋  3645     1 -15.0
36  2025-09-19 13:34:09  7011        売建  3649     1   NaN
37  2025-09-19 13:56:39  7011        買埋  3679     1 -30.0
38  2025-09-19 13:57:19  7011        売建  3676     1   NaN
39  2025-09-19 13:58:25  7011        買埋  3678     1  -2.0
40  2025-09-19 13:58:42  7011        売建  3674     1   NaN
41  2025-09-19 14:14:40  7011        買埋  3663     1  11.0
42  2025-09-19 14:15:04  7011        売建  3667     1   NaN
43  2025-09-19 14:16:31  7011        買埋  3662     1   5.0
44  2025-09-19 14:16:34  7011        売建  3662     1   NaN
45  2025-09-19 14:18:07  7011        買埋  3662     1   0.0
46  2025-09-19 14:18:26  7011        売建  3662     1   NaN
47  2025-09-19 14:24:07  7011        買埋  3670     1  -8.0
48  2025-09-19 14:24:28  7011        売建  3669     1   NaN
49  2025-09-19 14:33:28  7011        買埋  3670     1  -1.0
50  2025-09-19 14:33:31  7011        売建  3670     1   NaN
51  2025-09-19 14:46:41  7011        買埋  3657     1  13.0
52  2025-09-19 14:46:43  7011        売建  3655     1   NaN
53  2025-09-19 14:48:48  7011        買埋  3653     1   2.0
54  2025-09-19 14:48:55  7011        売建  3654     1   NaN
55  2025-09-19 15:24:59  7011  買埋(強制返済)  3689     1 -35.0
一株当りの損益 : 16.0 円
モデルへの報酬分布
n: 19387, mean: -0.000, stdev: 0.006
観測数 : 9

報酬分布

まずは損益 0, +1 の売買にペナルティをかけている分、分布に歯抜けがありますが、報酬を最大化するような分布にはなっていません。学習を重ねるとどうのように変化するか確認する必要があります。

観測値のトレンド

損益 0, +1 の売買にペナルティをかける ②

過去 51 日分のティックデータで学習させました。

推論結果(使用データ : ticks_20251019.xlsx, 7011)

過去データ ticks_20250919.xlsx の銘柄 7011 について推論します。
モデル models/ppo_7011.zip を読み込みます。
Wrapping the env in a DummyVecEnv.
                    注文日時 銘柄コード  売買  約定単価  約定数量   損益
0    2025-09-19 09:01:04  7011  売建  3719     1  NaN
1    2025-09-19 09:01:09  7011  買埋  3714     1  5.0
2    2025-09-19 09:01:11  7011  売建  3715     1  NaN
3    2025-09-19 09:01:13  7011  買埋  3713     1  2.0
4    2025-09-19 09:01:15  7011  売建  3715     1  NaN
..                   ...   ...  ..   ...   ...  ...
279  2025-09-19 15:20:59  7011  買埋  3684     1  1.0
280  2025-09-19 15:21:01  7011  売建  3686     1  NaN
281  2025-09-19 15:21:05  7011  買埋  3685     1  1.0
282  2025-09-19 15:21:07  7011  売建  3687     1  NaN
283  2025-09-19 15:21:09  7011  買埋  3686     1  1.0

[284 rows x 6 columns]
一株当りの損益 : 71.0 円
モデルへの報酬分布
n: 19387, mean: -0.000, stdev: 0.003
観測数 : 9

取引明細を全て文字で表示しても判断が大変なので、時系列で損益を確認できるようにしました。

14 時前の大きな損失が気になります。何回か推論を繰り返したところ、毎回の損益は少々異なるものの、概ねこの辺で大きな損失を出しています。

損失が大きくなる前に返済するようにペナルティを与えるようにした方が良いかもしれません。

報酬分布

今回も横軸 0 近辺でのスリット状の空白ができています。

観測値のトレンド

含損益のトレンドをみると、長く続く含み損の方が多いように見えます。

次のステップ

含み損が大きくなるまで建玉を返済しない状態については強制的に損切りさせる手もありますが、現時点ではペナルティで解消できるかどうか確認してみることにします。

参考サイト

  1. マーケットスピード II RSS | 楽天証券のトレーディングツール
  2. マーケットスピード II RSS 関数マニュアル
  3. 注文 | マーケットスピード II RSS オンラインヘルプ | 楽天証券のトレーディングツール
  4. Gymnasium Documentation
  5. Stable-Baselines3 Docs - Reliable Reinforcement Learning Implementations
  6. PyTorch documentation
  7. PythonでGUIを設計 | Qtの公式Pythonバインディング
  8. Python in Excel alternative: Open. Self-hosted. No limits.
  9. Book - xlwings Documentation
にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村

今週のドル円為替レート (10/27 - 11/01)

本ブログの過去記事 [1] に書いたように、正規分布に従っていないデータに対して平均値 average、標準偏差 σ を使用することはやめ、ロバスト統計量と呼ばれる median(中央値)と IQR(四分位範囲)を採用しています。

今週は 153.940 円で引け、先週に比べ +1.139 円差、 つまり円安になり、週足では陽線を形成しました。

直近の移動メジアン線の値は、 9 週線 149.556 円、 13 週線 147.698 円、 26 週線 147.255 円、 52 週線 148.325 円(5 週連続)、 100 週線 149.185 円、 200 週線 145.145 円、 300 週線 136.070 円 でした。

平均と標準偏差を、median と IQR(Q1 25% と Q3 75%)に置き換えたボリンジャーバンド(勝手に robust Bollinger bands と呼んでいます)のチャートを示しました。

対象データのヒストグラムと Q-Q プロットを示しました。

ドル指数

ドル指数 [2] のトレンドとボリンジャーバンドのチャートも示しました。

対象データのヒストグラムと Q-Q プロットを示しました。

ローソク足チャートは Yahoo Finance のデータを利用して作成しました。

参考サイト

  1. 私の株日記: 標準偏差を使う気持ち悪さ [2025-03-16]
  2. ドル指数とは 基軸通貨の総合的な強さを指数化 - 日本経済新聞 [2025-04-19]

にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村

東証 日中変動率 Top 100 (2025-10-31)

10 月 31 日の日中変動率です。その日の高値安値を、始値終値平均値で割っています。これを「日中変動率」と呼んで、トップ 100 のランキングを集計しています。なお、始値と終値の平均が 100 円未満、出来高が 1,000,000 株未満の銘柄は除外しています。

# コード 銘柄名 区分 33業種区分 高値 安値 変動率 出来高 増減
1 2459 アウンコンサルティング S サービス業 458 324 0.371 5,444,300
2 4082 第一稀元素化学工業 P 化学 1,361 1,129 0.190 11,522,000
3 4960 ケミプロ化成 S 化学 418 351 0.186 1,511,600
4 3195 ジェネレーションパス G 小売業 768 650 0.170 2,241,400
5 5802 住友電気工業 P 非鉄金属 5,944 5,053 0.162 15,669,400
6 3696 セレス P 情報・通信業 2,319 2,028 0.134 1,263,500
7 6981 村田製作所 P 電気機器 3,486 3,055 0.133 20,607,600
8 3624 アクセルマーク G 情報・通信業 121 106 0.132 2,989,600
9 6262 PEGASUS S 機械 846 748 0.125 1,364,000
10 6508 明電舎 P 電気機器 6,890 6,100 0.123 1,777,500
11 8105 堀田丸正 S 卸売業 669 591 0.122 4,399,700
12 7746 岡本硝子 S 精密機器 464 412 0.122 29,188,500
13 6920 レーザーテック P 電気機器 30,480 27,060 0.116 20,729,700
14 2281 プリマハム P 食料品 2,683 2,388 0.115 1,608,800
15 3997 トレードワークス S 情報・通信業 339 303 0.112 2,001,400
16 4062 イビデン P 電気機器 15,185 13,595 0.110 11,098,800
17 6721 ウインテスト S 電気機器 118 106 0.109 1,326,300
18 2673 夢みつけ隊 S 小売業 278 251 0.105 2,536,400
19 6902 デンソー P 輸送用機器 2,373 2,137 0.105 23,541,400
20 9766 コナミグループ P 情報・通信業 26,645 24,035 0.105 2,046,800
21 4568 第一三共 P 医薬品 3,945 3,562 0.101 10,531,600
22 2321 ソフトフロントホールディングス G 情報・通信業 247 223 0.101 3,394,800
23 6976 太陽誘電 P 電気機器 4,575 4,151 0.099 4,396,200
24 7777 スリー・ディー・マトリックス G 精密機器 336 305 0.097 6,153,500
25 1942 関電工 P 建設業 5,032 4,567 0.096 4,893,000
26 6493 NITTAN S 輸送用機器 710 647 0.093 1,079,300
27 4259 エクサウィザーズ G 情報・通信業 685 626 0.091 3,706,100
28 3776 ブロードバンドタワー S 情報・通信業 181 166 0.089 3,904,900 -
29 6526 ソシオネクスト P 電気機器 3,491 3,191 0.089 32,817,300
30 4588 オンコリスバイオファーマ G 医薬品 758 695 0.087 1,222,800
31 7971 東リ S 化学 629 577 0.086 1,170,700
32 7741 HOYA P 精密機器 25,735 23,600 0.086 2,260,700
33 9552 M&A総研ホールディングス P サービス業 1,353 1,246 0.084 2,602,800 -
34 4552 JCRファーマ P 医薬品 643 592 0.083 3,351,600
35 6723 ルネサスエレクトロニクス P 電気機器 2,026 1,865 0.083 30,516,400
36 2445 タカミヤ P サービス業 433 398 0.083 2,510,700
37 4188 三菱ケミカルグループ P 化学 864 796 0.082 22,116,500
38 7453 良品計画 P 小売業 3,169 2,924 0.080 13,374,100
39 8015 豊田通商 P 卸売業 4,766 4,400 0.080 3,448,100
40 3116 トヨタ紡織 P 輸送用機器 2,479 2,288 0.080 1,931,100
41 5929 三和ホールディングス P 金属製品 4,411 4,085 0.079 1,472,600
42 5721 エス・サイエンス S 非鉄金属 149 138 0.078 5,026,300
43 7282 豊田合成 P 輸送用機器 3,800 3,515 0.078 1,050,100
44 3656 KLab P 情報・通信業 217 201 0.076 4,047,000
45 3993 PKSHA Technology P 情報・通信業 4,515 4,185 0.076 1,392,000
46 7256 河西工業 S 輸送用機器 137 127 0.076 2,001,600
47 6302 住友重機械工業 P 機械 4,274 3,969 0.075 4,332,300
48 6504 富士電機 P 電気機器 11,690 10,870 0.075 1,711,900
49 6807 日本航空電子工業 P 電気機器 2,478 2,307 0.073 1,930,600
50 1878 大東建託 P 不動産業 3,089 2,875 0.072 2,804,500
51 6702 富士通 P 電気機器 4,195 3,905 0.071 18,645,600
52 2317 システナ P 情報・通信業 555 517 0.070 4,475,600
53 6871 日本マイクロニクス P 電気機器 9,200 8,580 0.070 2,190,400
54 6141 DMG森精機 P 機械 2,520 2,352 0.068 13,891,700
55 3778 さくらインターネット P 情報・通信業 3,535 3,305 0.068 1,353,700
56 6330 東洋エンジニアリング P 建設業 2,595 2,424 0.068 10,336,800
57 7259 アイシン P 輸送用機器 2,810 2,627 0.067 6,884,000
58 6814 古野電気 P 電気機器 9,500 8,890 0.066 1,297,800
59 2743 ピクセルカンパニーズ S 卸売業 128 120 0.066 1,951,600
60 9064 ヤマトホールディングス P 陸運業 2,254 2,110 0.066 3,820,200
61 7201 日産自動車 P 輸送用機器 362 339 0.065 64,364,400
62 4307 野村総合研究所 P 情報・通信業 6,117 5,741 0.063 4,712,700
63 247A Aiロボティクス G 化学 2,125 1,994 0.063 3,481,700
64 6857 アドバンテスト P 電気機器 23,430 22,010 0.063 21,774,700
65 6762 TDK P 電気機器 2,710 2,546 0.062 12,979,900
66 9962 ミスミグループ本社 P 卸売業 2,440 2,293 0.062 2,917,600
67 9501 東京電力ホールディングス P 電気・ガス業 783 736 0.061 98,647,200
68 402A アクセルスペースホールディングス G 輸送用機器 634 597 0.061 1,432,500
69 6501 日立製作所 P 電気機器 5,555 5,235 0.060 43,721,700
70 9166 GENDA G サービス業 762 718 0.060 1,897,700
71 285A キオクシアホールディングス P 電気機器 11,110 10,465 0.059 24,073,600
72 9532 大阪瓦斯 P 電気・ガス業 4,848 4,569 0.059 2,387,900
73 8338 筑波銀行 P 銀行業 330 311 0.059 1,087,600
74 6315 TOWA P 機械 2,396 2,260 0.059 9,480,000
75 3064 MonotaRO P 小売業 2,188 2,066 0.058 4,888,400
76 6701 日本電気 P 電気機器 5,870 5,546 0.057 9,805,800
77 5801 古河電気工業 P 非鉄金属 11,000 10,390 0.057 5,688,300
78 9042 阪急阪神ホールディングス P 陸運業 4,284 4,055 0.056 1,290,400
79 8473 SBIホールディングス P 証券、商品先物取引業 6,914 6,538 0.055 7,188,300
80 3323 レカム S 卸売業 111 105 0.055 1,330,800
81 186A アストロスケールホールディングス G サービス業 777 736 0.054 2,529,600
82 3905 データセクション G 情報・通信業 1,999 1,893 0.054 2,444,700
83 6177 AppBank G サービス業 207 196 0.054 1,201,900
84 7148 FPG P 証券、商品先物取引業 2,243 2,126 0.054 1,816,400
85 3853 アステリア P 情報・通信業 1,487 1,410 0.053 2,904,000
86 5706 三井金属鉱業 P 非鉄金属 16,165 15,330 0.053 1,283,100
87 6473 ジェイテクト P 機械 1,562 1,481 0.052 2,567,400
88 6594 ニデック P 電気機器 1,894 1,797 0.052 129,336,200
89 6752 パナソニック ホールディングス P 電気機器 1,828 1,737 0.051 29,663,300
90 6845 アズビル P 電気機器 1,522 1,447 0.051 3,181,900
91 4661 オリエンタルランド P サービス業 3,263 3,105 0.050 18,262,100
92 5202 日本板硝子 P ガラス・土石製品 592 563 0.050 1,547,900
93 2586 フルッタフルッタ G 食料品 252 240 0.049 6,732,600
94 6525 KOKUSAI ELECTRIC P 電気機器 5,699 5,430 0.048 7,450,600
95 6958 日本シイエムケイ P 電気機器 404 385 0.048 1,769,500
96 5938 LIXIL P 金属製品 1,792 1,710 0.047 3,857,200
97 4091 日本酸素ホールディングス P 化学 5,241 5,001 0.047 1,013,200
98 8550 栃木銀行 P 銀行業 573 547 0.046 1,473,000
99 5016 JX金属 P 非鉄金属 2,088 1,995 0.045 26,356,000
100 7419 ノジマ P 小売業 1,178 1,126 0.045 1,996,900

yahoo! finance API が提供する日足の4本値データを yfinance で取得して集計しました。

参考サイト

  1. トップ | 国内市場 | トレーダーズ・ウェブ
にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村