A basic ad ROI calculator is a genuinely useful first Python project with real practical value — the math is simple, but scripting it removes manual spreadsheet error and lets you quickly compare scenarios that would be tedious to recalculate by hand.
The Core Metrics
- ROAS (Return on Ad Spend) = revenue / ad spend
- ROI (Return on Investment) = (revenue – ad spend) / ad spend × 100
- CPA (Cost Per Acquisition) = ad spend / number of conversions
- Break-even ROAS = 1 / profit margin — the minimum ROAS needed just to break even, given your margin
A Basic Implementation
def calculate_ad_metrics(ad_spend, revenue, conversions, profit_margin):
roas = revenue / ad_spend
roi_percent = ((revenue - ad_spend) / ad_spend) * 100
cpa = ad_spend / conversions if conversions > 0 else None
break_even_roas = 1 / profit_margin
return {
"roas": round(roas, 2),
"roi_percent": round(roi_percent, 1),
"cpa": round(cpa, 2) if cpa else None,
"break_even_roas": round(break_even_roas, 2),
"profitable": roas > break_even_roas
}
result = calculate_ad_metrics(
ad_spend=1000, revenue=3500, conversions=25, profit_margin=0.4
)
print(result)
Why Break-Even ROAS Matters More Than Raw ROAS
A ROAS of 3x sounds solid in isolation, but whether it’s actually profitable depends entirely on your profit margin — at a 20% margin, break-even ROAS is 5x, meaning a 3x ROAS campaign is actually losing money despite looking successful on the surface. This is the single most common mistake in evaluating ad performance: treating ROAS as inherently good or bad without relating it to your actual margin.
Extending It for Real Use
- Batch process multiple campaigns from a CSV export, rather than calculating one scenario at a time.
- Add a simple visualization (matplotlib) comparing ROAS across campaigns against your break-even line.
- Factor in customer lifetime value rather than single-purchase revenue, for businesses where a customer’s value extends well beyond their first transaction.
Frequently Asked Questions
Should I use a spreadsheet instead of a script for this?
A spreadsheet works fine for one-off calculations; a script pays off once you’re comparing many campaigns repeatedly or want to integrate the calculation into a larger reporting pipeline.
Conclusion
A Python ad ROI calculator is a small, practical project that reinforces basic scripting while solving a real problem — and the break-even ROAS calculation specifically is the piece that turns a vanity metric (raw ROAS) into an actual profitability judgment.
📑 About the author: I also build Digital Bizz Card — hosted digital business cards you can share with a QR code, no app required.


