免责声明:本文基于个人使用体验,与任何厂商无商业关系。内容仅供技术交流参考,不构成投资建议。


一、前言

策略逻辑复杂后,单靠回测不够,对信号、仓位、风控等做单元测试可提前发现错误。做了多年期货量化,我习惯对关键函数写简单测试。

今天分享 Python 期货策略单元测试的常见思路。


二、测什么

# 1. 信号函数:给定 K 线序列,输出信号是否与预期一致
# 2. 仓位计算:给定权益、风险比例,手数是否正确
# 3. 止盈止损:给定价格与规则,是否触发
# 4. 边界:空数据、单根 K 线、全平等

三、示例:信号函数测试

import pandas as pd
import numpy as np

def ma_signal(close_series, short=5, long=20):
    """双均线信号:1 多 -1 空 0 无"""
    if len(close_series) < long + 1:
        return 0
    ma_s = close_series.rolling(short).mean().iloc[-1]
    ma_l = close_series.rolling(long).mean().iloc[-1]
    ma_s_prev = close_series.rolling(short).mean().iloc[-2]
    ma_l_prev = close_series.rolling(long).mean().iloc[-2]
    if ma_s_prev <= ma_l_prev and ma_s > ma_l:
        return 1
    if ma_s_prev >= ma_l_prev and ma_s < ma_l:
        return -1
    return 0

# 单元测试
def test_ma_signal():
    # 金叉:前小后大
    close = pd.Series([100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
                       111, 112, 113, 114, 115, 116, 117, 118, 119, 120])
    assert ma_signal(close) == 1  # 短期上穿长期
    # 可再加死叉、无信号、长度不足等用例

四、用 pytest 跑

# pip install pytest
# 命令行:pytest test_strategy.py -v
# 策略改完后跑一遍,避免改坏逻辑

五、总结

对信号、仓位、风控等关键逻辑做单元测试,能减少回测与实盘中的逻辑错误。用 pytest 或 unittest 均可。我目前策略会为关键函数写简单用例。量化交易有风险,测试只是验证,策略和风控才是核心。


声明:本文基于个人学习经验整理,仅供技术交流参考,不构成任何投资建议。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐