还在入门教学中,不理解不明白...记录点公式术语啥的,我也不知道有没有用

已经学到D-28了

这篇主要讲的应该是动量(我翻译过来的,准确是:Momentum Effect)吧。


动量效应:最近上涨的继续上涨,最近下跌的继续下跌。

它会随着时间变化:短期(1个月以下):回归效应较强

                                中期(季度至年度):传统的动量效应最为明显

                                长期(超过12个月):效果趋于逐渐减弱


实现动量效应:

最简单的方式:计算最近的价格涨幅。

如果是计算一年内(在BRAIN中一年时250,只算工作日)的资产的价格增长,使用时间序列算子ts_delta(close,250)/ts_delay(close,250)  即:(当前价格 - 250 天前价格)/ 250 天前价格

  • ts_delta(close, 250)计算当前收盘价与 250 天前收盘价 的差值(即价格变化绝对值)。

  • ts_delay(close, 250)直接返回 250 天前的收盘价(作为分母,用于标准化)。

  • 如果结果 > 0:过去 1 年价格上涨 → 可能继续上涨(动量延续)。

  • 如果结果 < 0:过去 1 年价格下跌 → 可能继续下跌(趋势延续)。

然而,单独使用这个公式并不能产生好的Alpha结果。一年期收益受到近期收益的显著影响,并包含短期回归效应。为了在BRAIN中实现动量效应作为Alpha,我们需要使用不同的方法或添加条件。


为了更清楚地看到动量效应,我们可以使用以下方法:
ps:很好这里我看不懂了,无法理解


后面的要求就是写一个alpha:计算一年中价格上涨的天数。

ts_sum(if_else(greater(returns,0),1,0),250)

ps:乍一看,我崩溃了,更不理解了,那就有请deepseek登场!

“过去 250 个交易日中,有多少天是上涨的?”

这是一个计算250 天内上涨天数计数 的因子,常用于量化策略中衡量股票的 上涨持续性

  • greater(returns, 0)判断每日收益率是否 > 0(即当天是否上涨),返回布尔值(True/False

  •  if_else(condition, 1, 0)将布尔值转换为数值(类似 int(condition))。如果condition是True,则返回1;如果condition是False,则返回0。

  • ts_sum(..., 250)对过去 250 天的结果求和(统计过去 250 天中 收益率为正的天数。)

 

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐