AI in Finance: How Machine Learning Is Changing Financial Forecasting in

The financial analyst who only knows Excel is not obsolete - but they are increasingly disadvantaged. In 2026, machine learning models are embedded into credit decisions at major banks, revenue forecasts at Fortune 500 FP&A teams, and portfolio optimization systems at asset managers. Python has joined Excel as a required tool in analyst job descriptions. The question is no longer whether AI will change financial analysis - it already has. The question is whether you understand enough about it to use it, interpret it, and challenge it.

This shift is not about replacing analysts with algorithms. It's about analysts who understand ML working alongside tools that process millions of data points in milliseconds - identifying patterns in revenue drivers, default probabilities, market sentiment, and risk factors that no spreadsheet-based model could find. The analysts who understand what these models are doing, why they make the predictions they do, and where they break down will be the ones making decisions. The ones who don't will be implementing decisions someone else made. Board Infinity's guide on How Data Science in Financial Modelling Helps Businesses covers how this transformation is already reshaping revenue simulation, cash flow forecasting, and risk assessment across industries.

This guide covers the seven areas where ML is changing financial forecasting in 2026 - from regression models for revenue prediction to NLP-based sentiment analysis - with Python code for each. By the end, you'll understand what each technique does, when to use it, and what its limitations are.

Who This Guide Is For

This guide is for:

  • Finance professionals who want to understand AI/ML tools now entering their industry
  • Analysts with Python basics who want to apply ML to financial use cases
  • Data scientists entering finance who need the domain context
  • Anyone preparing for roles where Python and ML are increasingly expected alongside Excel
  • Professionals who want to understand why data literacy is now mandatory across all finance roles

1. From Excel to ML: The Forecasting Evolution

For decades, financial forecasting meant Excel. Revenue growth rates, assumption-driven models, sensitivity tables - powerful tools for structured, understood data. The limitations became visible as data volumes grew: Excel can't train on 10 years of daily transaction records, can't extract sentiment from 50,000 analyst reports, and can't identify non-linear relationships between hundreds of features simultaneously.

Machine learning addresses exactly these limitations. Where Excel requires you to define the relationship between inputs and outputs (your assumptions), ML models find those relationships in the data itself. This is both the power and the risk - ML models can discover genuine signals, but they can also overfit to noise and produce confident-sounding predictions that are statistically meaningless.

Understanding when to use ML versus traditional modeling is the first skill. The shift from Excel-based to Python-driven analysis is also reshaping what data science portfolios need to include - Board Infinity's Building a Data Science Portfolio guide shows how finance-specific ML projects (credit scoring models, revenue forecasting, sentiment analysis) are becoming the strongest portfolio signals for analyst roles.

Approach Best For Requires Key Limitation
Excel Models Structured, assumption-driven forecasts Analyst judgment, accounting knowledge Can't process large datasets or learn from data
Statistical Models (ARIMA) Time series with known seasonal patterns Stationarity testing, parameter tuning Linear assumptions - misses complex non-linear patterns
ML Models (Random Forest, XGBoost) Feature-rich datasets, non-linear relationships Labeled training data, feature engineering Black box - requires explainability tools for finance use
Deep Learning (LSTM) Long-range time series patterns Large data, GPU compute, careful tuning Data-hungry, slow to train, prone to overfitting
NLP/LLMs Unstructured text - earnings calls, reports Text corpus, model API or fine-tuning Can hallucinate - requires human verification

2. Key Machine Learning Concepts for Finance Professionals

Before building models, finance professionals need to understand the core ML vocabulary - not at a mathematics level, but at an interpretation and application level. Understanding what these concepts mean for financial use cases is what allows analysts to use ML outputs responsibly rather than blindly.

Supervised learning - the model learns from labeled historical data (past revenue + known outcomes) to predict new outcomes. Used for: revenue forecasting, credit default prediction, stock classification.

Unsupervised learning - the model finds patterns in data without labeled outcomes. Used for: customer segmentation, risk grouping, anomaly detection in financial transactions.

Overfitting - the model performs extremely well on training data but fails on new data because it memorized the training set's noise rather than learning real patterns. The most dangerous failure mode in financial ML - a model that looks predictive in backtesting but fails in production.

Feature engineering - transforming raw data into variables (features) that help the model learn better patterns. Examples: calculating rolling 30-day average revenue, creating a lag variable of last quarter's EBITDA, computing debt-to-equity ratio from balance sheet inputs. This is often the highest-value activity in financial ML work.

3. Predicting Revenue with Regression Models

Regression models predict a continuous numerical output - ideal for revenue forecasting, margin prediction, or demand estimation. Linear regression is the entry point, but Ridge and Lasso regression (which add regularization to prevent overfitting) are more suitable for financial data that contains many correlated features.

Python - Revenue Forecasting with Ridge Regression
import pandas as pd
import numpy as np
from sklearn.linear_model import Ridge
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_absolute_error, mean_squared_error
from sklearn.model_selection import train_test_split# === FEATURE ENGINEERING FOR REVENUE FORECASTING ===
# Assume df has columns: revenue, gdp_growth, cpi, competitor_revenue,
#                        marketing_spend, prior_quarter_revenue, season_qdf['revenue_lag1']     = df['revenue'].shift(1)   # lag feature: t-1 value
df['revenue_lag4']     = df['revenue'].shift(4)   # lag feature: same quarter last year
df['rolling_avg_4q']   = df['revenue'].rolling(4).mean()  # rolling 4-quarter average
df['revenue_growth']   = df['revenue'].pct_change()  # quarter-over-quarter growth rate
df = df.dropna()# === DEFINE FEATURES AND TARGET ===
features = ['gdp_growth', 'cpi', 'marketing_spend',
'revenue_lag1', 'revenue_lag4', 'rolling_avg_4q', 'season_q']
target   = 'revenue'X = df[features]
y = df[target]# === TRAIN/TEST SPLIT (time-aware - no future data leaks) ===
split_idx = int(len(df) * 0.8)   # 80% train, 20% test - chronological split
X_train, X_test = X.iloc[:split_idx], X.iloc[split_idx:]
y_train, y_test = y.iloc[:split_idx], y.iloc[split_idx:]# === SCALE FEATURES (important for Ridge/Lasso) ===
scaler  = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled  = scaler.transform(X_test)   # fit only on train - prevent leakage# === RIDGE REGRESSION (L2 regularization) ===
model = Ridge(alpha=1.0)   # alpha controls regularization strength
model.fit(X_train_scaled, y_train)y_pred = model.predict(X_test_scaled)# === MODEL EVALUATION ===
mae  = mean_absolute_error(y_test, y_pred)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
mape = np.mean(np.abs((y_test - y_pred) / y_test)) * 100print(f"MAE:  ${mae:,.0f}")    # Mean Absolute Error in dollars
print(f"RMSE: ${rmse:,.0f}")   # Root Mean Squared Error
print(f"MAPE: {mape:.1f}%")    # Mean Absolute Percentage Error
# MAPE < 10%: strong forecasting accuracy for revenue models
โš ๏ธ
Never Use Random Splits for Time Series - Always Chronological

Sklearn's default train_test_split(shuffle=True) randomly mixes your data. For time series financial data (quarterly revenue, daily stock prices), this creates data leakage - the model trains on future data and tests on the past, producing artificially inflated accuracy that disappears in production. Always split chronologically: train on the earliest 80% of data, test on the most recent 20%. For rolling forecasts, use TimeSeriesSplit from sklearn or walk-forward validation to simulate real deployment conditions.

4. Classification Models for Credit Risk and Default Prediction

Credit risk modeling is one of the most mature and regulated ML applications in finance. Banks use classification models to predict probability of default (PD) - the likelihood a borrower will fail to repay within a given period. The model outputs a probability score; the lender sets a threshold above which credit is denied or priced at a risk premium.

Common classification algorithms for credit risk: Logistic Regression (interpretable, regulator-preferred), Random Forest (higher accuracy, feature importance output), and XGBoost (state-of-the-art accuracy for tabular data). Understanding how these models are applied in practice - and the strict compliance requirements around them - is essential for analyst roles at financial institutions. Board Infinity's Goldman Sachs GBM Private Summer Analyst guide covers the types of analytical frameworks that investment banking and credit-focused roles use in decision-making.

Python - Credit Default Classification with XGBoost
import pandas as pd
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import (classification_report, roc_auc_score,
                             confusion_matrix)
# === CREDIT FEATURES ===
# df columns: debt_to_income, credit_utilization, num_missed_payments,
#             loan_amount, employment_years, credit_score, default (0/1)
X = df[['debt_to_income', 'credit_utilization', 'num_missed_payments',
'loan_amount', 'employment_years', 'credit_score']]
y = df['default']   # 1 = defaulted, 0 = repaid
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y  # stratify: preserve class balance
)
# === XGBOOST CLASSIFIER ===
model = XGBClassifier(
n_estimators=100,
max_depth=4,
learning_rate=0.1,
scale_pos_weight=5,   # handle class imbalance: ~5 non-defaults per default
use_label_encoder=False,
eval_metric='logloss'
)
model.fit(X_train, y_train)
# === EVALUATION METRICS ===
y_pred       = model.predict(X_test)
y_pred_proba = model.predict_proba(X_test)[:, 1]  # probability of default
print(classification_report(y_test, y_pred))
print(f"ROC-AUC Score: {roc_auc_score(y_test, y_pred_proba):.3f}")
# ROC-AUC > 0.75: good discrimination - model distinguishes defaults from non-defaults
# ROC-AUC > 0.85: strong model for production credit scoring
# === FEATURE IMPORTANCE ===
import matplotlib.pyplot as plt
feat_importance = pd.Series(model.feature_importances_, index=X.columns)
feat_importance.sort_values().plot(kind='barh', title='Credit Default Feature Importance')
plt.tight_layout()
plt.show()
# Which features most drive default prediction?
# Typically: num_missed_payments, credit_utilization, debt_to_income

5. Time Series Forecasting with ARIMA and Prophet

Time series forecasting predicts future values based on historical patterns in the same series. Financial time series - stock prices, revenue, interest rates - have specific characteristics: trend, seasonality, and autocorrelation (each value depends on previous values). Classical models like ARIMA handle these explicitly. Meta's Prophet library provides a more accessible approach with strong seasonal decomposition and handles missing data and holiday effects cleanly - making it popular in FP&A teams.

Python - Revenue Forecasting with Facebook Prophet
from prophet import Prophet
import pandas as pd
import matplotlib.pyplot as plt
# Prophet requires columns: 'ds' (datestamp) and 'y' (value to forecast)
df_prophet = df[['date', 'revenue']].rename(
columns={'date': 'ds', 'revenue': 'y'}
)
# === PROPHET MODEL ===
model = Prophet(
yearly_seasonality=True,     # captures annual revenue patterns
weekly_seasonality=False,    # not relevant for monthly/quarterly data
changepoint_prior_scale=0.05 # lower = less flexible trend - reduces overfitting
)
# Add custom seasonality for quarterly business cycles
model.add_seasonality(
name='quarterly',
period=91.25,
fourier_order=4
)
model.fit(df_prophet)
# === FORECAST 8 QUARTERS AHEAD ===
future   = model.make_future_dataframe(periods=8, freq='Q')
forecast = model.predict(future)
# === KEY FORECAST COLUMNS ===
# forecast['yhat']:       point forecast (predicted revenue)
# forecast['yhat_lower']: lower confidence bound (uncertainty range)
# forecast['yhat_upper']: upper confidence bound
# Plot forecast with uncertainty intervals
model.plot(forecast, xlabel='Date', ylabel='Revenue ($M)')
plt.title('Revenue Forecast - Next 8 Quarters')
plt.show()
# Decompose trend + seasonality components
model.plot_components(forecast)
plt.show()
# Shows: overall trend line + yearly seasonal pattern separately
# Very useful for explaining forecast to non-technical finance stakeholders
๐Ÿ’ก
Prophet Is the Finance Team's ML Gateway Drug

Prophet is often the first ML forecasting tool FP&A teams adopt because it requires no statistical expertise to use, handles quarterly and annual seasonality naturally, produces intuitive decomposition charts that CFOs can understand, and tolerates missing data and outliers gracefully. It's not the most accurate time series model for all use cases - gradient boosting models with engineered lag features often outperform it - but it produces explainable, visually compelling forecasts that build trust for ML adoption in finance teams. Start with Prophet, then layer in more complex models as the team's comfort grows.

6. Natural Language Processing in Finance (Sentiment Analysis)

Financial markets move on information - earnings call transcripts, analyst reports, central bank statements, news headlines. NLP models extract structured signals (positive, negative, neutral sentiment) from unstructured text at scale. A model that processes 10,000 earnings call transcripts and identifies which language patterns correlate with subsequent stock underperformance is genuinely useful in ways that no traditional financial model can replicate. For portfolio management and equity research applications, understanding how these tools work is increasingly relevant - Board Infinity's Introduction to Equity Investing guide covers the investment decisions that NLP sentiment signals are increasingly informing.

Python - Financial Sentiment Analysis with Transformers
from transformers import pipeline
import pandas as pd
# === FINBERT: NLP model fine-tuned specifically on financial text ===
# FinBERT understands finance-specific language better than general-purpose models
sentiment_pipeline = pipeline(
'text-classification',
model='ProsusAI/finbert',  # finance-domain BERT model
tokenizer='ProsusAI/finbert'
)
# === SAMPLE EARNINGS CALL EXCERPTS ===
earnings_excerpts = [
"We delivered record revenue growth this quarter and raised full-year guidance.",
"Supply chain disruptions significantly impacted margins and we expect headwinds to persist.",
"We are cautiously optimistic about the second half despite macro uncertainty.",
"Free cash flow conversion was strong, enabling us to return capital to shareholders.",
"We are accelerating restructuring efforts due to weaker-than-expected demand."
]
# === RUN SENTIMENT ANALYSIS ===
results = sentiment_pipeline(earnings_excerpts)
for text, result in zip(earnings_excerpts, results):
print(f"Sentiment: {result['label']:10s} | Score: {result['score']:.3f}")
print(f"Text: {text[:70]}...")
print()
# === OUTPUT ===
# Sentiment: positive   | Score: 0.987 | "record revenue growth..."
# Sentiment: negative   | Score: 0.973 | "Supply chain disruptions..."
# Sentiment: neutral    | Score: 0.812 | "cautiously optimistic..."
# Sentiment: positive   | Score: 0.965 | "strong free cash flow..."
# Sentiment: negative   | Score: 0.954 | "accelerating restructuring..."
# === AGGREGATE TO DOCUMENT-LEVEL SENTIMENT SCORE ===
score_map = {'positive': 1, 'neutral': 0, 'negative': -1}
sentiment_scores = [
score_map[r['label']] * r['score'] for r in results
]
doc_sentiment = sum(sentiment_scores) / len(sentiment_scores)
print(f"Document-Level Sentiment Score: {doc_sentiment:.3f}")
# Negative score = net negative earnings call tone
๐Ÿ”
Use FinBERT for Finance - Not General-Purpose Sentiment Models

General-purpose sentiment models (VADER, general BERT) fail on financial text because finance has specialized language. The word "bearish" is negative in finance but would confuse a general model. "Volatility" is neutral to negative in finance but might score neutrally in general sentiment. "Guidance raised" is strongly positive but a general model may not understand "guidance" in context. FinBERT was trained on 10,000 financial news articles and earnings statements - it understands finance-specific language patterns and consistently outperforms general models on financial text by 15-25% accuracy.

7. Ethical Considerations: Bias and Explainability in Financial AI

AI models in finance are not just technical systems - they are decision-making systems with regulatory, legal, and ethical implications. A credit scoring model that systematically denies credit to applicants from certain geographic areas may be violating fair lending laws, even if the model never explicitly uses protected characteristics. A trading algorithm that creates phantom liquidity may be contributing to market instability. These are not hypothetical concerns - they are active regulatory issues at financial institutions globally.

Model bias in finance: ML models learn from historical data. If historical lending decisions were discriminatory (and many were), a model trained on that data will reproduce and often amplify those patterns. Detecting bias requires testing model outputs across demographic groups - not just checking that demographic features were excluded from training.

Explainability (also called interpretability): Financial regulators and credit applicants have a legal right to understand why a credit decision was made. "The model said so" is not sufficient. Tools like SHAP (SHapley Additive exPlanations) and LIME generate human-readable explanations of individual model predictions - which features drove a specific decision and in which direction. Understanding these tools is increasingly required for finance ML roles. Board Infinity's personal finance and investment planning guide covers the investor rights and financial decision frameworks that AI explainability requirements are designed to protect.

Python - SHAP Explainability for Credit Model Decisions
import shap
import matplotlib.pyplot as plt
# === SHAP EXPLAINER FOR XGBOOST CREDIT MODEL ===
explainer   = shap.TreeExplainer(model)  # model = XGBClassifier from Section 4
shap_values = explainer.shap_values(X_test)
# === GLOBAL FEATURE IMPORTANCE ===
# Which features MOST influence default predictions across all applicants?
shap.summary_plot(shap_values, X_test, plot_type='bar')
plt.title('Global Feature Importance - Credit Default Model')
# === INDIVIDUAL PREDICTION EXPLANATION ===
# Why did the model predict default for applicant #47?
applicant_idx = 47
shap.waterfall_plot(shap.Explanation(
values      = shap_values[applicant_idx],
base_values = explainer.expected_value,
data        = X_test.iloc[applicant_idx],
feature_names = X_test.columns.tolist()
))
# Shows: each feature's contribution to this specific prediction
# e.g., "num_missed_payments=4 increased default probability by +0.35"
#        "employment_years=8 decreased default probability by -0.12"
# This is what regulators require for adverse action notices in credit
# === FAIRNESS CHECK ===
# Check if model discriminates by protected characteristic (e.g., zip code as proxy)
for group in df_test['region'].unique():
mask       = df_test['region'] == group
group_auc  = roc_auc_score(y_test[mask], y_pred_proba[mask])
print(f"Region {group}: ROC-AUC = {group_auc:.3f}")
# Large performance gaps across regions can signal proxy discrimination
โš ๏ธ
High Accuracy Does Not Mean a Fair or Compliant Model

A credit model can achieve 92% accuracy while systematically disadvantaging minority applicants - because the majority class is non-default, and the model can get "accurate" by learning patterns that correlate with protected characteristics without ever explicitly including them. In financial AI, accuracy is necessary but not sufficient. Always audit models for disparate impact across protected groups (race, gender, age, geography) before deployment. In many jurisdictions, deploying a biased credit model violates the Equal Credit Opportunity Act (ECOA) or similar fair lending regulations - regardless of whether the model was intentionally discriminatory.

Further Reading

Board Infinity Guides:

External Resources:

๐Ÿš€ Apply AI & Machine Learning to Financial Forecasting

Apply AI & Machine Learning to Financial Forecasting on Coursera

This Coursera course by Board Infinity applies every AI and ML concept in this guide through a structured 16-hour curriculum. Build regression, classification, and time series models for real financial use cases - credit scoring, revenue forecasting, portfolio analytics, and generative AI for sentiment analysis - all using Python, pandas, Scikit-learn, and Prophet.

Module 1
Machine Learning Foundations for Finance Regression models (Linear, Ridge, Lasso) for financial prediction, time series forecasting with ML, clustering for financial segmentation, and model evaluation with MAE and RMSE
Module 2
Feature Engineering for Financial Modeling Lag features and rolling statistics, volatility metrics, SMA/EMA/RSI/MACD technical indicators, calendar and seasonal features - transforming raw financial data into model-ready datasets
Module 3
Model Evaluation, Validation & Risk Controls Walk-forward validation, TimeSeriesSplit, overfitting diagnosis, MAE/MAPE/RMSE comparison, regularization and pruning strategies - the validation toolkit for production financial ML
Module 4
AI & ML Applications in Modern Finance ML for stock trend prediction, credit scoring with classification models, risk modeling and probability of default, portfolio analytics, Monte Carlo simulation with ML inputs, and generative AI for sentiment analysis and analyst commentary generation
Apply AI to Financial Forecasting on Coursera โ†’

โœ“ Enroll now  ยท  โœ“ Certificate available  ยท  โœ“ Self-paced  ยท  โœ“ 16 hours of structured content

Conclusion

Machine learning is not replacing financial analysts - it is replacing financial analysts who don't know how machine learning works. Regression models are forecasting revenue from hundreds of features simultaneously. Classification models are scoring credit risk at scale. Time series models are projecting cash flows with seasonality and trend decomposition built in. NLP models are extracting sentiment signals from millions of documents in seconds. And generative AI is beginning to draft the analyst commentary that explains what all of these models found.

The finance professionals who will thrive in this environment are those who understand what each of these tools does, when to apply each approach, how to evaluate the outputs honestly (accuracy, fairness, stability), and how to explain the results to non-technical decision-makers. This is not a computer science skillset - it is a finance skillset with Python as the new Excel. The data literacy skills that are now mandatory across all job roles apply with special force in finance, where the models drive decisions worth millions.

The ethical and regulatory dimensions are equally important. ML models in finance are not neutral tools - they carry the biases of their training data and the blindspots of their designers. Building and deploying these models responsibly - testing for disparate impact, implementing explainability tools, maintaining human oversight over model outputs - is not a compliance checkbox. It is a professional responsibility that distinguishes analysts who use AI well from those who use it recklessly.

Finance & Investing Finance Careers & Skills Finance Financial Forecasting