Implement SA-CCR credit asset-class add-on with rating-based supervisory factors - #352
Open
adaminoff wants to merge 1 commit into
Open
Implement SA-CCR credit asset-class add-on with rating-based supervisory factors#352adaminoff wants to merge 1 commit into
adaminoff wants to merge 1 commit into
Conversation
…ory factors
The Credit branch of SaccrCalculator's add-on aggregation and the credit
sub-asset-class classification in SaccrTradeData::Impl::getBucket were both
left as `// TODO`, so any credit trade (e.g. BondTRS/BondRepo) produced a
zero credit add-on and therefore did not contribute to EAD.
This implements the Basel CRE52 credit add-on:
* SaccrCalculator: aggregate reference-entity effective notionals within the
credit hedging set via the systematic/idiosyncratic decomposition
AddOn = sqrt( (sum_k rho_k SF_k EN_k)^2 + sum_k (1-rho_k^2)(SF_k EN_k)^2 )
with correlation rho = 0.50 (single name) / 0.80 (index). The supervisory
factor SF is keyed by the reference-entity rating via a CRE52.44 lookup
table (AAA/AA 0.38%, A 0.42%, BBB 0.54%, BB 1.06%, B 1.60%, CCC 6.00%;
Index-IG 0.38%, Index-SG 1.06%), with an investment-grade default.
* getBucket: derive the credit rating sub-asset class from the SIMM bucket
mapper (RiskType CreditQ) when a mapping is configured for the reference
entity, falling back to IG / Index-IG.
* SimmBucketMapperBase::fromXML: SA-CCR credit rating buckets are non-numeric
labels (e.g. "AA"); relax the positive-integer bucket validation so it
applies only to numeric SIMM buckets and accepts rating labels as-is.
Verified end-to-end on a BondTRS: the credit add-on now scales with the
reference-entity rating (AA -> 0.38%) and flows through to PFE and EAD.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Collaborator
|
thanks, we will review this, internal reference 14391 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The Credit branch of
SaccrCalculator's add-on aggregation and the credit sub-asset-class classification inSaccrTradeData::Impl::getBucketwere both left as// TODO. As a result, credit trades that SA-CCR does support at the trade-data level (e.g.BondTRS,BondRepo) produced a zero credit add-on, so the credit asset class never contributed to PFE/EAD.This PR implements the Basel CRE52 credit add-on.
Changes
SaccrCalculator(saccrcalculator.cpp/.hpp) — implement the credit hedging-set add-on via the systematic/idiosyncratic decomposition:with correlation ρ = 0.50 (single name) / 0.80 (index). The supervisory factor
SFis looked up by the reference-entity rating (newcreditQuality_map populated from the CRIF records) using a CRE52.44 table: AAA/AA 0.38%, A 0.42%, BBB 0.54%, BB 1.06%, B 1.60%, CCC 6.00%; Index-IG 0.38%, Index-SG 1.06%; investment-grade default.getBucket(saccrtradedata.cpp) — derive the credit rating sub-asset class from the SIMM bucket mapper (RiskType::CreditQ) when a mapping is configured for the reference-entity qualifier, falling back toIG/Index-IG.SimmBucketMapperBase::fromXML(simmbucketmapperbase.cpp) — SA-CCR credit rating buckets are non-numeric labels (e.g.AA), whereas SIMM buckets are positive integers. Relax the bucket validation so the>= 1integer check applies only to numeric buckets and rating labels are accepted as-is.Testing
Verified end-to-end on a
BondTRSreferencing a single-name reference entity. Before this change the netting set's credit add-on was 0; after it, the add-on is non-zero and scales with the reference-entity rating (e.g. anAAname uses SF 0.38%, giving a credit add-on ~0.70× the previous IG-flat 0.54% assumption), flowing through to PFE and EAD as expected.Notes
🤖 Generated with Claude Code