Agricultural Market Price Forecasting System

Time Series Forecasting for Karnataka Mandi Prices

  • Time Series

  • Deep Learning

  • Agriculture

  • Forecasting

  • Transformer

  • PatchTST

This project develops a deep learning-based forecasting system for agricultural commodity prices across Karnataka mandis (markets). Using historical price data spanning 2015-2025, the system employs PatchTST, a state-of-the-art transformer architecture, to predict 30-day forward prices for 1,065 unique market-commodity-variety combinations.

Dataset Size

3.14M

Time Range

2015-2025

Model Name

PatchTST

Forcast Horizon

30 Days

Dataset Size

3.14M

Time Range

2015-2025

Model Name

PatchTST

Forcast Horizon

30 Days

Dataset Size

3.14M

Time Range

2015-2025

Model Name

PatchTST

Forcast Horizon

30 Days

Project Framing

Agricultural commodity pricing in India is characterized by high volatility, information asymmetry, and limited price transparency. Farmers, traders, and policymakers lack reliable tools to anticipate market movements, leading to suboptimal decision-making.

This project aims to democratize price intelligence by building an accurate, scalable forecasting system using publicly available mandi (market) data from Karnataka state. The system targets multiple stakeholders:

Farmers

Planning harvest timing and crop selection

Traders

Inventory management and procurement decisions

Policymakers

Market intervention and price stabilization

Researchers

Understanding agricultural market dynamics

Farmers

Planning harvest timing and crop selection

Traders

Inventory management and procurement decisions

Policymakers

Market intervention and price stabilization

Researchers

Understanding agricultural market dynamics

Farmers

Planning harvest timing and crop selection

Traders

Inventory management and procurement decisions

Policymakers

Market intervention and price stabilization

Researchers

Understanding agricultural market dynamics

Problem Statement

Primary Challenge:
Develop a time series forecasting model that can accurately predict modal (most common) prices for agricultural commodities 30 days into the future, across diverse market-commodity combinations with varying data quality and trading patterns.

Key Challenges:

Serve data missingness (up to 80% in some series)

Irregular trading patterns (markets don't operate every day)

Heterogeneous time series (different commodities, markets, seasonality)

Need for scalable solution across 1,065+ series

Maintaining temporal consistency during imputation

Objective & Success Criteria

Primary Objective

Build a production-ready forecasting system capable of generating 30-day price predictions for all active market-commodity combinations with acceptable accuracy and computational efficiency.

Success Criteria

Accuracy

Mean Absolute Percentage Error (MAPE) < 15%

Data Quality

Successfully impute 80%+ of missing values

Scalability

Train on 1,000+ series within 24 hours

Robustness

Handle series with varying lengths and patterns

Accuracy

Mean Absolute Percentage Error (MAPE) < 15%

Data Quality

Successfully impute 80%+ of missing values

Scalability

Train on 1,000+ series within 24 hours

Robustness

Handle series with varying lengths and patterns

Accuracy

Mean Absolute Percentage Error (MAPE) < 15%

Data Quality

Successfully impute 80%+ of missing values

Scalability

Train on 1,000+ series within 24 hours

Robustness

Handle series with varying lengths and patterns


Literature Review

Time series forecasting for agricultural prices has evolved significantly with the advent of deep learning. Traditional approaches relied on statistical methods like ARIMA and seasonal decomposition, which struggle with non-linear patterns and multivariate dependencies.

Deep Learning for Time Series

Architectures such as LSTM networks, Temporal Convolutional Networks (TCN), and Transformer models have demonstrated superior capability in capturing long-range dependencies using self-attention mechanisms.

Patch-based Transformers

PatchTST (Nie et al., 2023) introduced patch-based segmentation of time series, treating subsequences as tokens similar to Vision Transformers.

Reduced computational complexity

Improved local feature learning

Channel independence for multivariate series

State-of-the-art benchmark performance

Agricultural Market Intelligence

Domain research emphasizes seasonality, weather integration, and regional market variability. However, scalability remains limited, as most studies focus on single commodities or isolated markets.

Literature Review

Time series forecasting for agricultural prices has evolved significantly with the advent of deep learning. Traditional approaches relied on statistical methods like ARIMA and seasonal decomposition, which struggle with non-linear patterns and multivariate dependencies.

Deep Learning for Time Series

Architectures such as LSTM networks, Temporal Convolutional Networks (TCN), and Transformer models have demonstrated superior capability in capturing long-range dependencies using self-attention mechanisms.

Patch-based Transformers

PatchTST (Nie et al., 2023) introduced patch-based segmentation of time series, treating subsequences as tokens similar to Vision Transformers.

Reduced computational complexity

Improved local feature learning

Channel independence for multivariate series

State-of-the-art benchmark performance

Agricultural Market Intelligence

Domain research emphasizes seasonality, weather integration, and regional market variability. However, scalability remains limited, as most studies focus on single commodities or isolated markets.


Shortfalls in Existing Approaches

Limitation

Impact

Statistical models (ARIMA, ETS)

Cannot capture non-linear patterns; poor with missing data

Traditional LSTM/RNN

Vanishing gradients; slow training; sequential bottleneck

Standard Transformers

Quadratic complexity; requires extensive data

Single-series approaches

Not scalable; cannot leverage cross-series patterns


Reframed Goal

Build a unified forecasting pipeline that:

1. Handles Missing Data Intelligently: Implement gap-aware interpolation that respects temporal dependencies and trading patterns.

2. Scales Across Series: Train a single model on all 1,065 series simultaneously, enabling transfer learning across commodities and markets.

3. Leverages Modern Architecture: Use PatchTST to capture both local patterns and long-range dependencies efficiently.

4. Provides Actionable Insights: Generate 30-day forecasts with confidence intervals, enabling risk-aware decision making.


Data Collection


Total Records

3.14M

Unique Series

1,065

Date Range

2015-2025

Avg Missing

~54%

Total Records

3.14M

Unique Series

1,065

Date Range

2015-2025

Avg Missing

~54%

Total Records

3.14M

Unique Series

1,065

Date Range

2015-2025

Avg Missing

~54%

Data Source

Historical mandi (agricultural market) price data from Karnataka state, sourced from government repositories. The dataset covers daily modal prices reported by market committees across the state.

Data Schema


Field

Type

Description

Arrival_Date

DateTime

Trading date

State

String

Karnataka

District

String

Administrative district

Market

String

Market/mandi name

Commodity

String

Crop/product name

Variety

String

Commodity variety/cultivar

Grade

String

Quality grade (FAQ, Medium, etc.)

Modal_Price

Float

Most common price in rupees/quintal

Latitude/Longitude

Float

Geographic coordinates


Data Processing Pipeline

The data undergoes a multi-stage processing pipeline to prepare it for modeling:



01

Data Cleaning

Objective: Filter out low-quality time series that would compromise model training.

Process:
1. Group data by (State, District, Market, Commodity, Variety, Grade)
2. Calculate missing data percentage for each series
3. Filter series where: 
• Missing data ≤ 80% 
• Total days ≥ 1004.
4. Result: Retained 1,065 series (representing high-quality data)

Distribution of Missing Data Across Market-Commodity Combinations
0142842567020283644526068768492100Missing Data Percentage (%)Frequency
80% threshold
02

Date Expansion

Objective: Create continuous daily timeline for each series to enable uniform forecasting.

Process:

• For each series, create date range from min to max date

• Fill categorical features (State, Market, etc.) using forward/backward fill

• Leave Modal_Price as NaN for missing dates (to be imputed)

• Result: Uniform daily grid for all series

03

Data Imputation

Objective: Fill missing price values intelligently while respecting temporal patterns.

Algorithm: Gap-Aware Linear Interpolation

• For gaps ≤ 7 days: Linear interpolation between known values

• For gaps > 7 days: Forward fill from last known value

• Rationale: Short gaps likely represent continuous market conditions; long gaps may indicate structural changes

• Add 'is_traded' flag to distinguish actual vs imputed values

04

Smoothing

Objective: Reduce noise in imputed values to prevent unrealistic price jumps.

Process:

• Apply 7-day rolling median filter to imputed sequences

• Preserve original traded values unchanged

• Result: Smoother transitions, reduced forecast variance

05

Feature Engineering

Created features to enhance model learning:

• unique_id: Concatenation of Commodity_Variety_Grade_State_District_Market

• dayofweek: Day of week (0=Monday, 6=Sunday)

• month: Month of year (1-12)

• year: Calendar year

• is_traded: Binary flag (True=actual price, False=imputed)

01

Data Cleaning

Objective: Filter out low-quality time series that would compromise model training.

Process:
1. Group data by (State, District, Market, Commodity, Variety, Grade)
2. Calculate missing data percentage for each series
3. Filter series where: 
• Missing data ≤ 80% 
• Total days ≥ 1004.
4. Result: Retained 1,065 series (representing high-quality data)

Distribution of Missing Data Across Market-Commodity Combinations
0142842567020283644526068768492100Missing Data Percentage (%)Frequency
80% threshold
02

Date Expansion

Objective: Create continuous daily timeline for each series to enable uniform forecasting.

Process:

• For each series, create date range from min to max date

• Fill categorical features (State, Market, etc.) using forward/backward fill

• Leave Modal_Price as NaN for missing dates (to be imputed)

• Result: Uniform daily grid for all series

03

Data Imputation

Objective: Fill missing price values intelligently while respecting temporal patterns.

Algorithm: Gap-Aware Linear Interpolation

• For gaps ≤ 7 days: Linear interpolation between known values

• For gaps > 7 days: Forward fill from last known value

• Rationale: Short gaps likely represent continuous market conditions; long gaps may indicate structural changes

• Add 'is_traded' flag to distinguish actual vs imputed values

04

Smoothing

Objective: Reduce noise in imputed values to prevent unrealistic price jumps.

Process:

• Apply 7-day rolling median filter to imputed sequences

• Preserve original traded values unchanged

• Result: Smoother transitions, reduced forecast variance

05

Feature Engineering

Created features to enhance model learning:

• unique_id: Concatenation of Commodity_Variety_Grade_State_District_Market

• dayofweek: Day of week (0=Monday, 6=Sunday)

• month: Month of year (1-12)

• year: Calendar year

• is_traded: Binary flag (True=actual price, False=imputed)

Exploratory Data Analysis


Key Findings


Metric

Value

Total Records

3,141,486

Unique Series

1,065

Date Range

2015-01-01 to 2025-09-09

Avg. Missing %

~54% (pre-imputation)

Price Range

₹100 - ₹30,000 per quintal

Insights

Strong seasonality in vegetables (tomato, onion) with 3-4 month cycles

Staple grains (rice, wheat) show longer-term trends with less volatility

Cash crops (cotton, areca nut) exhibit high variance

Weekend and festival effects visible in trading patterns

Geographic clustering: nearby markets show correlated price movements


Modeling Strategy


Selected Model

PatchTST

Patch Time Series Transformer uses patch-based segmentation of time series, treating subsequences as 'tokens' similar to image patches in Vision Transformers. This approach reduces computational complexity, improves local pattern recognition, and achieves state-of-the-art results on benchmark datasets.

Input

180 days

Patching

Convert to patches

Transformer

Self-attention

Output

30-day forecast

Selected Model

PatchTST

Patch Time Series Transformer uses patch-based segmentation of time series, treating subsequences as 'tokens' similar to image patches in Vision Transformers. This approach reduces computational complexity, improves local pattern recognition, and achieves state-of-the-art results on benchmark datasets.

Input

180 days

Patching

Convert to patches

Transformer

Self-attention

Output

30-day forecast




Train-Test Split

Temporal split approach:

• Training set: All data up to 1 year before the most recent date
• Test set: Final 1 year of data
• Rationale: Simulates real-world forecasting scenario; prevents data leakage


Training Dynamics


7559432711Epoch 1Epoch 2Epoch 3Epoch 4Epoch 5Epoch 6Epoch 7Epoch 8Epoch 9Epoch 10Training LossValidation Loss
7559432711Epoch 1Epoch 2Epoch 3Epoch 4Epoch 5Epoch 6Epoch 7Epoch 8Epoch 9Epoch 10Training LossValidation Loss

Training Observations

Loss converged smoothly after ~5-6 epochs

No significant overfitting observed (train/val loss tracked closely)

GPU acceleration provided ~8x speedup vs CPU

Total training time: ~2-3 hours on Apple M1 MPS


Model Comparison

PatchTST was selected after comparison with baseline approaches:

Model

Strengths

Weaknesses

Status

ARIMA

Interpretable

Poor with non-stationarity

Rejected

LSTM/RNN

Sequential modeling

Vanishing gradients, slow

Rejected

Standard Transformer

Long-range dependencies

Quadratic complexity

Considered

PatchTST

Efficient, patch-based

Requires more data

Selected


Results & Performance


MAE

₹285

MAPE

12.3%

RMSE

₹412

Coverage

100%

MAE

₹285

MAPE

12.3%

RMSE

₹412

Coverage

100%

MAE

₹285

MAPE

12.3%

RMSE

₹412

Coverage

100%


30-Day Price Forecast
Historical
Forecast
2,3502,6002,8503,0503,300115254050657590
30-Day Price Forecast
Historical
Forecast
2,3502,6002,8503,0503,300115254050657590


Strong Predictive Performance

The model demonstrates strong predictive performance across diverse commodity types and markets. With a MAPE of 12.3% (below the 15% target), the system successfully forecasts prices for all 1,065 market-commodity combinations, providing actionable insights for stakeholders.

Deployment Architecture

The forecasting system follows a batch prediction architecture suitable for production deployment:


Layer 1

Data Ingestion Layer

 • Scheduled ETL pipeline to fetch latest mandi prices

• Data validation and quality checks

 • Storage in PostgreSQL/MongoDB

Layer 1

Data Ingestion Layer

 • Scheduled ETL pipeline to fetch latest mandi prices

• Data validation and quality checks

 • Storage in PostgreSQL/MongoDB


Layer 2

Processing Pipeline

 • Data cleaning and imputation (as described in pipeline)

 • Feature engineering

 • Preprocessing for model input

Layer 2

Processing Pipeline

 • Data cleaning and imputation (as described in pipeline)

 • Feature engineering

 • Preprocessing for model input


Layer 3

Inference Service

 • Model loaded into memory (PyTorch/ONNX runtime)

 • Batch prediction for all active series

 • GPU acceleration for faster inference

Layer 3

Inference Service

 • Model loaded into memory (PyTorch/ONNX runtime)

 • Batch prediction for all active series

 • GPU acceleration for faster inference


Layer 4

API Layer

 • REST API (FastAPI/Flask) for forecast retrieval

 • Query by commodity, market, date range

 • Response caching for frequently accessed forecasts

Layer 4

API Layer

 • REST API (FastAPI/Flask) for forecast retrieval

 • Query by commodity, market, date range

 • Response caching for frequently accessed forecasts


Layer 5

Monitoring & Updates

• Performance tracking (MAPE drift detection)

• Scheduled model retraining (monthly/quarterly)

• Alerting for data quality issues

Layer 5

Monitoring & Updates

• Performance tracking (MAPE drift detection)

• Scheduled model retraining (monthly/quarterly)

• Alerting for data quality issues


Learnings & Tradeoffs


Key Learnings

Imputation Strategy Matters

Gap-aware imputation (different strategies for short vs long gaps) prevented unrealistic price jumps and improved forecast stability.

Single Model for All Series

Training one PatchTST model on all 1,065 series outperformed individual models, likely due to transfer learning across similar commodities.

Temporal Features Are Critical

Day-of-week and month features significantly improved accuracy by capturing weekly market cycles and seasonal patterns.

Data Quality > Model Complexity

Investing time in rigorous data cleaning and imputation yielded better results than experimenting with more complex architectures.

Tradeoffs & Limitations

Computational Cost

PatchTST requires GPU for practical training times. This limits deployment to environments with GPU access or requires ONNX conversion for CPU inference.

Interpretability

Deep learning models are less interpretable than ARIMA or regression. Stakeholders may require additional explanation layers (SHAP, attention visualization).

Extreme Events

Model struggles with unprecedented shocks (e.g., COVID-19 lockdowns, sudden policy changes). Ensemble with rule-based adjustments could help.

Data Freshness

Forecasts depend on recent data availability. Delayed reporting from mandis reduces forecast accuracy for the first few days.

Key Learnings

Imputation Strategy Matters

Gap-aware imputation (different strategies for short vs long gaps) prevented unrealistic price jumps and improved forecast stability.

Single Model for All Series

Training one PatchTST model on all 1,065 series outperformed individual models, likely due to transfer learning across similar commodities.

Temporal Features Are Critical

Day-of-week and month features significantly improved accuracy by capturing weekly market cycles and seasonal patterns.

Data Quality > Model Complexity

Investing time in rigorous data cleaning and imputation yielded better results than experimenting with more complex architectures.

Tradeoffs & Limitations

Computational Cost

PatchTST requires GPU for practical training times. This limits deployment to environments with GPU access or requires ONNX conversion for CPU inference.

Interpretability

Deep learning models are less interpretable than ARIMA or regression. Stakeholders may require additional explanation layers (SHAP, attention visualization).

Extreme Events

Model struggles with unprecedented shocks (e.g., COVID-19 lockdowns, sudden policy changes). Ensemble with rule-based adjustments could help.

Data Freshness

Forecasts depend on recent data availability. Delayed reporting from mandis reduces forecast accuracy for the first few days.

Future Work

Short-Term Enhancements

• Add weather data (rainfall, temperature) as exogenous features

• Incorporate festival calendars for demand spikes

• Implement uncertainty quantification (conformal prediction intervals)

• Build interactive dashboard for stakeholder access

 

Long-Term Research Directions

• Multi-horizon forecasting (7, 14, 30, 90 days)

• Cross-state expansion (Andhra Pradesh, Tamil Nadu data)

• Causal inference: measure impact of policy interventions

• Real-time anomaly detection for price manipulation

• Integration with supply chain optimization models