MegaMart is a major European retail chain with 250 stores across 8 countries. Founded in 1985, they’ve grown to €4.2B in annual revenue. Their motto: “Everything you need, when you need it.”
Your Role: You’ve been hired as forecasting consultants for their critical Christmas season planning.
The Christmas Crisis
Last Year’s Disaster:
Gaming Console X: Sold out December 10th, missed €1.2M in sales
Fitness Tracker Pro: 500 units unsold, €150K clearance loss
Smart Speaker Mini: Perfect stock, but pure luck
Operations Director: “We can’t afford another Christmas like last year. Every stockout means disappointed customers and lost revenue. Every overstock means clearance losses and tied-up capital. We need accurate forecasts!”
The Challenge
Your Mission
Forecast December 2025 sales (weeks 1-4) for three key products using 3 years of historical weekly data.
The Three Products
1. TechPod Pro (Wireless Earbuds)
Category: Consumer Electronics
Price: €199
Margin: €80 per unit
Storage cost: €2 per unit per week
Lead time: 3 weeks from supplier
Last year: Strong growth, some seasonality
2. FitBand Ultra (Fitness Tracker)
Category: Health & Wellness
Price: €149
Margin: €55 per unit
Storage cost: €1.50 per unit per week
Lead time: 4 weeks from supplier
Last year: Volatile, New Year resolution spike
3. CozyThrow Deluxe (Heated Blanket)
Category: Home & Living
Price: €79
Margin: €30 per unit
Storage cost: €3 per unit per week (bulky)
Lead time: 6 weeks from supplier
Last year: Highly seasonal, winter peak
Success Metrics
Your forecasts will be evaluated on:
Accuracy (60%): Mean Absolute Error (MAE) across all 12 forecasts
Business Logic (20%): Reasonable patterns, seasonality considered
Method Clarity (20%): Clear explanation of approach
Financial Impact
Cost of Errors:
Underforecast: Lost profit margin + customer disappointment
Product Statistics (weekly sales):
----------------------------------------
TECHPOD_PRO:
Average: 333 units/week
Std Dev: 58 units
Range: 218 - 489 units
FITBAND_ULTRA:
Average: 179 units/week
Std Dev: 54 units
Range: 75 - 345 units
COZYTHROW_DELUXE:
Average: 118 units/week
Std Dev: 48 units
Range: 50 - 244 units
December Weeks to Forecast
# Define the December 2025 weeks we need to forecast (exactly 4 weeks)december_weeks = pd.date_range(start='2025-12-01', periods=4, freq='W-MON')print("December 2025 weeks to forecast:")for i, week inenumerate(december_weeks, 1):print(f" Week {i}: {week.date()} (Monday start)")# Create a template for your submissionforecast_template = pd.DataFrame({'week': december_weeks,'week_num': [1, 2, 3, 4],'techpod_pro': [0, 0, 0, 0], # Your forecasts here'fitband_ultra': [0, 0, 0, 0], # Your forecasts here'cozythrow_deluxe': [0, 0, 0, 0] # Your forecasts here})print("\nForecast template (you'll fill this):")print(forecast_template)print("\nExample: How to fill your forecasts:")print(" forecast_template.loc[0, 'techpod_pro'] = your_week1_forecast")print(" forecast_template.loc[1, 'techpod_pro'] = your_week2_forecast")print(" ... and so on for all products and weeks")
December 2025 weeks to forecast:
Week 1: 2025-12-01 (Monday start)
Week 2: 2025-12-08 (Monday start)
Week 3: 2025-12-15 (Monday start)
Week 4: 2025-12-22 (Monday start)
Forecast template (you'll fill this):
week week_num techpod_pro fitband_ultra cozythrow_deluxe
0 2025-12-01 1 0 0 0
1 2025-12-08 2 0 0 0
2 2025-12-15 3 0 0 0
3 2025-12-22 4 0 0 0
Example: How to fill your forecasts:
forecast_template.loc[0, 'techpod_pro'] = your_week1_forecast
forecast_template.loc[1, 'techpod_pro'] = your_week2_forecast
... and so on for all products and weeks
Starter Code & Helper Functions
def calculate_mae(actual, forecast):"""Calculate Mean Absolute Error"""return np.mean(np.abs(actual - forecast))def calculate_mape(actual, forecast):"""Calculate Mean Absolute Percentage Error"""return np.mean(np.abs((actual - forecast) / actual)) *100def simple_moving_average(data, window):"""Calculate simple moving average forecast"""return data.iloc[-window:].mean()def seasonal_naive(data, season_length=52):"""Forecast based on same week last year"""iflen(data) < season_length:return data.iloc[-1] # Fallback to last valuereturn data.iloc[-season_length]print("Helper functions loaded!")print("\nAvailable functions:")print(" - calculate_mae(actual, forecast)")print(" - simple_moving_average(data, window)")print(" - seasonal_naive(data, season_length)")
# Example forecast for TechPod Pro using simple moving averageprint("Example Forecast: TechPod Pro")print("-"*40)# Method 1: Simple 4-week moving averagetechpod_ma4 = simple_moving_average(historical_data['techpod_pro'], window=4)print(f"4-week MA forecast: {techpod_ma4:.0f} units/week")# Method 2: Same week last yeartechpod_seasonal = seasonal_naive(historical_data['techpod_pro'], season_length=52)print(f"Last year same week: {techpod_seasonal:.0f} units/week")print("\nYou can use any of these methods or create your own!")
Example Forecast: TechPod Pro
----------------------------------------
4-week MA forecast: 402 units/week
Last year same week: 408 units/week
You can use any of these methods or create your own!
Your Task
Step 1: Analyze Each Product
Study the patterns, trends, and seasonality for each product. Consider:
Is there a clear trend (growing/declining)?
Is there seasonality? When are the peaks?
How volatile is the demand?
What happened last December?
Step 2: Choose Your Methods
Select appropriate forecasting methods for each product. You might use:
Different methods for different products
Combination of methods
Adjusted forecasts based on December patterns
Your own creative approach
Step 3: Generate Forecasts
Create your forecasts for the 4 December weeks for each product.
# YOUR SOLUTION HERE# This is where you'll implement your forecasting approach# Step 1: Analyze patterns (add your analysis code)# Step 2: Choose and implement methods# Step 3: Generate December forecasts# Step 4: Validate your forecasts are reasonable
Step 4: Create Your Submission
Prepare a one-slide presentation (PDF) containing:
Your Forecasts: Clear visualization of all 12 predictions
Method Summary: 2-3 sentences explaining your approach
Key Insights: What patterns did you find?
Confidence Level: How confident are you in these forecasts?
Tips for Success
Strategy Suggestions
Start Simple: Get a baseline forecast working first
Look for Patterns: December might be special for some products
Consider Product Types: Electronics vs. seasonal items behave differently
Validate Reasonableness: Do your forecasts make business sense?
Common Pitfalls
Using the same method for all products without considering their differences
Ignoring obvious seasonality
Forecasts way outside historical ranges without justification
Overly complex methods when simple ones work better