ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

GS Quant CDS估值实战:5步算出公允价差,附违约概率与回收率全解析

GS Quant CDS估值实战:5步算出公允价差,附违约概率与回收率全解析 GS Quant CDS估值实战5步算出公允价差附违约概率与回收率全解析【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant你在交易终端上看到 IBM 的 5 年期 CDS 报价一夜之间跳了 12bp第一反应不是涨了还是跌了而是我模型里的价差和它差多少。GS Quant 就是干这件事的工具包把参考实体、信用曲线、回收率喂给它拿回公允价差、违约概率和组合级风险。读完你能做三件事单只 CDS 定价与信用曲线提取多实体 CDS 组合的批量价差计算用 2008 年危机数据做历史回测和压力情景快速上手10 分钟跑通第一个 CDS 价差环境安装一条命令认证信息找你的管理员要参数名以官方文档为准pip install gs-quant --upgradeimport gs_quant as gs gs.init(api_keyYOUR_API_KEY, client_idYOUR_CLIENT_ID)然后整个最小定价链路就三行建合约、解析、算价差。from gs_quant.instrument import CDS cds_ibm CDS(IBM, 5y, 1_000_000) # 参考实体、期限、名义本金 cds_ibm.resolve() # 把合约挂到市场数据和定价引擎上 fair_spread cds_ibm.calc(cds_spread) # 初始价值为零时解出的公允价差 print(fair_spread)能打印出一个数字说明认证、合约、引擎整条链路都通了。合约里的回收率、付款方向等字段有默认值不确定就交给引擎用市场惯例补齐。底层逻辑公允价差到底在平衡什么先把 CDS 说人话它就是你给一笔别人欠参考实体的钱买的信用保险——你按季度付保费参考实体真出事卖家赔你损失的主体部分。保费报价就是 CDS 价差。风险中性框架下合约初始价值要为零等价于两条腿的现值相等保费腿现值 赔付腿现值保费腿把每个支付日的保费 $s \times \Delta t_i \times e^{-r(t_i) t_i} \times P(\tau t_i)$ 加总赔付腿对违约时刻在 $[0, T]$ 上积分权重是违约密度 $q(t)$$$ s \sum_{i1}^{n} \Delta t_i , e^{-r(t_i) t_i} , \mathbb{P}(\tau t_i)(1 - R) \int_0^T e^{-r(t) t} , q(t) , dt $$四个符号各自的角色参数角色典型范围价差如何动$Q(t)$ / $\mathbb{P}(\tau t)$累积违约概率 / 存活概率1%–30%违约概率越高保费腿分母缩水价差上行$q(t)$违约密度即违约概率的时间导数曲线斜率期限结构变陡长端价差抬升$R$回收率违约后拿回的比例30%–70%回收率越高赔付越轻价差下行$r(t)$无风险贴现曲线随利率环境贴现越强两腿现值同时压缩方向非线性注意方程里真正解出来的只有一个数价差 $s$。违约曲线、回收率都是输入公允价差是让两条腿打平的解。GS Quant 的定价引擎替你完成这个倒推calc(cds_spread)拿到的就是 $s$。一屏讲完往下看场景。场景 A ⚡单只 CDS 定价顺手把信用曲线提出来目标锁定一个估值日期同时拿回公允价差、违约概率和整条市场信用曲线。用PricingContext包住整段计算估值日期就不会随系统时钟漂移曲线部分换用市场报价接口cds_spread它直接按资产 ID 查 6m–5y 各期限的市场价差import datetime from gs_quant.markets import PricingContext from gs_quant.timeseries.measures import cds_spread pricing PricingContext(pricing_datedatetime.date(2023, 9, 15)) with pricing: spread cds_ibm.calc(cds_spread) dp_5y cds_ibm.calc(default_probability)# 曲线需要一个信用类 Asset 对象这里用参考实体对应的信用资产 curve cds_spread(credit_asset, 100, real_timeFalse) # 100/250/500 为曲线标签 print(curve.tail(10))输出解读spread是公允价差bpdp_5y是引擎从市场数据反推的 5 年违约概率curve是各期限市场报价——三者应该互相咬合对不上就该查输入。易踩的坑⚠️CDS第一个参数写的是参考实体名字它要和证券主系统Security Master里的登记名一致拼写差一个字符解析就会失败或解析到错误实体。拿不准名字先用SecurityMaster.load搜一下再填。场景 B ⚡多实体 CDS 组合的批量估值目标三只参考实体的 5 年期 CDS 放在一个Portfolio里一次算清全部价差。from gs_quant.markets.portfolio import Portfolio from gs_quant.instrument import CDS cds_list [ CDS(IBM, 5y, 10_000_000), CDS(Microsoft Corp, 5y, 10_000_000), CDS(Alphabet Inc, 5y, 10_000_000), ] portfolio Portfolio(cds_list) portfolio.resolve() with PricingContext(pricing_datedatetime.date(2023, 9, 15)): risk portfolio.calc(cds_spread) for inst, val in zip(portfolio.priceables, risk): print(inst, val)输出解读逐行是合约 公允价差。批量走引擎远快于循环单算因为解析和定价请求会被合并。易踩的坑⚠️resolve之前不要急着calc——未解析的合约缺少市场数据锚点算出来的价差要么报错要么是空值。场景 C ⚡2008 危机回测 自定义压力情景目标把时间拨回 2008 年 9 月对比危机时点与今日的信用曲线再算一次利差平行上移 200bp的组合损失。HistoricalPricingContext负责把市场数据回放到历史日期回放参数以官方文档为准from gs_quant.markets import HistoricalPricingContext with HistoricalPricingContext(start_date2008-09-15): crisis_curve cds_spread(credit_asset, 100) # 2008-09 的价差曲线 today_curve cds_spread(credit_asset, 100) # 当前市场曲线 print(crisis_curve, today_curve)输出解读两条曲线一对比危机时信用曲线整体抬升的幅度和形态变化直接可见——这就是压力情景最好的剧本来源。压力部分用credit_spread_delta近似它衡量价差每变 1bp合约价值的变化乘以上移幅度就是损失估计with PricingContext(pricing_datedatetime.date(2023, 9, 15)): delta [c.calc(credit_spread_delta) for c in cds_list] shift_bps 200 loss [d * shift_bps for d in delta] print(sum(loss))易踩的坑⚠️这个近似假设损失与利差线性、且忽略实体间相关性方向性参考没问题精确情景分析请走官方Scenario接口具体用法以官方文档为准。避坑与校验生产环境必做的 5 件事模型价差 vs 市场报价同一实体同一期限误差超过 5bp 就停。为什么重要这是发现输入错误最快的探针。曲线单调性检查长端价差不应系统性低于短端。为什么重要倒挂多半是曲线插值或数据源出了问题。回收率边界测试把回收率推到 40% 边界值重算验证价差变化方向符合预期。为什么重要回收率是估值里最软的假设。极限情形违约概率趋近 0 时合约应近似平价趋近 1 时应接近赔付全额。为什么重要边界行为错了中间的正常值也别信。每日价差异动告警设一个 30bp 的日变动阈值触发人工复核。为什么重要区分模型坏了和市场真变了只能靠人。下一步把你手上真实的信用组合塞进同一个Portfolio对象跑一遍回收率从 20% 到 60% 的全区间扫描看看你的组合对哪个假设最敏感。API 速查类/函数一句话功能CDS构造信用违约互换合约参考实体、期限、名义本金Portfolio.calc组合级批量计算风险度量Instrument.resolve把合约挂接市场数据与定价引擎PricingContext锁定估值日期控制计算上下文HistoricalPricingContext回放到历史日期的市场数据cds_spread按资产 ID 拉取市场 CDS 价差曲线【免费下载链接】gs-quantPython toolkit for quantitative finance项目地址: https://gitcode.com/GitHub_Trending/gs/gs-quant创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表