Interest Rate Swaps
Reference implFixed-float, OIS, and basis swaps on the Daml Finance V0 swap instrument. NY Fed SOFR fetcher ships in the box; ESTR, SONIA, and any other index plug in through one oracle seam, no Daml or TypeScript edits.
Interest-rate, credit, and cross-currency swaps that settle on the same ledger as the trade. Dealer-shaped screens your desk already knows, on Daml Finance, with the regulator and CSA wired in from day one.
The Gap
Broadridge DLR alone clears around $7.5 trillion of repo every month on Canton. Add tokenized treasuries, private credit, and the new wave of stablecoin issuance and the network sits on roughly $9 trillion of monthly settlement volume. None of it is hedged onchain.
Rates desks holding tokenized exposure today have one option: leave the ledger, hedge via CME or LCH, and accept settlement risk on the gap. When tokenized markets run 24/7 and cleared rates desks shut on weekends, the gap is the trade.
If your desk runs intraday repo on DLR, you are already on Canton. Today the hedge for that book leaves the chain.
The platform
Fixed-float, OIS, and basis swaps on the Daml Finance V0 swap instrument. NY Fed SOFR fetcher ships in the box; ESTR, SONIA, and any other index plug in through one oracle seam, no Daml or TypeScript edits.
Single-name CDS on the same lifecycle: ISDA-shaped premium and contingent legs, quarterly Act/360, payout = (1 − recovery) × notional, proposal-accept flow, regulator projection. The demo seeds credit as a flat scalar; a real feed plugs in through the same provider seam SOFR uses.
Fixed-float XCCY with notional exchange (initial and final) plus per-leg coupons in each leg’s own currency, on the same Daml Finance lifecycle and CSA infrastructure as IRS. USD/EUR ships in the demo with onchain FxSpot for reporting-currency translation; new pairs are a YAML edit.
Parity
The leg composer, cashflows, risk and scenario tabs, blotter, and CSA ladder match the SWPM and MARS workflow your traders already run. Built for the desktop the terminals were built for.
Pedigree
Since 2018, ISDA and Digital Asset have jointly developed an open-source reference library in Daml, including a working IRS and CDS lifecycle implementation under the ISDA Common Domain Model (source). IRSForge sits one layer above that. It consumes Daml Finance, Digital Asset's derivatives library that encodes the same ISDA conventions, and wires the lifecycle, oracle, and settlement chain around the templates as shipped. Nothing reimplemented.
"We don't reimplement Daml Finance interfaces. We use them."
Tour
Currency, notional, day-count, frequency, index. The leg composer covers what SWPM users expect, in ISDA-shaped form. Cashflows, valuation, and risk update live as you type.
Build from the composer or paste FpML straight from your booking system. Either way the trade lands as a Daml Finance instrument and waits for counterparty acceptance. Proposed, accepted, or rejected, all onchain.
Every counterparty pair tracks variation margin, posted collateral, threshold, and minimum transfer amount in a signed CSA contract. Calls fire when exposure drifts. The operator countersigns.
Key-rate DV01, bucketed sensitivities, theta. Inspect a position's exposure against a parallel rate shock, a curve shift, or a custom scenario. The same numbers a rates desk runs in MARS.
TriggerLifecycle posts the rate effects, Settle moves the cash. Two transactions, atomic per leg, the way ISDA describes IRS settlement. We don't claim atomicity we can't deliver.
Every swap-related contract carries the regulator party as observer. They get the full lifecycle and every cashflow. Counterparties never see across each other's books. Sub-transaction privacy is Canton's, not ours.
How it works
No T+1, no clearing window. Cashflows fire whenever the onchain scheduler runs, by default at every fixing date in your YAML schedule. Canton itself is 24/7. The cadence is yours to set.
Counterparties see their own positions. The regulator party is observer on every swap-related contract, with the full lifecycle and every cashflow visible to them and nobody else. Privacy is enforced by Canton, not bolted on.
Import trades straight from your booking system, export for SDR or downstream regulatory reporting. The same decoder runs through the live demo, so the round-trip is real, not promised.
The alternatives
| IRSForge | Fork Daml Finance | Build proprietary | Stay off-chain (CME/LCH) | |
|---|---|---|---|---|
| Time to deploy | YAML + OIDC | Months of integration | 6 to 12 months | N/A, already running |
| ISDA-shaped templates | Daml Finance V0 swap templates, FpML round-trip | Inherited from Daml Finance | Up to you | Yes (clearing house) |
| FpML 5.x round-trip | ✓ | Manual | Manual | Through clearer |
| 24/7 settlement | ✓ | ✓ | If you build it | ✗ closed weekends |
| Sub-transaction privacy | ✓ Canton | ✓ Canton | ✓ Canton | ✗ cleared, public |
| Open source | ✓ AGPL v3.0 | ✓ Apache 2.0 (Finance only) | ✗ | ✗ |
| Canton-native | ✓ out-of-box | Yes (you wire it) | Yes (you wire it) | ✗ off-ledger |
The buying committee
Trading champions. Risk approves. Operations evangelizes. Engineering implements. Compliance unblocks.
Heads of Trading
Your desk runs SWPM and MARS. IRSForge mirrors that workflow piece for piece, with the same leg composer, the same risk view, the same blotter. The change is the rail: coupons settle on Canton, weekends and all, on the same ledger your repo already lives on.
Heads of Risk
Every CSA pair is a signed contract on the ledger. Variation margin, threshold, and minimum transfer amount are observable, not implied. Settlement risk against off-chain hedges goes away because the hedge no longer leaves the chain. The regulator is wired in as observer, not as a quarterly report.
Heads of Operations
Trade economics, lifecycle events, cashflows, and collateral movements live on the same ledger. End-of-day reconciliation across two infrastructures collapses to one. Confirms are a contract state, not an email thread.
CTOs and Engineering Leads
AGPL on GitHub. Configure irsforge.yaml, point at your participant, deploy. No fork, no integration project, no committee. Built on Daml Finance interfaces as shipped, not reimplemented. Every extension point is a YAML edit plus a small adapter.
Compliance
Every swap-related contract lists the regulator as observer at creation. Read access is a Canton primitive, not a separate audit pipeline. Counterparties never see across each other's books, and the regulator sees everything. Sub-transaction privacy is Canton’s, not ours.
Deploy your own
Currencies, parties, rate families, scheduler. One file, single source of truth. Daml configs are regenerated from it.
Add auth.oidc for your IdP and keep auth.builtin for IRSForge-minted ledger JWTs.
make generate-daml-config && daml build && deploy the DAR to your participant. Done.
parties:
scheduler:
partyHint: Scheduler
# Phase 6 Stage B: scheduler service + manual-button gating.
# Demo profile keeps `manualOverridesEnabled: true` so a human can drive
# the demo end-to-end. Flip both `enabled` and `manualOverridesEnabled`
# for a production-ish profile (scheduler runs, manual buttons hidden).
scheduler:
enabled: true
manualOverridesEnabled: true
cron:
trigger: "*/5 * * * * *"
settleNet: "*/5 * * * * *"
mature: "*/30 * * * * *"
currencies:
- code: USD
label: US Dollar
calendarId: USD
isDefault: true
- code: EUR
label: Euro
calendarId: EUR
rateFamilies:
SOFR:
curveIndexId: SOFR/INDEX
overnightIndexId: SOFR/ON
tenors:
- { id: SOFR/ON, days: 1 }
- { id: SOFR/1M, days: 30 }
- { id: SOFR/3M, days: 91 }
- { id: SOFR/6M, days: 182 }
- { id: SOFR/1Y, days: 365 }
- { id: SOFR/2Y, days: 730 }
- { id: SOFR/3Y, days: 1095 }
- { id: SOFR/5Y, days: 1826 }
- { id: SOFR/10Y, days: 3652 }
A reference implementation owes you the shape and the seam. Each extension is a YAML edit plus a small adapter; the rest of the stack is unchanged.
auth.provider: oidc for your IdP; auth.builtin stays alongside to mint Canton ledger JWTs.
Implement Oracle.Interface.Provider in Daml + a TS class registered through bootstrap-registrations.ts. Same seam as NY Fed SOFR and the demo stub.
topology: network swaps single-sandbox for multi-participant Canton. Same DAR, same UI; per-participant party hosting and JWKS.
Edit currencies: / rateFamilies: / cds.referenceNames: in YAML, run make generate-daml-config. No Daml or TS edits.
Questions
It's a reference implementation. IRS/OIS/basis are wired end-to-end and tested. CDS templates and lifecycle are real; the pricing inputs run off a flat scalar stub (real credit feeds plug through the same OracleProvider seam used by SOFR). Cross-currency (fixed/float) ships end-to-end including multi-currency CSA mark publishing through the per-(ccy,indexId) curve book; vendor-price validation depth is integrator scope. ASSET-family lifecycle is gated until a price oracle is wired up. Rates desks running real flow should expect to harden the oracle and integrate their own KYC/AML/booking pipeline.
One YAML edit (`currencies:` or `rateFamilies:` in irsforge.yaml), then `make generate-daml-config`. No Daml or TypeScript changes needed.
Yes. `auth.provider: oidc` points at your IdP for user authentication; `auth.builtin` stays alongside it to mint Canton ledger JWTs (the layering is required because Canton speaks RS256 JWKS, not arbitrary IdP tokens). Schema-enforced. See the BYO Auth recipe in docs.
Yes — three steps and zero forks. (1) Implement the on-ledger `Oracle.Interface.Provider` in a new Daml template (mirror `NYFedProvider.daml`). (2) Add a TS class implementing `OracleProvider` and call `registerProvider` in `bootstrap-registrations.ts`. (3) Reference the provider id in `irsforge.yaml`. The stub provider and the NY Fed SOFR provider both ship through this same seam — see BYO Oracle recipe.
Yes. `topology: network` in irsforge.yaml swaps the single-sandbox topology for a multi-participant Canton deployment with per-participant party hosting. Documented in `docs-site/docs/operations/deploying-production.md`. The demo profile and the production profile run the same DAR.
Every swap-related contract includes the regulator party as observer. The regulator sees full lifecycle and cashflows on-ledger; counterparties don't see each other's positions. Sub-transaction privacy is enforced by Canton, not by IRSForge.
A standard participant node, the IRSForge DAR uploaded, and irsforge.yaml configured with your Canton party identifiers. That's it.
Atomic *per leg*, not across legs. TriggerLifecycle (rate effects) and Settle (cash) are separate transactions by design. Same as how ISDA describes IRS settlement. We don't claim what we don't deliver.
IRS and OIS are end-to-end in the demo. CDS books, prices, and lifecycles against a flat scalar stub (2% default probability, 40% recovery); a real credit feed plugs through the same OracleProvider seam used by SOFR. Cross-currency (fixed/float) books, prices, and marks against the multi-currency CurveBook + on-ledger FxSpot. The ledger model and lifecycle are real for all three families.
Not for serious use. The blotter, leg composer, and CSA ladder are dense desktop UIs designed for ≥1440px screens, like the Bloomberg/Reuters terminals they mirror. Mobile renders, but trade entry and the action panel assume desktop. A read-only mobile blotter view is on the roadmap.
AGPL v3.0. Use it, fork it, modify it. Ship modifications back if you run it as a service.