Python量化交易学习笔记(43)——深度学习挖短线股3

前面的文章已经介绍,将短线个股挖掘问题转化为深度学习处理的分类问题,并且已经完成训练,将训练得到的模型保存到本地。本文将记录如何使用Keras加载模型并进行预测的过程。

结果预测

首先,找到训练模型保存的目录,加载模型:

    # 加载模型
    loaded_model = keras.models.load_model('./model/{}'.format(stk_code))

然后,读入数据,将数据转化为字典类型作为预测所使用的输入字典,键为特征的索引,值为tensor。我们使用了220个特征,索引值依次为0至219。

    # 读入数据
    data_file = './baostock/prediction_data_pre/{}.csv'.format(stk_code)
    in_df = pd.read_csv(data_file)
    # 预测用的输入字典
    temp_dict = {}
    # 将数据导入输入字典
    for i in range(in_df.shape[1]):
        temp_dict[i] = in_df['{}'.format(i)].tolist()
    input_dict = {name: tf.convert_to_tensor(value) for name, value in temp_dict.items()}

接着,调用模型的predict方法进行预测,将预测结果保存到列表results中。

    # 进行预测
    predictions = loaded_model.predict(input_dict)
    results = []
    for i in range(in_df.shape[0]):
        results.append(predictions[i][0])

然后,我们在未来用于回测的数据后添加一列predict_result,并保存到本地。这样backtrader就可以通过加载本地文件,完成基于深度学习的回测。

    # 输出到文件
    data_file = './baostock/data_ext/{}.csv'.format(stk_code)
    out_df = pd.read_csv(data_file)
    out_df = out_df[(out_df['date'] > '2017-12-31') & (out_df['date'] <= '2020-06-30')]
    out_df['predict_result'] = results
    out_df.to_csv('./baostock/predict_results/{}res.csv'.format(stk_code), index = False)

最后,还是记得在每只股票完成预测后,清理内存,以防内存被刷爆。

    # 清理内存
    backend.clear_session()

以上就完成了加载本地模型进行预测的过程,完整代码如下。下一篇文章将记录如果使用预测结果,进行多股回测。

import tensorflow as tf
import numpy as np
import pandas as pd
import os
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras import backend

stk_code_file = './stk_data/dp_stock_list.csv'
stk_list = pd.read_csv(stk_code_file)['code'].tolist()

for stk_code in stk_list:
    print('processing {} ...'.format(stk_code))
    # 加载模型
    loaded_model = keras.models.load_model('./model/{}'.format(stk_code))
    # 读入数据
    data_file = './baostock/prediction_data_pre/{}.csv'.format(stk_code)
    in_df = pd.read_csv(data_file)
    # 预测用的输入字典
    temp_dict = {}
    # 将数据导入输入字典
    for i in range(in_df.shape[1]):
        temp_dict[i] = in_df['{}'.format(i)].tolist()
    input_dict = {name: tf.convert_to_tensor(value) for name, value in temp_dict.items()}
    # 进行预测
    predictions = loaded_model.predict(input_dict)
    results = []
    for i in range(in_df.shape[0]):
        results.append(predictions[i][0])
    # 输出到文件
    data_file = './baostock/data_ext/{}.csv'.format(stk_code)
    out_df = pd.read_csv(data_file)
    out_df = out_df[(out_df['date'] > '2017-12-31') & (out_df['date'] <= '2020-06-30')]
    out_df['predict_result'] = results
    out_df.to_csv('./baostock/predict_results/{}res.csv'.format(stk_code), index = False)
    # 清理内存
    backend.clear_session()

博客内容只用于交流学习,不构成投资建议,盈亏自负!

个人博客:http://coderx.com.cn/(优先更新)
项目最新代码:https://gitee.com/sl/quant_from_scratch
欢迎大家转发、留言。有微信群用于学习交流,感兴趣的读者请扫码加微信!
如果认为博客对您有帮助,可以扫码进行捐赠,感谢!

微信二维码微信捐赠二维码
在这里插入图片描述在这里插入图片描述
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
本文对票的选择过程进行了系统分析,并使用深度学习对该票进行了预测。 无需任何先验知识即可学习庞大的原始数据集并从中提取重要数据的能力使其具有吸引力。 深度学习模型的性能高度依赖于优化器,损失函数,网络结构,激活函数和其他参数。 本文旨在研究自动编码器神经网络在选过程中的性能,并使用长短期记忆(LSTM)模型对这些票进行未来预测。 该研究涉及标准普尔500指数中每家公司2013年至2018年的5年静态每日数据。该研究的假设是,用户愿意将固定数量的票投资并已经拥有票。 自动编码器已应用于主要根据用户要投资的数量和所有票的最后一天收盘价进行过滤以考虑承受能力的票。 原始数据和重新创建的数据之间的RMSE得分将用于选择票。 考虑到用户的行为是中立的,因此选择了RMSE得分最低的前50只票和RMSE得分最高的倒数50只票。 这些选定票的潜在特征将被检查。 在这100种票中,将通过检查它们与用户已经拥有的票之间的相关性来选择不同行业的20种票。 LSTM模型将使用adam优化器预测这20只票的第二天未来价格,经验结果表明,RMSE得分最低的前50只票将带来低回报和低风险。 这意味着自动编码器结果中排名前50位的票为蓝筹。 同样,具有高RMSE得分的排名前50位的票也会带来高风险的高回报。 这意味着自动编码器结果中的前50名票给出了小盘。 自编码器神经网络后,相关估计得到了显着改善。 通过使用adam优化程序,使用LSTM进行的未来一天库存预测可以提供均方根误差为2.22的高精度。 我们的研究提供了一些见识和有用的路线图,可用于进一步研究使用深度学习网络进行的票市场分析和预测。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值