Create saccr Object and Compute Regulatory Values for Forward FX Swap
This example shows how to create a saccr object for a trade involving a EUR/GBP forward FX swap with trade decomposition 1b (multiple components). The forward FX swap trade, TR002 in Portfolio 2, uses the Standardized Approach for Counterparty Credit Risk (SA-CCR) framework and has no netting sets, no collateral sets, or no collateral positions.
Define Data
Define the foreign exchange (FX) spot currency exchange rate table.
format("default"); Base = ["EUR";"GBP";"GBP"]; Quote = ["USD";"USD";"EUR"]; SpotRate = [1.0543;1.2195;1.1567]; FXSpotTable = table(Base,Quote,SpotRate)
FXSpotTable=3×3 table
Base Quote SpotRate
_____ _____ ________
"EUR" "USD" 1.0543
"GBP" "USD" 1.2195
"GBP" "EUR" 1.1567
Define the SA-CCR CRIF file name.
SACCRCRIF = "SACCR_CRIF_FX.csv";Create saccr Object
Construct the saccr object from SACCRCRIF.
mySACCR = saccr(SACCRCRIF, DomesticCurrency="USD", FXSpot=FXSpotTable)mySACCR =
saccr with properties:
CRIF: [3×19 table]
NumPortfolios: 1
PortfolioIDs: "Port_002"
CounterpartyIDs: ""
Portfolios: [1×1 saccr.Portfolio]
Regulation: "Basel_CRE52"
DomesticCurrency: "USD"
Alpha: 1.4000
FXSpotRates: [3×3 table]
TradeDecompositions: [5×2 table]
CollateralHaircuts: [200×6 table]
SupervisoryParameters: [19×7 table]
MaturityBusinessDaysFloor: 10
NumBusinessDaysYear: 250
Display the contents of the SA-CCR CRIF file.
mySACCR.CRIF
ans=3×19 table
PortfolioID TradeID CounterpartyName CounterpartyID NettingSetNumber RiskType Category Qualifier Bucket Label1 Label2 Amount AmountCurrency AmountUSD Regulation Model ValuationDate EndDate Label3
___________ __________ ________________ ______________ ________________ ________ _________ _________ _________ _________ _________ ______ ______________ __________ ________________ ________ _____________ _______ ______
"Port_002" "Tr002_01" <missing> <missing> <missing> "FX" "EURGBP" "EURGBP" <missing> "0.5" "0.5" 1e+06 "EUR" 1.0543e+06 "Basel (CRE 52)" "SA-CCR" 2023-10-16 0.5 -1
"Port_002" "Tr002_02" <missing> <missing> <missing> "FX" "EURGBP" "EURGBP" <missing> "0.5" "1" 1e+06 "EUR" 1.0543e+06 "Basel (CRE 52)" "SA-CCR" 2023-10-16 1 1
"Port_002" "Tr002" <missing> <missing> <missing> "PV" <missing> <missing> <missing> <missing> <missing> 1702.2 "GBP" 2075.9 "Basel (CRE 52)" "SA-CCR" 2023-10-16 NaN NaN
Display Portfolio
Display the Portfolios object for Port_002.
mySACCR.Portfolios
ans =
Portfolio with properties:
ID: "Port_002"
CounterpartyID: ""
Trades: [1×1 saccr.Trade]
NettingSets: [0×1 saccr.NettingSet]
AssetClasses: "FX"
HedgingSets: "EURGBP"
Display Trades
Display the Trades object for Tr002.
mySACCR.Portfolios.Trades
ans =
Trade with properties:
ID: "Tr002"
NettingSetID: "Missing_NettingSet_Port_002_Tr002"
CollateralSetID: ""
AssetClass: "FX"
SubClass: <missing>
HedgingSet: [2×1 string]
Qualifier: [2×1 string]
AdjustedNotional: [2×1 double]
AdjustedNotionalCurrency: [2×1 string]
AdjustedNotionalUSD: [2×1 double]
PV: 1.7022e+03
PVCurrency: "GBP"
PVUSD: 2.0759e+03
StartTime: [2×1 double]
EndTime: [2×1 double]
MaturityTime: [2×1 double]
SupervisoryDelta: [2×1 double]
InputVariant: "1b"
SoldOption: 0
MaturityFactorUncollateralized: [2×1 double]
MaturityFactorCollateralized: [2×1 double]
MaturityBucket: [0×1 string]
Compute Replacement Cost
Compute replacement cost (RC) component results using rc.
RCResults = rc(mySACCR)
RCResults =
RCResults with properties:
NumPortfolios: 1
PortfolioIDs: "Port_002"
CounterpartyIDs: ""
Regulation: "Basel_CRE52"
DomesticCurrency: "USD"
RCUncollateralized: 2.0759e+03
RCCollateralized: NaN
Compute Add-On Component
Compute add-on component results using addOn.
AddOnResults = addOn(mySACCR)
AddOnResults =
AddOnResults with properties:
NumPortfolios: 1
PortfolioIDs: "Port_002"
CounterpartyIDs: ""
Regulation: "Basel_CRE52"
DomesticCurrency: "USD"
AddOnAggregateUncollateralized: 7.1992e+04
AddOnAggregateCollateralized: NaN
AddOnAssetClassesUncollateralized: [1×1 saccr.AddOnAssetClassResults]
AddOnAssetClassesCollateralized: [1×1 saccr.AddOnAssetClassResults]
Compute PFE
Compute potential future exposure (PFE) component results using pfe.
PFEResults = pfe(mySACCR)
PFEResults =
PFEResults with properties:
NumPortfolios: 1
PortfolioIDs: "Port_002"
CounterpartyIDs: ""
Regulation: "Basel_CRE52"
DomesticCurrency: "USD"
PFEUncollateralized: 7.1992e+04
PFECollateralized: NaN
MultiplierUncollateralized: 1
MultiplierCollateralized: NaN
AddOnResults: [1×1 saccr.AddOnResults]
Compute EAD and Display Results
Compute exposure at default (EAD) results using ead and show the results table.
EADResults = ead(mySACCR)
EADResults =
EADResults with properties:
NumPortfolios: 1
PortfolioIDs: "Port_002"
CounterpartyIDs: ""
Regulation: "Basel_CRE52"
DomesticCurrency: "USD"
EAD: 1.0370e+05
Alpha: 1.4000
RC: 2.0759e+03
PFE: 7.1992e+04
Multiplier: 1
AddOnAggregate: 7.1992e+04
RCResults: [1×1 saccr.RCResults]
PFEResults: [1×1 saccr.PFEResults]
ResultsTable: [1×17 table]
EADResults.ResultsTable
ans=1×17 table
PortfolioIDs CounterpartyIDs Regulation DomesticCurrency EAD Alpha RC PFE Multiplier AddOnAggregate AddOnIR AddOnFX AddOnCR AddOnEQ AddOnCO Collateralized UsedCollateral
____________ _______________ _____________ ________________ _________ _____ ______ _____ __________ ______________ _______ _______ _______ _______ _______ ______________ ______________
"Port_002" "" "Basel_CRE52" "USD" 1.037e+05 1.4 2075.9 71992 1 71992 0 71992 0 0 0 false false
See Also
rc | addOn | pfe | ead | addOnChart | eadChart | pfeChart | rcChart | frtbsa
Topics
- Framework for Standardized Approach to Calculating Counterparty Credit Risk: Introduction
- Create saccr Object and Compute Regulatory Values for Interest-Rate Swap
- Create saccr Object and Compute Regulatory Values for Two CDS Trades
- Create saccr Object and Compute Regulatory Values for Multiple Asset Classes
- Create saccr Object and Compute Regulatory Values for Multiple Asset Classes with Netting Set
- Create saccr Object and Compute Regulatory Values for Multiple Asset Classes with Netting Set and Collateral Set
- Create saccr Object and Compute Regulatory Values for Multiple Asset Classes with Netting Set, Collateral Set, and Collateral Positions
- Create saccr Object and Compute Regulatory Values for Multiple Portfolios Containing Multiple Asset Classes
- SA-CCR Transactional Elements
- ISDA SA-CCR CRIF File Specifications