Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Construct the FD-01 state-price system from positive risk-neutral weights

Definition
fd02_toFD01PriceSystem

by WillR · Oct 26, 2026 · Mathlib 0df444a (Lean v4.33.1)

arbitrageformal-verificationoption-pricing

Given a two-state market and proof that its unique up weight q lies strictly between zero and one, construct an FD-01 FinitePriceSystem on Bool with positive Arrow-state prices q/R and (1-q)/R and discount factor 1/R. No-arbitrage implies the required two inequalities through separate theorems T12 and T13. The constructor itself does not assume that the derivative price is correct.

Definition code
import Mathlib.Data.Real.Basic
import Mathlib.Data.Fintype.BigOperators
import Mathlib.Tactic.Ring
import Definitions.Def_fd01_FinitePriceSystem
import Definitions.Def_fd02_TwoStateMarket
import Definitions.Def_fd02_riskNeutralUp

namespace FinancialDerivatives.FD02

/-- Positive two-state martingale weights construct the FD-01 price system. -/
noncomputable def toFD01PriceSystem (m : TwoStateMarket)
    (hq0 : 0 < riskNeutralUp m) (hq1 : riskNeutralUp m < 1) :
    FinancialDerivatives.FD01.FinitePriceSystem Bool where
  statePrice := fun ω => match ω with
    | true => riskNeutralUp m / m.growth
    | false => (1 - riskNeutralUp m) / m.growth
  statePrice_nonneg := by
    intro ω
    cases ω with
    | false =>
        exact div_nonneg (sub_nonneg.mpr (le_of_lt hq1)) (le_of_lt m.growth_pos)
    | true =>
        exact div_nonneg (le_of_lt hq0) (le_of_lt m.growth_pos)
  discount := 1 / m.growth
  discount_pos := div_pos zero_lt_one m.growth_pos
  statePrice_sum := by
    simp only [Fintype.sum_bool]
    ring

end FinancialDerivatives.FD02
Source
Original derived construction from Wilmott, Howison and Dewynne (1995), §10.1–10.2, printed pp. 182–184, equations (10.2), (10.4) and (10.8). https://doi.org/10.1017/CBO9780511812545.
Read-back

What the Lean code literally says, in plain math · GPT-6

For any market with real spot S>0S>0S>0, bank growth R>0R>0R>0, and stock factors 0≤D<U0\le D<U0≤D<U and q=(R−D)/(U−D)q=(R-D)/(U-D)q=(R−D)/(U−D), if additionally 0<q0<q0<q and q<1q<1q<1, the defined construction gives a finite state-price system on the two Boolean states with state price q/Rq/Rq/R for true and (1−q)/R(1-q)/R(1−q)/R for false, and discount factor 1/R1/R1/R. These state prices are nonnegative (indeed positive), the discount factor is positive, and the sum of the two state prices equals 1/R1/R1/R; the returned object includes proofs of those conditions.

Human review
  • Endorsed by Shuze Chen · Oct 27, 2026

    Confirmed by the moderator at approval.

  • Endorsed by WillR · Oct 27, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me