
Triangle Forecasting: Why Traditional Impact Estimates Are Inflated (And How to Fix Them) | Towards Data Science
Accurate exposure assessments can make or break your business justification.
Nevertheless, despite their significance, most teams use simplified calculations that can lead to high forecasts. These numbers of shots in the dark not only destroy trust in interested parties, but can also lead to improper distribution of resources and unsuccessful initiatives. But there is the best way to predict the impact of gradual attracting customers, without requiring dirty electric tables and formulas that are mistaken.
By the end of this article, you can calculate the exact annual forecasts and implement the scalable Python solution to predict the triangle.
Hidden cost of inaccurate forecasts
When he was asked about annual exposure assessments, products of products usually overestimate the influence, applying a universal approach to the entire client. Teams often choose a simplified approach:
Multiply the monthly income (or any other appropriate metric) by twelve to evaluate the annual effect.
Although the calculation is simple, this formula ignores the fundamental premise that belongs to most enterprises:
The acquisition of customers occurs gradually within a year.
The contribution of all customers to annual grades is not the same, since later cohorts contribute less than months of income.
Prediction of the triangle can reduce projection errors by taking into account the consequences of the terms of attracting customers.
Let’s look at this concept with the help of the main example. Suppose you launch a new subscription service:
- Monthly subscription fee: 100 US dollars per client
- The monthly goal of attracting customers: 100 new customers
- Purpose: Calculate the total income for the year
Simplified multiplication involves revenue in the amount of $ 1,440,000 in the first year (= 100 new customers / month * 12 months * $ 100 / month * 12 months).
The actual number is only $ 780,000!
This is 46% revaluation – this is why the exposure assessments often do not pass the test for the sniffing of interested parties.
Accurate forecasting is not only mathematics –
This is a tool that helps you strengthen trust and approves your initiatives faster without the risk of excessive and underestimation.
Moreover, experts, according to the data, spend hours to create manual forecasts in Excel, which are changeable, can lead to formula errors and encounter iteration.
The presence of a standardized, explained methodology can help simplify this process.
Presentation of the prediction of the triangle
Prediction of a triangle is a systematic, mathematical approach to assessing annual impact, when customers are acquired gradually. This explains the fact that incoming customers will contribute to the annual effect, depending on when they are on board on your product.
This method is especially convenient for:
- Launch of a new product: When attracting customers occurs over time
- Forecasts of subscription income: For accurate forecasts for products based on subscription -based products
- Phased deployment: To assess the aggregate effects of gradual deployment
- Acquisition planning: To establish realistic monthly acquisition goals to achieve annual goals

The “triangle” in predicting the triangle refers to how individual cohorts are visualized. The cohort belongs to the month in which customers were purchased. Each bar in the triangle is a contribution of cohorts to an annual effect. The earlier cohorts have longer bars, because they contributed for a long period.
To calculate the influence of a new initiative, model or function in the first year:
- For each month (m) of the year:
- Calculate the number of purchased customers (AM)
- Calculate the average monthly costs/impact on each client
- Calculate the remaining months of the year (RM = 13th)
- Monthly effect of cohort = am × s × rm
2. General annual impact = the sum of all monthly cohort influences

Creating your first triangular forecast
Let’s calculate the actual income for our subscription service:
- January: 100 customers × 100 × 12 months = 120,000 US dollars
- February: 100 customers × 100 × 11 months = 110,000 US dollars
- March: 100 clients × 100 × 10 months = 100,000 US dollars
- And so on…
Calculation in Excel, we get:

The total annual income is equal 780,000 dollars– 46% lower than a simplified assessment!
💡 PRO TIP: Save the calculations of the spreadsheet as a template for re -use for various scenarios.
Need to build estimates without perfect data? Read my guide to “the construction of protected assessments of the impact, when the data is imperfect.”
Application of theory in practice: the implementation guide
Despite the fact that we can implement the forecasting of the triangle in Excel using the aforementioned method, these electric tables become impossible for quick maintenance or changes. Product owners are also struggling to quickly update forecasts when assumptions or deadlines are changing.
Here’s how we can fulfill the same forecast for Python in a matter of minutes:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def triangle_forecast(monthly_acquisition_rate, monthly_spend_per_customer):
"""
Calculate yearly impact using triangle forecasting method.
"""
# Create a DataFrame for calculations
months = range(1, 13)
df = pd.DataFrame(index=months,
columns=['month', 'new_customers',
'months_contributing', 'total_impact'])
# Convert to list if single number, else use provided list
acquisitions = [monthly_acquisitions] * 12 if type(monthly_acquisitions) in [int, float] else monthly_acquisitions
# Calculate impact for each cohort
for month in months:
df.loc[month, 'month'] = f'Month {month}'
df.loc[month, 'new_customers'] = acquisitions[month-1]
df.loc[month, 'months_contributing'] = 13 - month
df.loc[month, 'total_impact'] = (
acquisitions[month-1] *
monthly_spend_per_customer *
(13 - month)
)
total_yearly_impact = df['total_impact'].sum()
return df, total_yearly_impact
Continuing our previous example of the subscription service, the income from each monthly cohort can be visualized as follows:
# Example
monthly_acquisitions = 100 # 100 new customers each month
monthly_spend = 100 # $100 per customer per month
# Calculate forecast
df, total_impact = triangle_forecast(monthly_acquisitions, monthly_spend)
# Print results
print("Monthly Breakdown:")
print(df)
print(f"\nTotal Yearly Impact: ${total_impact:,.2f}")

We can also use Python to visualize cohort deposits as a bar. Pay attention to how exposure linearly decreases as it moves through months.

Using this Python code, now you can quickly and effectively generate and effectively process and iterative grades, without the need to manually control versions when failing of the electric tables.
In addition to the main forecasts
Although the above example is simple, assuming that monthly acquisitions and expenses are constant during all months, this does not have to be true. Prediction of the triangle can be easily adapted and scale for accounting:
For various monthly expenses based on the levels of expenses, create a distinct forecast of the triangle for each cohort, and then collect the effect of a separate cohort to calculate the general annual effect.
- Various acquisition rates
As a rule, enterprises do not purchase customers at a constant rate during the year. Acquisition can begin at a slow pace and increase when marketing begins, or we may have a surge of early followers, behind which follows slower growth. To process various bets, go through a list of monthly targets instead of one bet:
# Example: Gradual ramp-up in acquisitions
varying_acquisitions = [50, 75, 100, 150, 200, 250,
300, 300, 300, 250, 200, 150]
df, total_impact = triangle_forecast(varying_acquisitions, monthly_spend)

To take into account seasonality, multiply the influence of each month on the appropriate seasonal factor (for example, 1.2 for months for a high season, such as December, 0.8 for several months of season, such as February, etc.), before calculating general influence.
Here’s how you can change the Python code to account for seasonal variations:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def triangle_forecast(monthly_acquisitions, monthly_spend_per_customer, seasonal_factors = None):
"""
Calculate yearly impact using triangle forecasting method.
"""
# Create a DataFrame for calculations
months = range(1, 13)
df = pd.DataFrame(index=months,
columns=['month', 'new_customers',
'months_contributing', 'total_impact'])
# Convert to list if single number, else use provided list
acquisitions = [monthly_acquisitions] * 12 if type(monthly_acquisitions) in [int, float] else monthly_acquisitions
if seasonal_factors is None:
seasonality = [1] * 12
else:
seasonality = [seasonal_factors] * 12 if type(seasonal_factors) in [int, float] else seasonal_factors
# Calculate impact for each cohort
for month in months:
df.loc[month, 'month'] = f'Month {month}'
df.loc[month, 'new_customers'] = acquisitions[month-1]
df.loc[month, 'months_contributing'] = 13 - month
df.loc[month, 'total_impact'] = (
acquisitions[month-1] *
monthly_spend_per_customer *
(13 - month)*
seasonality[month-1]
)
total_yearly_impact = df['total_impact'].sum()
return df, total_yearly_impact
# Seasonality-adjusted example
monthly_acquisitions = 100 # 100 new customers each month
monthly_spend = 100 # $100 per customer per month
seasonal_factors = [1.2, # January (New Year)
0.8, # February (Post-holiday)
0.9, # March
1.0, # April
1.1, # May
1.2, # June (Summer)
1.2, # July (Summer)
1.0, # August
0.9, # September
1.1, # October (Halloween)
1.2, # November (Pre-holiday)
1.5 # December (Holiday)
]
# Calculate forecast
df, total_impact = triangle_forecast(monthly_acquisitions,
monthly_spend,
seasonal_factors)

These settings can help you model growth scenarios, including:
- Gradual extensions in the early stages of launch
- Growth Step Function based on advertising campaigns
- Seasonal differences in the purchase of customers
The essence
The presence of reliable and intuitive forecasts can do or violate the work for your initiatives.
But this is not all – forecasting the triangle also finds applications beyond the forecasting of income, including the calculation:
- Client activation
- Portfolio rates losses
- Credit card expenses
Are you ready to immerse yourself? Download the Python template, the total above, and build your first triangle in 15 minutes!
- Enter your monthly acquisition goals
- Install your expected influence on the client
- Visualize your annual trajectory with automatic visualization
Assessments of the real world often require work with imperfect or incomplete data. Check out my article “Construction of protective assessments of the impact, when the data is not imperfect” for the framework for creating assessments in such scenarios.
Confirmation:
Thanks to my wonderful mentor, Katherine Maurer, for the development of the main concept and the first iteration of the method of predicting the triangle and allow me to rely on it through equations and code.
I am always open to feedback and suggestions on how to make these guidages more valuable to you. Happy reading!
Source link