Functions

Math

Function
What it does
Example
abs
The absolute value of a number.
The absolute value of a number.
avg
The arithmetic mean (average) of the inputs. Can also be used as avgif.
avg(1, 2, 3) = 2
avg(if Var[all] % 2 = 0 then Var[all] else none = avg of all even values
first_nonzero_value
The first value that is not zero or empty.
first_nonzero_value(0,none,4,6) = 4
is_empty
Evaluates to 1 if variable has no expression, and otherwise to 0.
is_empty(Var[current])
log
Natural logarithm (base e).
log(e^2) = 2
log10
Common logarithm (base 10).
log10(100) = 2
max
The highest of the given values.
max(1, 2, 3) = 3; max([1, 2, 3]) = 3
min
The lowest of the given values.
min(1, 2, 3) = 1; min([1, 2, 3]) = 1
mod
The remainder of a division. You can also use mod as "%"
mod(5, 2) = 1 5 % 2 = 1 reccurence every 4 months: if timeStep % 4 = 0 then 1 else 0
reverse
Reverses the order of an array.
reverse([1, 2]) = [2, 1]
round
Rounds the number to the closest integer.
round(2.3) = 2, round(2.5) = 3
rounddown
Rounds the number down, toward 0.
rounddown(2.8) = 2, rounddown(-2.8) = -2
roundup
Rounds the number up, away from 0.
roundup(2.2) = 3, roundup(-2.2) = -3
signchange
Timestep on which the first sign change occurs.
signchange(Var[all])
spread
Spreads a value over a time period. Click here for more information.
spread(New Customers[0:t], Payments[0:t])
sqrt
Square root of a value.
sqrt(4) = 2
sum
The sum of the inputs. Can also be used as sumif or countif.
sum(1, 2, 3) = 6. sum(if Var[all] % 2 = 0 then Var[all] else 0) = sum of all even values
sumproduct
Multiplies two or more arrays together and returns the sum of products.
sumproduct(Var1[all], Var2[all])
exp
Exponential function
exp(2) = e^2

Time

See Time & Working with Time​
Function
What it does
Example
date
The time step number of a date. Time steps start with 0.
date(2021,12,24) = 11 in a monthly model that starts in Jan 2021
month_from_date
Extracts the month of a date or time step.
month_from_date( date(2021,12,24) ) = 12
year_from_date
Extracts the year of a date or time step.
year_from_date( date(2021,12,24) ) = 2021

Financial

cumipmt
Cumulative interest paid
cumipmt(rate, periods, value, start, end, type)
finance. am, cagr, ci, df, fv, iar, kr, npv, pi, pmt, pp, pv, r72, wacc
Finance.js function
​
finance.irr
Internal rate of return.
finance.IRR(Cashflows[all], [guess])
finance.roi
Return on investment
finance.ROI(Cashflows[all])
finance.xirr
Internal rate of return for a schedule of cash flows.
finance.xirr([-10,11], [0,12], 12) = 10%
fv
Future Value
fv(rate, nper, pmt, pv, [type])
fvifa
Future Value Interest Factor of an Annuity.
fvifa(rate, nper)
ipmt
Interest portion of a given loan payment.
ipmt(rate, per, nper, pv, [fv], [type])
pmt
Periodic payment for a loan.
pmt(rate, nper, pv, [fv], [type])
ppmt
Principal portion of a given loan payment.
ppmt(rate, per, nper, pv, [fv], [type])
pv
Present Value
pv(rate, nper, pmt, fv, [type])
pvif
Present Value Interest Factor
pvif(rate, nper)
rate
Interest rate per period of an annuity.
rate(nper, pmt, pv, [fv], [type], [guess])

Probability

beta
Beta distribution
beta(alpha, beta)
binominal
Binomial distribution
binomial(n, p)
cauchy
Cauchy distribution
cauchy(local, scale)
chisq
Chi-squared distribution
chisq(k)
exponential
Exponential distribution
exponential(rate)
gamma
Gamma distribution
gamma(shape, scale)
invgamma
Inverse-gamma distribution
invgamma(shape, scale)
lognormal
Log-normal distribution
lognormal(μ, σ^2)
lognormal_from
Log-normal distribution
lognormal_from_interval(from, to, confidence_percent)
normal
Normal distribution
normal(mean, variance)
normal_from
Normal distribution
normal_from_interval(from, to, confidence_percent)
pareto
Pareto distribution
pareto(min, alpha)
poisson
Poisson distribution
poisson(λ)
stdev
The standard deviation of an array
stdev(Var[all])
triangle
Triangle distribution
triangle(from, to, confidence_percent)
uniform
Uniform distribution
uniform(from, to)
variance
The variance of an array
variance(Var[all])

Other

Function
What it does
Example
error
Error to assert an invalid state.
error()
flat_cohort_forecast
Forecasts cohort data without the cohort category.
flat_cohort_forecast(oldCohorts[all], newCohorts[all], retentionRates[all], lastDataDate, t, [additionalChurn])
gaussian_ramp
Ramping up a value over a time period in the shape of a gaussian bell curve.
gaussian_ramp(timestep,
date(2022,10), 2, 100)
is_data
Evaluates to 1 if argument is derived from a datasource, and otherwise to 0.
is_data(Variable[all])
is_locked
Evaluates to 1 if argument is a Locked Category Item, and otherwise to 0.
is_locked(categoryitem)
last_data_timestep
Returns the last timestep that is derived from a datasource.
last_data_timestep(Var[all])
logistic_ramp
Ramping up a value over a time period in an S-shape (logistic function).
logistic_ramp(timestep, date(2022,1), date(2022,10), 1.8, 100, 200)
quadratic_ramp
Ramping up a value quadratically over a time period.
quadratic_ramp(timestep,
date(2022,1), date(2022,10) [startValue], [endValue])
ramp
Ramping up a value linearly over a time period.
ramp(timestep, date(2022,1), date(2022,10), 100, 200)
ramp_normalized
A ramp with the cumulative sum of 1. Useful for distributing a fixed value over a time period.
ramp_normalized(timestep, date(2022,1), date(2022,10)