【聚宽本地数据JQData】【转载】使用fbprofhet对CF期货价格的预测

原文地址:使用fbprofhet对CF期货价格的预测 - 蜗牛往上爬 - JoinQuant

Facebook在2017年开源了一个时间序列预测的算法,叫做fbprophet,其功能包括:
1、为预测设置上下限;
2、设置趋势断点;
3、处理季节性和节假日效应;
4、允许乘法形式的季节性;
5、区间预测;
6、处理异常值;
7、处理非日度数据;
8、模型检测。
可以用这个算法,来为CF的日度数据进行预测,做出一个基础性的预测。初步探索如下:
我们推荐使用conda安装,由于fbprophet需要调用pyStan这个开源工具,因此安装命令为下述两条:

conda install -c conda-forge pystan
conda install -c conda-forge fbprophet
安装好之后:

导入相应的三方库

from jqdatasdk import *
import pandas as pd
import matplotlib.pyplot as plt
from fbprophet import Prophet

使用JQDATA获取CF期货主力合约期货价格,可以获取主力合约期货价格,具体代码参考:

https://www.joinquant.com/help/api/help#JQData:

auth('账号','密码')#输入jqdata的账号和密码
df = get_price('CF9999.XZCE', start_date='2010-01-01', end_date='2020-12-31', frequency='daily')

期货概况

fbprophet算法的大概步骤是,先生成一个Prophet实例,然后调用fit方法进行拟合,调用predict方法进行拟合。代码如下:
 

m = Prophet()
m.fit(df)
future_time = m.make_future_dataframe(periods=365)
forecast = m.predict(future_time)
fig1 = m.plot(forecast)
fig2 = m.plot_components(forecast)

 

运行fbprophet后对以下代码进行回测:

 

import matplotlib.pyplot as plt
import pandas as pd
from fbprophet import Prophet
df.rename(columns={'日期':'ds','今收盘':'y'},inplace=True)
df_price=df[['ds','y']]
m=Prophet()
m.fit(df_price)
m.add_country_holidays(country_name='CN')
future_time = m.make_future_dataframe(freq='B',periods=365)
forecast = m.predict(future_time)

m.plot(forecast)
m.plot_components(forecast)

plt.show()

 

获得最终的运行结果见附件:

从消费季节性上来看,俗话说金三银四,金九银十,这两个消费旺季在fpprophet中还是十分明显的,fb将趋势的价格按照趋势,周期性,随机性进行拟合得到最终的预测区间,对于短期内的趋势预测准确性尚可。
本文是针对主力合约价格进行预测拟合,比较粗糙,后续还会继续改进,考虑节假日,季节性等进行调整。ImgImg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值