fuggers_py.credit¶
Public home for credit default swap (CDS) instruments, CDS quote records, CDS pricing, CDS risk, and bond-CDS relative value.
Use one-layer imports from fuggers_py.credit for credit objects and helpers.
from fuggers_py.credit import (
Cds,
CdsPricer,
CdsQuote,
ProtectionSide,
adjusted_cds_spread,
bond_cds_basis,
cds_cs01,
)
What This Package Owns¶
credit owns:
CDS instruments:
Cds,CreditDefaultSwap,CdsPremiumPeriod, andProtectionSide.CDS market records:
CdsQuoteandCdsReferenceData.CDS pricing:
CdsPricerandCdsPricingResult.CDS risk helpers:
risky_pv01,cds_cs01, andcs01.Bond-CDS relative value helpers:
adjusted_cds_spread,adjusted_cds_breakdown,bond_cds_basis,bond_cds_basis_breakdown,cds_adjusted_risk_free_rate, andproxy_risk_free_breakdown.Result records for the relative value helpers:
AdjustedCdsBreakdown,BondCdsBasisBreakdown, andRiskFreeProxyBreakdown.
Conventions¶
Rates and spreads are raw decimals.
0.0125means 1.25%, or 125 basis points.A basis point is
0.0001.Recovery rates are raw decimals.
0.40means 40%.CDS notionals, present values, premium legs, protection legs, risky PV01, and CS01 are currency-unit
Decimalvalues.upfrontfields are raw decimals of notional.0.02means 2% of notional.ProtectionSide.BUYmeans buying default protection.ProtectionSide.SELLmeans selling default protection.Cdsis exactly the same class asCreditDefaultSwap. UseCdsfor shorter code, orCreditDefaultSwapwhen the full name is clearer.cs01is exactly the same function ascds_cs01.
CDS Instruments¶
Cds and CreditDefaultSwap¶
CreditDefaultSwap represents one CDS contract. Use it when you need to build
premium payment dates, price a CDS, or calculate CDS spread risk.
Cds is an alias for CreditDefaultSwap.
The main inputs are:
effective_date: first accrual date.maturity_date: final accrual date. It must be aftereffective_date.running_spread: the quoted running spread as a raw decimal.notional: currency amount used to scale pricing results. It must be positive.protection_side: buy or sell protection.recovery_rate: expected recovered fraction after default. It must be in[0, 1).currency: payment currency.payment_frequency,day_count_convention,calendar,business_day_convention,end_of_month, andstub_rules: schedule rules.accrued_on_default_fraction: fraction of a coupon period accrued if default happens inside that period. It must be in[0, 1].upfront: upfront amount as a decimal of notional.settlement_date: stored on the instrument. The current CDS pricer does not use it; pricing valuation dates come from the curves.reference_entityandinstrument_id: optional labels used by callers.
Constructor behavior:
Decimal-like values are converted to
Decimal.protection_sideacceptsProtectionSidevalues or strings such as"buy","buy protection","sell", and"protection seller".currency,payment_frequency,day_count_convention,calendar, andbusiness_day_conventionaccept their normal objects or supported strings.reference_entityis stripped of surrounding spaces.instrument_idis parsed into anInstrumentId.A zero payment frequency is rejected.
Useful public property and methods:
kind: returns"credit.cds".schedule(): builds the payment schedule from the CDS dates and schedule rules.premium_periods(): returns oneCdsPremiumPeriodfor each premium accrual period.loss_given_default(): returns1 - recovery_rate.upfront_amount(): returnsnotional * upfront.
ProtectionSide¶
ProtectionSide stores the payoff direction.
ProtectionSide.BUYhas sign+1.ProtectionSide.SELLhas sign-1.parse(value)accepts supported strings and returns the enum value.sign()returnsDecimal(1)forBUYandDecimal(-1)forSELL.opposite()returns the other side.
Example:
from decimal import Decimal
from fuggers_py import Date, InstrumentId
from fuggers_py.credit import Cds, ProtectionSide
cds = Cds(
effective_date=Date.from_ymd(2026, 1, 15),
maturity_date=Date.from_ymd(2031, 1, 15),
running_spread=Decimal("0.0125"),
notional=Decimal("10000000"),
protection_side="buy protection",
recovery_rate="0.40",
currency="USD",
payment_frequency="quarterly",
day_count_convention="ACT/360",
business_day_convention="modified following",
upfront=Decimal("0.01"),
reference_entity=" ACME Corp ",
instrument_id=InstrumentId("ACME-CDS-5Y"),
)
assert cds.protection_side is ProtectionSide.BUY
assert cds.kind == "credit.cds"
assert cds.loss_given_default() == Decimal("0.60")
assert cds.upfront_amount() == Decimal("100000.00")
periods = cds.premium_periods()
first_period = periods[0]
print(first_period.start_date, first_period.end_date)
print(first_period.payment_date, first_period.year_fraction)
sell_side = cds.protection_side.opposite()
assert sell_side.sign() == Decimal("-1")
Quotes And Reference Data¶
CdsQuote¶
CdsQuote stores a market quote for one CDS. Use it when you need a clean quote
record with an instrument id, spread, upfront, recovery, tenor, source, and
optional bid/ask/mid values.
Fields:
instrument_id: parsed intoInstrumentId.par_spread: running spread as a raw decimal.upfront: upfront as a raw decimal of notional.recovery_rate: recovery as a raw decimal.tenor: stripped and uppercased when present.reference_entity: stripped when present.as_of,currency, andsource: quote metadata.bid,ask, andmid: side-specific quote values.
Constructor behavior:
Decimal-like quote fields are converted to
Decimal.If
midis missing and bothbidandaskare present,midbecomes their average.If
midis still missing, it falls back topar_spreadwhen present, then toupfront.
Useful public methods:
quoted_value(side="mid"): returnsbid,ask, ormid. The side can be a quote-side enum or the strings"bid","ask", or"mid".for_side(side): returns a copy withpar_spreadset to the chosen side. It returnsNoneif that side is unavailable.
CdsReferenceData¶
CdsReferenceData stores static reference information for a CDS. Use it for
descriptive data that changes rarely, such as reference entity, tenor,
seniority, restructuring clause, coupon, and recovery rate.
Constructor behavior:
instrument_idis parsed intoInstrumentId.reference_entityis stripped.tenor,seniority, andrestructuring_clauseare stripped and uppercased.couponandrecovery_rateare converted toDecimalwhen present.
Example:
from decimal import Decimal
from fuggers_py import Date, Currency
from fuggers_py.credit import CdsQuote, CdsReferenceData
quote = CdsQuote(
instrument_id="acme-cds-5y",
par_spread="0.0120",
recovery_rate="0.40",
tenor=" 5y ",
reference_entity=" ACME Corp ",
as_of=Date.from_ymd(2026, 1, 15),
currency=Currency.USD,
source=" dealer sheet ",
bid=Decimal("0.0115"),
ask=Decimal("0.0125"),
)
assert quote.tenor == "5Y"
assert quote.reference_entity == "ACME Corp"
assert quote.mid == Decimal("0.0120")
assert quote.quoted_value("ask") == Decimal("0.0125")
ask_quote = quote.for_side("ask")
assert ask_quote is not None
assert ask_quote.par_spread == Decimal("0.0125")
reference = CdsReferenceData(
instrument_id="acme-cds-5y",
reference_entity=" ACME Corp ",
tenor=" 5y ",
seniority=" snrfor ",
restructuring_clause=" xr ",
coupon="0.05",
recovery_rate="0.40",
)
assert reference.tenor == "5Y"
assert reference.seniority == "SNRFOR"
assert reference.coupon == Decimal("0.05")
Pricing And Risk¶
Curve Inputs¶
CdsPricer takes a CDS and a curve container. A curve container can be any
object with the attributes the pricer needs.
For discounting, the pricer looks in this order:
curves.multicurve_environment.discount_curve(cds.currency).curves.discount_curve.curves.collateral_curve.
The selected discount curve must expose:
reference_date: aDate.discount_factor_at(tenor): discount factor for a year-based tenor.spec.day_count: a day-count label such as"ACT/365F".
For credit risk, the pricer uses curves.credit_curve.
The credit curve must expose reference_date and one of these ways to get
survival probability:
survival_probability(date).survival_probability_at_tenor(tenor).value_typeplusvalue_at_tenor(tenor)orvalue_at(tenor), where the value type name ends inSURVIVAL_PROBABILITY,HAZARD_RATE, orCREDIT_SPREAD.
Survival probability means the chance the reference entity has not defaulted by
the given date. If the credit curve stores hazard rates, the pricer converts
the hazard rate into survival probability. If it stores credit spreads, the
pricer converts spread into hazard using spread / (1 - recovery_rate).
The valuation date is the later of the discount curve reference date and the credit curve reference date. Premium periods ending on or before that valuation date are skipped.
CdsPricer¶
CdsPricer prices a CDS from discount and credit curves.
Constructor inputs:
default_timing_fraction: where default is assumed to happen inside each premium period.0means period start,0.5means midpoint, and1means period end. It must be in[0, 1].cs01_bump: spread bump used bycs01(). The default is0.0001, one basis point.
Useful public methods:
risky_pv01(cds, curves): currency value of one full1.0running-spread unit. Multiply by0.0001to get one-basis-point spread value.accrued_on_default(cds, curves): expected accrued premium paid when default happens inside a period.protection_leg(cds, curves): expected default protection payment.premium_leg(cds, curves):cds.running_spread * risky_pv01.par_spread(cds, curves): spread that makes the premium leg match the protection leg.upfront(cds, curves):(protection_leg - premium_leg) / notional, returned as a raw decimal of notional.pv(cds, curves): signed present value after subtracting the CDS upfront amount.cs01(cds, curves): signed currency change for a one-basis-point spread move.price(cds, curves): returns all main outputs inCdsPricingResult.
CdsPricingResult¶
CdsPricingResult stores the output from CdsPricer.price().
Fields:
premium_leg: currency value of the running spread payments. It is not flipped by protection side.accrued_on_default: currency value of expected accrued premium on default. It is not flipped by protection side.protection_leg: currency value of expected protection payments. It is not flipped by protection side.par_spread: raw decimal spread.upfront: raw decimal of notional.present_value: signed byProtectionSide.risky_pv01: currency value of one full1.0running-spread unit. It is not flipped by protection side.cs01: signed byProtectionSide.
For the same CDS terms, selling protection flips present_value and cs01.
The leg values, par spread, upfront, and risky PV01 stay the same.
Risk Helpers¶
risky_pv01(cds, curves, pricer=None) calls CdsPricer.risky_pv01(). If no
pricer is passed, it creates a default CdsPricer.
cds_cs01(cds, curves, pricer=None) calls CdsPricer.cs01(). If no pricer is
passed, it creates a default CdsPricer.
cs01 is an alias for cds_cs01.
Example:
from dataclasses import dataclass
from decimal import Decimal
import math
from types import SimpleNamespace
from fuggers_py import Date
from fuggers_py.credit import Cds, CdsPricer, ProtectionSide, cds_cs01, risky_pv01
class FlatDiscountCurve:
def __init__(self, reference_date: Date, rate: Decimal) -> None:
self.reference_date = reference_date
self.rate = rate
self.spec = SimpleNamespace(day_count="ACT/365F")
def discount_factor_at(self, tenor: float) -> Decimal:
return Decimal(str(math.exp(-float(self.rate) * tenor)))
@dataclass(frozen=True, slots=True)
class FlatCreditCurve:
reference_date: Date
hazard_rate: Decimal
def survival_probability(self, date: Date) -> Decimal:
tenor = max(self.reference_date.days_between(date), 0) / 365.0
return Decimal(str(math.exp(-float(self.hazard_rate) * tenor)))
@dataclass(frozen=True, slots=True)
class CurveSet:
discount_curve: FlatDiscountCurve
credit_curve: FlatCreditCurve
valuation_date = Date.from_ymd(2026, 1, 15)
curves = CurveSet(
discount_curve=FlatDiscountCurve(valuation_date, Decimal("0.035")),
credit_curve=FlatCreditCurve(valuation_date, Decimal("0.020")),
)
buy_cds = Cds(
effective_date=valuation_date,
maturity_date=valuation_date.add_years(5),
running_spread=Decimal("0.0125"),
notional=Decimal("10000000"),
protection_side=ProtectionSide.BUY,
recovery_rate=Decimal("0.40"),
)
pricer = CdsPricer(default_timing_fraction=Decimal("0.5"))
result = pricer.price(buy_cds, curves)
par_spread_bps = result.par_spread * Decimal("10000")
cs01_value = cds_cs01(buy_cds, curves, pricer=pricer)
risky_annuity_value = risky_pv01(buy_cds, curves, pricer=pricer)
assert result.cs01 == cs01_value
assert result.risky_pv01 == risky_annuity_value
assert result.premium_leg == buy_cds.running_spread * result.risky_pv01
print(par_spread_bps)
print(result.present_value)
print(result.cs01)
Adjusted CDS Spread, Bond-CDS Basis, And Proxy Risk-Free Rate¶
These helpers use raw decimal rates and spreads. All inputs are converted to
Decimal.
adjusted_cds_spread and adjusted_cds_breakdown¶
adjusted_cds_spread() removes explicit adjustments from a quoted CDS spread:
adjusted spread = quoted spread - delivery option adjustment - FX adjustment - other adjustment
Use it when the quoted CDS spread includes items you want to strip out before comparing it with a bond spread.
adjusted_cds_breakdown() returns the same calculation in an
AdjustedCdsBreakdown record with:
quoted_spreaddelivery_option_adjustmentfx_adjustmentother_adjustmentadjusted_spread
bond_cds_basis and bond_cds_basis_breakdown¶
bond_cds_basis() compares a bond spread with an adjusted CDS spread:
basis = bond spread - adjusted CDS spread
A positive value means the bond spread is wider than the adjusted CDS spread. A negative value means the bond spread is tighter than the adjusted CDS spread.
bond_cds_basis_breakdown() returns the same calculation in a
BondCdsBasisBreakdown record with:
bond_spreadquoted_cds_spreadadjusted_cds_spreaddelivery_option_adjustmentfx_adjustmentother_cds_adjustmentbasis
cds_adjusted_risk_free_rate and proxy_risk_free_breakdown¶
cds_adjusted_risk_free_rate() starts with a bond yield, removes the adjusted
CDS spread, then removes explicit liquidity and funding adjustments:
proxy risk-free rate = bond yield - adjusted CDS spread - liquidity adjustment - funding adjustment
Use it when a bond yield includes credit spread and other listed adjustments, and you want a simple proxy for a risk-free rate.
proxy_risk_free_breakdown() returns the same calculation in a
RiskFreeProxyBreakdown record with:
bond_yieldquoted_cds_spreadadjusted_cds_spreadliquidity_adjustmentfunding_adjustmentproxy_risk_free_rate
Example:
from decimal import Decimal
from fuggers_py.credit import (
adjusted_cds_breakdown,
adjusted_cds_spread,
bond_cds_basis,
bond_cds_basis_breakdown,
cds_adjusted_risk_free_rate,
proxy_risk_free_breakdown,
)
adjusted = adjusted_cds_breakdown(
quoted_spread=Decimal("0.0320"),
delivery_option_adjustment=Decimal("0.0030"),
fx_adjustment=Decimal("0.0020"),
other_adjustment=Decimal("0.0010"),
)
assert adjusted.adjusted_spread == Decimal("0.0260")
assert adjusted_cds_spread(
quoted_spread=Decimal("0.0320"),
delivery_option_adjustment=Decimal("0.0030"),
fx_adjustment=Decimal("0.0020"),
other_adjustment=Decimal("0.0010"),
) == adjusted.adjusted_spread
basis = bond_cds_basis_breakdown(
bond_spread=Decimal("0.0180"),
cds_spread=Decimal("0.0150"),
delivery_option_adjustment=Decimal("0.0010"),
fx_adjustment=Decimal("0.0005"),
)
assert basis.adjusted_cds_spread == Decimal("0.0135")
assert basis.basis == Decimal("0.0045")
assert bond_cds_basis(
bond_spread=Decimal("0.0180"),
cds_spread=Decimal("0.0150"),
delivery_option_adjustment=Decimal("0.0010"),
fx_adjustment=Decimal("0.0005"),
) == basis.basis
proxy = proxy_risk_free_breakdown(
bond_yield=Decimal("0.0550"),
cds_spread=Decimal("0.0200"),
delivery_option_adjustment=Decimal("0.0020"),
fx_adjustment=Decimal("0.0010"),
liquidity_adjustment=Decimal("0.0005"),
funding_adjustment=Decimal("0.0003"),
)
assert proxy.adjusted_cds_spread == Decimal("0.0170")
assert proxy.proxy_risk_free_rate == Decimal("0.0372")
assert cds_adjusted_risk_free_rate(
bond_yield=Decimal("0.0550"),
cds_spread=Decimal("0.0200"),
delivery_option_adjustment=Decimal("0.0020"),
fx_adjustment=Decimal("0.0010"),
liquidity_adjustment=Decimal("0.0005"),
funding_adjustment=Decimal("0.0003"),
) == proxy.proxy_risk_free_rate
Export Reference¶
Export |
What it represents |
Main behavior |
|---|---|---|
|
Short name for |
Exact alias. |
|
One CDS contract. |
Builds schedules and premium periods; stores notional, spread, side, recovery, upfront, schedule rules, and labels. |
|
One premium accrual period. |
Stores accrual start, accrual end, payment date, and year fraction. |
|
Buy or sell protection direction. |
Parses aliases, returns pricing sign, and returns the opposite side. |
|
Market quote for one CDS. |
Normalizes quote fields and can return bid, ask, or mid values. |
|
Static CDS reference record. |
Normalizes reference entity, tenor, seniority, restructuring clause, coupon, and recovery. |
|
CDS pricing calculator. |
Resolves discount and credit curves, computes legs, par spread, upfront, PV, risky PV01, and CS01. |
|
CDS pricing output. |
Stores legs, par spread, upfront, signed PV, risky PV01, and signed CS01. |
|
Convenience risk helper. |
Calls |
|
Convenience CS01 helper. |
Calls |
|
Short name for |
Exact alias. |
|
Adjusted CDS spread helper. |
Returns quoted spread minus delivery, FX, and other adjustments. |
|
Adjusted CDS spread with detail. |
Returns |
|
Adjusted CDS spread output. |
Stores quoted spread, adjustments, and adjusted spread. |
|
Bond spread versus adjusted CDS spread. |
Returns |
|
Bond-CDS basis with detail. |
Returns |
|
Bond-CDS basis output. |
Stores bond spread, quoted CDS spread, adjusted CDS spread, adjustments, and basis. |
|
CDS-adjusted proxy risk-free rate. |
Returns bond yield minus adjusted CDS spread, liquidity adjustment, and funding adjustment. |
|
Proxy risk-free rate with detail. |
Returns |
|
Proxy risk-free rate output. |
Stores bond yield, CDS spreads, liquidity adjustment, funding adjustment, and proxy rate. |
Boundaries¶
Bond instruments, bond spreads, and bond pricing live in
fuggers_py.bonds.Curve objects live in
fuggers_py.curves.Portfolio credit-quality aggregation lives in
fuggers_py.portfolio.
First-layer public facade for credit-domain objects.
- class fuggers_py.credit.AdjustedCdsBreakdown(quoted_spread, delivery_option_adjustment, fx_adjustment, other_adjustment, adjusted_spread)¶
- Parameters:
quoted_spread (Decimal)
delivery_option_adjustment (Decimal)
fx_adjustment (Decimal)
other_adjustment (Decimal)
adjusted_spread (Decimal)
- class fuggers_py.credit.BondCdsBasisBreakdown(bond_spread, quoted_cds_spread, adjusted_cds_spread, delivery_option_adjustment, fx_adjustment, other_cds_adjustment, basis)¶
- Parameters:
bond_spread (Decimal)
quoted_cds_spread (Decimal)
adjusted_cds_spread (Decimal)
delivery_option_adjustment (Decimal)
fx_adjustment (Decimal)
other_cds_adjustment (Decimal)
basis (Decimal)
- fuggers_py.credit.Cds¶
alias of
CreditDefaultSwap
- class fuggers_py.credit.CdsPremiumPeriod(start_date, end_date, payment_date, year_fraction)¶
- Parameters:
start_date (Date)
end_date (Date)
payment_date (Date)
year_fraction (Decimal)
- class fuggers_py.credit.CdsPricer(default_timing_fraction=Decimal('0.5'), cs01_bump=Decimal('0.0001'))¶
- Parameters:
default_timing_fraction (Decimal)
cs01_bump (Decimal)
- class fuggers_py.credit.CdsPricingResult(premium_leg, accrued_on_default, protection_leg, par_spread, upfront, present_value, risky_pv01, cs01)¶
- Parameters:
premium_leg (Decimal)
accrued_on_default (Decimal)
protection_leg (Decimal)
par_spread (Decimal)
upfront (Decimal)
present_value (Decimal)
risky_pv01 (Decimal)
cs01 (Decimal)
- class fuggers_py.credit.CdsQuote(instrument_id, par_spread=None, upfront=None, recovery_rate=None, tenor=None, reference_entity=None, as_of=None, currency=None, source=None, bid=None, ask=None, mid=None)¶
CDS quote record with raw decimal spread and recovery fields.
- Parameters:
instrument_id (InstrumentId)
par_spread (Decimal | None)
upfront (Decimal | None)
recovery_rate (Decimal | None)
tenor (str | None)
reference_entity (str | None)
as_of (Date | None)
currency (Currency | None)
source (str | None)
bid (Decimal | None)
ask (Decimal | None)
mid (Decimal | None)
- quoted_value(side=QuoteSide.MID)¶
Return the side-specific CDS spread when present.
- Return type:
Decimal|None- Parameters:
side (QuoteSide)
- for_side(side)¶
Return a copy normalized to a different quote side.
- Return type:
CdsQuote’ | None
- Parameters:
side (QuoteSide)
- class fuggers_py.credit.CdsReferenceData(instrument_id, reference_entity, currency=Currency.<bound method Currency.name of <Currency.USD: 'USD'>>, tenor=None, seniority=None, restructuring_clause=None, coupon=None, recovery_rate=None)¶
CDS reference record with raw decimal coupon and recovery fields.
- Parameters:
instrument_id (InstrumentId)
reference_entity (str)
currency (Currency)
tenor (str | None)
seniority (str | None)
restructuring_clause (str | None)
coupon (Decimal | None)
recovery_rate (Decimal | None)
- class fuggers_py.credit.CreditDefaultSwap(effective_date, maturity_date, running_spread, notional=Decimal('1000000'), protection_side=ProtectionSide.BUY, recovery_rate=Decimal('0.4'), currency=Currency.<bound method Currency.name of <Currency.USD: 'USD'>>, payment_frequency=Frequency.QUARTERLY, day_count_convention=DayCountConvention.<bound method DayCountConvention.name of <DayCountConvention.ACT_360: 'ACT_360'>>, calendar=<factory>, business_day_convention=BusinessDayConvention.MODIFIED_FOLLOWING, end_of_month=True, stub_rules=<factory>, accrued_on_default_fraction=Decimal('0.5'), upfront=Decimal('0'), settlement_date=None, reference_entity=None, instrument_id=None)¶
- Parameters:
effective_date (Date)
maturity_date (Date)
running_spread (Decimal)
notional (Decimal)
protection_side (ProtectionSide | str)
recovery_rate (Decimal)
currency (Currency | str)
payment_frequency (Frequency | str)
day_count_convention (DayCountConvention | str)
calendar (CalendarId | str)
business_day_convention (BusinessDayConvention | str)
end_of_month (bool)
stub_rules (object)
accrued_on_default_fraction (Decimal)
upfront (Decimal)
settlement_date (Date | None)
reference_entity (str | None)
instrument_id (InstrumentId | None)
- class fuggers_py.credit.ProtectionSide(value)¶
- class fuggers_py.credit.RiskFreeProxyBreakdown(bond_yield, quoted_cds_spread, adjusted_cds_spread, liquidity_adjustment, funding_adjustment, proxy_risk_free_rate)¶
- Parameters:
bond_yield (Decimal)
quoted_cds_spread (Decimal)
adjusted_cds_spread (Decimal)
liquidity_adjustment (Decimal)
funding_adjustment (Decimal)
proxy_risk_free_rate (Decimal)
- fuggers_py.credit.cds_cs01(cds, curves, *, pricer=None)¶
Return the signed one-basis-point CDS spread sensitivity.
- Return type:
Decimal- Parameters:
cds (CreditDefaultSwap)
curves (object)
pricer (CdsPricer | None)
- fuggers_py.credit.cs01(cds, curves, *, pricer=None)¶
Return the signed one-basis-point CDS spread sensitivity.
- Return type:
Decimal- Parameters:
cds (CreditDefaultSwap)
curves (object)
pricer (CdsPricer | None)
- fuggers_py.credit.risky_pv01(cds, curves, *, pricer=None)¶
Return the CDS risky PV01 from the credit and discount curves.
- Return type:
Decimal- Parameters:
cds (CreditDefaultSwap)
curves (object)
pricer (CdsPricer | None)