如何将fitKCA函数应用到yfinance获取的numpy行情数组
解决fitKCA函数调用问题的完整步骤
1 前置依赖安装
首先确保你安装了所有需要的库,除yfinance外还需要pykalman、numpy和pandas:
!pip install yfinance pykalman numpy pandas
导入所需依赖:
import numpy as np import pandas as pd import yfinance from pykalman import KalmanFilter
之后将你获取到的fitKCA函数代码完整复制到代码文件中,完成函数定义。
2 数据获取与预处理
你之前仅初始化了Tickers对象,还需要拉取历史行情数据,同时要注意fitKCA对输入参数的格式要求,这也是大部分运行报错的原因:
- 参数
t不能是日期字符串/datetime类型,需要转成数值型时间索引,否则函数内计算时间间隔h会直接报错 - 参数
z需要是形状为(样本数, 1)的二维numpy数组,不能直接传入一维收盘价序列 - 参数
q不是随机种子,是初始状态协方差的缩放系数,金融时序场景下初始可设为0.001~1之间的数值,后续可根据拟合效果调整
数据处理代码示例:
# 拉取两个标的的日线数据,可自行调整时间周期 tickers = yfinance.Tickers('GCV22.CMX CLV22.NYM') hist_data = tickers.history(period='2y') # 以黄金期货GCV22.CMX为例处理输入参数 # 提取收盘价序列,删除空值 close_series = hist_data['Close']['GCV22.CMX'].dropna() # 处理时间索引t:转成从0开始的数值步长,也可根据需求转成时间戳数值 t = np.arange(len(close_series)) # 处理观测值z:把一维收盘价转为符合要求的二维数组 z = close_series.values.reshape(-1, 1) # 设置q的初始值 q = 0.01
3 调用fitKCA函数
将预处理好的参数直接传入函数即可,示例如下:
# 调用函数,此处设置向前预测3步,不需要预测的话fwd参数留空默认0即可 x_mean, x_std, x_covar = fitKCA(t, z, q, fwd=3) # 结果说明 # x_mean形状为(样本数+预测步数, 3),三列分别对应价格平滑值、价格变化速度、价格变化加速度 # x_std对应三个维度的标准差 # x_covar为状态协方差矩阵 print("平滑后的价格序列:", x_mean[:, 0]) print("价格变化速度:", x_mean[:, 1]) print("价格变化加速度:", x_mean[:, 2])
4 常见报错排查
- 维度不匹配报错:检查
z是否已经reshape为二维数组 - 时间计算报错:检查
t是否为纯数值型数组,未混入日期、字符串类型 - 拟合效果偏差大:调整
q的数值,q越大模型对价格波动的敏感度越高
内容的提问来源于stack exchange,提问作者Gloria Dalla Costa
相关产品推荐
相关产品推荐

