Skip to content

[D7][itofin-py] PyBachelierSwaptionEngine (normal-vol Black-style engine binding) (#605 follow-up) #616

Description

@benbenbang

Expose the Bachelier (normal) swaption engine in Python

Deferred from binding pass A1 (#612), where the shifted-lognormal PyBlackSwaptionEngine landed
(crates/itofin-py/src/swaptionengine.rs). The core BachelierSwaptionEngine =
BlackStyleSwaptionEngine<BachelierSpec> (blackswaptionengine.rs:272) is already ported; this is
the thin concrete facade (generics do not cross FFI, D7), mirroring PyBlackSwaptionEngine's
new / with_flat_vol shape.

Already in place on the Python side: VolatilityType.Normal on PyConstantSwaptionVolatility
(A1), and the A1 oracle pins that a Normal surface on the Black engine errors at pricing time -
the mirror arm (a ShiftedLognormal surface on the Bachelier engine errors) belongs here.

Oracle: the wrapped Rust numbers - the core blackswaptionengine.rs Bachelier test arm
(BachelierSwaptionEngine::with_flat_vol at ~:1600) repriced through Python at 1e-10, plus the
vol-type mismatch arm.

Sequencing: independent of core #586 (Normal/shifted SABR) - the engine only needs a Normal
CONSTANT surface, which is already exposed. Size: S. Epic: D7 #46 (#605 follow-ups).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions