PriceCast
Undergraduate thesis testing whether satellite climate data improves food price forecasts
Project gallery
Overview
About the project
For my undergraduate thesis, I developed a next-month food price forecast for 19 commodities in Sultan Kudarat. The Python pipeline filters market price records, joins monthly rainfall and vegetation data, and creates price-change, momentum, volatility, climate, and seasonal features. An XGBoost model predicts a price correction that is reduced with a 0.1 shrinkage factor. A web dashboard presents historical prices and forecast comparisons. I defended the thesis in March 2026.
The need
Forecasts need a baseline: a complex model is not useful if it cannot improve on using the current price as next month's estimate.
What I built
I used rolling-origin backtesting against that naive baseline. The saved evaluation reports hybrid MAE of ₱4.68 versus ₱4.66 for the naive estimate: the climate features did not beat the baseline, which became the study's main finding.
Features
Main features
ML Forecasting Engine
- XGBoost regression on 15 price, climate, season, and commodity features
- 0.1 shrinkage factor limits the model's suggested price correction
- Rolling-origin backtesting compares forecasts with the unchanged-price baseline
- Saved evaluation: hybrid MAE ₱4.68; naive MAE ₱4.66 across 274 test predictions
Climate Data Integration
- Satellite rainfall data from CHIRPS dataset
- Vegetation index (NDVI) from MODIS satellite imagery
- Climate anomaly and change detection features
- Cyclical encoding for seasonal patterns
Fullstack Dashboard
- React + TypeScript frontend with chart visualizations
- FastAPI backend with Python ML inference
- Historical price charts and forecast comparisons
- Commodity-wise prediction breakdowns
Implementation
Technical stack & architecture
ML Framework
XGBoost / Python
Backend
FastAPI
Frontend
React + TypeScript
Data Sources
WFP prices, rainfall, NDVI
Evaluation
Rolling-Origin Backtesting
Deployment
Local / VPS
Have a project in mind?
Tell me what you want to build, your timeline, and your main requirements.