怎样按因子值排序之后分成多组

目前有因子表数据如下,根据因子值的大小把每天的股票分成多组,怎么实现?

attachments-2022-09-F7MAWsPX632c3029c2a5d.png


请先 登录 后评论

2 个回答

mhxiang

可以通过cutPoints函数和asof函数实现。如:

 sym=take(string(100000..100010),20)
 date=sort(take(2022.04.27..2022.04.28,20))
  factor_value= 1..10 join take(int(),3) join 3..9
 tb= table( sym, date, factor_value)
 select *,asof(cutPoints(int(factor_value*100000),3),factor_value*100000)+1 as factor_quantile from tb context by date  csort  factor_value having  size(distinct(factor_value*100000))>3 


attachments-2022-09-6bJoh7NB632c30cc8bfda.png



请先 登录 后评论
Huikang Xu

上述代码的重复值个数统计部可以直接使用 nunique 函数实现:

select *,asof(cutPoints(int(factor_value*100000),3),factor_value*100000)+1 as factor_quantile from tb context by date  csort  factor_value having  nunique(factor_value*100000)>3 

请先 登录 后评论