【从零开始玩量化15】如何计算历史行情分位点

本文详细介绍了如何使用quantstats包中的pct_rank函数来计算股票价格的分位点,通过实例展示了1年期、3年期和5年期分位点的计算与分析,帮助理解价格在历史分布中的位置,以便于量化策略的制定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分位点

这是量化分析中,分位点最直观的表示当前价格高低,其具体数值是一个百分比,取值在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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

量化投资技术

支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值