对离群值怎么操作。这个就是拟合操作的。用更弯曲的曲线去拟合,如常见函数log
多元回归和单元回归
如题,如果我有多个自变量,来对一个因变量进行OLS回归,有没有operator可以做到?(ts_regression似乎只支持一个自变量)
0
Comments 评论
1 comment 1评论
Sort by 排序方式
- 1 year ago
您的观察是正确的,多元回归运算符在后续才会推出,目前暂不提供。可以思考有无替代性的方法。
想法逻辑落地到表达式中
假设股票有量价特征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
在测试时发现如下的问题,想请教一下这一现象的原因,及相应的改进措施。
0Comments 评论
1 comment 1评论
Sort by 排序方式
- 1 year ago
这大概率是因为您的raw Alpha value 在某天出现了极端的数值,过高或者过低。请尝试考虑到极端值并处
极端值过大或过低,我们需要对极值进行nan操作,平滑或其他处理
昨日换手率相比
volume/sharesout
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 ) |
按分组(如波动组、行业、市值等)计算平均收益率。 | 衡量各组的历史表现,用于比较不同组的盈利能力或风险特征。 | 每个分组的平均收益率(如组 1:0.5%/ 月,组 10:2%/ 月)。 |
rank(value) |
value :分组统计值(如平均收益率) |
对分组结果从高到低排序(1 为最高, |
步骤 | 核心目标 | 关键工具 / 函数 | 数据流向 | 策略意图 |
---|---|---|---|---|
1 | 衡量市场波动风险 | ts_std_dev |
收益率序列 → 波动性数值(wave ) |
识别市场风险状态 |
2 | 划分市场波动区间 | bucket + rank |
波动性数值 → 波动分组(my_group ) |
将市场分为低、中、高波动环境 |
3 | 筛选交易时机 | if_else |
波动分组 → 有效收益率(my_return ) |
仅在极端波动区间交易,规避震荡 |
4 | 评估分组表现与排序 | group_mean + rank |
收益率 → 分组统计值(value )→ 排名 |
比较各组历史表现,验证因子有效性 |
通过表格可以直观看到,该策略通过波动性过滤 和分组排序,实现了 "在极端波动环境中捕捉趋势机会,在中等波动环境中空仓避险" 的逻辑,适用于趋势跟踪或事件驱动型交易策略。
目前在平台上只会使用ts_mean计算简单移动平均,但如果想要计算指数移动平均该怎么办呢?比如计算下图所示ema指标
参考这个operator:
ts_decay_exp_window(x, d, factor = f)
ts_decay_exp_window(x, d, 因子 = f)
Returns exponential decay of x with smoothing factor for the past d days. Detailed description
返回过去 d 天具有平滑因子的 x 的指数衰减。详细说明
分类指标方法论 指的是一种分类grouping数据的方法论: At a Glance: FactSet Hierarchy DataFeed
指的是一种分类分组数据的方法论: At a Glance: FactSet Hierarchy DataFeed
量纲不匹配。如矩阵max和vec
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))
)。 - 识别长期趋势反转信号(如 200 日收益率由负转正,可能预示牛熊转换)。
金融逻辑 :
通过滞后数据捕捉长期市场动量,过滤短期噪音,适用于中长期趋势跟踪策略。
2. 风险管理与滞后效应分析
应用场景 :
评估资产价格对宏观事件(如政策调整、经济数据发布)的滞后反应 。
例:
- 分析某行业指数在 "碳中和" 政策发布 200 天后的收益率表现,判断政策对行业的长期影响。
- 计算滞后波动率(如用滞后 200 日的收益率计算波动率),用于风险模型(如 VaR)的参数估计。
-
金融逻辑 :
市场对信息的消化可能存在延迟,滞后数据可用于验证因果关系的时间跨度。
3. 多因子模型与滞后特征构造
应用场景 :
在量化投资中,将滞后收益率作为因子输入模型,捕捉价格序列的自相关性 或记忆效应 。
例:
- 构造因子
Factor = ts_delay(returns, 200) + ts_delay(returns, 100)
,用于预测未来收益率。 - 检验 "长期反转效应"(Long-term Reversal):若某资产 200 日前收益率极高,未来可能出现均值回归。
金融逻辑 :
利用价格序列的历史依赖性(如动量或反转特性)构建预测信号。
我有观察到各市场(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()等运算符实现。核心的一件事情是,您希望做多哪类股票,做空哪类股票?计算出数据可能仅是开始的一步