お世話になっております。JRA-VAN Data Lab. SDK (4.9.0.x) を使って個人利用の研究目的で競馬データを取得しています。
特定 5 レースの HR/H1/H6 は取得できるが、同じ race_id の RA/SE が取得できない状況が再現しており、適切な JVOpen 条件をご教示いただきたく投稿します。
1. 環境
| 項目 | 値 |
|---|---|
| OS | Windows |
| SDK | JRA-VAN Data Lab. SDK 4.9.0.x |
| 言語 / 接続 | Python 3.12 + pywin32 (win32com.client.Dispatch("JVDTLab.JVLink"))、dynamic dispatch、preallocated buffer (110000 bytes) |
| 用途 | 個人研究 (常時収集ではなく、特定 race の検証のみ) |
2. 取得対象 (5 レース)
race_id は内部表現で 年-場コード-回-日-R の形式です。
| race_id | 年 | 場 (jyo_cd) | 回 | 日 | R | 実開催日 | make_date |
|---|---|---|---|---|---|---|---|
| 2026-04-01-03-01 | 2026 | 04 (新潟) | 01 | 03 | 01 | 2026-05-09 | 20260511 |
| 2026-04-01-03-02 | 2026 | 04 | 01 | 03 | 02 | 同 | 同 |
| 2026-04-01-03-03 | 2026 | 04 | 01 | 03 | 03 | 同 | 同 |
| 2026-04-01-03-04 | 2026 | 04 | 01 | 03 | 04 | 同 | 同 |
| 2026-04-01-03-05 | 2026 | 04 | 01 | 03 | 05 | 同 | 同 |
つまり、2026 年・新潟・第 1 回・3 日目・1R〜5R です。
取得したい record は以下です。
- RA: RACE 情報、固定長 1272 bytes
- SE: 馬毎レース情報、固定長 555 bytes、1 race あたり馬数分
3. 取得できている record (HR / H1 / H6)
同じ 5 レースの HR (払戻)、H1 (単複枠連オッズ)、H6 (3連単オッズ) は次の条件で取得できています。
| 項目 | 値 |
|---|---|
| data_spec | RACE |
| option | 1 (通常データ) |
| fromtime | 20260511013551 (実開催日 +2 日、make_date 当日付近) |
| JVOpen rc / read | 0 / 29 |
| 保存できた件数 | HR=5, H1=5, H6=5 (target 5 レース完全一致) |
| 同 run の RA / SE | 0 / 0 (record_specs_seen にも出現せず) |
HR/H1/H6 は race 終了後の差分に含まれていました。
4. 取得できない record (RA / SE) ─ 試行結果
同じ data_spec=RACE で option / fromtime を変えて何度か試しましたが、target 5 レース × {RA, SE} = 10 件は一度も取得できていません。
| # | option | fromtime | jvopen read | records read | stop_reason | RA seen | SE seen | target RA/SE hit |
|---|---|---|---|---|---|---|---|---|
| A | 1 | 20260501000000 | 未記録 | (上限) | max_total_reads | 288 | 4,054 | 0 / 10 |
| B | 1 | 20260415000000 | 131 | 16,204 | eof | 432 | 6,063 | 0 / 10 |
| C | 3 | 20260501000000 | 81 | 10,614 | eof | 288 | 4,054 | 0 / 10 |
| D | 3 | 20260415000000 | 96 | 19,913 | max_total_reads | 620 | 7,773 | 0 / 10 |
| E | 3 | 20260415000000 | 96 | 22,761 | eof | 692 | 9,382 | 0 / 10 |
特に行 E では、読み上限を緩めた状態で stream を stop_reason=eof まで読みきりましたが、target の RA/SE はゼロでした。
RA 自体は 692 件、SE は 9,382 件 stream 内に存在しているのに、target 5 レース分は含まれていません。
参考に、同じ run の record_specs_seen は以下です。
JG=8,356 / SE=9,382 / HR=480 / H1=480 / H6=480 / O1〜O6=各 480 / RA=692 / WF=11
つまり、JVOpen が返した 96 ファイルを 22,761 records 読了しています。
5. 補足
文字コード / parse 側の問題ではないと考えています。
同一 stream 内に RA/SE record 自体は多数出現しており、文字コード変換・固定長検証では失敗していません。
仕様書 PDF (4.9.0.1) の data_spec / option / fromtime 周辺は読みましたが、option=3 setup における「対象範囲」と fromtime 基準の組合せの解釈で詰まっています。
6. 質問
恐れ入りますが、以下についてご教示いただけますと幸いです。
-
同一 race_id の HR/H1/H6 は取得できるのに、RA/SE が取得できない、ということは仕様上あり得るでしょうか。
-
RA/SE と HR/H1/H6 で、publish タイミング / 保持期間 / fromtime 判定基準が異なるなどの違いがありますか。
-
option=1とoption=3のfromtimeは、各 record のどの時刻を基準として判定されるのでしょうか。
record 内の発生時刻 / make_date / 配信ファイルの作成時刻 / その他、どれに該当しますでしょうか。 -
option=3(セットアップデータ) は、fromtime以降に該当する全データを再配信する、という理解で正しいでしょうか。 -
一度配信された RA/SE は、後から
option=3setup でも再取得できない場合があるのでしょうか。
キャッシュ・保持期間・サーバ側の配信履歴管理などの観点でご教示いただけますと幸いです。 -
data_spec=RACE以外に、RA/SE 取得に適した data_spec / option の組合せがあれば教えてください。
例えば RA/SE に特化した data_spec の有無を知りたいです。 -
今回の対象レース、つまり 2026 年・新潟・第 1 回・3 日目・1R〜5R、make_date=20260511 の RA/SE を取得するには、どの JVOpen 条件 (data_spec / option / fromtime) を使うべきでしょうか。
ご多忙のところ恐れ入りますが、ご教示いただけますと大変助かります。
何卒よろしくお願いいたします。