TL;DR: High turnover is expensive. We built a Python simulation to show how frequent employee replacement drains productivity and profits.
💼 The Real-World Problem
Hiring and training new employees takes time and money. But how much does frequent employee turnover actually affect a company’s bottom line?
We often assume it's "bad," but let's model it in code to see how bad—and why.
In this article, I use Python to simulate a company with:
- A fixed number of employees
- A monthly turnover rate
- A realistic learning curve for productivity
- Associated hiring/training costs
🧪 Simulation Design
Assumptions:
- New employees are less productive and need time to ramp up.
- Monthly turnover is either low (2%) or high (20%).
- Training a new employee costs $500.
- Employees can produce up to $500/month at peak performance.
- Experience grows linearly, but productivity grows sigmoidally (i.e., quickly at first, then plateaus).
📊 Python Code: Turnover Simulation
import numpy as np
import matplotlib.pyplot as plt
class Employee:
def __init__(self):
self.experience = 0 # in months
self.training_cost = 500 # cost to hire/train
def productivity(self):
return 1 / (1 + np.exp(-0.3 * (self.experience - 6))) # sigmoid curve
def monthly_revenue(self):
return self.productivity() * 500 # peak revenue = $500/month
def simulate_company(months, num_employees, turnover_rate):
employees = [Employee() for _ in range(num_employees)]
total_revenue = []
total_cost = 0
for month in range(months):
# Replace a portion of the workforce each month
num_to_replace = int(num_employees * turnover_rate)
for _ in range(num_to_replace):
employees.pop(0)
employees.append(Employee())
total_cost += 500 # training cost
monthly_rev = 0
for emp in employees:
monthly_rev += emp.monthly_revenue()
emp.experience += 1
total_revenue.append(monthly_rev)
cumulative_revenue = sum(total_revenue)
net_profit = cumulative_revenue - total_cost
return total_revenue, net_profit
# Simulation parameters
months = 60
num_employees = 100
low_turnover = 0.02
high_turnover = 0.20
# Run simulations
low_rev, low_net = simulate_company(months, num_employees, low_turnover)
high_rev, high_net = simulate_company(months, num_employees, high_turnover)
# Plot the results
plt.plot(low_rev, label=f"Low Turnover (Net Profit: ${low_net:,.0f})")
plt.plot(high_rev, label=f"High Turnover (Net Profit: ${high_net:,.0f})")
plt.title("Impact of Employee Turnover on Company Profitability")
plt.xlabel("Month")
plt.ylabel("Monthly Revenue ($)")
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
📈 Results
Running this simulation gives us two curves:
- Low turnover companies have employees who gain experience and hit peak productivity.
- High turnover companies continuously lose experienced workers and spend heavily on training.
Despite having the same headcount, the high-turnover company earns much less over time and incurs more cost.
For example, your output may look something like:
Low Turnover (Net Profit: $2,110,000)
High Turnover (Net Profit: $1,350,000)
🔍 Takeaways
- Employee experience compounds value—it’s like investing in human capital.
- High turnover kills momentum. You lose productivity and pay more in onboarding.
- Retaining staff isn't just HR fluff—it's a clear business decision.
Top comments (0)