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

使用fbprofhet对CF期货价格的预测

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将趋势的价格按照趋势,周期性,随机性进行拟合得到最终的预测区间,对于短期内的趋势预测准确性尚可。 本文是针对主力合约价格进行预测拟合,比较粗糙,后续还会继续改进,考虑节假日,季节性等进行调整。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值