rateslib 2.0.0:STIRFuture因SOFR周末定盘缺失抛错,如何设置仅工作日计息?
解决rateslib 2.0.0中SOFR曲线校准的周末定盘数据问题
问题根源
rateslib默认会校验计息期内的所有日历日,但SOFR作为仅在工作日发布的隔夜利率,周末并无新定盘价,应自动沿用前一个工作日(周五)的利率值,而非要求手动补充数据。你遇到的警告和错误,本质是工具未正确识别SOFR的工作日计息规则。
具体解决方法
绑定工作日日历到定盘序列
在创建SOFR定盘数据时,明确关联USD的官方工作日日历(如USNY,纽约联储日历),让rateslib自动过滤非工作日,不再要求这些日期的定盘数据:from rateslib import USNY, Fixings # 加载你的工作日定盘数据(仅含周一至周五) sofr_fixings = Fixings( index="SOFR", dates=your_fixing_dates, rates=your_fixing_rates, calendar=USNY() # 关键:绑定工作日日历 )配置SOFR指数的计息规则
确保你使用的SOFR指数规格已启用工作日计息模式,正确设置日计数规则和日历约束:from rateslib import Index, DayBasis sofr_index = Index( name="SOFR", calendar=USNY(), day_basis=DayBasis.Act360, # SOFR采用实际/360日计数 business_days_only=True # 强制仅在工作日计息 )自动填充非工作日定盘数据
利用rateslib的fill_missing方法,让工具自动用前一个工作日的定盘价填充周末等非工作日的缺失值,无需手动添加不符合SOFR规则的数据:sofr_fixings.fill_missing( calendar=USNY(), method="forward_fill" # 沿用前值填充 )校验STIR期货的计息期配置
确认你的usd_stir和usd_stir1期货合约的计息期已关联工作日日历,避免将周末纳入有效计息区间:from rateslib import STIRFuture stir_future = STIRFuture( spec="usd_stir", start_date="2025-06-01", end_date="2025-07-01", index=sofr_index, # 关联已配置好的SOFR指数 calendar=USNY() )
补充说明
添加周末定盘数据虽然能暂时消除错误,但违反了SOFR的实际规则——SOFR周末不交易,也没有新的定盘价,正确的做法是通过上述配置让工具自动处理非工作日的利率延续逻辑。
内容的提问来源于stack exchange,提问作者leo52353
相关产品推荐
相关产品推荐

