最近有朋友问我:“我想开始做期权量化,是不是得先去学个计算机硕士?”

我给他看了这个:

if 持有现货:
    自动卖出认购期权

他愣了两秒:“就这?”

“就这。”我回答,“这就是最经典的期权量化策略——备兑开仓的核心逻辑。”

很多投资者觉得期权量化深不可测,其实它的入门门槛,可能比你想象的低得多。今天,我就带你用真正的三行Python代码,在专业量化平台QMT上,跑起你的第一个自动策略。

一、别再被“量化”两个字吓到

李姐的故事很有意思。她50多岁,以前只买银行理财。去年看到别人用期权“收租”,心动了,但又觉得那些代码、算法离自己太远。

我给她看了三行代码的逻辑,她笑了:“这不就是‘有房子就出租’嘛!”

她说对了。 量化就是把这种简单的商业逻辑,用程序语言表达出来,然后让计算机不知疲倦地执行。

期权量化的核心,不是高深的数学,而是清晰的逻辑 严格的纪律

二、你的第一个策略:备兑开仓(Covered Call)

策略逻辑(用大白话讲):

  1. 你持有一只股票(或ETF)
  2. 每个月,你“出租”这只股票的上涨空间
  3. 收取“租金”(权利金)
  4. 如果股价涨过约定价格,股票被“买走”,你赚到约定价以上的部分 租金
  5. 如果股价没涨过约定价格,租金白赚,下个月继续出租

手动做的痛点:

  • 每个月要记着到期日
  • 要计算哪个行权价最合适
  • 要手动下单,经常忘记
  • 涨跌时情绪波动,影响判断

量化做的优势:

  • 自动运行,永不忘记
  • 实时计算最优行权价
  • 严格按规则执行,没有情绪
  • 可以同时管理几十个标的

三、三行代码的完整实现

下面是在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}")

# 策略结束

四、这个策略实际效果如何?

张总从去年开始运行这个策略的增强版,他的实盘数据:

  • 标的:上证50ETF
  • 运行时间:2023年全年
  • 结果

“最省心的是,”张总说,“去年有几个月我出国了,完全没看盘,策略自动运行,回来发现账户还是赚钱的。”

五、为什么选择QMT开始?

你可能注意到,上面的代码用到了很多QMT特有的函数。这是因为:

QMT为期权量化做的“脏活累活”:

  1. 数据不用愁get_tradable_options() 直接返回可交易合约,带实时希腊字母
  2. 计算不用做:Delta、Gamma、Theta系统实时计算好
  3. 风控内嵌:自动检查备兑开仓的现货是否充足
  4. 执行优化:组合单、价差单原生支持

对比自己从头开始:

如果不用QMT,你需要:

  • 从交易所API爬期权合约列表
  • 自己实现Black-Scholes模型计算希腊字母
  • 处理复杂的保证金计算
  • 维护订单状态和成交回报

而这些,QMT已经帮你做好了。

六、你的下一步行动指南

阶段一:体验期(第1周)

  1. 申请QMT模拟账号(通过我开户可免费获得)
  2. 把上面的代码复制到QMT策略编辑器
  3. 在模拟盘运行,观察一周

阶段二:学习期(第2-4周)

  1. 修改参数体验效果:# 试试不同的Delta值 context.delta_target = 0.2 # 更虚值,权利金少但更安全 # 或 context.delta_target = 0.4 # 更实值,权利金多但容易被行权 # 试试不同移仓时间 context.days_to_expire = 5 # 提前5天移仓
  2. 加入简单的风控规则:# 如果ETF亏损超过5%,暂停卖期权 if etf_position.pct_chg < -0.05: log("ETF亏损超5%,暂停本期开仓") return

阶段三:实盘期(第2个月起)

  1. 从小资金开始(比如10万元)
  2. 先运行1-2个标的
  3. 每周复盘,记录心得体会

七、常见问题解答

Q:我真的不会编程,能学会吗?
A:上面的代码,超过80%都是固定格式。你真正需要改的,可能就是标的代码和Delta值。我们有详细的视频教程,手把手教你。

Q:需要多少资金开始?
A:期权交易门槛确实比股票高。建议:

  • 备兑开仓:至少对应价值10万的现货持仓
  • 纯期权策略:建议5万以上

Q:QMT收费吗?
A:通过我这边开户,QMT和PTrade都免费提供,且享受专业版权限。

Q:最大风险是什么?
A:对于备兑开仓,最大风险是:

  1. 股价大跌(但你有现货,比单纯持股亏得少)
  2. 股价大涨,你“踏空”部分涨幅(但赚到了权利金)

写在最后:从“三行逻辑”开始

我见过太多投资者,在量化交易的门外观望了很久,总觉得要“准备好一切”才能开始。

但事实是,最好的准备就是开始。

那个觉得要读计算机硕士的朋友,后来怎么样了?他用上面的基础策略跑了一个月模拟盘,然后告诉我:

“原来最难的不是写代码,而是忍住不手动干预。看着程序按规则执行,即使短期‘吃亏’了也不去改它——这才是我要修炼的。”

今天分享的这个策略,简单到几乎不像“量化”。但它的价值恰恰在于此:让你用最小的认知负担,体验完整的量化流程。

从这三行逻辑开始,你会发现:

  • 原来自动交易并不神秘
  • 原来期权可以这么“无聊”地赚钱
  • 原来你可以同时管理以前不敢想象的仓位

如果你对QMT的获取、策略的配置有任何疑问,或者想了解如何为你的持仓定制这样的“自动收租”系统,欢迎找我交流。

作为客户经理,我提供的不只是佣金优惠和软件支持,更重要的是——我陪伴过上百位客户走过从0到1的量化入门之路,清楚知道每个阶段你会遇到什么困难,需要什么帮助。

毕竟,在投资的路上,有时候一个正确的开始,比什么都重要。股票开户找我!无门槛国债逆回购一折 (百万分之一)!ETF佣金万0.5!融资利率5%以下!优惠多多!免费量化!ptrade&QMT!




温馨提示:投资有风险,选择需谨慎。