GitHub →

What is it?

A fare forecasting system for RideWave, a fictional urban mobility company operating bikes, autos, and cars in Quahog City. Given three years of hourly fare data (2021–2023), I built predictive models for each vehicle type and combined them into an ensemble to power dynamic pricing recommendations.

Why I built it

Dynamic pricing is one of the more interesting applied ML problems — it sits at the intersection of time series forecasting, business strategy, and real operational constraints. I wanted to work through the full pipeline: exploratory analysis, model selection, feature engineering, and ensemble design, rather than just fitting a single off-the-shelf model.

How it works

Each vehicle type behaved differently in the data, so I used a different model for each:

  • Bikes → SARIMAX, to capture both trend and seasonality in the time series.
  • Autos → XGBoost, after feature engineering revealed patterns better suited to a gradient boosting approach.
  • Cars → VAR (Vector Autoregression), to model inter-variable relationships.

The three models were then combined into an ensemble for a more robust final forecast. Performance was measured using SMAPE — a percentage-based error metric that handles the scale differences across vehicle types fairly.

Tech Stack

  • Language: Python
  • Models: SARIMAX, XGBoost, VAR, Holt-Winters, Ensemble
  • Libraries: pandas, numpy, statsmodels, scikit-learn, matplotlib, seaborn