Although a basic CBM system will offer some solid advantages and insights, to get the utmost value out of a CBM system, more advanced components are needed. Below we discuss a number of of an important components, equivalent to having churn models with multiple time horizons, adding price optimization, using simulation-based forecasting and adding competitor pricing data.
Multiple Horizon Churn Models
Sometimes it is smart to take a look at churn from different perspectives, and one among those angles is the time horizon — or final result period — you permit the model to have. For some business scenarios, it is smart to have a model with a brief final result period, while for others it will possibly make sense to have a model with a 1-year final result period.
To raised explain this idea, assume you construct a churn model with 10-week final result period. This model can then be used to provide a prediction whether a given customer will churn inside a 10-week period. Nevertheless, assume now that you may have isolated a particular event that you understand causes churn and that you may have a brief window of perhaps 3 weeks to implement any preventative measure. On this case it is smart to coach a churn model with a 3-week horizon, conditional on the precise event you understand causes churn. This fashion you’ll be able to focus any retention activities on the shoppers most prone to churning.
This sort of differentiated approach allows for a more strategic allocation of resources, specializing in high-impact interventions where they’re needed most. By adapting the model’s time horizon to specific situations, firms can optimize their retention efforts, ultimately improving customer lifetime value and reducing unnecessary churn.
Pricing Optimization & Customer Price Elasticity
Price is in lots of cases the ultimate a part of strategy execution, and the winners are those who can effectively translate a technique into an efficient price regime. This is strictly what a CBM system with prize optimization allow firms to do. While the subject of price optimization easily warrants its own article, we attempt to briefly summarize the important thing ideas below.
The very first thing needed to start is to get data on historic prices. Preferably different levels of price across time and other explanatory variables. This means that you can develop an estimate for price elasticity. Once that’s in place, you’ll be able to develop expected values for churn at various price points and use that to forecast expected values for revenue. Aggregating up from a customer level gives the expected value and expected churn on a product basis and you will discover optimal prices per product. In additional complex cases you may as well have multiple cohorts per product that every have their optimal price points.
For instance, assume an organization has two different products, product A and product B. For product A, the corporate wishes to grow its user base and are only willing to just accept a set amount of churn, while also being competitive available in the market. Nevertheless, for product B they’re willing to just accept a certain quantity of churn in return for having an optimal price with respect to expected revenues. A CBM system allows for the roll out of such a technique and provides the leadership a forecast for the longer term expected revenues of the strategy.
Simulation-Based Forecasting
Simulation based forecasting provides a more robust way generating forecast estimates quite than simply doing point estimation based on expected values. By utilizing methods like Monte Carlo simulation, we’re able generate probability densities for outcomes, and thus provide decision makers with ranges for our predictions. That is more powerful than simply point estimates because we’re capable of quantify the uncertainty.
To grasp how simulation based forecasting might be used, we will illustrate with an example. Suppose we’ve got 10 customers with given churn probabilities, and that every of those customers have a yearly expected revenue. (In point of fact we typically have a multivariate churn function that predicts churn for every of the shoppers.) For simplicity, assume that if the shopper churns we find yourself with 0 revenue and in the event that they don’t churn we keep all of the revenue. We are able to use python to make this instance concrete:
import random
# Set the seed for reproducibility
random.seed(42)# Generate the lists again with the required changes
churn_rates = [round(random.uniform(0.4, 0.8), 2) for _ in range(10)]
yearly_revenue = [random.randint(1000, 4000) for _ in range(10)]
churn_rates, yearly_revenue
This offers us the next values for churn_rates
and yearly_revenue
:
churn_rates: [0.66, 0.41, 0.51, 0.49, 0.69, 0.67, 0.76, 0.43, 0.57, 0.41]
yearly_revenue: [1895, 1952, 3069, 3465, 1108, 3298, 1814, 3932, 3661, 3872]
Using the numbers above, and assuming the churn events are independent, we will easily calculate the typical churn rate and in addition the full expected revenue.
# Calculate the full expected revenue using (1 - churn_rate) * yearly_revenue for every customer
adjusted_revenue = [(1 - churn_rate) * revenue for churn_rate, revenue in zip(churn_rates, yearly_revenue)]
total_adjusted_revenue = sum(adjusted_revenue)# Recalculate the expected average churn rate based on the unique data
average_churn_rate = sum(churn_rates) / len(churn_rates)
average_churn_rate, total_adjusted_revenue
With the next numbers for average_churn_rate
and total_adjusted_revenue
:
average_churn_rate:0.56,
total_adjusted_revenue: 13034.07
So, we will expect to have about 56% churn and a complete revenue of 13034, but this doesn’t tell us anything concerning the variation we will expect to see. To get a deeper understanding of the range of possible outcomes we will expect, we turn to Monte Carlo simulation. As a substitute of taking the expected value of the churn rate and total revenue, we as a substitute let the situation play out 10000 times (10000 is here chosen arbitrarily; the number must be chosen in order to realize the specified granularity of the resulting distribution), and for every instance of the simulation customers either churn with probability churn_rate
or they stick with probability 1- churn_rate
.
import pandas as pdsimulations = pd.DataFrame({
'churn_rate': churn_rates * 10000,
'yearly_revenue': yearly_revenue * 10000
})
# Add a column with random numbers between 0 and 1
simulations['random_number'] = (
[random.uniform(0, 1) for _ in range(len(simulations))])
# Add a column 'not_churned' and set it to 1, then update it to 0 based on the random number
simulations['not_churned'] = (
simulations['random_number'] >= simulations['churn_rate']).astype(int)
# Add an 'iteration' column ranging from 1 to 10000
simulations['iteration'] = (simulations.index // 10) + 1
This offers a table just like the one below:
We are able to summarize our results using the next code:
# Group by 'iteration' and calculate the required values
summary = simulations.groupby('iteration').agg(
total_revenue=('yearly_revenue',
lambda x: sum(x * simulations.loc[x.index, 'not_churned'])),
total_churners=('not_churned', lambda x: 10 - sum(x))
).reset_index()
And eventually, plotting this with plotly
yields:
The graphs above tell a much richer story than the 2 point estimates of 0.56 and 13034 we began with. We now understand way more concerning the possible outcomes we will expect to see, and we will have an informed discussion about what levels of churn and revenue we we discover acceptable.
Continuing with the instance above we could for instance say that we’d only be prepared to just accept a 0.1 % probability of 8 or more churn events. Using individual customer price elasticities and simulation based forecasting, we could tweak the expected churn_rates
for purchasers in order that we could exactly achieve this final result. This sort of customer base control is barely achievable with a complicated CBM system.
The Importance of Competitor Pricing
Some of the vital aspects in pricing is the competitor price. How aggressive competitors are will to a big degree determine how flexible an organization might be in its own pricing. This is very true for commoditized businesses equivalent to utilities or telcos where it’s hard for providers to distinguish. Nevertheless, despite the importance of competitor pricing, many business select to not integrate this data into their very own price optimization algorithms.
The explanations for not including competitor pricing in price algorithms are varied. Some firms claim that it’s too difficult and time consuming to gather the info, and even in the event that they began now, they still wouldn’t have all of the history they should train all the value elasticity models. Others say the costs of competitor products usually are not directly comparable to their very own and that collecting them could be difficult. Finally, most firms also claim that they’ve price managers who manually monitor the market and when competitors make moves, they will adjust their very own prices in response, in order that they don’t must have this data of their algorithms.
The primary argument can increasingly be mitigated by good web scraping and other intelligence gathering methods. If that shouldn’t be enough, there are also sometimes agencies that may provide historic market data on prices for various industries and sectors. Regarding the second argument about not having comparable products, one may use machine learning techniques to tease out the actual cost of individual product components. One other method can also be to make use of different user personas that might be used to estimate the full monthly costs of a particular set of products or product.
Ultimately, not including competitor prices leaves the pricing algorithms and optimization engines at an obstacle. In industries where price calculators and comparison web sites make it increasingly easy for purchasers to get a grasp of the market, firms run a risk of being out-competed on price by more advanced competitors.