最近有朋友问我:“我想开始做期权量化,是不是得先去学个计算机硕士?”
我给他看了这个:
if 持有现货:
自动卖出认购期权
他愣了两秒:“就这?”
“就这。”我回答,“这就是最经典的期权量化策略——备兑开仓的核心逻辑。”
很多投资者觉得期权量化深不可测,其实它的入门门槛,可能比你想象的低得多。今天,我就带你用真正的三行Python代码,在专业量化平台QMT上,跑起你的第一个自动策略。
李姐的故事很有意思。她50多岁,以前只买银行理财。去年看到别人用期权“收租”,心动了,但又觉得那些代码、算法离自己太远。
我给她看了三行代码的逻辑,她笑了:“这不就是‘有房子就出租’嘛!”
她说对了。 量化就是把这种简单的商业逻辑,用程序语言表达出来,然后让计算机不知疲倦地执行。
期权量化的核心,不是高深的数学,而是清晰的逻辑 严格的纪律。
手动做的痛点:
量化做的优势:
下面是在QMT量化平台中,一个极简但完整的备兑开仓策略:
# strategy.py - 你的第一个期权量化策略
def initialize(context):
# 第1行:设置你的标的
context.security = '510300.SH' # 沪深300ETF
context.option_cycle = '当月' # 期权合约月份
def handle_data(context):
# 第2行:检查是否持有现货
if get_position(context.security, POSITION_DIRECTION.LONG):
# 第3行:自动卖出认购期权
sell_covered_call(context)
当然,这里的sell_covered_call()函数需要定义,但核心逻辑真的就这三步。
from qmt import *
def initialize(context):
"""
策略初始化:只运行一次
相当于你的策略准备工作
"""
# 1. 设置你要交易的标的
context.security = '510300.SH' # 沪深300ETF
# 2. 设置期权选择规则
context.days_to_expire = 3 # 到期前3天移仓
context.delta_target = 0.3 # 选择Delta约0.3的合约(轻度虚值)
# 3. 设置运行时间(每天收盘前30分钟检查)
schedule(schedule_func=daily_check,
time_rule='14:30:00')
def daily_check(context):
"""
每日定时任务:检查并执行
"""
# 检查是否持有ETF
etf_position = get_position(context.security, POSITION_DIRECTION.LONG)
if etf_position and etf_position.volume > 0:
# 情况1:已有期权持仓,检查是否需移仓
option_position = get_option_position(context.security)
if option_position and option_position.days_to_expire <= context.days_to_expire:
close_old_and_sell_new(context, option_position)
# 情况2:没有期权持仓,开新仓
elif not option_position:
sell_covered_call(context, etf_position.volume)
def sell_covered_call(context, etf_volume):
"""
执行备兑开仓的核心函数
"""
# 1. 获取可交易的期权合约列表
options = get_tradable_options(context.security,
option_type='CALL', # 认购期权
expire_cycle='当月')
# 2. 按Delta值筛选(约0.3的轻度虚值合约)
target_option = None
for opt in options:
if 0.25 <= opt.delta <= 0.35:
target_option = opt
break
if target_option:
# 3. 计算可卖出数量(不超过ETF持仓)
sell_volume = min(etf_volume // 10000, 10) # 保守起见,最多10张
# 4. 下单卖出认购期权
order_target_volume(symbol=target_option.symbol,
volume=sell_volume,
side=POSITION_DIRECTION.SHORT,
order_type=ORDER_TYPE.LIMIT,
price=target_option.ask) # 以卖一价挂单
log(f"备兑开仓:卖出{target_option.symbol} {sell_volume}张,行权价{target_option.strike}")
# 策略结束
张总从去年开始运行这个策略的增强版,他的实盘数据:
“最省心的是,”张总说,“去年有几个月我出国了,完全没看盘,策略自动运行,回来发现账户还是赚钱的。”
你可能注意到,上面的代码用到了很多QMT特有的函数。这是因为:
get_tradable_options() 直接返回可交易合约,带实时希腊字母如果不用QMT,你需要:
而这些,QMT已经帮你做好了。
Q:我真的不会编程,能学会吗?
A:上面的代码,超过80%都是固定格式。你真正需要改的,可能就是标的代码和Delta值。我们有详细的视频教程,手把手教你。
Q:需要多少资金开始?
A:期权交易门槛确实比股票高。建议:
Q:QMT收费吗?
A:通过我这边开户,QMT和PTrade都免费提供,且享受专业版权限。
Q:最大风险是什么?
A:对于备兑开仓,最大风险是:
我见过太多投资者,在量化交易的门外观望了很久,总觉得要“准备好一切”才能开始。
但事实是,最好的准备就是开始。
那个觉得要读计算机硕士的朋友,后来怎么样了?他用上面的基础策略跑了一个月模拟盘,然后告诉我:
“原来最难的不是写代码,而是忍住不手动干预。看着程序按规则执行,即使短期‘吃亏’了也不去改它——这才是我要修炼的。”
今天分享的这个策略,简单到几乎不像“量化”。但它的价值恰恰在于此:让你用最小的认知负担,体验完整的量化流程。
从这三行逻辑开始,你会发现:
如果你对QMT的获取、策略的配置有任何疑问,或者想了解如何为你的持仓定制这样的“自动收租”系统,欢迎找我交流。
作为客户经理,我提供的不只是佣金优惠和软件支持,更重要的是——我陪伴过上百位客户走过从0到1的量化入门之路,清楚知道每个阶段你会遇到什么困难,需要什么帮助。
毕竟,在投资的路上,有时候一个正确的开始,比什么都重要。股票开户找我!无门槛国债逆回购一折 (百万分之一)!ETF佣金万0.5!融资利率5%以下!优惠多多!免费量化!ptrade&QMT!
