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

https://www.joinquant.com/view/community/detail/ae835141dc4c36a7c0d67cb1c435b2b8

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值