
Lean 期货保证金数据更新指南基于 CME Performance Bond-Margins 通知维护初始与维持保证金【免费下载链接】LeanLean Algorithmic Trading Engine by QuantConnect (Python, C#)项目地址: https://gitcode.com/GitHub_Trending/le/Lean导读本指南面向 QuantConnect Lean 算法交易引擎的用户与数据维护者系统讲解如何为 CBOT、CME、NYMEX、COMEX 等交易所的期货合约更新初始保证金Initial Margin与维持保证金Maintenance Margin数据文件。文章以 Lean 仓库中的 Data/future/cbot/margins/readme.md 为主线完整覆盖从 CME 官网检索保证金变更通知、从 PDF / Excel 两种咨询书Advisory中提取数值、再到写入 Lean 保证金 CSV 文件的全部操作流程同时结合 FutureMarginModel.cs 与 MarginRequirementsEntry.cs 的源码实现说明这些数据文件在引擎内部如何被解析、缓存并作用于保证金计算。读完本文你将能够独立完成任意 CME 集团旗下期货合约的保证金历史数据回填与维护。为什么需要手动维护保证金数据文件期货属于杠杆化保证金产品其保证金水平由交易所如 CME 集团根据市场波动动态调整。Lean 引擎在回测与实盘中需要“按日期生效”的保证金历史数据以正确计算持仓的初始保证金开仓所需与维持保证金持仓期间所需。这些数据并非固定不变而是随交易所公告定期更新因此仓库以 CSV 文件形式按合约存储保证金变更历史。以本仓库为例CBOT 的保证金文件位于 Data/future/cbot/margins/其中 10Y.csv 内容为date,initial,maintenance 20210816,193,175 20211130,220,200 20220204,264,240每一行代表一次保证金调整date为生效日期initial为该合约的初始保证金maintenance为维持保证金。文件按时间升序排列引擎在回测推进时会自动选择“当前日期之前最近一次调整”的数值作为生效保证金。适用范围说明本文教程仅覆盖2008 年起的保证金数据采集。若你的回测起点早于 2008需要额外的历史数据源。第一步在 CME 官网定位保证金公告公告分类入口CME 在其官网发布包含初始与维持保证金的公告Advisory入口分类路径为Clearing - Performance Bond-Margins官方对这些保证金的定义与计算方式可参考其 Performance Bonds/Margins 常见问题说明。从源码视角看Lean 中的保证金模型区分为初始保证金Initial与维持保证金Maintenance两类并进一步按隔夜Overnight与盘中Intraday维度细分见下文源码解析与交易所公告口径一一对应。使用 Notices 检索页面访问 CME 的 NoticesAdvisory Search页面并将起始日期设置为你的数据起始日期前几个月若回测从 2008 年开始就从 2008 年初附近开始翻查若目标合约是新产品新挂牌合约则设置为合约挂牌日期前几个月。按品种类别搜索加速Notices 页面支持按公告类别检索。CME 的保证金变更公告按商品类别归类例如Natural Gas天然气Refined Products成品油Agriculture农产品Coal煤炭Interest Rates利率因此直接搜索合约品种名如Crude比逐条翻阅全部公告快得多。提示如果搜索不到覆盖到当前年份的结果可尝试更宽泛的查询词例如将Crude放宽为Energy若仍然无结果则放弃查询词逐条浏览公告人工核对目标合约的代码ticker。锁定目标公告类型在搜索结果中你需要寻找名为Performance Bond Requirement Changes的通知。打开通知后务必记录Effective Date生效日期——这正是要写入保证金 CSV 文件的date字段。公告正文中点击 For the full text of this advisory, please click here. 即可查看完整内容与保证金明细。CME 提供两种格式的公告PDF格式Excel格式两种格式的取值方法不同分别见下文。第二步通过 PDF 公告填写保证金文件PDF 公告的术语约定在阅读 PDF 公告前先明确 CME 的几条约定术语含义Summer夏季月份为April - October4 月至 10 月Winter冬季月份为November - March11 月至次年 3 月Front Month近月合约距离到期最近的合约Mth 1/Mnth 1/Month 1近月合约数字每递增 1表示紧随近月的下一个月份合约这些术语决定了你应从公告表格的哪一行取值——通常以近月Month 1的保证金为准。PDF 取值步骤在 PDF 公告中定位目标合约时按下述流程逐项核对若任何一步校验失败不满足条件则跳过该公告继续查阅下一份按合约代码搜索在公告中查找用括号包裹的合约代码例如(CL)确认合约类型为 Outrights单腿直接交易而非价差Spread等组合确认该合约不属于其他合约的一部分例如Crude Oil (CL) vs. WTI Houston (Argus) Financial (HIA)这类跨合约条目不适用于CL合约本身确认合约数据中至少存在一条Spec投机条目注意Spec在部分公告中写作Speculation找到描述中包含Month 1的条目将公告中的新初始保证金new initial margin填入 CSV 的initial列将公告中的新维持保证金new maintenance margin填入 CSV 的maintenance列。填写示例以CLNYMEX 原油期货为例仓库中 Data/future/nymex/margins/CL.csv 记录了自 2009 年以来的历次调整例如date,initial,maintenance 20090112,7425,6750 20090302,5775,5250 ... 20200312,5115,4650 20200320,6160,5600 20200417,8250,7500 20200424,11000,10000 20200513,13200,12000 20211130,6435,5850 20220120,6765,6150 20220207,7480,6800注意 2020 年 3 月至 5 月期间保证金随油价剧烈波动被密集上调从 5115 一路上调至 13200这正是市场波动驱动交易所调整保证金的典型案例也印证了手动维护此类历史文件的必要性。第三步通过 Excel 公告填写保证金文件前置条件使用 Excel 格式公告需要以下工具之一Microsoft ExcelLibreOfficeGoogle SheetsExcel 取值步骤同样地若任何一步校验失败则跳过该公告记录初始保证金比例查找公告中提到initial margin的文本通常为110%即初始保证金 维持保证金 × 110%在Table of Contents目录工作表中搜索目标合约在Product Code列中查找合约代码记录该产品代码对应的Combined Commodity值记录该产品的Scaling Factor缩放因子切换到Outright工作表若工作簿中没有Outright标签页则跳过此公告继续下一份在Outright工作表中找到第一条Combined Commodity与步骤 3 记录值匹配的条目计算维持保证金将New Margin乘以Scaling Factor结果填入 CSV 的maintenance列计算初始保证金将New Margin乘以Scaling Factor再乘以步骤 1 记录的Initial Margin百分比结果填入 CSV 的initial列。计算公式小结CSV 列Excel 公告取值公式maintenanceNew Margin × Scaling FactorinitialNew Margin × Scaling Factor × Initial Margin 百分比第四步文件格式与存放位置引擎如何读取CSV 格式规范Lean 的保证金文件为简单 CSV规则如下第一行为表头date,initial,maintenance可选扩展为date,initial,maintenance,initialIntraday,maintenanceIntradaydate使用yyyyMMdd八位日期格式以#开头的行被视为注释行会被忽略按日期升序排列。文件存放路径从 FutureMarginModel.cs 的FromCsvFile方法L255-L288可以看出文件路径按如下规则拼接DataFolder/SecurityType/Market/margins/Symbol.csvDataFolder数据根目录由 Lean 配置决定SecurityType期货为futureMarket交易所市场名小写如cbot、cme、nymex、comexSymbol合约代码如CL、10Y。因此CLNYMEX的保证金文件即 Data/future/nymex/margins/CL.csvCBOT 国债期货的保证金文件则在 Data/future/cbot/margins/如 10Y.csv、ZB.csv、ZN.csv 等。本文关联文档即位于该目录下作为维护说明使用。解析与生效逻辑引擎读取保证金文件后由 MarginRequirementsEntry.cs 的Create方法L57-L103逐行解析第 1 列date按DateFormat.EightCharacteryyyyMMdd严格解析失败仅记录日志第 2 列initial解析为InitialOvernight初始隔夜保证金第 3 列maintenance解析为MaintenanceOvernight维持隔夜保证金第 4 列可选initialIntraday若缺失则默认取初始隔夜保证金的 40%initialOvernight * 0.4m第 5 列可选maintenanceIntraday若缺失则默认取维持隔夜保证金的 40%maintenanceOvernight * 0.4m。也就是说即便 CSV 只写 3 列date,initial,maintenance引擎也会自动生成盘中Intraday保证金水平默认按隔夜保证金的 40% 折算如需精确控制盘中保证金可在第 4、5 列显式给出。第五步引擎中的保证金计算源码级验证FutureMarginModel.cs 实现了期货保证金模型关键机制如下历史数据缓存与按日切换LoadMarginRequirementsHistoryL230-L248以symbol.ID.Symbol为键缓存所有保证金历史条目避免每次计算都重复读盘GetCurrentMarginRequirementsL205-L223根据安全标的的最后一条数据日期在历史列表中向前推进游标选取“生效日期 ≤ 当前日期”的最新一条保证金条目——这正是 CSV 按日期升序排列的意义所在ClearMarginCacheL293-L303会在每天后清空缓存保证实盘部署时保证金数据不会过期。隔夜与盘中保证金的选择GetInitialMarginRequirementL179-L203开仓所需保证金若启用盘中保证金且交易所正在交易时段ExchangeOpen且未临近收盘则使用InitialIntraday否则使用InitialOvernightGetMaintenanceMarginL151-L174持仓维持保证金选择逻辑同上分别使用MaintenanceIntraday与MaintenanceOvernight保证金为**每合约per contract**金额乘以持仓数量与报价币种汇率QuoteCurrency.ConversionRate后得到总保证金。杠杆与目标仓位约束期货的杠杆由保证金水平决定用户不可自定义SetLeverageL99-L103会直接抛出InvalidOperationExceptionGetLeverageL86-L88恒返回 1目标买入力百分比Target Buying Power被限制在-1到1之间L111-L121不允许设置杠杆化目标因为期货本身就是保证金杠杆交易。EnableIntradayMarginsL48属性默认关闭开启后盘中使用较低保证金可能引发保证金追缴margin call需谨慎使用。数据维护实操要点与自检清单完成一份保证金文件的更新后建议按以下清单自查文件位置正确Data/future/market/margins/Symbol.csv市场名小写cbot、cme、nymex、comex表头完整首行为date,initial,maintenance日期格式yyyyMMdd八位数字且严格按时间升序数值为每合约金额单位为合约对应的报价币种如美元引擎会自动乘以持仓数量生效日期准确使用公告中的Effective Date而非公告发布日期只记录 Outrights 的 Month 1 Spec 条目排除价差、跨合约及非投机账户条目覆盖全部历史调整从目标起始日期本文限定 2008 年起到当前逐条核对 CME 的Performance Bond Requirement Changes公告不要遗漏。结语通过本文的流程你可以将 CME 官网的Performance Bond Requirement Changes公告系统性地转化为 Lean 引擎可用的保证金历史数据PDF 公告按“近月合约的 Spec 条目”取值Excel 公告按“New Margin × Scaling Factor及乘以初始保证金百分比”计算最终统一写入Data/future/market/margins/Symbol.csv。这些文件由 FutureMarginModel.cs 在回测与实盘中按生效日期自动切换、缓存并在实盘逐日刷新从而保证保证金计算的准确性与时效性。维护好这份数据是期货策略回测结果可信、实盘风控有效的前提。【免费下载链接】LeanLean Algorithmic Trading Engine by QuantConnect (Python, C#)项目地址: https://gitcode.com/GitHub_Trending/le/Lean创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考