Let op: dit experiment is nog niet Codex-gevalideerd. Gebruik de bevindingen als voorlopige aanwijzingen.

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.

Laatste update
2025-12-01
Repo-pad
hypotheses/FAMILY_PRICE_MOMENTUM
Codex-bestand
Ontbreekt

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.