3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)平台中,若需要指定特定日期(如 2020 年 1 月 1 日)作为复权基准日进行定点复权,应使用 get_bars 函数。
该函数提供了一个 fq_ref_date 参数,专门用于设置复权基准日期。
使用 get_bars 函数,并将 fq_ref_date 参数设置为 datetime.date(2020, 1, 1) 或对应的字符串格式。
# -*- coding: utf-8 -*-
from jqdata import *
import datetime
def initialize(context):
# 设定要查询的标的
security = '000001.XSHE'
# 指定复权基准日为 2020年1月1日
ref_date = datetime.date(2020, 1, 1)
# 获取数据
# count: 获取的条数
# unit: 时间单位,'1d'表示天
# fields: 获取的字段
# fq_ref_date: 复权基准日期
bars = get_bars(
security,
count=10,
unit='1d',
fields=['date', 'open', 'close', 'high', 'low', 'volume'],
include_now=False,
fq_ref_date=ref_date
)
# 打印结果
print(f"以 {ref_date} 为基准复权的数据:")
print(bars)
# 这是一个在回测或模拟交易中运行的示例结构
# 如果是在研究环境中,直接运行函数体内的代码即可
fq_ref_date: 复权基准日期。
datetime.date(2020, 1, 1) 时,系统会以该日的收盘价为基准。None,则返回不复权(Raw)数据。datetime.datetime.now(),即返回前复权数据。get_price 函数主要通过 fq='pre'(前复权)或 fq='post'(后复权)来控制,虽然简便,但不支持自定义具体的基准日期。因此,定点复权必须使用 get_bars。get_bars 默认返回的是 numpy.ndarray 格式。如果需要 pandas.DataFrame 格式,请在调用时设置参数 df=True。Q: get_price 函数能否指定具体的复权日期?
A: 不能。get_price 的 fq 参数仅支持 'pre' (前复权)、'post' (后复权) 或 None (不复权)。如果需要指定具体日期进行定点复权,请使用 get_bars。
Q: fq_ref_date 设置为未来日期会怎样?
A: 如果设置为一个未来的日期,或者比当前数据更晚的日期,获取到的数据效果等同于后复权。通常建议设置为 datetime.date(2000, 1, 1) 这样的早期日期来获取纯粹的后复权数据。
Q: 为什么使用定点复权?
A: 定点复权常用于回测分析中需要固定某个时间点(如策略开始日)作为价格锚点的情况,或者在对比不同时间段的收益率时,消除分红配股对价格缺口的影响,使价格序列在特定时间点上保持连续和可比性。