mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-08-01 17:37:43 +00:00
d2037a475a
- 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>
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)