# 量化排名,rank举例 **Published by:** [KeepLearning](https://paragraph.com/@keeplearning-2/) **Published on:** 2023-03-21 **URL:** https://paragraph.com/@keeplearning-2/rank ## Content 一直对量化的排名有点糊涂,今天搞清楚一下。df['mean'] = df['close'].rolling(n).mean() df['std'] = df['close'].rolling(n).std(ddof=0) df['upper'] = df['mean'] + 2 * df['std'] df['lower'] = df['mean'] - 2 * df['std'] df['count'] = 0 df.loc[df['close'] > df['upper'], 'count'] = 1 df.loc[df['close'] < df['lower'], 'count'] = -1 df[factor_name] = df['count'].rolling(n).sum() ('Boll_count', True, [34], 0.5), candle_begin_time symbol close 因子 Boll_count_[34] Boll_count_[34]rank Adosc[34] Adosc_[34]_rank 30 2023-03-20 08:00:00 BNBUSDT 332.62 4.00 1.0 3.0 0.846631 5.0 31 2023-03-20 08:00:00 BTCDOMUSDT 1680.20 3.75 8.0 5.0 1.000000 2.5 32 2023-03-20 08:00:00 BTCUSDT 27694.40 3.25 3.0 4.0 1.000000 2.5 33 2023-03-20 08:00:00 DEFIUSDT 598.40 1.75 -3.0 1.0 1.000000 2.5 34 2023-03-20 08:00:00 ETHUSDT 1728.27 2.25 -1.0 2.0 1.000000 2.5 BTCDOMUSDT bollcount根据K线算出来的值是8,也就是Boll_count_[34]的值。在5个币种种值最大,('Boll_count', True, [34], 0.5), 我们设置的是True,True的意思是值越大,排名的数值页就越大,所以它Boll_count_[34]rank的值是5,在所有5个Boll_count_[34]rank排名中值最大。算因子的时候是5.0*0.5,可以看到True的时候,这个最终的因子算出来也越大。最后就是因子的排序,这个没有True和False的概念(应该也是可以设置的),默认是做多因子最小的,做空因子最大的。 所以刚才('Boll_count', True, [34], 0.5),设置为True,表示这个因子算出来的值越大,这个因子的排名值也越大,然后就是算出来的最终因子也越大,最终因子默认是做多因子最小的,做空因子最大的,所以相当于做空这个因子。 然后再看Boll count的含义,看定义是突破上轨Bollcount记为1,突破下轨记为-1,按常理说是个趋势指标,但是设置为True,则是个反转指标。说明突破上轨越多,我就越要做空它。 相当于设置为True的话,单因子算出来的值越大,我就做空它。 设置为False的话,因子算出来的值越大,我就做多它。 ## Publication Information - [KeepLearning](https://paragraph.com/@keeplearning-2/): Publication homepage - [All Posts](https://paragraph.com/@keeplearning-2/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@keeplearning-2): Subscribe to updates