跳到主要内容

1 篇博文 含有标签「if_else」

查看所有标签

在创建 Alpha 时,你可以通过添加条件来精细控制你的交易行为。这就像给你的策略设置一些“如果……就……”的规则,让它变得更聪明。你可以使用常见的逻辑操作符(><>=<=== 等)来创建这些条件。

  • 例子: 如果你想只在股票成交量比平时高时才进行交易,你可以设置条件为 volume > adv20

💡 注意: 过于严格的条件可能会减少你的交易机会,同时增加“过拟合”的风险,也就是你的策略只在历史数据上表现的特别好,但在未来却失效。


if_else():简单的条件判断 🔀

if_else() 是一个非常基础但强大的操作符,它能根据条件返回不同的值。

  • 基本用法: if_else(条件, 如果条件为真,返回这个值, 如果条件为假,返回这个值)
  • 简化写法: 就像我们之前在动量策略中看到的,你也可以使用更简洁的 条件 ? 值1 : 值2 格式,效果是一样的。

trade_when():决定何时交易 🎯

trade_when() 是一个更高级的操作符,它能让你精确控制 Alpha 模型的“入场”和“出场”时机,只在满足特定条件时才更新仓位。

trade_when() 需要三个输入:

  1. 入场条件(entry_condition):
    • 当这个条件为真时,系统会根据你的 Alpha 表达式来计算并更新你的仓位。
    • 例子: 你可以设定 volume > adv20 作为入场条件,意思是只有当成交量异常高时,才开始使用你的 Alpha 模型进行交易。
  2. Alpha 表达式(Alpha):
    • 当入场条件满足时,系统会执行你的 Alpha 公式来决定具体买卖什么。
    • 例子: 在动量策略中,这个表达式可以是 ts_sum(returns > 0 ? 1 : 0, 250)
  3. 出场条件(exit_condition):
    • 当这个条件为真时,系统会平掉你之前建立的仓位(即清仓)。
    • 例子: 如果你不想清仓,可以将出场条件设置为 -1
  • 工作流程:
    • 入场时: 如果入场条件为真,每天都更新你的仓位。
    • 出场时: 如果出场条件为真,平掉仓位。
    • 两者都为假时: 保持你上一次入场时的仓位不变,直到下次入场或出场条件满足。

trade_when() 在动量策略中的应用 💡

我们可以用 trade_when() 来优化之前提到的动量 Alpha。

  • 策略思想: 动量效应往往在成交量突然放大时更有效。所以,我们可以只在成交量异常高时才建立动量仓位,并在之后保持仓位不变。
  • 设置:
    1. 入场条件:
      • 你可以用 volume > adv20volume > ts_mean(volume, N) 来判断成交量是否异常高。你还可以使用更高级的判断,比如 volume * vwap > ts_mean(volume * vwap, N),它将成交量和价格结合起来。
    2. Alpha 表达式:
      • 使用我们之前学的动量公式,比如 positive_days(过去一年上涨天数)。
    3. 出场条件:
      • 由于动量是长期效应,你可以把出场条件设为 -1,这意味着一旦建立仓位,就一直持有。当然,你也可以根据自己的想法设置一个有效的出场条件。
  • 中性化设置:
    • 动量效应通常是跨行业的(比如所有科技股一起涨),而不是在行业内部(比如一个行业里有些股票涨有些股票跌)。因此,在设置中性化选项时,最好选择“市场中性化”(Market Neutralization)或“行业中性化”(Sector Neutralization),而不是更细的分组。
交易量化条件trade_whenif_else策略优化阅读需 4 分钟