关于保证金率动态获得
保证金率
g.margin_rate = instruments(g.main).margin_rate
# 合约乘数
g.contract_multiplier = instruments(g.main).contract_multiplier
# 设定保证金比例
# set_option('buy_max_leverage', 0.1)
g.margin_rate = 0.1
# 合约乘数
g.contract_multiplier = 300
上面是米框的保证金和合约乘数设置,下面是聚宽的;能不能也可以像他们一样 可以动态获得相关的值;特别对于保证金率,这个值会根据交易所的政策经常调整的,写死了,容易出问题;
如果这个值不好动态获得,能不能给链接给个链接说明,每种商品每个时间段的保证金率和合约乘数
还是说聚宽也可以设置,只是在api中没有提及到?
问题描述
解决方案
在 JoinQuant(聚宽)平台上,关于期货的合约乘数和保证金率的获取与设置,具体情况如下:
1. 合约乘数的获取
聚宽是支持动态获取合约乘数的。你可以通过 get_security_info 函数返回的对象来获取合约乘数属性(multiplier)。
示例代码:
# 获取螺纹钢主力合约的乘数
info = get_security_info('RB9999.XSGE')
g.contract_multiplier = info.multiplier
log.info("合约乘数为: %s" % g.contract_multiplier)
2. 保证金率的获取与设置
关于动态获取历史真实保证金率:
聚宽的回测引擎目前不支持自动根据交易所历史政策动态调整保证金率。在回测中,系统默认采用的是固定保证金率机制。
聚宽的保证金率处理逻辑:
- 默认固定值:如果你不进行任何设置,聚宽会为每个品种提供一个默认的固定保证金比例(例如:白银 AG 默认 0.04,螺纹钢 RB 默认 0.05,股指期货默认 0.15 等)。
- 手动设置 (
set_option):你可以通过 API 手动覆盖这些默认值。虽然不能自动随时间变化,但你可以针对全局、特定品种或特定合约进行设定。
设置保证金率的示例代码:
def initialize(context):
# 设定所有期货保证金比例为10%
set_option('futures_margin_rate', 0.1)
# 设定所有股指期货保证金比例为15%
set_option('futures_margin_rate.IF', 0.15)
# 设定所有黄金(AU)期货保证金比例为9%
set_option('futures_margin_rate.AU', 0.09)
# 单独设定某个具体合约(如AU1709)的保证金比例为8%
set_option('futures_margin_rate.AU1709', 0.08)
总结
- 合约乘数:不需要写死,可以通过
get_security_info(code).multiplier动态获取。 - 保证金率:无法像米框那样直接获取随时间动态变化的真实历史保证金率。为了防止写死带来的问题,建议在策略的
initialize中使用set_option('futures_margin_rate.品种代码', value)按照你策略的风险偏好统一设定一个较为保守的固定保证金率进行回测。