分位点
这是量化分析中,分位点最直观的表示当前价格高低,其具体数值是一个百分比,取值在0到100之间,代表一段时间内,价格的排名顺序。先来看一下我做出来的可视化效果。
下图为近一年的申万银行指数历史行情数据,我在上边画了三条线,分别表示1年期、3年期、5年期分位点。
可以看到,1年期的分位点已经上升到了50%以上,而3年期和5年期还在20%。说明最近在上涨,但中长期位置还是比较低。
pct_rank
具体使用stats.pct_rank
,其源码如下。
def pct_rank(prices, window=60):
"""Rank prices by window"""
rank = _utils.multi_shift(prices, window).T.rank(pct=True).T
return rank.iloc[:, 0] * 100.
prices是以时间为index,以价格为value的Series,window是窗口天数,一年取我选取250。
实战
先想办法获取到历史数据,存成一个pandas的数据表df
,首先需要将df
的索引设置为日期,这样就可以直接计算了。
import quantstats as qs
df = ak.stock_zh_a_hist(symbol='600519', adjust='hfq')
df.index = res['日期']
df['pct_rank1'] = qs.stats.pct_rank(df['收盘'], 250)
df['pct_rank3'] = qs.stats.pct_rank(df['收盘'], 750)
df['pct_rank5'] = qs.stats.pct_rank(df['收盘'], 1250)
df