0%

【课程笔记】全实战成长系列-30堂实战课跑通量化交易-解构CTA策略

全实战成长系列-30堂实战课跑通量化交易, 平台见识(华尔街见闻),by 用 Python 的交易员

CTA 策略

  • Commodity Trading Advisor, 海外更多成为 Trending Following,追涨杀跌
  • 适合的品种: 期货,外汇,CFD ( &数字币 Maybe?)
    • 多空双向交易,容易做空(A股不适合)
    • 带有较高杠杆,可以把一份资金分散到更多品种
    • 流动性较高,建仓的时候不至于造成特别大的 market impact
    • 波动性明显
  • 交易频率
    • 低频:基于日线,持仓在数日到数周
    • 中频:基于小时线/数分钟线,持仓数小时
    • 中高频:基于分钟线/秒线,持仓一小时以内
  • 著名机构
    • AHL,英仕曼集团
    • Winton,元盛资产
    • 富善投资
    • 思勰投资
  • 持续迭代
    • 数据研究
    • 策略开发
    • 历史回测
    • 实盘允许
    • 对比分析
  • 策略构成
    • 信号生成
      • 基于历史行情数据,进行时间序列分析,生成买卖指令;实盘,历史数据指当前所有的历史数据
      • 指令的生成过程
        • 信号:给出具体的买卖方向和数量:
          • 买还是卖(基于技术指标和模型)
            • 双均线金叉死叉
            • RSI 超买超卖
            • 收盘价突破布林带下轨
            • 回归模型上涨/下跌预期高于阈值
          • 买卖时机
            • T 时候(立即执行), T 收盘, T + 1 开盘: 双均线金叉,RSI 跌破 30
            • T + n 时刻(未来执行), T 收盘, T + 1 开盘后任意时刻: K 线运行盘中突破通道上轨
        • 过滤:剔除不好的交易机会(震荡市剔除均线缠绕)
          • 趋势的本质,是稳定的单边大波动;CTA 的目标是识别趋势同向交易;减少假突破的亏损,需要过滤信号(市场波动不够大,忽略信号)
          • 独立指标:DMI,ATR
          • 信号内嵌:通道,RSI 极值区
        • 出场:
          • 反向信号:金叉之后死叉,突破上轨买入后,突破下轨,则卖出
          • 止损逻辑:
            • 固定止损:亏损固定金额(比例)之后平仓止损
            • 移动止损(止盈):从最高点跌落固定比例
    • 组合构建
      • 简单组合:直接使用信号给出的交易数量,适用于中高频或中频策略
      • 风险平衡:结合信号给出的数量和市场风险度调整,适用于低频策略
    • 交易执行
      • 信号和执行结合:策略代码直接生成指令并发送委托管理交易(简单组合),交易管理比较细粒度,追求速度,适用于中高频
      • 信号和执行分离:组合构建支持更加复杂的一些规则,适用于低频(海龟)

海龟策略

  • 概念
    • 系统化交易策略,按照系统性的规则去执行交易
    • 1983 年两位交易员的赌约,30 多年历史;柯蒂斯·费思,19 岁加入海龟,4 年狂赚 3150 万美元
    • 最经典的量化交易策略,低频 CTA
    • 数量化分析(纸笔计算器) + 系统化执行(打电话交易)
  • 构成
    • 交易信号
      • 通道突破
      • 顺势加仓
      • 风控止损
    • 组合构建
      • 品种选择
      • 单位持仓
      • 风险分配
    • 交易执行:当年没有自动化交易系统
  • 品种选择
    • 期货,包括商品和股指
    • 杠杆外汇
    • 数字货币,现货和期货合约
  • 通道突破:
    • Donchian Channel: 本质是找过去 N 日最为重要的支撑和阻力,简单粗暴行之有效
    • 短周期
      • 突破 20 日通道开仓
      • 过滤上笔盈利
      • 反向突破 10 日通道平仓
    • 长周期
      • 突破 55 日通道开仓
      • 反向突破 20 日通道平仓
  • 单位持仓
    • 风险度量 N: True range (真实波动范围) 的指数移动平均 (EMA), 通常用 ATR 代替 (SMA)
    • 单位持仓 Unit: Unit = (总资金 * 1%) / (N * 合约乘数)
      • 在特定时间,每个合约有自己特定的 Unit
      • 信号发出交易指令时,会以 Unit 作为买卖数量单位
      • E.g. 总资金 = 500万N = 80, 合约乘数 = 300 => Unit = 2.083 约等于 2
  • 顺势加仓
    • 突破通道,开仓 Unit,记录入场价 Entry 和 N
    • 价格顺着仓位移动,每移动 0.5N,加仓 Unit
    • 加仓后将新的加仓价格记为 Entry,用于止损(Entry >= 平均加仓成本, 锁定利润, 降低风险)
    • 单合约最大持仓,4 Unit,入场后最多加仓 3 次
  • 风控止损(做多为例)
    • 价格跌破 Entry - 2N, 平掉全部多头仓位
    • 因此最多总资金亏损 2% (1% * 总资金 / (N * 合约乘数) * 2N * 合约乘数)
    • 最新 Entry 高于平均建仓成本,所以整体风险在变小
    • 最大持仓限制(Units),单品种4,高关联6,低关联10, 整个组合12

限价单

  • 常见委托
    • 限价单:所有交易所提供
    • 市价单:绝大部分交易所提供;危险情况:挂单很少的时候,会吃掉所有的对手单,把价格打穿
    • 停止单:少数交易所提,部分经济商提供
      • 本质上是条件委托, 满足条件发出
      • 为保证成交, 通常会发出市价单或超价停止单
      • 最早用于止损, Stop Loss Order
      • 两种不同的停止单
        • 交易所(经济商)停止单
          • 优点:保存在交易所或券商系统内,不用担心本地状况
          • 缺点:场内交易员(交易所后台)能够看到,可能被定向爆破
        • 本地停止单
          • 优点:只有交易员本人能看到,不用担心泄漏底牌
          • 缺点:保存在本地电脑,关机失效;触发有延时,会导致滑点
  • 海龟和停止单
    • T 日收盘后,计算上下轨作为 T + 1 日的交易依据
    • T + 1 日内,突破上下轨立即执行交易
    • 假如等到收盘,由于 alpha 衰减速度快,可能损失大量利润
    • 突破后的成交价格需要基于停止单撮合规则
  • 停止单撮合规则
    • 买入, T 日收盘挂出停止单价格为 P
      • T + 1 日 K 线 high < P, 停止单未触发
      • T + 1 日 K 线 high >= P, 成交价 max(P, open),假如开盘价已经大于 P, 直接以开盘价成交, 否则会未来函数
    • 卖出, T 日收盘挂出停止单价格为 P
      • T + 1 日 K 线 low > P, 停止单未触发
      • T + 1 日 K 线 low <= P, 成交价 min(P, open),假如开盘价已经小于 P, 直接以开盘价成交, 否则会未来函数
  • 难点
    • K线内部成交
      • 无论长短周期,要求在突破通道的瞬间,立即执行交易,而非等到收盘
      • K 线周期大, Tick 数据量太大,只能用 K 线数据回测(?)
      • ZipLine or 三大矿无法回测
    • 短周期信号的过滤
      • 短周期信号用于捕捉短期的快速趋势,缺点是容易出现假突破大量亏损
      • 为避免假突破,投资组合在,上次盈利时,要放弃本次指令
      • 需要在信号中统计盈亏, 而不是回测结束后统计, 多次加仓(顺势)&一次平仓要算为一次开平
    • 单位持仓: Unit = (总资本 * 1%) / (N * 合约乘数),合约乘数即一个指数跳动对应的钱
      • 无持仓时,随 K 线更新 N 和 Unit
      • 触发开仓是,固定住交易时的 N 和 Unit
      • 信号层给出买卖指令的具体数量,组合层限制单品种暴露的风险
      • 平仓后,清除固定的 N 和 Unit