Files
NexQuant/rdagent/scenarios/qlib/experiment/factor_data_template
TPTBusiness d2037a475a fix(loop): compress old experiment history in proposal prompt to reduce context size
- Summarize all but the 2 most recent experiments to compact bullet lines
  (factor name, PASS/FAIL, IC value, 120-char observation snippet) instead
  of including full verbatim traces; reduces prompt from ~121k to ~40-60k tokens
- Fix _evaluate_factor_directly and _save_factor_values to look for result.h5
  and factor.py in sub_workspace_list instead of experiment_workspace
- Fix Series.to_parquet() → Series.to_frame().to_parquet() in _save_factor_values
- Update factor_data_template README: correct bars-per-day (1440, not 96)
- Update prompts to accept 2024-only debug dataset output as valid factor result
- Fix factor_coder prompts: allow 2024 debug data in date-range instruction

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 09:10:39 +02:00
..

How to read files.

For example, if you want to read filename.h5

import pandas as pd
df = pd.read_hdf("filename.h5", key="data")

NOTE: **key is always "data" for all hdf5 files **.

Here is a short description about the data

Filename Description
"intraday_pv.h5" EURUSD 1-minute OHLCV intraday data (2020-2026).

For different data, We have some basic knowledge for them

1-Minute Price and Volume data (EURUSD)

$open: open price at 1-minute bar. $close: close price at 1-minute bar. $high: high price at 1-minute bar. $low: low price at 1-minute bar. $volume: volume at 1-minute bar (tick volume for FX).

Important Notes for 1min Data

  • 1 bar = 1 minute (confirmed)
  • 16 bars = 16 minutes
  • 60 bars = 1 hour
  • ~1440 bars = 1 full trading day (FX trades nearly 24h, Mon 00:00 - Fri 22:00 UTC approx.)
  • Typical bars per calendar day: ~1200-1440 (varies by weekday, holidays have fewer)
  • Do NOT assume 96 bars/day — the actual count depends on the date
  • Data range: 2020-01-01 to 2026-03-20
  • Instrument: EURUSD
  • Timezone: UTC

IMPORTANT: Bars per Day Correction

The dataset has approximately 1440 bars per full trading day (1 bar = 1 minute, ~24h of FX trading). Some older documentation incorrectly stated "96 bars = 1 day" — this is WRONG. Always use:

  • 60 bars = 1 hour
  • 480 bars = 8 hours (London session 08:00-16:00 UTC)
  • 180 bars = 3 hours (London/NY overlap 13:00-16:00 UTC) Use datetime hour filtering (e.g., df[df.index.get_level_values('datetime').hour.between(8, 15)]) to select session bars — do NOT use bar-count offsets to define sessions.

Session Times (UTC)

  • Asian: 00:00-08:00 UTC (low volatility)
  • London: 08:00-16:00 UTC (high volatility)
  • NY: 13:00-21:00 UTC (high volatility)
  • Overlap: 13:00-16:00 UTC (highest volatility)