Skip to content

Cost Risk Software · Documentation

Quantik User Guide

A section-by-section guide to Quantik 0.8.0: install it, build a model, run it, read the results and issue the report.

00 · Before you start

  • Windows with 64-bit Microsoft 365 Excel (Excel 2016 or later).
  • The .NET 10 Desktop Runtime (x64). If it is missing, the installer says so and tells you where to get it from Microsoft.
  • No administrator rights. Quantik installs for your Windows account only.
  • No internet connection. Licence checks happen on your PC and Quantik sends nothing anywhere.
Locked-down PCs

If your organisation only allows signed add-ins, ask IT to trust the signed release, or to add %LOCALAPPDATA%\Programs\Quantik as a trusted location.

01 · Install and uninstall

  1. Download and unzip the release folder. download link
  2. Close every Excel window.
  3. Double-click Install.cmd.
  4. Start Excel. A Quantik tab appears on the ribbon.

The installer checks for 64-bit Excel and the .NET runtime, copies the add-in to %LOCALAPPDATA%\Programs\Quantik\, clears the "downloaded from the internet" mark and registers the add-in so Excel loads it at start-up. To preview the changes without making them, run this in PowerShell from the release folder:

.\Install-Quantik.ps1 -WhatIf

To uninstall, close Excel and double-click Uninstall.cmd. It removes the files and the registry entry. Your workbooks are not touched.

The release folder also contains INSTALL.md, the example workbooks, the four authority templates and SHA-256 checksums.

02 · Your first run

  1. Open examples\Example QRA - Bayview.xlsx.
  2. On the Quantik tab, set Iterations to 10,000 and Sampling to Latin Hypercube.
  3. Click Run Simulation. It takes about 15–25 seconds; progress shows on the status bar.
  4. The Quantik Results sheet opens with statistics, the P1–P99 table, contingency, the top drivers, an S-curve, a histogram and a tornado.
  5. Click Export PDF for the three-page client report.

Then open Example QRA - BOQ Risk Model.xlsx, run it, and try Contingency, Sensitivity and Browse Results. Both examples are explained in Worked examples.

03 · The Quantik ribbon

The Quantik tab in Excel 0.8.0: Synthetik (Quantik, Licence), Model (Define Input, Add Output, Risk Register, Correlate, Model Check, Cell values, Settings), Simulation (Iterations, Sampling, Seed, Run Simulation), Analysis (Results, Sensitivity, S-Curve, Convergence, Scenarios, Correlation Test, Stress Test, Browse Results) and Reports (Contingency, Report, Export PDF, Revision Bridge, Input Pack, Save Revision).
The Quantik tab (0.8.0). Groups run left to right in the order you work.
GroupButtonWhat it does
SynthetikQuantik, LicenceAbout box (version, last run, licence, Machine ID). The Licence button shows "Trial: n d", "Licensed", "Renew licence" or "Enter licence".
Model Define InputDialog for the selected cell: choose a distribution, enter values or % of the cell's own value, see the shape and P10/P50/P90 update live, then insert the formula.
Add OutputWraps the selected total in SYN.OUTPUT("name", …).
Risk RegisterGoes to the Risk Register sheet, or adds a ready-to-fill one.
CorrelatePuts the selected inputs in one correlation group at ρ, or removes them.
Model CheckLists every input, output and invalid cell on a Quantik Model sheet, without running.
Cell values, SettingsWhat cells show outside a run (mean, most likely or P50); the four-tab Settings dialog.
Simulation Iterations, Sampling, Seed, Run SimulationIterations from a list (1,000 to 100,000, or Auto) or typed (100 to 1,000,000; "10k" works). Latin Hypercube or Monte Carlo. Fixed seed.
Analysis ResultsThe Quantik Results sheet.
Sensitivity, S-Curve, ConvergenceJump to that chart on the Results sheet.
Browse ResultsFloating distribution window for any input or output cell.
Correlation Test, ScenariosThe GN3A ρ = 0 / ρ = 1 test, and named what-ifs on common random numbers.
Fit DistributionFits Normal, Lognormal, Uniform, Triangular and PERT to selected data, ranked by AIC with KS and AD checks, and gives the formula to paste.
Stress Test, Input PackOutput P50/P90 with each input in its best or worst 10%; and the replication pack of every input, seed and setting.
Reports ContingencyOne-page contingency sheet.
Report, Export PDFBuilds the A4 client report sheet for review; exports it to PDF.
Save RevisionStores this run (P50, P90, base and every component's contribution); keeps 12 revisions.
Revision BridgeWaterfall of what moved P90 (and P50) since the last saved revision.

04 · Defining inputs

The quickest way: select a cell holding a single-point cost and click Define Input. Pick a distribution (Range, PERT, PERT P10/P90, Triangular, Uniform, Normal or Risk event), enter the values or percentages of the cell's own value, optionally name it and give it a correlation group, and insert. Select an existing Quantik formula and Define Input reads it back for editing.

Or type the functions directly:

You wantPut in the cell
A cost range (min, most likely, max)=SYN.PERT(min, ml, max, SYN.NAME("Earthworks"))
A range whose reading (min/max or P10/P90) follows Settings=SYN.RANGE(low, ml, high, SYN.NAME("Asphalt rate"))
A range given as P10 / most likely / P90=SYN.PERTALT(0.1, p10, "m. likely", ml, 0.9, p90)
A percentage range on the cell's base=SYN.PERT(C5*0.9, C5, C5*1.25, SYN.NAME(B5))
A risk event=SYN.EVENT(0.375, SYN.PERT(8000, 20000, 45000), SYN.NAME("Rock in cut"))
A shared risk driver=SYN.DRIVER("Ground conditions", 0.95, 1, 1.25)
Related items that move togetheradd SYN.CORR("Civil", 0.6) to each item's formula
Different correlations between particular itemsenter a correlation matrix on the sheet and add SYN.CORRMAT($K$2:$M$4, 1), …, 2), …, 3) to the items, by position
Past data (rates, actual ÷ estimate ratios)select it and click Fit Distribution; paste the formula of the best fit
Tip

Use SYN.RANGE for BOQ quantities and rates. One setting then moves the whole model between min/max and P10/P90 ranges, which is the biggest single choice in most QRAs (see Risk modelling).

Names matter. The name appears in the tornado, the contingency breakdown and the run log, and with identity streams it decides the input's random numbers. Give every input a short, unique name.

Invalid arguments (min above max, most likely outside the range) show #VALUE! rather than quietly becoming a constant, and a run will not start until they are fixed.

05 · Outputs and the base estimate

  • Wrap each total you want analysed in =SYN.OUTPUT("Total project cost", <your total>), or select it and click Add Output. You can have several outputs (inherent, contingent, each register section, duration).
  • Name the base-estimate cell SYN_BaseEstimate. Contingency is then reported against it at every confidence level.
  • If there are several outputs, the workbook name SYN_ReportOutput chooses which one the report covers.

06 · Risk registers

Click Risk Register to add a ready-to-fill register: Include (Y/N), a likelihood table, risk or opportunity type, a SYN.EVENT formula per row, and the total as an output. The BOQ example and authority templates carry a fuller register, in sections (principal's, shared, contractor's, opportunities, unidentified), with:

  • cause, consequence, allocation and principal's share;
  • before-controls likelihood and low / most likely / high cost, with a rating;
  • controls (response, treatment, status, cost, whether already in the base), then residual likelihood, cost and rating;
  • treatment action, owner, due date, status and review dates;
  • a Programme delay flag (weeks added to the Schedule) and a GN3A screening column (LPHC and minor-risk flags);
  • an input check column that explains any problem in words.

The Risk Matrix sheet gives 5 × 5 heat maps before and after controls and for opportunities, with editable likelihood bands, consequence thresholds (% of base) and rating table.

07 · Running a simulation

  1. Click Model Check. It lists every input and output and flags any invalid cell.
  2. Choose Iterations. 10,000 is a sound default; GN3A asks for 5,000–10,000. "Auto" runs until P90 is known to within the precision target (default ±2.5% of the P90 contingency), never fewer than 5,000.
  3. Keep Latin Hypercube sampling and a fixed seed unless you have a reason not to; the seed used is always reported.
  4. Click Run Simulation. Close other workbooks for speed.

Inputs first reached part-way through a run (inside an IF branch) are sampled from then on and reported. Iterations whose output is an Excel error are excluded and counted.

08 · Reading the results

The Quantik Results sheet

  • Statistics: mean, standard deviation, min, max, P95, P99, mean of the worst 10% and 5%.
  • P1–P99 table with contingency against SYN_BaseEstimate, and "P90 ± $X (95%)" precision.
  • Where the base sits: the probability of not exceeding the base estimate (often low, because ranges are skewed upwards).
  • Top drivers: change in P50 and P90, regression and rank correlation, share of variance.
  • Charts: S-curve, histogram and tornado as native Excel charts, plus convergence.

Browse Results

Toggle Browse Results, then select any input or output cell: a floating window shows its distribution from the last run, as a histogram or S-curve. Drag the two delimiters, or type the tail percentages, to read any range. The bar above the chart shows the actual share of iterations below, between and above the delimiters, so a risk that is $0 in most iterations reads correctly. Copy chart puts it on the clipboard. Closing the window turns browsing off.

Browse Results on risk P04 with delimiters at P10 and P90
Browse Results on a risk row. The bar at $0 is the chance the risk does not occur; the delimiters sit at P10 and P90.

Functions that read the last run

SYN.PERCENTILE("Total project cost", 0.9), SYN.MEAN, SYN.STDDEV, SYN.TARGET, SYN.TAILMEAN, SYN.PRECISION and SYN.JCL put results straight into your own summary sheets.

The run log

Every reported run is appended to the Quantik Run Log sheet: date and time, user, Quantik version, output, iterations, sampling, streams, seed, settings hash, input fingerprint, number of inputs, mean, P50, P90 and P90 precision. If the hashes match between two runs, the model and settings are the same, and the same seed reproduces the result exactly.

09 · Reports and revisions

ButtonProduces
ContingencyA one-page Quantik Contingency sheet: recommended contingency (P90 − base), estimate and contingency at each confidence level, contingency vs confidence chart, the tail beyond P90, and the breakdown across the model's other outputs with each component's contribution to P90 (±) and the diversification.
ReportThe A4 client report on a Quantik Report sheet, to review in Excel.
Export PDFThe report as a three-page PDF: (1) headline tiles, confidence table, statistics and S-curve; (2) histogram and method notes; (3) P50 and P90 driver tornados and a top-10 table. Saved to SYN_ReportPath if set, else the workbook's folder.
Save RevisionStores the run (P50, P90, base, each component's contribution) in the workbook, keeping 12 revisions. Later runs overlay its S-curve as a dashed line.
Revision BridgeA waterfall from the last revision's P90 to this run's: the base estimate's change, each component's change, and a small "sampling and interaction" step, so the bars add up exactly. Also a P50 bridge and the revision history.

Report settings (framework preset, headline tiles, table percentiles, project details, optional pages) are on the Report & framework tab of Settings.

The Quantik Contingency sheet: recommended contingency, estimate at confidence levels and breakdown by component
The Contingency sheet: recommended P90 contingency, the estimate at each confidence level, and the breakdown by component.

10 · Scenarios, correlation test, stress test and input pack

Scenarios

  1. Click Scenarios. The first time, it adds a Quantik Scenarios sheet.
  2. List up to 20 scenarios. Each has a name and up to five changes, either a cell (Risk Model!B8 = Unmitigated) or a setting (Settings.RangeMethod = PertAlt).
  3. Click Scenarios again. Quantik runs the baseline and every scenario on the same seed and random numbers, puts every change back, and writes a comparison table and S-curves.

Because each input keeps its own random numbers, the differences between scenarios are the changes themselves, not sampling noise.

Fit Distribution

Select a column of past data (tendered rates, actual ÷ estimate ratios from closed jobs, durations) and click Fit Distribution (Model group). The Quantik Fit sheet ranks Normal, Lognormal, Uniform, Triangular and PERT by AIC (lower is better), with the Kolmogorov–Smirnov and Anderson–Darling distances, fitted P10/P50/P90 beside the data's, and a chart of the data against the three best fits. Copy the formula of the fit you choose into the input cell. When two fits are within 2 AIC the sheet says they fit equally well: choose on what you know about the quantity. Bounded fits extend one data spacing beyond the observed range, so the next job is not ruled out by the last ones.

Correlation Test

Correlation Test runs the model three times on one seed: every input independent (ρ = 0), as modelled, and fully correlated (ρ = 1). It writes the Quantik Correlation Test sheet: P5–P95 under each, the gap at P50 and P90, where the model sits in the gap, P90 contingency under each, and S-curves. Attach it to a GN3A submission.

Stress Test

Stress Test reads the last run, so nothing is re-run. For each input it shows the output's P50 and P90 in the iterations where that input sits in its best 10% (lowest values) or worst 10% (highest). Risk events are split by does not occur / occurs. The Quantik Stress Test sheet ranks the 15 inputs with the biggest P90 swing and charts the change from the run's P90. Use it to answer "if ground conditions come in at the bad end, where does our P90 go?"

Input Pack

Input Pack (Reports group) lists every uncertain input of the last run: cell, name, function and its arguments, correlation group and ρ, and the sampled mean, P10, P50, P90, minimum and maximum. It also records the seed, iterations, sampling, settings, settings hash and input fingerprint. It writes the Quantik Input Pack sheet and a CSV next to the workbook. A reviewer can audit or rebuild the model from it, and the fingerprints match the Run Log.

11 · Settings

Settings are saved inside the workbook, so they travel with the file; switching workbooks switches settings.

TabOptions
SimulationIterations (100 to 1,000,000) or auto-stop with a precision target and a maximum; Latin Hypercube or Monte Carlo; fixed or random seed; PERT shape λ; how SYN.RANGE reads ranges (PERT or triangular, min/max or P10/P90); cell values; correlation between groups; random streams (by identity or by position).
SensitivityMethod (change-in-statistic tornado, standardised regression, rank correlation, contribution to variance); tornado statistics (Mean or P1–P99); tail size; drivers shown; spider chart.
Charts & displayHistogram bars; marked percentiles; base and mean markers; shaded band; colours; statistics box; % bar; comparison overlay.
Report & frameworkPresets for Cenex, TMR, DITRDCA, RES, VIC or Custom; headline tiles; confidence-table percentiles; project, client, document number, prepared by; optional pages; client PDF extras.

12 · @RISK workbooks

When @RISK is not loaded, Quantik also registers these functions, so workbooks built with @RISK formulas simulate as they are:

RiskPert RiskPertAlt RiskTriang RiskTrigen RiskUniform RiskNormal RiskLognorm RiskBernoulli RiskBinomial RiskPoisson RiskDiscrete RiskName RiskTruncate RiskTruncate2 RiskShift RiskStatic RiskCorrmat RiskCollect RiskCategory RiskUnits RiskMakeInput RiskOutput

Truncate and Shift follow @RISK's semantics. When @RISK is loaded, Quantik stands aside so the two never conflict. RiskCorrmat correlation matrices work as in @RISK: one triangle or both may be filled, the diagonal is taken as 1, and each matrix is applied exactly as entered (an invalid one is adjusted to the nearest valid matrix and the status line says so). An asymmetric matrix or a position outside it shows #VALUE!.

13 · Licensing and trial

The trial

With no licence key, Quantik runs a 30-day trial from the first day it runs, with every feature. Reports carry a red "QUANTIK TRIAL: evaluation only, not for issue" header.

Entering a licence

  1. Click the Licence button in the Synthetik group (or open About, or File → Quantik).
  2. Click Enter licence and paste the key from your email, or open the .qlic file.
  3. Quantik checks the key before saving it. An invalid key is refused with a reason (wrong machine, version or signature).

A licence key is a single line starting QK1., signed by Synthetik. Quantik checks the signature on your PC; nothing is sent anywhere. Editions are Named User, Team, Site, Trial and Internal; a key may be bound to one PC by its Machine ID (shown in About).

For IT: deploying a key

Quantik looks for a key in this order, and the first found wins:

  1. the QUANTIK_LICENCE environment variable (the key, or the path of a .qlic file);
  2. %LOCALAPPDATA%\Quantik\licence.qlic (where Enter licence saves it);
  3. %PROGRAMDATA%\Quantik\licence.qlic (one team or site key for every user);
  4. licence.qlic next to the add-in.

When a subscription ends

Quantik keeps running for a 30-day grace period with a warning. After that, Run Simulation, Scenarios and the Correlation Test stop, but your workbooks, results, reports, Browse Results and the SYN functions keep working, so nobody is locked out of their own files.

Licence terms: Licence terms.

14 · Troubleshooting

SymptomFix
No Quantik tabFile → Options → Add-ins → Manage Excel Add-ins → Go, and make sure Quantik is ticked. Then check that the .NET Desktop Runtime the installer named is installed, and that Excel is 64-bit.
"This add-in has been blocked"Your organisation only allows signed add-ins. Ask IT to allow the signed release or add %LOCALAPPDATA%\Programs\Quantik as a trusted location.
Functions show #NAME?The add-in is not loaded in this Excel session; see the first row.
A distribution cell shows #VALUE!Its arguments are invalid, for example min above max, or most likely outside the range. Model Check lists them.
Run Simulation will not startA distribution cell has invalid arguments (run Model Check), or the licence grace period has ended (see Licensing).
A run is slowClose other workbooks: Excel recalculates every open workbook on each iteration. Avoid volatile functions such as OFFSET and INDIRECT in large models.
Results are not reproducibleUse a fixed seed. Check for RAND() or RANDBETWEEN in the model; they are not controlled by Quantik.
Results moved after inserting a rowCheck Settings → Random streams is "By identity" (the default). "By position" gives later inputs new samples when rows move.
Reports say "evaluation only"No licence key is installed. Enter one from the Licence button.

Still stuck? Contact hello@synthetik.au confirm support contact with the workbook's run log row and your Machine ID.

15 · Function reference

Distributions

FunctionDescription
SYN.PERT(min, ml, max)Modified PERT on min, most likely, max (λ = 4).
SYN.RANGE(low, ml, high)Three-point range (low, most likely, high) read as min/max or P10/P90 according to the workbook's settings.
SYN.PERTALT(t1, v1, t2, v2, t3, v3)PERT from percentiles, e.g. SYN.PERTALT(0.1, P10, "m. likely", ML, 0.9, P90).
SYN.TRIANG(min, ml, max)Triangular on min, most likely, max.
SYN.TRIGEN(low, ml, high, [lowP], [highP])Triangular from a low and high percentile (default P10 and P90).
SYN.UNIFORM(min, max)Uniform between min and max.
SYN.NORMAL(mean, sd)Normal.
SYN.LOGNORM(mean, sd)Lognormal by its own mean and standard deviation.
SYN.BERNOULLI(p)1 with probability p, else 0.
SYN.BINOMIAL(n, p), SYN.POISSON(λ)Counts of events.
SYN.DISCRETE(values, weights)Discrete distribution over a range of values with a range of weights.
SYN.EVENT(p, impact)Risk event: returns the impact with probability p, otherwise 0.
SYN.DRIVER(name, low, ml, high, [p])Risk driver / risk factor: a shared multiplier (e.g. 0.95, 1.00, 1.25) for every cost it drives; with a probability below 1 it applies only when it occurs, otherwise 1.

Properties (add inside a distribution)

FunctionDescription
SYN.NAME("name")Names an input for reports.
SYN.CORRMAT(matrix, position, [name])Correlates this input with the others that use the same matrix, by its row/column in it. One triangle is enough. RiskCorrmat is the same.
SYN.CORR("group", ρ)Rank-correlates this input with every other input in the same group, e.g. SYN.CORR("Civil", 0.6).
SYN.TRUNCATE(min, max)Limits a distribution to [min, max].
SYN.STATIC(value)The value shown when no simulation is running.

Outputs and results

FunctionDescription
SYN.OUTPUT("name", value)Marks a value as a simulation output and returns it.
SYN.PERCENTILE("output", p)Percentile of an output from the last simulation, e.g. SYN.PERCENTILE("Total cost", 0.9).
SYN.MEAN("output"), SYN.STDDEV("output")Mean and standard deviation of an output from the last simulation.
SYN.TARGET("output", value)Probability the output is at or below a value in the last simulation.
SYN.TAILMEAN("output", p)Mean of the worst outcomes: SYN.TAILMEAN("Total cost", 0.9) is the average of the worst 10% (CVaR).
SYN.PRECISION("output", p)Sampling precision of a percentile: the 95% half-width, e.g. ± dollars on P90.
SYN.JCL(cost, costValue, duration, durationValue)Joint confidence: the probability that cost is at or below costValue and duration is at or below durationValue.
SYN.STATUS()Status of the last simulation.

16 · Workbook names and automation

Workbook nameEffect
SYN_BaseEstimateThe base estimate that contingency is measured from.
SYN_Iterations, SYN_Seed, SYN_SamplingOverride the ribbon (LHS or MC).
SYN_CrossGroupRhoCorrelation between groups (default 0.3).
SYN_ReportOutput, SYN_ReportPathWhich output the report covers; where the PDF is saved.
SYN_WriteDataTRUE also writes every iteration to a Quantik Data sheet.
SYN_SettingsJsonPoints at a cell holding JSON that overrides any saved setting.

For VBA or scripted runs, use Application.Run with SynthetikRun, SynthetikModelCheck, SynthetikContingency, SynthetikReport, SynthetikExportPdf, SynthetikRiskRegister, SynthetikBrowse, SynthetikSaveComparison, SynthetikBridge or SynthetikShowTab.