Forecast-Driven
Inventory Policy

Evaluated five forecasting models on 5 years of daily demand, optimized a continuous-review inventory policy via Monte Carlo simulation, and cut total cost by ~9% while sustaining ≥ 95% service.

Executive Summary

Javier Gallegos

Excel · Python · Tableau · GitHub

Optimized (R, Q) policy achieves ~9% lower total inventory cost ($1,683/year savings) while maintaining ≥ 95% service level, validated across 10,000 Monte Carlo runs.

~9%

Cost Decrease

$1,683/year in inventory savings.

≈95%

Service Level

Target met via simulation.

24

Fewer POs/Year

149 → 125 annually.

Simulation Results

Baseline vs. Optimized

10,000 Runs · Grid-Search

Metric Baseline R=92 · Q=42 Optimized R=86 · Q=49 Delta
Total Cost / Day $50.94 $46.33 -$4.61/day
Service Level 96.8% 95.0% -1.8pp (still ≥ 95%)
Holding Cost / Day $30.48 $29.21 -$1.27
Ordering Cost / Day $20.46 $17.12 -$3.34
POs / Year 149 125 -24
Annualized Total $18,593 / yr $16,910 / yr ↓ $1,683 / yr
Assumptions: Lead time 5 days · Service Z: 1.65 (95%) · Holding: $1/unit/day · Order: $50/PO

Exploration · Tableau

Demand Seasonality & Trend

5 Years · Single SKU

Tableau dashboard showing daily demand with 7-day smoothing, monthly trend with labeled peaks, and monthly seasonality overlay across 5 years of data.

Exploratory analysis across 5 years of daily demand surfaced a clear upward trend, recurring monthly seasonality, and high day-to-day variability.

Methodology

  1. Five models benchmarked on a train / holdout split (years 1–4 / year 5) using daily demand. HW (multiplicative) was fit on weekly aggregates then disaggregated back to daily via day-of-week factors for a like-for-like comparison — lowest MAE at 3.94 units/day.
  2. Built continuous-review (R, Q) simulator with proportional Normal noise (σ ≈ 26% of forecast). Baseline policy (R=92, Q=42) derived via EOQ + safety stock formula.
  3. Grid-searched R ± 20, Q ± 20; selected min-cost policy meeting ≥ 95% service. Validated both policies over 10,000 Monte Carlo runs.