跳转到正文

国内期货回测 ​

支持纯 future 账户,包含真实月合约和 seeddata 连续系列,日频与 1 分钟共用账户、固定手续费和系列归属机制。首次运行用日频示例;夜盘和分钟路由见分钟执行。不模拟实物交割、期现组合保证金优惠或期货公司完整追保流程。

基准选择统一见按策略选择基准。

合约与系列 ​

标识示例含义
真实月份合约RB2701.SHF实际成交与账户记账对象,有上市与最后交易日
主力系列RB.SHF、IF.CFX供应商定义的主力连续标识,由每日映射指向真实合约
其他连续系列RBL.SHF、IFL1.CFX按供应商基础信息和映射识别,不能仅凭后缀自行推断当日目标
品种RB、IF合约乘数、费率配置及策略品种风险分组的键

交易所后缀为 .SHF/.DCE/.ZCE/.CFX/.INE/.GFE。连续系列不是可在交易所直接成交的证券;框架消费已提供的 mapping,不按自身成交量排名另选“主力”。all_instruments 只枚举本次 bundle;供应商基础信息的 fut_type 为 1(月合约)或 2(系列);运行中合约对象的 underlying_symbol 为品种。

数据与价格 ​

使用 load_framework_data(..., asset_type="cn_future", frequency="1d"或"1m")。月合约按指定 codes 加载;系列会扩展其映射及同品种区间内已上市月合约,用于成交与到期展期。直接交易的月合约仍须显式列入 codes。更长日线预热用 history_start,范围规则见数据加载。

框架默认不加载或选择基准。使用南华综合指数 NHCI.NH 或其他指数时,显式放入 index_codes,并在分析器配置 instrument 基准;月合约或系列基准放 codes。外部净值不需要额外加载基准合约,接口见基准配置。

数据来源与框架用途
基础信息、乘数、最小价位cn_future_basic_info、cn_future_product_info
原始日线、结算价、持仓量cn_future_daily_basic_data
系列日线信号cn_future_hfq_quotes 后复权行情
系列映射cn_future_mapping
保证金与涨跌停cn_future_settle_data、cn_future_limit_data
南华指数cn_future_index_daily_basic_data
真实合约分钟cn_future_1min_basic_data

框架日线成交量为手、成交额为元:加载器已将期货日线金额从万元乘 10000、南华指数金额从千元乘 1000。策略不要再次转换。分钟金额本身为元。

原始价格用于成交、估值、结算和限价。history_bars(..., adjust_type="none"/"pre") 返回原始行情;系列日线 "post" 返回后复权价格字段,量额和持仓量仍为供应商的未复权值。月合约没有复权,"post" 仍返回原始行情。字段清单见行情 API。

系列后复权适合跨换月信号,不能作为可成交限价。后复权历史来自供应商数据,框架不保存历史发布版本;查询截止日约束不等于提供了数据修订历史。

有有效结算价的零成交量日保留,普通订单仍受成交限制。所需成交价格、涨跌停、持仓结算价或有效保证金缺失时失败;保证金数据尾端未就绪也会阻止加载,不能把“上一交易日”直接当作数据已完整的证明。

手续费 ​

必须显式设置 mod.sys_transaction_cost.futures_commission。框架不使用 settle 表中的历史手续费,不继承股票佣金或每单最低收费。下例费率仅用于演示:

python
fee_config = {
    "futures_commission_multiplier": 1,
    "futures_commission": {
        "default": {"type": "by_money", "open": 0.0001, "close": 0.0001, "close_today": 0.0002},
        "products": {
            "RB": {"type": "by_volume", "open": 2, "close": 2, "close_today": 4},
            "IF": {"type": "by_money", "open": 0.0001, "close": 0.0001, "close_today": 0.0003},
        },
    },
}
# config["mod"]["sys_transaction_cost"] = fee_config
设置单位与规则
type="by_money"open/close/close_today 为成交额比例小数,成交额含合约乘数
type="by_volume"open/close/close_today 为元/手
open/close/close_today开仓、平昨、平今;close 缺省取 open,close_today 缺省取 close,0 为免收
products品种项完整替代 default,必须自己提供 type/open;不跨单位继承
futures_commission_multiplier默认 1,乘全部普通及移仓手续费;0 表示免佣金

没有 default 时必须覆盖所有加载品种,不只覆盖实际下过单的品种。

按金额收费时,价格 3500、乘数 10、2 手、费率 0.0001、倍率 1,单腿手续费为 3500 × 10 × 2 × 0.0001 = 7 元。按手收费每手 2 元则是 4 元。系统移仓分别计算平旧和开新两腿,平今按对应费率。

保证金与资金 ​

必须设置 mod.sys_accounts.futures_settlement_price_type="settlement";该模块原始默认是 close,不满足本数据源契约。base.margin_multiplier 默认 1,base.partial_fill_on_insufficient_cash 默认 False。

日频多空保证金率分别取“同合约最近已知 settle 保证金率”和“当日 min_margin_ratio”的较大值,再除以 100。只沿同合约历史向前取值,不跨月份借用;两源都无有效值时报错。这是每日统一参数近似,可能保留较高历史值,不复原盘中调档或期货公司加收。分钟的盘中与结算参数分开,见分钟保证金。

单方向保证金 = 原始估值价格 × 手数 × 合约乘数 × 该方向保证金率 × margin_multiplier。多空分别计算后相加,不按净手数计算,不提供套利组合保证金优惠。具体公开查询与手数估算见合约资金参数。

开仓扣手续费并占用保证金;保证金本身不是亏损。持仓价格变化产生盈亏,平仓释放对应保证金;日终按结算价把未结算盈亏计入资金并重置真实合约结算成本。名义敞口不等于投入本金,不能用现金加名义市值计算权益。运行中字段见账户参考。

下单与持仓 ​

期货订单接口区分开多、平多、开空、平空,数量为整数手。默认平仓优先昨仓,close_today=True 只平今仓;今昨仓按交易日划分。反转须根据实际成交推进,order_to 不能保证先完整平仓再开反向仓。

系列开仓路由到当前执行合约,平仓消费本系列真实归属仓位;换月期间可能同时归属多个真实合约。多个系列可以共用同一真实合约,不能平掉其他系列的仓位。同一真实合约有未平仓位或挂单时,直接月合约订单与系列订单不得混用;完全平仓并撤单后可切换。初始持仓只接受真实月合约。

系列视图只用于归属查询,资金总账始终在真实合约。遍历持仓只返回真实合约;系列视图不能再加到总持仓中。字段与成本语义见系列持仓。

自动移仓与结算 ​

系统在正式结算及到期清仓之前处理系列移仓,目标根据日频路由或分钟路由确定:

  1. 日频实际持仓与当日 mapping 不同,移至当日 mapping。
  2. 映射未变但实际合约当日到期,选择同品种、当日已上市且到期月份更晚的最近合约。无后继时报错,不读取未来 mapping,后继不保证等于供应商未来系列。
  3. 日频目标必须已上市并有当日结算行情,否则失败;分钟对尚未上市映射的等待规则见分钟页。

移仓先撤相关未成交订单,再按全部两腿结算价、费用和移仓后保证金预检资金。不足时终止,不缩量。先平所有旧仓,再等量同向开所有新仓。系统移仓忽略涨跌停、成交量和滑点,不是普通可成交性模拟。

例如多头 1 手、乘数 10:昨日旧合约结算价 3500,今日旧合约结算价 3520,新合约结算价 3600。移仓前该手今日盈亏为 200 元,再扣两腿费用;新旧合约 80 点价差不直接计作亏损。新合约从 3600 建立成本及后续盈亏基准。

直接持有月合约至到期,框架按引擎结算价清仓并生成 expiry 成交,手续费为零,不模拟交割。base.forced_liquidation=True 为默认值:结算时权益不大于零,清空仓位并把资金归零,系列归属同步清空;关闭则不执行该规则。结算后可用现金为负而权益仍正时默认只告警,不自动按追保要求减仓。

成本基准与收益核对 ​

真实合约 avg_price 是会每日重置的结算成本。系列 avg_price 是仍未平掉的归属开仓成本,系统平旧开新后也会更新。两者都不是自动保存的“跨换月趋势交易最初入场成本”。止盈止损若需跨换月延续,应明确采用的价格序列及策略基准状态,不直接沿用这两个字段。

逐日权益变化按“昨仓从前日结算价到当日结算价的盈亏 + 当日成交相对结算价的盈亏 − 当日费用”核对;存在额外资金流或税费时另计。平仓、移仓和到期交易都按实际来源参与核对。

结果表是结算后快照;after_trading 发生在结算前,不能用它替代末日结算结果。表结构见期货结果,导出见报告操作。

localquant documentation