跳到主要内容

1 篇博文 含有标签「分组」

查看所有标签

什么是中性化?🎯

中性化 (Neutralization) 是一种非常重要的技术,它能帮助你去除或最小化 Alpha 策略中不想要的因素的影响。

  • 目的: 通过中性化,你可以让你的 Alpha 信号变得“更纯粹”,从而只关注你想要捕捉的特定市场异象。
  • 效果: 通常,中性化会牺牲一些总回报,但会显著提高夏普比率,因为你移除了不必要的风险。

在 BRAIN 平台上,你可以通过 group_neutralize 操作符来实现中性化。


分组中性化 🤝

分组中性化的作用是在特定的分组内进行标准化处理。最常见的例子就是在行业内部进行中性化。

  • 原理: 平台将所有股票按照所属行业进行分组。然后,在每个行业内部,它会分别进行中性化操作。
  • 好处: 这样,你的策略就不会受到某个行业整体涨跌的影响。例如,如果石油行业整体大涨,你的策略会在这个行业内做多表现相对较弱的股票,同时做空表现最强的股票。

除了在设置中直接选择行业中性化外,你还可以使用 group_neutralize 操作符来实现更灵活的分组中性化。


分组数据字段 🗂️

group_neutralize(x, group) 操作符的第二个输入参数 group,就是用来定义分组的数据字段。这些数据字段会根据特定的标准对每只股票进行分类。

你可以使用平台预设的各种分组数据字段,比如:

  • sector (板块)
  • industry (行业)
  • subindustry (子行业)
  • exchange (交易所)

你可以在股票价格/成交量数据关系数据中找到很多有用的分组数据字段。


自定义分组:bucket() 操作符 🛒

如果平台现有的分组不符合你的需求,你可以用 bucket() 操作符来创建自己的分组。

bucket(X, range="{start},{end},{step}")
  • 用法: 它可以将一个连续的数值变量(比如 rank(cap))分成多个离散的组。
  • 例子: bucket(rank(cap), range="0,1,0.1")
    • 这个表达式会根据市值排名将所有股票分成 10 个组。
    • 第一组:排名在 0 到 0.1 之间的股票(市值最小的 10%)
    • 第二组:排名在 0.1 到 0.2 之间的股票
    • ……
    • 第十组:排名在 0.9 到 1.0 之间的股票(市值最大的 10%)

处理稀疏数据:densify() 操作符 🛠️

在使用分组数据字段时,如果分组的值分布非常稀疏,可能会导致计算效率低下,甚至模拟失败。在这种情况下,你可以使用 densify(x) 操作符来解决这个问题。

densify(x) 的作用是压缩这些稀疏的值,使其更紧密地分布,从而提高计算效率。你可以在操作符探索器 (Operator Explorer) 中找到更详细的说明。

交易量化中性化行业分组阅读需 3 分钟