MBA finance to data scientist: from spreadsheet models to Python
In this article (6 sections)
Related programme: the Data Science course (6 months; ₹1,30,000 (inclusive of GST) · EMI from ₹5,000/month).
An MBA finance graduate moves into data science most convincingly by taking a forecasting or budgeting workbook they already know how to build and rebuilding it in Python with a proper backtest — where every forecast is scored against months the method did not see. That turns spreadsheet judgement into the one habit data science interviews test hardest: evaluating a prediction honestly.
The document you start from
Pick one workbook you have built or maintained: an annual operating plan, a monthly revenue forecast, a collections forecast, or a variance analysis against budget. The checklist below is written against that file. Work through it before writing any Python, because most of the data science thinking happens here.
Checklist: audit the forecast workbook first
- 1Find every hardcoded number. Growth rates typed into cells, "management overlay" adjustments, a seasonality factor someone copied from last year. List them. Each one is an assumption your Python version must either estimate from data or state openly.
- 2Separate inputs from outputs. Actuals, drivers and assumptions should be distinct from calculated forecasts. If a formula references a cell that was overwritten with a value, note it — that is a silent model change.
- 3Identify the forecast horizon and the decision it serves. A three-month cash forecast and a twelve-month budget need different evaluation. Write the horizon down.
- 4Record how the forecast has been judged so far. Most finance teams compare forecast to actual after the fact, but rarely score the method across many past months. That gap is your project.
- 5Check the history length. Fewer than two full years of monthly data makes seasonality estimates weak. Say so in the write-up rather than hiding it.
- 6Note structural breaks. A price change, a new product, a lost client, a lockdown month. These must be flagged, not averaged over.
- 7Strip anything confidential. Rebuild the series synthetically with a similar shape. Never upload an employer's actuals.
If you can answer all seven, you understand the problem better than most people who jump straight to a model.
Rebuild it as a rolling-origin backtest
The project: compare three simple methods on a synthetic monthly revenue series, scoring each on one-month-ahead forecasts over the final twelve months. This is pure pandas.
import pandas as pd
# Synthetic monthly revenue (in ₹ lakh) with trend and a festive-season bump
values = [52, 50, 55, 57, 60, 58, 61, 66, 74, 80, 70, 63,
58, 56, 61, 63, 67, 64, 68, 73, 82, 89, 77, 70,
64, 62, 68, 70, 74, 71, 75, 81, 91, 98, 85, 77]
s = pd.Series(values, index=pd.period_range("2023-04", periods=36, freq="M"))
def naive(history):
return history.iloc[-1]
def seasonal_naive(history):
return history.iloc[-12]
def seasonal_naive_growth(history):
# last year's same month, scaled by trailing 12-month growth
return history.iloc[-12] * history.iloc[-12:].sum() / history.iloc[-24:-12].sum()
def moving_avg_3(history):
return history.iloc[-3:].mean()
methods = {"naive": naive, "seasonal_naive": seasonal_naive,
"seasonal_naive_growth": seasonal_naive_growth, "moving_avg_3": moving_avg_3}
rows = []
for i in range(24, 36): # forecast each of the last 12 months
history, actual = s.iloc[:i], s.iloc[i]
for name, f in methods.items():
pred = f(history)
rows.append({"month": str(s.index[i]), "method": name,
"abs_pct_err": abs(actual - pred) / actual * 100})
results = pd.DataFrame(rows)
print(results.groupby("method")["abs_pct_err"].mean().round(2).sort_values())The ranking is instructive. Plain seasonal naive loses to "repeat last month", because it ignores the roughly 10% annual growth built into the series, and the three-month average does worst because it always lags the festive peak. Scaling last year's same month by trailing growth wins by a wide margin. Be suspicious of that margin: the synthetic series was generated with clean seasonality and steady growth, so a method that assumes both will look almost perfect here. Real revenue has lost clients, price changes and one-off months, and the finance insight you add is knowing which of those the method cannot see. State that in the write-up, then test the same four methods on a messier synthetic series with a structural break.
What your MBA did not cover, and data science will ask about
- Programming fluency. Not just running a notebook, but writing functions, handling missing months, and version-controlling code.
- Statistics for inference. Confidence intervals, distributions of forecast errors, and why a lower average error over twelve months may not be a meaningful difference.
- Leakage. In a spreadsheet it is easy to let a forecast cell reference an actual from the same month. In a backtest, that is the error that makes a result worthless. The loop above only passes
s.iloc[:i]for exactly that reason. - Machine learning basics. Regression, regularisation, cross-validation for time series, and when a model is unnecessary.
- Communicating uncertainty. A single forecast line is what the CFO asks for; a range is what a data scientist should also provide.
Before choosing, it is worth reading data analytics vs data science; some finance professionals find analyst work closer to what they enjoy.
FP&A analytics before model-building roles
The most natural first move is a role that sits between the two worlds: planning or FP&A analyst with a forecasting remit, business analyst on a pricing or risk team, or junior data scientist in forecasting. These let your finance vocabulary do real work while you build modelling depth. Run your resume through the free skill check to see which data science skills it does not yet evidence.
Why a finance MBA wants to write Python
"In my MBA and two years in FP&A, I built the monthly revenue forecast in Excel. Every quarter we compared it to actuals, but we never tested whether the method itself was any good. So I rebuilt a synthetic version of that forecast in Python as a rolling backtest and found that our moving-average approach was the worst of four simple methods, because it always lagged the festive peak. The best method only won because the data was clean, and I wrote that limitation up as carefully as the result. That exercise is why I want to move into data science — I care more about whether the forecast is right than about formatting the deck that presents it."
The Data Science programme covers the statistics, Python and model evaluation that sit on top of a finance background like this one.
Frequently asked questions
Is an MBA in finance useful for a data science career?
It is useful context, particularly for forecasting, credit, pricing and planning problems, because you already understand what the numbers mean to a business. It does not replace programming, statistics and model evaluation, which you will need to learn and demonstrate separately.
Do I need to learn machine learning before building a forecasting project?
No. A well-backtested baseline forecast is a legitimate first data science project. Many real forecasting discussions begin by asking whether a sophisticated model beats a seasonal naive baseline at all.
Which role should an MBA finance graduate apply for first?
Roles that combine finance context with analysis, such as FP&A analyst with a modelling remit, business or planning analyst, or junior data scientist on a forecasting or risk team, usually make the best first step. Pure research-style data science roles tend to expect more mathematical depth.
Pankit Kumar has 10 years in Data Science & AI, building and shipping production systems in regulated pharma and clinical environments. He is a freelance trainer at Boston Institute of Analytics, AnalytixLabs and Scaler, and has taught this material to thousands of working professionals.
This article is part of our Data Science programme — 6 months. From data foundations to machine learning, deep learning and deployment.
Explore Data Science