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

Hypotheses

FAMILY_MARKET_SENTIMENT: Experiment Log

FAMILY_MARKET_SENTIMENT

Testing whether market sentiment indicators (momentum, volatility regimes, technical patterns) create predictable short-term price dynamics in Dutch potato markets.

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

Experimentnotities

FAMILY_MARKET_SENTIMENT: Experiment Log

Overview

Testing whether market sentiment indicators (momentum, volatility regimes, technical patterns) create predictable short-term price dynamics in Dutch potato markets.

Hypothesis Origins

  • Prior experiments:
  • FAMILY_SPRING_VOL showed 84x volatility regime differences, indicating sentiment shifts
  • FAMILY_SEASONAL_PLANTING Variant B achieved 53% improvement at 30-day using short-term features
  • FAMILY_QUALITY_PREMIUM Variant C showed momentum features (price_lag_1w) dominating with 48.2% improvement
  • FAMILY_PRODUCTION_CYCLE Variant B demonstrated 71-78% improvement combining multiple signals
  • Industry catalyst: Increased algorithmic trading post-2020, momentum-driven behavior during storage depletion
  • Academic basis: Lo & MacKinlay (1990) momentum effects, Baek & Brock (1992) nonlinear price dynamics

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, ARIMA, linear trend
  • REAL DATA ONLY: Boerderij.nl prices, CBS production/storage, Open-Meteo weather

Data Sources (REAL DATA ONLY)

  • Boerderij.nl API: Product NL.157.2086 (consumption potatoes) - git:31ab258
  • CBS API: Table 85676NED (production/storage) - version 2024-Q4
  • Open-Meteo API: Weather data (52.6°N, 5.7°E) for regime context - git:31ab258
  • NO synthetic, mock, or dummy data permitted

Experiment Runs

Variant A: Price Momentum and Technical Indicators

Status: Completed - INCONCLUSIVE - Model: Ridge regression with momentum and technical features - Features: price_momentum_7d, price_momentum_30d, RSI_14, MA_crossover, Bollinger_position, volume_price_trend - Horizons: 30-day (tested) - Result: Technical indicators underperformed historical_mean baseline (MAPE 14.41% vs 4.36%) - Learning: Weekly granularity insufficient for technical indicators; simple price lags more predictive

Variant B: Volatility Regime Switching

Status: Completed - INCONCLUSIVE - Model: Ridge regression with volatility features (weekly data constraint) - Features: Rolling volatility (7d/30d), volatility ratio, GARCH-like volatility, volatility percentile, regime indicators - Horizons: 30-day, 60-day - Result: Model underperformed all baselines at both horizons - Learning: Volatility features from weekly data insufficient for prediction; simple price lags dominated

Variant C: Combined Sentiment-Fundamental Model

Status: Not started - Model: Gradient boosting ensemble - Features: Momentum + volatility + fundamentals (storage, quality, weather) - Horizons: 30-day, 60-day - Target: Test if combined sentiment-fundamental signals achieve superior performance - Expected: >15% improvement at 30-day horizon

Statistical Tests

  • Diebold-Mariano test with Harvey-Leybourne-Newbold correction
  • TOST equivalence test with SESOI = 5% improvement
  • Directional accuracy threshold = 60%
  • Kupiec VaR coverage test for volatility predictions
  • Bonferroni correction for multiple comparisons (3 variants × 2 horizons)

Regime Analysis

  • Low volatility periods: Below median annual volatility
  • High volatility periods: Above 75th percentile
  • Trending markets: 12-week momentum >10%
  • Ranging markets: 12-week momentum between -5% and 5%
  • Test performance separately for each regime

Verdicts

Verdict v1 — 2025-08-16 — Variant A

Label: INCONCLUSIVE
Scope: Dutch potato spot prices, 30-day horizon
Effect: ΔMAPE = -230.6% vs historical_mean baseline (model performed worse)
Stats: DM p=0.083, HLN p=0.170
SESOI: 5% improvement threshold
Data/Code: git=2e1707c; data=Boerderij.nl API NL.157.2086 (REAL DATA)
MLflow Run: 2dfbd8774c9f4b8fa8202ab277b8a6f0
Notes: Technical indicators (RSI, momentum, Bollinger bands) calculated from REAL weekly price data. Model significantly underperformed baselines. Weekly data granularity appears insufficient for technical trading indicators designed for daily data. Feature importance showed price_lag_1w dominated (coefficient=8.97), suggesting simple lags more predictive than complex technical indicators.

Verdict v2 — 2025-08-16 — Variant B

Label: INCONCLUSIVE
Scope: Dutch potato spot prices, 30-day and 60-day horizons
Effect: - 30-day: MAPE 30.32% vs 16.05% (naive), improvement=-88.8%, HLN p=0.071 - 60-day: MAPE 42.37% vs 15.90% (naive), improvement=-166.5%, HLN p=0.003 Volatility Clustering: 30-day: No (p=0.352), 60-day: No (p=0.693) SESOI: 5% improvement threshold
Data/Code: git=c42e4e7; data=Boerderij.nl API NL.157.2086 (REAL DATA)
MLflow Run: 7ffa59e071134d68aef4ac35ded22147
Notes: Volatility regime features calculated from REAL weekly price data. Model captures volatility dynamics including rolling volatility at multiple windows, GARCH-like conditional volatility, volatility percentiles, and asymmetry measures. Weekly data granularity limits full Markov-Switching GARCH implementation. Model significantly underperformed baselines at both horizons. Feature importance analysis shows price lags (price_lag_1w: 4.69, price_lag_4w: 3.90) dominated volatility features, confirming that simple price history is more predictive than complex volatility indicators at weekly granularity.

HE Notes

  • Created 2025-08-16 based on successful short-term patterns from prior families
  • Builds directly on momentum insights from FAMILY_QUALITY_PREMIUM showing price lags dominate
  • Leverages volatility regime findings from FAMILY_SPRING_VOL
  • Focus on 30-60 day horizons where we've demonstrated consistent success
  • All variants designed to use ONLY REAL DATA from repository interfaces

Decision Log

2025-08-16: Variants A & B Complete

Findings: - Both technical indicator (A) and volatility regime (B) approaches failed to outperform simple baselines - Weekly data granularity appears fundamentally insufficient for sentiment/technical analysis - Simple price lags consistently dominate complex features in importance analysis - No evidence of exploitable volatility clustering in weekly potato price data

Key Insights: 1. Data Frequency Mismatch: Technical indicators designed for daily trading don't translate to weekly agricultural commodity data 2. Volatility Persistence: Unlike financial markets, potato price volatility doesn't exhibit predictable clustering at weekly resolution 3. Lag Dominance: Price_lag_1w and price_lag_4w coefficients (4.69, 3.90) dwarf all technical/volatility features

Recommendation: - Do not proceed with Variant C (Combined model) given poor performance of component features - Market sentiment hypothesis appears invalid for weekly potato price data - Future work should focus on fundamental drivers (weather, storage, quality) rather than technical patterns

2025-08-16: Variant C Complete

Summary: Combined model performed worse than all baselines despite hyperparameter tuning and feature engineering

Results: - Gradient Boosting with 14 features (7 sentiment, 5 fundamental, 2 interaction) - 30-day horizon: MAPE 46.81% vs 16.75% historical_mean baseline (-179.5% improvement) - 60-day horizon: MAPE 39.89% vs 17.04% historical_mean baseline (-134.1% improvement) - Model significantly underperformed even simple naive forecasts

Feature Analysis: - price_lag_1w dominated with 82.7% importance at 30-day, 69.0% at 60-day - All momentum/volatility features combined < 5% importance - Fundamental features (weather, storage, production) < 2% importance - Interaction features showed minimal predictive value

Final Conclusion: Market sentiment hypothesis definitively REJECTED for Dutch potato markets. Technical indicators, volatility regimes, and momentum patterns that work in financial markets do not translate to agricultural commodity prices at weekly resolution. The dominance of simple price lags indicates potato prices follow autoregressive mean-reversion rather than sentiment-driven trends. Weekly data frequency is fundamentally incompatible with sentiment analysis designed for daily trading.

Verdicts

Verdict v3 — 2025-08-16 — Variant C

Label: INCONCLUSIVE
Scope: Dutch potato spot prices, 30-day and 60-day horizons
Effect: - 30-day: ΔMAPE = -179.5% vs historical_mean baseline (model performed worse) - 60-day: ΔMAPE = -134.1% vs historical_mean baseline (model performed worse) Stats: - 30-day: DM p=0.004, HLN p=0.028 (significant but in wrong direction) - 60-day: DM p=0.044, HLN p=0.113 (not significant) SESOI: 5% improvement threshold
Data/Code: git=c42e4e7; data=Boerderij.nl NL.157.2086, CBS production, Open-Meteo weather (ALL REAL DATA)
MLflow Run: 73aacb34470e48d88227d4f50d6fdcf4

Feature Importance Analysis: - Sentiment features: 89.0% of total importance (dominated by price_lag_1w at 82.7% for 30-day) - Fundamental features: 1.1% of total importance
- Interaction features: 9.9% of total importance

Key Findings: - Simple price lags dominate (>68% importance), suggesting autoregressive behavior stronger than sentiment - Volatility features contribute <2% importance, no exploitable volatility clustering - Momentum features weak (<3% importance), no strong trend-following behavior - Fundamental features (storage, weather, production) had minimal predictive value

Notes: Combined sentiment-fundamental model using Gradient Boosting with hyperparameter tuning on REAL data from Boerderij.nl API (465 weeks), CBS production data (15 years), and Open-Meteo weather cache (3834 days). Despite combining best features from Variants A & B with fundamental indicators, model performance deteriorated further. The Gradient Boosting model with 14 features achieved MAPE of 46.81% (30-day) and 39.89% (60-day) versus historical_mean baseline of 16.75% and 17.04% respectively. Weekly data granularity appears fundamentally unsuitable for sentiment-based trading indicators. Simple autoregressive patterns (price_lag_1w) continue to dominate all other features, suggesting potato markets follow mean-reverting rather than momentum-driven dynamics at weekly resolution.

Geen Codex-samenvatting

Voeg codex_validated.md toe om de status te documenteren.