对离群值怎么操作。这个就是拟合操作的。用更弯曲的曲线去拟合,如常见函数log
多元回归和单元回归
如题,如果我有多个自变量,来对一个因变量进行OLS回归,有没有operator可以做到?(ts_regression似乎只支持一个自变量)
1 comment 1评论
您的观察是正确的,多元回归运算符在后续才会推出,目前暂不提供。可以思考有无替代性的方法。
想法逻辑落地到表达式中
假设股票有量价特征A、B
那么这样的逻辑应该怎么表达呢:过去x天内,属性A达到前x%的股票的属性B-属性A达到后y%的股票的属性B
定义振幅,此处简单将振幅定义为过去1个月的收益率的标准差
wave = ts_std_dev(returns, 20);
简单振幅就是对这个回报率2-天的波动率
2.使用bucket进行分组后直接取收益率。
my_group = bucket(rank(wave),range="0.1,1,0.1");
对股票排名分组
对mygroup
3.以分组的值取收益率:
my_return = if_else( my_group <=2 || my_group >=8, returns, nan)
条件筛选
含义: 当波动性处于最低的 2 组(my_group <=2)或最高的 3 组(my_group >=8)时,保留原始收益率(参与交易)。 否则,将收益率设为nan(不参与交易,相当于空仓)。 金融意义: 高波动策略:在市场波动极大时(如危机、重大利好),可能存在趋势性机会,因此参与交易。 低波动策略:在市场波动极小时,可能预示即将突破,提前布局以捕捉潜在趋势。 回避中等波动:中等波动市场通常缺乏明确趋势,交易成本可能吞噬收益,因此选择空仓。 策略逻辑总结 该策略通过波动性筛选交易时机,核心逻辑是: 高波动捕捉趋势:在市场剧烈波动时,趋势性行情更明显,此时参与交易。 低波动布局突破:在市场极度平静时,可能酝酿突破行情,提前介入。 规避震荡行情:回避波动适中的区间,减少无方向交易带来的亏损。 潜在应用场景 期货 / 外汇市场:在重大数据发布(如非农、利率决议)前后,波动性激增,适合该策略。 趋势跟踪策略:结合波动性过滤,避免在震荡市中频繁止损。 期权交易:高波动时期权价格昂贵,可选择在低波动时买入期权,等待波动放大时获利。 需要注意的是,实际应用中还需考虑交易成本、滑点及参数优化等因素。 weight concerntration在某一天过高的原因 Follow 跟随Followed by 2 people CW51623 1 year ago 在测试时发现如下的问题,想请教一下这一现象的原因,及相应的改进措施。 0 Comments 评论 1 comment 1评论 Sort by 排序方式 WL13229 1 year ago 这大概率是因为您的raw Alpha value 在某天出现了极端的数值,过高或者过低。请尝试考虑到极端值并处 极端值过大或过低,我们需要对极值进行nan操作,平滑或其他处理
含义:
my_group <=2
my_group >=8
nan
该策略通过波动性筛选交易时机,核心逻辑是:
需要注意的是,实际应用中还需考虑交易成本、滑点及参数优化等因素。
在测试时发现如下的问题,想请教一下这一现象的原因,及相应的改进措施。
这大概率是因为您的raw Alpha value 在某天出现了极端的数值,过高或者过低。请尝试考虑到极端值并处
极端值过大或过低,我们需要对极值进行nan操作,平滑或其他处理
昨日换手率相比
volume/sharesout
什么样的因子是Average,什么样的是Good、Excellent、Spectacular?有具体的划分标准吗?
fitness的比较标准
目前发现的规律是--Fitness在如下区间时,Alpha为对应的等级:
Average:(1 - 1.5] 平均:(1 - 1.5]
Good:(1.5 - 2] 好:(1.5 - 2]
Excellent:(2 - 2.5] 棒棒哒:(2 - 2.5]
Spectacular:(2.5 - ∞) 壮观:(2.5 - ∞)
终止中性化,用做多来实现多头盈利
中性化会让alpha vector有负数,关闭掉外部的中性化选项,alpha公式、中性化都由alpha_func(.)来完成。
最终公式为max(alpha_func(.),0),这样模拟A股只可以做多的模式可以吗。
或者是否有更好的方法来模拟回测适用于A股的因子?您好,这样的方式是可行的。但我个人并不建议您构建一个只有多头的Alpha,这样你会暴露在市场的风险之下。建议你可以使用if_else等函数,使得做空的股票更多是属于沪深300等指数类型的成分股,这样其实也非常贴近于现实情况
for循环
最近用fast expression实现for循环,但尝试多次后无果,想知道brain平台上能实现for循环的用法吗?
感谢提问,平台本身每天都会重新计算一次Alpha的值,因此它本身就是一个循环。
希望上述答案能帮到您,如否,烦请提供稍微具体的Idea,让我们一起思考如何解决。
用这个策略运用于每天的数据
策略实现
请问如果我在不同行业算出了一个行业的值,我想把这个值赋给行业内所有公司,使得该行业中的所有公司权重相同,然后再按行业排序,怎么操作呢?
比如A行业3个公司算出来一个行业值为2,B行业4个公司算出来一个行业值为3,然后我想让A行业3个公司都是2,B行业4个公司都是3,然后再rank(【2,2,2,3,3,3,3】)得到7个公司的
这个操作并不难实现,你只需通过以下操作即可。
value = group_mean(数据点名称,grouping); rank(value)
以分组,如对行业或市场对mou
value = group_mean(returns, grouping)
returns
grouping
my_group
rank(value)
value
对分组结果从高到低排序(1 为最高,
ts_std_dev
wave
bucket
rank
if_else
my_return
group_mean
通过表格可以直观看到,该策略通过波动性过滤和分组排序,实现了 “在极端波动环境中捕捉趋势机会,在中等波动环境中空仓避险” 的逻辑,适用于趋势跟踪或事件驱动型交易策略。
目前在平台上只会使用ts_mean计算简单移动平均,但如果想要计算指数移动平均该怎么办呢?比如计算下图所示ema指标
参考这个operator:
Ts_Step(n)是一个生成从n开始递减的值序列的函数。
Ts_Step(n)
n
在任何模拟日di,Ts_Step(n)返回的是di日的表达式值为n,di-1日的值为n-1,依此类推。这形成了一个从n到1的倒数序列,跨越最近的n个模拟天。
di
di-1
n-1
1
将Netrua设置成none后,下列的回测图像也证实了上述的描述
setting中的计算顺序
Decay 衰变 Pasteurization 巴 氏 杀菌 Neutralization (Market for risk neutralization) Neutralization (风险中和市场) Truncation 截断 Risk handling (for risk neutralization) 风险处理(用于风险平衡) Scale to book size 缩放到书籍大小
我们对Pasteurization这个理解,就是对超出范围的股票数据为nan
用rank()后面和前面为什么不会反过来。
ts_delay(returns, 200)
应用场景: 计算长期趋势(如 200 日移动平均线)、动量因子(Momentum)或滞后回报相关性。 例:
T
T-200
sum(ts_delay(returns, 1):ts_delay(returns, 200))
金融逻辑: 通过滞后数据捕捉长期市场动量,过滤短期噪音,适用于中长期趋势跟踪策略。
应用场景: 评估资产价格对宏观事件(如政策调整、经济数据发布)的滞后反应。 例:
金融逻辑: 市场对信息的消化可能存在延迟,滞后数据可用于验证因果关系的时间跨度。
应用场景: 在量化投资中,将滞后收益率作为因子输入模型,捕捉价格序列的自相关性或记忆效应。 例:
Factor = ts_delay(returns, 200) + ts_delay(returns, 100)
金融逻辑: 利用价格序列的历史依赖性(如动量或反转特性)构建预测信号。
我有观察到各市场(US、GLB、CHN)在 covid 区间是没有交易的,所以好奇是否可以将中国市场 2015 年 6、7 月的交易拿掉,这段时间很容易有较大的 drawdown (部分逻辑在这段时间相斥),或是有推荐 de risk 的方法,谢谢。
您好。感谢提问。感谢您细致的观察和深入思考。然而,您说的“各市场(US、GLB、CHN)在 covid 区间是没有交易的”是不准确的。我们的IS目前仅给到21年,但实际上21-23年这两年的历史是属于semi-OS即样本外的历史,您的Alpha在这两年的表现至关重要,您的Alpha是否会被选择入库也会跟其有关。因此,它只是被隐藏了,并非不交易。
粗暴地将中国市场 2015 年 6、7 月的交易拿掉,可能导致过拟合。您可以思考系统性的风险对冲方式,例如对冲掉一些常见的风险因素。可用的运算符为vec_neutral
对于拟合度
今天提交的每一个因子都和前几日提交的一个因子(rank(mdf_rds))相关度极高,可是确实是完全不一样的idea呀(比如group_rank(fam_est_eps_rank, pv13_r2_min20_3000_sector),group_rank(-returns,densify(subindustry))等等)
您是否打开了neutralization
用递归
如题,比如我有一个因子的递推公式是Y(i,x) = F(Y(i-1,x)) ,其中i是下标,x是自变量,想问一下如果要写这种因子,应该怎么写呢?
欢迎参加我们的office hour与研究员进行讨论。初步来看,您的idea可以通过ts_Delay()等运算符实现。核心的一件事情是,您希望做多哪类股票,做空哪类股票?计算出数据可能仅是开始的一步
上一篇
下一篇
您的观察是正确的,多元回归运算符在后续才会推出,目前暂不提供。可以思考有无替代性的方法。
想法逻辑落地到表达式中
假设股票有量价特征A、B
那么这样的逻辑应该怎么表达呢:过去x天内,属性A达到前x%的股票的属性B-属性A达到后y%的股票的属性B
定义振幅,此处简单将振幅定义为过去1个月的收益率的标准差
简单振幅就是对这个回报率2-天的波动率
2.使用bucket进行分组后直接取收益率。
对股票排名分组
对mygroup
3.以分组的值取收益率:
条件筛选
昨日换手率相比
volume/sharesout
什么样的因子是Average,什么样的是Good、Excellent、Spectacular?有具体的划分标准吗?
fitness的比较标准
目前发现的规律是--Fitness在如下区间时,Alpha为对应的等级:
Average:(1 - 1.5] 平均:(1 - 1.5]
Good:(1.5 - 2] 好:(1.5 - 2]
Excellent:(2 - 2.5] 棒棒哒:(2 - 2.5]
Spectacular:(2.5 - ∞) 壮观:(2.5 - ∞)
终止中性化,用做多来实现多头盈利
中性化会让alpha vector有负数,关闭掉外部的中性化选项,alpha公式、中性化都由alpha_func(.)来完成。
最终公式为max(alpha_func(.),0),这样模拟A股只可以做多的模式可以吗。
或者是否有更好的方法来模拟回测适用于A股的因子?您好,这样的方式是可行的。但我个人并不建议您构建一个只有多头的Alpha,这样你会暴露在市场的风险之下。建议你可以使用if_else等函数,使得做空的股票更多是属于沪深300等指数类型的成分股,这样其实也非常贴近于现实情况
for循环
最近用fast expression实现for循环,但尝试多次后无果,想知道brain平台上能实现for循环的用法吗?
感谢提问,平台本身每天都会重新计算一次Alpha的值,因此它本身就是一个循环。
希望上述答案能帮到您,如否,烦请提供稍微具体的Idea,让我们一起思考如何解决。
用这个策略运用于每天的数据
策略实现
请问如果我在不同行业算出了一个行业的值,我想把这个值赋给行业内所有公司,使得该行业中的所有公司权重相同,然后再按行业排序,怎么操作呢?
比如A行业3个公司算出来一个行业值为2,B行业4个公司算出来一个行业值为3,然后我想让A行业3个公司都是2,B行业4个公司都是3,然后再rank(【2,2,2,3,3,3,3】)得到7个公司的
这个操作并不难实现,你只需通过以下操作即可。
以分组,如对行业或市场对mou
value = group_mean(returns, grouping)
returns
:收益率序列grouping
:分组依据(如my_group
)rank(value)
value
:分组统计值(如平均收益率)对分组结果从高到低排序(1 为最高,
ts_std_dev
wave
)bucket
+rank
my_group
)if_else
my_return
)group_mean
+rank
value
)→ 排名通过表格可以直观看到,该策略通过波动性过滤和分组排序,实现了 “在极端波动环境中捕捉趋势机会,在中等波动环境中空仓避险” 的逻辑,适用于趋势跟踪或事件驱动型交易策略。
目前在平台上只会使用ts_mean计算简单移动平均,但如果想要计算指数移动平均该怎么办呢?比如计算下图所示ema指标
参考这个operator:
ts_decay_exp_window(x, d, 因子 = f)
返回过去 d 天具有平滑因子的 x 的指数衰减。 详细说明
指的是一种分类分组数据的方法论: At a Glance: FactSet Hierarchy DataFeed
Ts_Step(n)
是一个生成从n
开始递减的值序列的函数。在任何模拟日
di
,Ts_Step(n)
返回的是di
日的表达式值为n
,di-1
日的值为n-1
,依此类推。这形成了一个从n
到1
的倒数序列,跨越最近的n
个模拟天。将Netrua设置成none后,下列的回测图像也证实了上述的描述
setting中的计算顺序
Decay 衰变 Pasteurization 巴 氏 杀菌 Neutralization (Market for risk neutralization)
Neutralization (风险中和市场) Truncation 截断 Risk handling (for risk neutralization)
风险处理(用于风险平衡) Scale to book size 缩放到书籍大小
我们对Pasteurization这个理解,就是对超出范围的股票数据为nan
用rank()后面和前面为什么不会反过来。
有没有去年该时间的stock return
ts_delay(returns, 200)
应用场景:
计算长期趋势(如 200 日移动平均线)、动量因子(Momentum)或滞后回报相关性。
例:
T
天,ts_delay(returns, 200)
表示第T-200
天的收益率,可用于计算过去 200 天的累计收益率(如sum(ts_delay(returns, 1):ts_delay(returns, 200))
)。金融逻辑:
通过滞后数据捕捉长期市场动量,过滤短期噪音,适用于中长期趋势跟踪策略。
2. 风险管理与滞后效应分析
应用场景:
评估资产价格对宏观事件(如政策调整、经济数据发布)的滞后反应。
例:
金融逻辑:
市场对信息的消化可能存在延迟,滞后数据可用于验证因果关系的时间跨度。
3. 多因子模型与滞后特征构造
应用场景:
在量化投资中,将滞后收益率作为因子输入模型,捕捉价格序列的自相关性或记忆效应。
例:
Factor = ts_delay(returns, 200) + ts_delay(returns, 100)
,用于预测未来收益率。金融逻辑:
利用价格序列的历史依赖性(如动量或反转特性)构建预测信号。
我有观察到各市场(US、GLB、CHN)在 covid 区间是没有交易的,所以好奇是否可以将中国市场 2015 年 6、7 月的交易拿掉,这段时间很容易有较大的 drawdown (部分逻辑在这段时间相斥),或是有推荐 de risk 的方法,谢谢。
您好。感谢提问。感谢您细致的观察和深入思考。然而,您说的“各市场(US、GLB、CHN)在 covid 区间是没有交易的”是不准确的。我们的IS目前仅给到21年,但实际上21-23年这两年的历史是属于semi-OS即样本外的历史,您的Alpha在这两年的表现至关重要,您的Alpha是否会被选择入库也会跟其有关。因此,它只是被隐藏了,并非不交易。
粗暴地将中国市场 2015 年 6、7 月的交易拿掉,可能导致过拟合。您可以思考系统性的风险对冲方式,例如对冲掉一些常见的风险因素。可用的运算符为vec_neutral
对于拟合度
今天提交的每一个因子都和前几日提交的一个因子(rank(mdf_rds))相关度极高,可是确实是完全不一样的idea呀(比如group_rank(fam_est_eps_rank, pv13_r2_min20_3000_sector),group_rank(-returns,densify(subindustry))等等)
您是否打开了neutralization
用递归
如题,比如我有一个因子的递推公式是Y(i,x) = F(Y(i-1,x)) ,其中i是下标,x是自变量,想问一下如果要写这种因子,应该怎么写呢?
欢迎参加我们的office hour与研究员进行讨论。初步来看,您的idea可以通过ts_Delay()等运算符实现。核心的一件事情是,您希望做多哪类股票,做空哪类股票?计算出数据可能仅是开始的一步