Hypotheses
FAMILY_PRICE_MOMENTUM: Experiment Log
FAMILY_PRICE_MOMENTUM
Testing simple price autocorrelation and momentum patterns in Dutch potato markets through mean-reversion dynamics, storage holder behavior, and market microstructure effects.
Experimentnotities
FAMILY_PRICE_MOMENTUM: Experiment Log
Overview
Testing simple price autocorrelation and momentum patterns in Dutch potato markets through mean-reversion dynamics, storage holder behavior, and market microstructure effects.
Hypothesis Origins
- Prior experiments:
- FAMILY_QUALITY_PREMIUM Variant C showed price_lag_1w achieved 82.7% feature importance
- FAMILY_MARKET_SENTIMENT revealed simple lags (coefficients 8.97, 3.90) dominated complex indicators
- FAMILY_PRODUCTION_CYCLE Variant B achieved 71-78% improvement with price lags in ensemble
- Industry catalyst: Boerderij.nl weekly reports show 3-5 week trend persistence; storage operators use 4-week MAs
- Academic basis: Deaton & Laroque (1992) storage constraints; Working (1949) anticipatory prices
Experiment Design
- Method: Rolling-origin cross-validation
- Initial window: 156 weeks (3 years)
- Step size: 4 weeks
- Test windows: 52 weeks (1 year)
- Refit frequency: Every 12 weeks (quarterly)
- Baselines: Naive seasonal, Auto ARIMA, linear trend
- REAL DATA ONLY: Boerderij.nl API (NL.157.2086), CBS API, Open-Meteo
Data Sources (REAL DATA ONLY)
- Boerderij.nl API: Product NL.157.2086 (consumption potatoes) - weekly high/low/avg prices since 2015
- CBS API: Table 85676NED (storage/production context) - version 2024-Q4
- Open-Meteo API: Weather data (52.6°N, 5.7°E) for regime context only
- NO synthetic, mock, or dummy data permitted
Experiment Runs
Variant A: Simple Autoregressive
Status: REFUTED (2025-08-17) - Model: Ridge regression with 1-4 week lagged prices - Features: price_lag_1w through price_lag_4w, price_ma_4w, price_ma_8w - Horizons: 7-day, 14-day, 30-day, 60-day - Target: Test if direct price lags achieve >15% improvement at 30-day - Expected: Building on 82.7% importance of price_lag_1w from FAMILY_QUALITY_PREMIUM
Variant B: Price Change Momentum
Status: REFUTED (2025-08-17) - Model: Ridge regression with price changes and acceleration - Features: price_change_1w/2w/4w, price_acceleration, price_momentum_4w/8w, momentum_acceleration - Horizons: 7-day, 14-day, 30-day, 60-day - Target: Test if momentum and acceleration predict future movements with >10% improvement - Expected: Capture mean-reversion after extreme movements (>€2/week)
Variant C: High-Low Spread Signals
Status: REFUTED (2025-08-17) - Model: Ridge regression with weekly spread features - Features: weekly_spread, spread_ma_4w, spread_percentile, spread_change, spread_price_ratio, high/low_momentum - Horizons: 7-day, 14-day, 30-day, 60-day - Target: Test if uncertainty signals predict subsequent adjustments with >8% improvement - Expected: High spreads indicate market uncertainty leading to larger future movements
Statistical Tests
- Diebold-Mariano test with Harvey-Leybourne-Newbold correction
- TOST equivalence test with SESOI = 2% improvement in MASE
- Directional accuracy threshold = 55%
- CUSUM test for structural breaks
- Autocorrelation tests at lags [1, 4, 8, 12]
- Bonferroni correction for multiple comparisons (3 variants × 4 horizons)
Regime Analysis
- Stable: 4-week price change < 5%
- Trending up: 4-week price change > 10%
- Trending down: 4-week price change < -10%
- Volatile: 4-week rolling std > 75th percentile
- Test performance separately for each regime
Verdicts
Verdict - Variant A: Simple Autoregressive — 2025-08-17 11:06
Label: REFUTED
Scope: Dutch potato spot prices, horizons 7-56 days
Effect: median improvement = -57.4% (expected 15%)
Stats: Best horizon (7d): HLN p=0.083, improvement=27.5%; Overall significantly worse at longer horizons
Data/Code: git=unknown; data=Boerderij.nl API (NL.157.2086) REAL DATA 2020-2024
Notes: Contrary to prior experiments, simple price lags performed worse than historical_mean baseline. Limited to 167 weeks of data.
Detailed Results by Horizon: | Horizon | MAE | Improvement | HLN p-value | Verdict | |---------|-----|-------------|-------------|---------| | 7d | 3.85 | +27.5% | 0.083 | ✗ | | 14d | 6.15 | -15.8% | 0.555 | ✗ | | 28d | 10.19 | -99.0% | 0.000 | ✗ | | 56d | 14.82 | -177.5% | 0.000 | ✗ |
Verdict - Variant B: Price Change Momentum — 2025-08-17 11:06
Label: REFUTED
Scope: Dutch potato spot prices, horizons 7-56 days
Effect: median improvement = -150.7% (expected 10%)
Stats: All horizons significantly worse; HLN p<0.01 at all horizons
Data/Code: git=unknown; data=Boerderij.nl API (NL.157.2086) REAL DATA 2020-2024
Notes: Price change features consistently underperformed historical_mean baseline. Momentum indicators not predictive in this market period.
Detailed Results by Horizon: | Horizon | MAE | Improvement | HLN p-value | Verdict | |---------|-----|-------------|-------------|---------| | 7d | 13.54 | -155.2% | 0.006 | ✗ | | 14d | 13.50 | -163.6% | 0.004 | ✗ | | 28d | 13.34 | -146.2% | 0.000 | ✗ | | 56d | 12.22 | -128.8% | 0.000 | ✗ |
Verdict - Variant C: High-Low Spread Signals — 2025-08-17 11:06
Label: REFUTED
Scope: Dutch potato spot prices, horizons 7-56 days
Effect: median improvement = -51.8% (expected 8%)
Stats: Mixed results; 7d showed promise (17% improvement) but not significant
Data/Code: git=unknown; data=Boerderij.nl API (NL.157.2086) REAL DATA 2020-2024
Notes: Spread features showed some promise at shortest horizon but deteriorated rapidly at longer horizons.
Detailed Results by Horizon: | Horizon | MAE | Improvement | HLN p-value | Verdict | |---------|-----|-------------|-------------|---------| | 7d | 4.17 | +17.0% | 0.241 | ✗ | | 14d | 5.81 | -15.7% | 0.197 | ✗ | | 28d | 9.97 | -87.9% | 0.001 | ✗ | | 56d | 15.00 | -176.9% | 0.001 | ✗ |
HE Notes
- Created 2025-08-17 based on unexpected finding that simple price lags dominated in prior experiments
- Directly addresses the 82.7% feature importance of price_lag_1w from FAMILY_QUALITY_PREMIUM
- Focuses on simple, interpretable features aligned with weekly agricultural market rhythms
- All variants use ONLY REAL DATA from repository interfaces
- Hypothesizes that simplicity beats complexity for agricultural commodity forecasting
Decision Log
2025-08-17: All Variants REFUTED
Summary: Contrary to expectations based on prior experiments (FAMILY_QUALITY_PREMIUM, FAMILY_MARKET_SENTIMENT), simple price momentum features failed to improve predictions over naive baselines when tested in isolation.
Key Findings: 1. Variant A (Simple Autoregressive): Expected 15% improvement, achieved -57.4% median (worse than baseline) 2. Variant B (Price Change Momentum): Expected 10% improvement, achieved -150.7% median (significantly worse) 3. Variant C (High-Low Spread): Expected 8% improvement, achieved -51.8% median (worse than baseline)
Possible Explanations: - Data limitations: Only 167 weeks available (2020-2024), covering unusual market period (COVID, supply chain disruptions) - Context dependency: Price lags may only be effective when combined with other features (quality, weather, storage) - Market regime: The 2020-2024 period may have different dynamics than earlier periods where lags showed importance - Overfitting in prior experiments: The 82.7% feature importance may have been specific to the combined model context
Next Steps: 1. Re-examine FAMILY_QUALITY_PREMIUM to understand why price_lag_1w showed high importance there 2. Test whether price features work better in ensemble models rather than isolation 3. Consider structural break analysis for the 2020-2024 period 4. Investigate whether legacy data access would provide different results with longer history
Lessons Learned: - Features that show high importance in complex models may not be predictive in isolation - Market dynamics can vary significantly across time periods - Simple momentum strategies that work in other commodity markets don't necessarily transfer to potatoes
Geen Codex-samenvatting
Voeg codex_validated.md toe om de status te documenteren.