実験機: Core i7-14700F、RTX 5070 Ti 16 GB、RAM 32 GB
環境: Windows 11、WSL 2、Ubuntu 26.04 LTS、Python 3.12.14、PyTorch 2.12.1+cu130
データ: 国内株5銘柄の調整後終値、USD/JPY
NVIDIAの時系列モデルNV-Tesseractへ、ソニーグループ、トヨタ自動車、任天堂、ソフトバンクグループ、三菱UFJフィナンシャル・グループの株価を入れました。各銘柄について、株価だけで予測する条件とUSD/JPYを加える条件を、過去の20区間で比較しています。
結論から書くと、為替を加えるとNV-Tesseractの誤差は小さくなりました。しかし、5銘柄平均では1日先・5日・20日先のすべてで、「直近の株価がそのまま続く」とする単純な予測に負けました。トヨタ株で予測ヘッドを追加学習しても、結果は逆転しませんでした。
銘柄を増やしても結論は変わりませんでした。
| 手法 | 1日先 sMAPE | 5日 sMAPE | 20日 sMAPE |
|---|---|---|---|
| 直近値を維持 | 2.22% | 3.40% | 6.02% |
| NV-Tesseract(株価のみ) | 5.05% | 5.96% | 8.38% |
| NV-Tesseract(株価+USD/JPY) | 3.03% | 4.22% | 7.52% |
sMAPE(Symmetric Mean Absolute Percentage Error)は、予測と実測のずれを価格に対する割合で表した指標です。株価水準の違う5銘柄を横断比較するため、ここでは円単位のMAEではなくsMAPEを使います。小さいほど正確です。

これはモデルの評価実験です。将来の株価予想、売買手法の提案、特定銘柄の推奨ではありません。
1銘柄だけで判断しない
最初にソニーグループだけで試したところ、USD/JPYを加えたモデルは株価のみのモデルより良くなりました。一方で、ソニー特有の結果なのか、他の国内株にも当てはまるのかは分かりません。
そこで追加結果を見る前に、事業の性格が異なる5銘柄を固定しました。
| 銘柄 | Yahoo Finance記号 | 選んだ理由 |
|---|---|---|
| ソニーグループ | 6758.T |
電機・ゲーム・音楽など複数事業 |
| トヨタ自動車 | 7203.T |
自動車・海外展開 |
| 任天堂 | 7974.T |
ゲーム・海外売上を持つ事業 |
| ソフトバンクグループ | 9984.T |
テクノロジー投資 |
| 三菱UFJフィナンシャル・グループ | 8306.T |
銀行 |
証券コードは各社の公式IRで確認しました。後からNV-Tesseractが勝った銘柄だけを記事へ載せる選び方はしていません。
「当たった」を何と比べるか
予測線が複雑に動くだけでは、当たったとは言えません。比較相手が必要です。
今回は各銘柄で次の3条件を比較しました。
- 直近値を維持: 予測開始直前の株価を20日間そのまま出す
- 株価のみ: 過去512営業日の調整後終値をNV-Tesseractへ入力する
- 株価+USD/JPY: 同じ株価に、その日の為替レートを2チャンネル目として加える
1番はlast-value baseline、またはナイーブ予測と呼ばれます。短期の株価では「明日も今日と同じ」が意外に強く、高度なモデルを評価するときの最低限の比較対象になります。
NV-Tesseractは金融専用モデルではなく、多様な時系列から表現を学習した汎用モデルです。今回は追加学習を行わず、公開checkpointをそのまま使いました。
検証条件
Yahoo Financeの各銘柄とJPY=Xから日足を取得しました。株式分割による見かけ上の急落を避けるため、通常の終値ではなく調整後終値を使っています。
| 項目 | 固定した条件 |
|---|---|
| 株価 | 5銘柄の調整後終値(円) |
| 補助系列 | USD/JPY終値 |
| 入力長 | 512営業日 |
| 予測長 | 20営業日 |
| 評価区間 | 1銘柄につき重ならない20区間 |
| 予測記録 | 5銘柄×20区間×3手法=300本 |
| 評価する長さ | 1日、5日、20日 |
| 乱数seed | 42 |
| NV-Tesseract | commit b68ea6f946b9b299d48f91673fd722366c150e99 |
| 単変量checkpoint | moment_head_512_6hr.pt |
| 複数チャンネルcheckpoint | run8_best_model_cr.pt |
評価窓は2025年1月から2026年9月までです。各予測に使えるのは、その予測開始より前の512営業日だけです。後の株価や未来の為替が入力へ混ざらないようにしました。
USD/JPYは各銘柄の取引日と完全一致する日の値を結合し、欠けた場合だけ過去の値で前方補完しています。未来から埋める後方補完は使っていません。また、取得時点で値が動いている可能性のある当日行は除外しました。
5銘柄すべてで単純基準が最良だった
20日予測の銘柄別sMAPEは次のとおりです。
| 銘柄 | 直近値 | 株価のみ | 株価+USD/JPY |
|---|---|---|---|
| ソニーグループ | 5.49% | 6.22% | 6.04% |
| トヨタ自動車 | 3.99% | 5.90% | 4.69% |
| 任天堂 | 5.79% | 7.89% | 6.56% |
| ソフトバンクグループ | 10.99% | 14.50% | 13.59% |
| 三菱UFJ FG | 3.87% | 7.39% | 6.73% |
為替を足したモデルは、5銘柄すべてで株価のみのモデルより良くなりました。特にトヨタでは20日sMAPEが5.90%から4.69%まで改善しています。それでも直近値の3.99%には届きません。
円単位のMAEでも確認しました。下図はNV-Tesseractの平均MAEから直近値基準のMAEを引いた値です。0円より左ならNV-Tesseractが勝ち、右なら負けです。

100個の「銘柄×評価区間」で、USD/JPYありモデルが直近値基準より小さいMAEになった割合は、1日先36%、5日30%、20日33%でした。当たる場面はありますが、勝つ場面の方が少ない結果です。
為替を加えた改善は偶然なのか
5銘柄は同じ市場日を共有しています。5銘柄×20区間を独立した100回として扱うと、同じ相場環境を5回数えることになります。
そこで不確実性の計算では、同じ時点の5銘柄をひとまとまりにし、20個の市場時点を復元抽出しました。ブートストラップ95%区間は次のとおりです。値は直近値基準に対するsMAPEの増減で、プラスならNV-Tesseractの方が悪いという読み方です。
| 手法 | 1日先 | 5日 | 20日 |
|---|---|---|---|
| 株価のみ | +2.03〜+3.62ポイント | +1.83〜+3.26ポイント | +1.57〜+3.20ポイント |
| 株価+USD/JPY | +0.25〜+1.31ポイント | +0.34〜+1.30ポイント | +0.95〜+2.04ポイント |
為替ありモデルも3期間すべてで区間全体が0より上でした。この5銘柄・20時点では、直近値基準より悪いという結論です。
一方、NV-Tesseract同士では為替ありの方が一貫して小さい誤差です。ただし、これだけで「為替が株価を予測した」とは言えません。単変量用とcross-channel用でcheckpoint自体が異なるため、改善がUSD/JPYの情報によるものか、複数チャンネル用モデルの性質によるものかは切り分けられていません。
株価と為替の相関も確認する
各銘柄とUSD/JPYの日次リターンについて、単純な相関係数も計算しました。
| 銘柄 | USD/JPYとの日次相関 |
|---|---|
| ソニーグループ | 0.025 |
| トヨタ自動車 | 0.169 |
| 任天堂 | 0.019 |
| ソフトバンクグループ | 0.047 |
| 三菱UFJ FG | 0.124 |
5銘柄の中ではトヨタが最も高いものの、強い線形相関とは言いにくい値です。相関が小さいから無関係、と即断もできません。NV-Tesseractは時間遅れや非線形な関係を使う可能性がありますが、今回の実験ではその因果関係まで検証していません。
上がる・下がるは当たったのか
予測開始時点から評価日の終値が上か下かを判定し、5銘柄×20区間の正解率を集計しました。
| 手法 | 1日先 | 5日 | 20日 |
|---|---|---|---|
| NV-Tesseract(株価のみ) | 46% | 46% | 42% |
| NV-Tesseract(株価+USD/JPY) | 51% | 50% | 42% |
為替ありの1日先でも51%です。価格水準の誤差だけでなく、方向についても優位性は確認できませんでした。
直近値基準は価格の変化を予測しないため、方向正解率を0%や50%とは扱わず、該当なしにしています。
「過去512営業日」は学習期間ではない
ここは紛らわしいところです。
最初の検証で使った512営業日は、予測するときにモデルへ見せる入力です。公開checkpointを各銘柄へ合わせて学習した期間ではありません。言い換えると、最初の5銘柄検証は追加学習なしのzero-shotでした。
では、トヨタ株を実際に追加学習させ、学習へ使う過去データを増やすと改善するのでしょうか。
入力長はcheckpointに合わせて512のまま固定し、そこから学習例を切り出す元データだけを変えました。短い条件は800行、長い条件は最初の評価前に利用できた全1067行です。どちらも72営業日先を出す予測ヘッドだけを更新し、基盤となるencoderとembedderは凍結しています。
| 項目 | 固定した条件 |
|---|---|
| 対象 | トヨタ自動車 7203.T |
| 入力長 | 512営業日 |
| 学習元データ | 800行 / 1067行 |
| 学習窓数 | 44本 / 97本 |
| 検証窓 | 学習期間の後ろに18本 |
| epoch | 最大5、検証誤差が最小の重みを採用 |
| 乱数seed | 42、43、44 |
| 評価 | 3モデルの予測平均、既存と同じ20区間 |
学習とモデル選択に使った値は、最初の評価区間が始まる前で打ち切りました。つまり評価期間中の値動きを学習させてから、同じ期間を当てさせることはしていません。
結果は次のとおりです。値はトヨタ20区間の平均sMAPEで、小さいほど正確です。
| 手法 | 1日先 | 5日 | 20日 |
|---|---|---|---|
| 直近値を維持 | 1.89% | 2.33% | 3.99% |
| 追加学習なし・株価のみ | 3.12% | 3.92% | 5.90% |
| 追加学習なし・株価+USD/JPY | 2.22% | 2.93% | 4.69% |
| 800行で追加学習 | 4.32% | 4.57% | 6.22% |
| 1067行で追加学習 | 3.15% | 3.23% | 5.29% |

学習データを増やす効果はありました。20日sMAPEは6.22%から5.29%へ下がり、各seedの結果も800行で6.16〜6.25%、1067行で5.28〜5.36%でした。
それでも、1067行モデルと直近値基準のsMAPE差について、20区間を復元抽出した95%区間は1日先で+0.04〜+2.53ポイント、5日で+0.04〜+1.81ポイント、20日で+0.28〜+2.47ポイントです。すべて0より上なので、今回の条件では追加学習後も直近値基準の方が良い結果です。
なお、5 epochすべてを回しましたが、6回の学習すべてで検証誤差が最小だったのは1 epoch目でした。特に800行条件はその後の検証誤差が大きく悪化しています。少ない学習窓へ予測ヘッドを合わせ過ぎた可能性があります。
関税政策の前後で分けるとどうなるか
評価期間には、米国の通商政策が大きく変わった時期が含まれます。米国は日本車への追加関税を発動し、その後の日米合意を実施する大統領令では、日本からの対象品について合計15%となる扱いが示されました。
そこでトヨタの20区間を、各予測開始時点で利用できた情報に基づき、4月3日より前、4月3日から9月4日、9月4日の大統領令より後に分けました。政策発表日を境界にした記述的な集計であり、関税の因果効果を推定するものではありません。
| 予測開始時点 | 区間数 | 直近値 | 株価+USD/JPY | 800行追加学習 | 1067行追加学習 |
|---|---|---|---|---|---|
| 4月3日より前 | 3 | 3.01% | 3.98% | 9.26% | 4.61% |
| 4月3日〜9月4日 | 6 | 5.18% | 4.49% | 6.45% | 5.71% |
| 9月4日より後 | 11 | 3.60% | 5.00% | 5.26% | 5.25% |

4月3日から9月4日の6区間では、株価+USD/JPYの20日sMAPEが4.49%となり、直近値の5.18%を下回りました。ただし差の95%区間は-2.26〜+0.56ポイントで0をまたぎます。たまたまこの6区間で良かった可能性を除けません。
9月4日より後は、株価+USD/JPYが5.00%、1067行の追加学習が5.25%に対して、直近値は3.60%でした。この期間の株価+USD/JPYと直近値の差は+0.41〜+2.43ポイントで、区間全体が0より上です。
追加学習に使ったデータは政策変更前で終わっています。これは未来情報を漏らさないために必要ですが、新しい関税制度そのものをモデルが学んでいないことも意味します。過去データを267行増やすだけでは、まだ存在しなかった制度変更は説明できません。
一方で、政策前の3区間でも追加学習モデルは直近値に負けています。「トランプ政権の関税だけが外れた原因」とも言えません。決算、金利、米国株、業界需要など、同じ時期に動く要因を入れていないからです。政策前後の区切りは原因の証明ではなく、モデルの成績が期間によって安定していないことを確認するためのものです。
ソニーの最新区間を予測線で見る

この1枚だけなら単純に「外れた」で終わります。別の区間ではNV-Tesseractが直近値基準へ勝つこともありました。そのため、記事の結論はこの図ではなく、5銘柄×20区間の集計から判断しています。
都合のよい成功例を1枚選ぶだけでは、モデルの評価になりません。
WSL 2で再現する
NV-TesseractとCUDAが動く環境で、次のスクリプトを実行します。
cd /mnt/c/Users/user/Documents/Codex/2026-08-24/ko/work/nv_tesseract_lab/NV-Tesseract/forecasting
.venv/bin/python ../../run_japan_stocks_fx_backtest.py
公開checkpointは初回に自動取得されます。複数チャンネル用checkpointだけで約1.4 GBあるため、ダウンロード時間と空き容量が必要です。このPCでは取得済みcheckpointの初回読込が約6〜7秒、同一プロセスでの推論中央値は約0.03秒でした。
集計だけを再計算する場合は、300本の保存済み予測から作り直せます。
cd /mnt/c/Users/user/Documents/Codex/2026-08-24/ko
work/nv_tesseract_lab/NV-Tesseract/forecasting/.venv/bin/python \
work/nv_tesseract_lab/rebuild_japan_stocks_fx_aggregates.py
work/nv_tesseract_lab/NV-Tesseract/forecasting/.venv/bin/python \
work/nv_tesseract_lab/validate_japan_stocks_fx_backtest.py
検算スクリプトは、生JSON、300本の実測・予測配列、200件の推論時間、銘柄別集計、5銘柄集計を確認します。このPCでは全項目がPASSになりました。
PASS: 300 forecasts, 200 timings, per-stock metrics,
and panel aggregates are consistent
画面へ出た平均値だけでなく、各予測を保存しておくのが大事です。集計方法を変えたり計算ミスが見つかったりしても、GPU推論からやり直さず検算できます。
トヨタの追加学習と期間別集計は次のコマンドで再現できます。6回の追加学習を含むため、集計だけの検算より時間がかかります。
cd /mnt/c/Users/user/Documents/Codex/2026-08-24/ko/work/nv_tesseract_lab/NV-Tesseract/forecasting
.venv/bin/python ../../run_toyota_learning_regime_experiment.py
.venv/bin/python ../../analyze_toyota_learning_regime.py
このPCでは追加学習1回が約40〜61秒でした。保存した220本の予測について、未来情報の境界、実測値の一致、指標の再計算、3 seedの予測平均を検算し、PASSを確認しています。
この結果から言えること
USD/JPYを追加すると、NV-Tesseractは株価だけの場合より5銘柄すべてで改善しました。複数系列を一緒に扱うcross-channel checkpointが、実際の国内株データでも動作することは確認できました。
しかし、直近値を維持する単純基準には5銘柄すべてで負けています。評価窓別の勝率も30〜36%、方向正解率も42〜51%でした。トヨタで学習元データを800行から1067行へ増やすと改善しましたが、それでも直近値基準には届きません。今回の条件では、NV-Tesseractを動かしたり少量の追加学習をしたりすれば株価を当てられる、とは言えません。
正直、モデルが動いたことより、この負け方を確認できたことの方が価値があります。
この実験だけでは、トヨタ以外を追加学習した場合、政策変更後に利用可能になったデータだけで再学習する場合、決算・金利・指数・出来高を加えた入力、売買コスト込みの運用成績までは分かりません。追加検証では、更新頻度と学習期間をあらかじめ固定したwalk-forward評価が判断材料になります。株価予測を取引へ結び付けるなら、手数料、スリッページ、売買ルールも先に固定する必要があります。
