聚宽数据JQData中的股票复权方法

探讨股票量化回测中的复权价格概念,包括除权、除息、前复权与后复权方法,以及涨跌幅复权法。介绍聚宽平台的JQData在数据采集与复权处理上的优势。

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

转载自:https://blog.youkuaiyun.com/showland/article/details/84635227

进行股票量化回测,面临的第一个坑就是数据坑——首先你得有数据,才能进行下一步工作。

在股票数据坑中,有一个很大的坑叫做股票的复权价格。

 

如果一个股票公告说进行分红、配股或者送转,那么这只股票就被赋予了权利,这时股票是含权的,我们说的除权、复权里的权就是权利的意思。

当一个含权的股票在权利被具体实施后,就要进行除权。

例如含有10转10权利的股票,在实施送转前股价是100¥,总共1亿股本;实施10转10之后,总股本变成了2亿,如果股价保持不变,相当于市值凭空多了一倍,所以这时候要除权——股数翻倍,股价减半。

除了除权还有除息,息就是股息红利的意思。

一个简单的例子,一家公司有1亿股,股价是100¥,这个时候公司的总价值是100亿,准备每股给股东派现10¥,每股送出去10¥之后,公司的总价值会变成90亿,而股数不变,所以这个时候要除息,股价变成90¥。

 

除权除息之后,股价里不再包含送转、股息。如果不进行处理,股票价格在除权那天就会平空出现一个缺口——缺口之前是包含送转、股息的股票;缺口之后是不包含送转、股息的股票。

为了修复这个缺口,消除这种不连贯,就产生了一种操作,叫做复权。简单来说,复权就是让股价重新含权含息,以保持股票价值的连续性。

复权的方法主要有两种,一种是保持最初的股价不变,后面的股价在此基础上做加法,称为后复权;一种是保持当前的股价不变,前面的股价在当前股价的基础上做减法,称为前复权。

 

平时大家看的一般是前复权价格,这样能保证当前价格和实时价格是一致的,而且又能保证K线涨跌幅的连贯性。

不过前复权方法也分为很多种,在普通的看盘软件上,看到的都是前减复权——把当前的股价固定,前面股价是减去现金分红和流通股变动比例之后的数值。

如果一只股票分红次数比较多,做减法之后,减着减着股价就变成负数了,例如贵州茅台,经过前减复权后,2005年的股价是-30多元——

价格是负的,对着图形看看整体走势还可以,难以用来回测。

 

后来,有人搞出了涨跌幅复权法——

这种复权方法的详细说明有很长。

简单来说不再是做加减法,而是做乘除法,这样股价永远是正的。也能反映出分红送转的占比情况,保证复权后K线的连续性。在万得股票软件中,用的复权方法就是涨跌幅复权法。前复权之后贵州茅台的股价是这样的——

现实生活中,你有100W,资产增加了20W,你可以说你身价增加了20W;如果你有20W,资产同样增加了20W,你可以说你的身价增加了20W,但是你可以说你的身价增加了一倍——虽然都是20W,但更深层次而言,两个20W不是同一个概念。

很显然,回测中用万德数据的复权方法,在计算具体收益率时比较科学。

 

聚宽作为国内领先的量化平台,在数据方面自然也有独到之处。

我用聚宽平台提供的JQData采集了一下股票数据,发现聚宽的前复权股票价格用的应该也是类似涨跌幅复权的方法。

调用方式很简单:验证用户信息后,直接用get_price函数获取即可,还可以根据需要设置要获取的字段——

获取到的数据是DataFrame类型,如下——

获取到以后,直接可以进行存数据库、存文件等本地化处理,非常方便。

 

进行回测时,除了用复权数据之外,还可以考虑用原始股价。用原始股价,同时得需要股票的分红信息——在分红除权时,把分得的红利、送转等信息考虑进去。

股票价格只是聚宽数据中的一部分,股票基本面数据,各种因子数据聚宽都有提供,还包括指数数据、期货数据。总体来说,聚宽JQData提供的数据还是比较靠谱的,本地化后用来做些统计分析还是比较方便的。

很高兴能看到一个这样开放的平台。
--------------------- 
作者:参谋 
来源:优快云 
原文:https://blog.youkuaiyun.com/showland/article/details/84635227 
版权声明:本文为博主原创文章,转载请附上博文链接!

### 聗失的聚宽量化交易平台教程 #### 一、简介 聚宽(JoinQuant)是一个专注于量化投资研究的在线平台,提供了丰富的金融数据接口和强大的回测功能。它支持多种编程语言,尤其是 Python 的开发环境[^3]。 #### 二、安装与配置 为了使用 JQData 提供的数据服务,开发者可以通过 pip 工具轻松完成库文件的安装。以下是基本的操作命令: ```bash pip install jqdata ``` 此操作适用于 Windows、Mac 和 Linux 多种操作系统,并兼容 Python2 和 Python3 版本。 #### 三、基础 API 使用 JQData 平台的核心优势在于其简单易用的 API 接口设计。仅需少量代码即可获取所需的历史行情数据或其他市场指标。例如,下面展示如何查询某只股票一段时间内的收盘价: ```python import jqdata def get_close_price(stock_code, start_date, end_date): df = jqdata.get_price( security=stock_code, start_date=start_date, end_date=end_date, fields=['close'] ) return df['close'] prices = get_close_price('000001.XSHE', '2023-01-01', '2023-09-01') print(prices) ``` 上述脚本定义了一个函数 `get_close_price` 来提取指定时间段内特定证券的每日收盘价格。 #### 四、动态复权处理 当涉及长期历史数据分析时,考虑到股票可能经历拆分、合并或分红等情况的影响,启用动态复权模式尤为重要。这样可以确保所使用的股价序列保持连贯性和一致性[^4]。 需要注意的是,在实际应用过程中不应保存跨越不同日期间调用此类 API 所返回的结果,因为一旦发生任何改变复权因子的行为,则之存储的信息可能会变得不准确。 #### 五、费用模拟设定 构建完整的交易策略模型还需要考虑成本因素,比如买卖手续费及印花税率等现实世界中的开支项目。这些参数可以在初始化阶段按照个人需求灵活调整。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值