Pricing
Payoff logic, pricing kernels, discounting, and calibration paths become checked Chelis programs with explicit numerical assumptions.
First application
The first application is the options and derivatives desk. A wrong Greek moves hedges the same hour it reaches the desk; a curve that dips negative misprices a book quietly. C Proof exists for teams whose generated pricing and risk code cannot wait for a human to read every line.
The gap
Research runs in Python. Production runs in C++. Compliance signs off on a document written in English. Every translation between them is a place for the model and the code to diverge, and generated code multiplies the translations. C Proof gives the desk one checked path: the model enters once, with provenance, and the code that runs is the code that was checked.
Application
Payoff logic, pricing kernels, discounting, and calibration paths become checked Chelis programs with explicit numerical assumptions.
Derivative calculations and AD paths check against type rules and implementation properties before generated code reaches a desk.
Scenario grids, portfolio constraints, exposure logic, and aggregation rules get reviewable properties instead of only regression tests.
Research signals and execution-facing transforms carry the compiler's structural checks into the build path.
Curve construction, interpolation, bootstrapping, and rate transforms tie to stated domains and repeatable provenance.
Cross-valuation invariants stated as checkable properties, evidence tier recorded, so model-risk review starts from a record.
The audit chain from approved specification to compiled binary. The person who signs off reads one artifact.
The canon
An options model does not get to negotiate with financial mathematics. A canon of properties must hold: prices stay inside no-arbitrage bounds, parity ties calls to puts, more volatility never means a cheaper option. C Proof states each property as executable and routes it to the strongest evidence available. The C Note shows which hold under the stated assumptions, which break, and the input that witnesses each break.
A working canon for a vanilla options model. Each desk extends it with the properties its own models must satisfy.
| Property | What it says | Sketch |
|---|---|---|
| Non-negativity | No option is worth less than nothing. | price >= 0 |
| No-arbitrage bounds | A call stays between its intrinsic value and the underlying price. Outside those bounds there is free money. | max(spot - strike * df, 0) <= call <= spot |
| Put-call parity | Calls and puts at the same strike and tenor are locked together. The parity residual is zero. | call - put == spot - strike * discount_factor |
| Monotonicity in vol | Raising volatility never lowers the price of a vanilla option. | sigma_2 >= sigma_1 implies price(sigma_2) >= price(sigma_1) |
| Delta range | Call delta stays in [0, 1]; put delta stays in [-1, 0]. | 0 <= delta_call <= 1 |
| Vega and gamma signs | Vega and gamma are non-negative for vanilla options. | vega >= 0 and gamma >= 0 |
| Probability bounds | Terms that stand for probabilities stay in [0, 1]. | 0 <= n_d2 <= 1 |
holds SMT-proved
max(spot - strike, 0) >= 0 and max(strike - spot, 0) >= 0
The intrinsic-value kernels are non-negative. SMT-proved under declared domain assumptions.
holds SMT-proved, algebraic kernel
residual = call - put - (spot - strike * discount_factor)
Residual proved zero for the checked algebraic kernel. Through the closed-form price path it runs as labeled validation.
holds sampled, not proven
closed-form price with exp, log, sqrt, and normal CDF
Kept as property-based validation with explicit preconditions and sample count.
breaks 1 witness
C >= max(S - K * df, 0)
S 150.00 · K 50.00 · r 0.02 · sigma 0.15 · T 0.25 · model 100.2394 < bound 100.2494
From a worked example: a call priced deep in the money to exhibit a saturating CDF approximation. The desk reads the input that breaks the model, not a red build log.
Growth
The options desk is first. The same checked path extends to risk measurement, execution, treasury, clearing, and governance: each with its own canon of invariants the generated code must satisfy. The research page describes the category and the foundation underneath.
Next step