The following article provides an overview of common formulas used in Lucanet xP&A (Extended Planning & Analysis), across different themes and use cases.

This example calculates Active Headcount in Lucanet xP&A by comparing each employee's Start date and End date to the current date.

Shows a formula in Lucanet xP&A: if 'date' >= 'Start Date' and ('date' <= 'End Date' or 'End Date' = 'none') then 1 else 0.
Active headcount
  • Note that both Start date and End date are broken down by the Employee dimension.
  • End date will have to have Empty Value setting of None(this is the default for variables formatted as Dates).
  • The result is a flag, which returns a 1 for each month that the employee that is active with the company, and 0 when they are not.
  • The Total of all Employees will reflect Total Headcount for each month for the company.
Shows a formula in Lucanet xP&A referencing the 'Headcount' variable grouped by 'Department', with the 'current' time modifier.
Headcount per Department

As long as your employees are mapped to a Department, you can reference any variable broken down by Employee and grouped by Department(or any other mappings).

Shows a formula in Lucanet xP&A: if 'date' = 'Start Date' then 1 else 0.
New hire

Returns a 1 on the employees start date, useful for things like New Hire Capex (e.g. Laptops).

Shows a formula in Lucanet xP&A: if 'month' = 1 and 'Start Date' < date - 6 then 'Adjusted Annual Salary' (current) * 'Bonus Target %' * 'Headcount' (current) else 0.
Bonus
  • The first part of the formula sets the bonus month to January(1).
  • Start Date < date - 6 ensures employees have been with the company at least 6 months before receiving a bonus.
  • Annual Salary * Bonus Target % results in the bonus amount. Multiplying by Headcount will ensure that the bonus is paid only if the employee is active (see Headcount formula above)
  • Note that the Bonus Target % can be set at Department level, seniority, or any other level depending on how you map your dimensions.
Shows a formula in Lucanet xP&A: 'Benefits per Employee $' * 'Headcount' (current).
Flat fee per person costs
  • Simply set a per employee assumption (can be by department, etc.) as a flat rate
  • Multiply that rate by your headcount
Shows a formula in Lucanet xP&A: ('Salaries and Wages' (current) + 'Bonus' (current)) * 'Payroll Processing Fee %'.
Percentage of salary costs
  • Simply apply a % rate to the applicable cost base.
  • Like all inputs, they can be split into dimensions for more granular approaches.
Shows a formula in Lucanet xP&A: if 'Geography' = 'US' then 'Salary' (current) * 'SS %' else 'Headcount' (current) * 'Flat fee'.
Geography specific calculations

You can create if then statements based off dimension items, xP&A will automatically apply the correct assumptions to the formula. No need to set any filters!

There are many approaches to seasonality in Lucanet xP&A. The following two are the most used, but feel free to take an approach that best fits your needs. Both approaches use the concept of relative time so familiarize yourself with it if you have not already.

  • In this approach you can create a Seasonality variable that applies a % of the annual value over 12 months (7 days, 30 days, etc) so that adding Jan-Dec would add up to 1 or 100%.
  • Make sure to set up the variable as relative time.
Shows the 'Seasonality' variable in Lucanet xP&A set up with month time granularity, with example values 'Mo 1' 8.33%, 'Mo 2' 2%, and 'Mo 3' 15%.
Seasonality as a % of annual total
  • Then use another input variable for your Annual Target.
  • The resulting formula below uses month - 1 as the time modifier. The -1 aligns xP&A's time step index (which starts at 0), with xP&A's month index (1-12 for Jan-Dec). Note the -1 is used because this model starts in January, if the model was to start in February, -2 should be applied and so on for other month start dates.
Shows a formula in Lucanet xP&A: 'Annual Target' * '% Seasonality' with the time modifier 'month - 1'.
Seasonality with 'month-1'
  • The previous approach (% of annual total) divides an annual target throughout the year, whereas this approach adjusts monthly numbers for seasonality.
  • The Seasonality input in this case, should equal 100% for “average” months and 120% or 90% for above or below average months, respectively (and versus adding up to 100% for the year in the previous approach).
Shows the 'Seasonality' variable in Lucanet xP&A set up as a variance to the average, with example values 100%, 120%, and 90%.
Seasonality as a variance to the average

In order to understand your customers at a deeper level, you'll often want to track them on a more granular basis, using time-based cohorts. This is because customers can behave differently at different points in time, for example:

  • Retention and expansion rates often follow a pattern depending on how many months they've been a customer.
  • Churn rates may differ depending on what time of year a customer joined.
  • Spend or engagement may be higher in initial months after sign-up, then drop off.
  • If you have a new onboarding flow, more customers might retain in the 2nd month, (vs. when there was no new onboarding flow).

To forecast on this cohort basis, you need to be able to split your customers into different cohorts, so you can apply the correct assumptions (e.g. churn, retention etc) at different points in time.

In xP&A, cohorts act as a dimension that reflects the time period of the model. For example, if a monthly model goes from Jan '22 to Dec '22, adding cohorts would add 12 items, one for each month in the model.

Shows the 'New Activated Users' variable in Lucanet xP&A broken down by month 'Cohort' dimension items from 'Jan '22' to 'Aug '22', with '28 more items' below.
Month cohorts

You can access cohorts by explicitly adding the Cohort dimension in the variable or by referencing cohorts in the formula. Below is a simple example of using cohorts:

Shows a formula in Lucanet xP&A: 'New signups by Cohort' (cohort) * 'Activation by Cohort' (t - cohort).
Cohort of leads that convert into New Customers

Example Inputs:

1

New sign-ups is 1,000 for our first month and grows at 5%.

2

Activation of cohort uses relative time so that 1st month is 45%, 2nd is 25%, etc.

Shows the 'Activation of cohort' variable in Lucanet xP&A with time granularity month, with example values 'Mo 1' 45%, 'Mo 2' 25%, 'Mo 3' 15%, and 'Mo 4' 5%.
Activation of cohorts

Simply, this formula is saying "Signups multiplied by activation rate %"

  • By putting cohort as the time modifier of the New sign-ups variable, we are telling xP&A to use the new sign-ups for January in the Jan cohort, February in the Feb cohort, etc.
  • By using t-cohort as the time modifier of the Activations variable, we are telling xP&A to use the 1st month activation rate (i.e. 45%) for the first month of the cohort (Jan'22 for the Jan'22 cohort), the second activation rate (25%) for the second month of that cohort (Feb'22 for the Jan'22 cohort), and so on.

Deeper dive on t-cohort:

Let's consider the Feb '22 cohort, in March '22, in a model that begins in January '22:

  • cohort is 0 for Jan '22, 1 for Feb '22, etc.

  • t is 0 for Jan '22, 1 for Feb '22, 2 for Mar '22 etc.

  • For our worked example, t is 2 and cohort is 1. t-cohort will return 1, so the 2nd month activation rate (25%) is applied. This is correct as Mar'22 is the 2nd month of my Feb'22 cohort.

  • If the month was instead Feb '22, then t-cohort would be 0 (1-1) corresponding to the 1st month activation rate of 45%

Note: t is a helper variable (also known as timestep or date).

You can connect your historic cohort data to xP&A via:

  • A spreadsheet. If you go the spreadsheet route, there are two formats that are compatible with xP&A: Time-Series format and Transactions format. For both, an example can be found below.

The one rule that must be satisfied is that the dates in the Cohort column must fall between the range of the Date column.

This is an example of a Time-series format spreadsheet for cohorts:

Shows a spreadsheet in the time-series cohort format for Lucanet xP&A: column A contains the variable 'Total Billed', column B contains the 'Cohort' dates from 'August 2018' to 'May 2019', and columns C to G contain the values for 'August 2018' to 'December 2018', for example 1000, 900, 1250, 1500, and 1000 in the 'August 2018' cohort row.
Time series
  • Each row represents a single variable for a single dimension item.
  • The columns can be split into 3 section: Variable Names, Dimensions, and Values
    • The first section is just the first column:
      • It must contain the Variable Names.
      • In the example above, column A contains the variable Total Billed. In this case, it was the only variable.
    • The second section proceeds the first column:
      • It contains the Dimensions.
      • The first row must have the name of the dimension and the rows below may have the name of an item in that dimension.
      • In the example above, column B contains the Cohort dimension. In this case, it was the only dimension. The cohort names (e.g. August 2018) must be formatted as Dates to be recognized by xP&A.
    • The third section follows after all of the columns involved in the second section:
      • It contains the Values.
      • The first row must contain the dates, and the rows below are the values themselves (must be number format, not text)
      • In the example of above, this section ranges from column C to column G.
Shows a spreadsheet in the transactions cohort format for Lucanet xP&A with the columns 'Date', 'Revenue', 'Customer', and 'Cohort', for example the row '2023-04', '$193', 'Customer A', '2022-04'.
Transactions

This is an example of a Transactions format spreadsheet for cohorts:

  • The first column must have the name Date.
  • Simply add a column with the name Cohort. As above, the cohort names must be formatted as Dates to be recognized by xP&A.
  • The other columns can be for additional dimensions and/or data items.

Here are some common SaaS metrics you might want to track, and how to build them in xP&A:

Customer Acquisition Cost calculates how much it costs to acquire a Customer in the period. Calculated using direct Marketing Spend and Sales/Marketing Staff Costs in the appropriate period.

For example, let’s say there’s $1m Marketing Spend in Jan 22 and then $2m in Feb 22 and Mar 22. Marketing Spend takes 2 months to flow down the funnel and convert to Customers. In Mar 22, there are 4 new customers, therefore CAC in Mar 22 should be $1m/4 = $250k rather than using the Marketing Spend in Mar 22, which would result in $2m/4 = $500k, as this is not the relevant amount which determines the New Customers gained in the period.

xP&A’s Time Modifiers make implementing this logic very easy! If we use the same logic as above in regards to Payroll Cost for Sales and Marketing Staff, we can produce a formula like the image below. The formula takes Payroll Costs for the Sales and Marketing Department modified by the amount of Time spent in the funnel. This is then divided by the the New Customers in the Period to arrive at the CAC.

Shows a formula in Lucanet xP&A: 'Sales and marketing payroll' (t - 'Time in funnel') / 'Time in funnel'.
Customer Acquisition Cost (CAC)

Customer Acquisition Payback calculates the number of periods required for a Customer to produce enough Gross Profit to pay back their respective CAC. The shorter the Payback Period the better your business is performing.

Therefore, once you have calculated CAC(see above) you can calculate your payback by finding your ARPU (Average Revenue per Account) and multiplying this by your Gross Profit Margin to find the contribution per Customer. Taking CAC and dividing by this Contribution, calculates how many periods are required for the customer to payback their CAC.

Annual Contract Value/Customer Acquisition Cost gives indication of profitability on new contracts. After calculating CAC (see above), take the Annual Contract Value in the period and divide by CAC in the period to produce this metric.

The Magic Number metric is designed to measure how efficient and effective your Sales and Marketing spend are in a specific time period.

It is calculated by taking Net New ARR or New ARR + Expansion ARR - Churned ARR and dividing it by CAC.

The following general advice is given depending on your Magic Number:

  • Magic Number < 0.5: A magic number this low indicates that something is wrong with your business model. Whether it be high costs relative to performance or perhaps you have not achieved product-market fit. This is not the time to invest in Sales and Marketing, focus should be elsewhere.
  • 0.5 < Magic Number < 0.75: This is generally considered to be the main threshold for the magic number. If you’re around the 0.75 mark then your sales efficiency is approaching market norms. This is a time to evaluate whether or not to increase Sales and Marketing expense and depends on the specific context of your business. ‍
  • Magic Number > 0.75: A magic number over 0.75 indicates that this is the time to invest in Sales and Marketing. You likely have a proven product-market fit and solid CAC payback periods and this is the time to take advantage.

Lifetime Value is a metric that measures, you guessed it, the Lifetime Value of a cohort of New Customers. The higher your LTV the better.

You can calculate LTV by taking (Average Order Size in the Period * Average # of Orders in the Period * Contract Length) / Churn Rate. This gives LTV for an average customer in the cohort.

Burn Multiple calculates how much Cash is being used to generate new business and is used as a guide on sustainability of the current business model. The higher the Burn Multiple, the more the start-up is burning to achieve each unit of growth. The lower the Burn Multiple, the more efficient the growth is.

Calculated by taking -Net Operating Cashflow divided by Net New ARR or (New ARR + Expansion ARR - Churned ARR).

The table below gives some context to how your Burn Multiple shapes up:

Shows a reference table in Lucanet xP&A mapping 'Burn Multiple' ranges to 'Efficiency' ratings: 'Under 1x' is 'Amazing', '1 - 1.5x' is 'Great', '1.5 - 2x' is 'Good', '2 - 3x' is 'Suspect', and 'Over 3x' is 'Bad'.
Burn multiple

Net Retention Rate is a core tracked metric for most SaaS businesses. It gives an indication of the impact of Customer Retention and Upselling on the business.

Calculated by taking (Beginning ARR - Churned ARR + Expansion ARR) / Beginning ARR.

A solid SaaS company would expect to have a Net Retention Rate of at least 100% with anything above 110% considered exceptional.

Customer Retention is a key metric for any business and is measured by how many Customers at the Start of the Period remain at the End of the Period.

It is calculated by taking (Total Customers at End of Period - New Customers in Period) / Customers at the Beginning of Period.

Of course you cannot retain more than 100% of your customers, the closer you are to 100% the better your business is performing.

For indirect cashflow statements, make sure every balance sheet item is accounted for in the cashflow statement. As a general rule:

  • For Assets, cash change is asset item|previous - asset item|current
  • For Liability and Equity, cash change is the opposite (current - previous).

The following items assume a connection to a balance sheet:

Shows a formula in Lucanet xP&A: ('Total Current Assets' (previous) + 'Total Current Liabiilities' (current)) - ('Total Current Assets' (current) + 'Total Current Liabiilities' (previous)).
Change in working capital

If you are looking for more fulsome templates, you can find them here.

This content was generated using AI and reviewed by Lucanet subject matter experts before publication.