Hypotheses
FAMILY_WEEKLY_VOLATILITY: Experiment Log
FAMILY_WEEKLY_VOLATILITY
Testing day-of-week volatility patterns in Dutch potato markets through Monday spike effects, Friday decline patterns, and intraweek GARCH cycles to capture systematic volatility dynamics at higher frequency than traditional monthly patterns.
Experimentnotities
FAMILY_WEEKLY_VOLATILITY: Experiment Log
Overview
Testing day-of-week volatility patterns in Dutch potato markets through Monday spike effects, Friday decline patterns, and intraweek GARCH cycles to capture systematic volatility dynamics at higher frequency than traditional monthly patterns.
Hypothesis Origins
- Prior experimental evidence: FAMILY_SPRING_VOL demonstrated 84x volatility regime differences with GARCH models; FAMILY_WEEKLY_SEASONALITY_PATTERNS achieved 80-90% improvements with weekly patterns but focused on week-of-month; FAMILY_PRICE_VOLATILITY_CLUSTERING showed 8.2% QLIKE improvement validating volatility prediction paradigm
- Industry observations: EEX Monday index publications create systematic price discovery events; Dutch traders report Monday volatility from weekend storage inspections; 62.85% Monday volatility occurrence documented in commodities (Qadan et al., 2021)
- Data opportunity: Boerderij.nl API provides exact weekly timestamps allowing day-of-week extraction from 438+ observations
- Academic foundation: Day-of-week volatility effects established in financial markets, unexploited in agricultural commodities with GARCH sophistication
Experiment Design
- Method: Rolling-origin cross-validation for volatility models
- Initial window: 156 weeks (3 years for stable GARCH estimation)
- Step size: 4 weeks (preserving weekly patterns)
- Test windows: 10 maximum horizons
- Refit frequency: Every 4 weeks (monthly)
- Baselines: Constant volatility, rolling volatility, basic GARCH(1,1)
- REAL DATA ONLY: Boerderij.nl API prices, Open-Meteo weather (optional)
Data Sources (REAL DATA ONLY)
- Boerderij.nl API: Product NL.157.2086 (consumption potatoes) - git:exp/FAMILY_SEASONAL_PLANTING/variants_abc
- Open-Meteo API: Hourly weather for weekend shocks (Variant C only) - api:v1
- Sample size: 438+ weekly observations with exact timestamps
- NO synthetic, mock, or dummy data permitted
Experiment Runs
Variant A: Monday Spike Effect
Status: Pending - Model: AR(1)-GARCH(1,1) with Monday indicators - Features: is_monday, days_since_monday, weekend_info_proxy, price_lag_1w, volatility_lag_1w - Horizons: 30-day, 60-day volatility clustering - Target: Test if weekend information accumulation creates Monday volatility spikes - Expected: 10% improvement in volatility prediction
Variant B: Friday Decline Pattern
Status: Pending - Model: Two-state regime-switching with day-of-week transitions - Features: is_friday, days_to_friday, week_end_proximity, position_squaring_indicator, price_momentum_5d - Horizons: 30-day, 60-day volatility clustering - Target: Test if position adjustment before weekend reduces Friday volatility - Expected: 8% improvement in volatility prediction
Variant C: Intraweek GARCH Cycle
Status: Pending - Model: GARCH with day-specific parameter modulation - Features: day_of_week_1_5, intraweek_position, volatility_persistence_by_day, weekend_weather_shock, weekly_volume_proxy - Horizons: 30-day, 60-day volatility clustering - Target: Test full weekly volatility cycle from Monday spike to Friday decline - Expected: 15% improvement in volatility prediction
Statistical Tests
- Diebold-Mariano test with Harvey-Leybourne-Newbold correction for volatility forecasts
- TOST equivalence test with SESOI = 12% improvement (moderate for volatility patterns)
- ARCH-LM test for remaining ARCH effects
- Ljung-Box test on squared residuals for autocorrelation
- Benjamini-Hochberg FDR correction for 3 variants × 2 horizons
Volatility Modeling Framework
- Volatility calculation: Log returns squared, GARCH conditional variance
- Day-of-week extraction: Parse Boerderij.nl timestamp to identify Monday/Friday
- Weekend shock identification: Weather events Saturday/Sunday affecting Monday
- Regime identification: Hamilton filter for optimal volatility state detection
- Clustering measurement: Persistence of high/low volatility periods
Performance Thresholds
- SESOI: 12% improvement in volatility prediction (QLIKE or MSE)
- Minimum effect: 5% practical significance threshold
- Directional accuracy: 60% correct volatility direction prediction
- Statistical significance: α = 0.05 with FDR correction
Verdicts
Verdict v1 — 2025-08-17
Label: INCONCLUSIVE
Scope: Dutch potato market volatility, 4-week and 8-week horizons
Effect: median ΔQLIKE = -1.3% (improvement not significant); directional accuracy ~50%
Stats: DM p=0.497 (HLN-corrected); TOST within ±12%? no; FDR q=0.497
Data/Code: git=exp/FAMILY_SEASONAL_PLANTING/variants_abc; data=Boerderij.nl API (NL.157.2086), 437 weekly observations (2015-2024)
MLflow: run_id=3e7c8b60d72047e7a3b3afe8f573bb50
Notes: REAL DATA ONLY from Boerderij.nl API. Monday spike effect not detected; data predominantly recorded on Mondays (87/232 in training). GARCH with Monday indicators performed marginally worse than baseline GARCH. Random Forest identified momentum_4w and vol_lag_4w as primary drivers, not Monday indicators. Information accumulation proxy showed weak relationship with volatility.
HE Notes
- Created 2025-08-17 based on converging evidence from volatility families
- Distinct from FAMILY_WEEKLY_SEASONALITY_PATTERNS (week-of-month vs day-of-week)
- Building on FAMILY_SPRING_VOL GARCH success and FAMILY_PRICE_VOLATILITY_CLUSTERING paradigm
- All variants designed to use ONLY REAL DATA from verified repository interfaces
- SESOI (12%) reflects moderate expectations for volatility pattern improvements
- Cross-validation preserves weekly volatility clustering structure
Verdict v2 — 2025-08-17 (Variant B)
Label: REFUTED
Scope: Dutch potato market volatility, 4-week and 8-week horizons
Effect: median ΔQLIKE = +7.7% (model worse than baseline); directional accuracy ~48%
Stats: DM p=0.084 (HLN-corrected); TOST within ±12%? no; FDR q=0.084
Data/Code: git=exp/FAMILY_SEASONAL_PLANTING/variants_abc; data=Boerderij.nl API (NL.157.2086), 437 weekly observations (2015-2024)
MLflow: run_id=2ae6bb004a3347298a2dc2420e9ceb86
Notes: REAL DATA ONLY from Boerderij.nl API. Friday decline pattern cannot be tested - data contains 0 Friday observations out of 437 total. Data predominantly Monday (58.6%) and Tuesday (22.0%). Regime-switching model with Friday transitions performed 7.7% worse than baseline GARCH. Random Forest identified momentum and lagged volatility as primary drivers, not day-of-week indicators. Critical data limitation: NO Friday price recordings in dataset.
Verdict v3 — 2025-08-17 (Variant C)
Label: INCONCLUSIVE
Scope: Dutch potato market volatility, intraweek GARCH cycle analysis
Effect: Analysis impossible due to critical data shortage (7 usable observations)
Stats: N/A - insufficient data for statistical testing
Data/Code: git=exp/FAMILY_SEASONAL_PLANTING/variants_abc; data=Boerderij.nl API (NL.157.2086), 519 raw -> 7 clean observations (2015-2024)
MLflow: run_id=aac681c1c3894aa1ac2b3926303fd64e
Notes: REAL DATA ONLY from Boerderij.nl API. Critical data limitations: 81/519 observations missing price values; 57.1% Monday dominance, 0% Friday observations; 7 total usable observations insufficient for any statistical inference. Simplified experiment confirmed fundamental data incompatibility with day-of-week volatility analysis. Ensemble GARCH cycle modeling impossible with available data structure.
Decision Log
Summary of Findings
- Variant A (Monday Spike): INCONCLUSIVE - Monday spike effect not detected despite 87/232 Monday observations
- Variant B (Friday Decline): REFUTED - Cannot test Friday patterns due to complete absence of Friday data (0/437)
- Variant C (Intraweek GARCH Cycle): INCONCLUSIVE - Critical data shortage prevents any analysis (7 usable observations)
- Fundamental Issue: Boerderij.nl weekly prices suffer from severe data quality issues (15.6% missing values) and extreme day-of-week bias
- Data Limitation: 57.1% Monday dominance, 0% Friday observations across all variants, insufficient sample sizes
- Key Learning: Day-of-week volatility patterns cannot be tested with this data source; requires alternative data with uniform temporal coverage
Critical Data Quality Issues Discovered
- Missing Values: 81 of 519 observations (15.6%) have missing price data
- Temporal Bias: Extreme Monday dominance (57-82%) prevents day-of-week analysis
- Sample Size: Only 7-40 usable observations after cleaning, far below statistical requirements
- Day Coverage: Complete absence of Friday observations makes intraweek analysis impossible
Next Actions
- FAMILY CONCLUSION: Mark FAMILY_WEEKLY_VOLATILITY as DATA_INCOMPATIBLE
- Alternative Approach: Consider higher-frequency data sources (daily instead of weekly)
- Data Source: Investigate EEX Leipzig futures (daily) or alternative European exchanges
- Hypothesis Pivot: Focus on monthly/seasonal volatility patterns instead of intraweek effects
Codex validatie
Codex Validation — 2025-11-10
Files Reviewed
run.pyconfig/*.yamlexperiment.md
Findings
- Real data only. The runner calls Boerderij weeklies (with
legacy=True) and, for Variant C, Open-Meteo weekend weather (run.py:34-120). No synthetic fallbacks or mocking code is present. - Experiments executed and logged.
experiment.md:73-140lists three MLflow runs (IDs provided) covering variants A–C, so the code has been exercised end-to-end. - Price-only baselines remain superior. The recorded metrics show Variant A underperforming the persistent baseline by ~19%, Variant B performing 7.7% worse, and Variant C abandoned for insufficient data. Thus, none of the day-of-week volatility signals improve on the baseline volatility models.
Verdict
NOT VALIDATED – Despite using real data and running the pipeline, the proposed weekly volatility features either degrade accuracy or cannot be tested because the Boerderij feed lacks day-of-week coverage. Without demonstrable gains over the price-only baselines, the family remains unvalidated.