使用决策树预测大盘指数

本文探讨了使用决策树预测大盘指数的问题,指出简单的模型可能容易过拟合,通过设置阈值改进预测效果。作者分享了处理数据、使用Python库如Talib和Scikit-Learn进行预测的步骤,并通过调整决策树参数寻找最佳模型,但发现决策树预测大盘的稳定性不足,可能因数据选择不当导致因子重要性为0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 在和坛友们经过友好讨论以后,我认为时间对于预测大盘来说确实是一个不可忽视的信息,粗暴地交叉验证获得的准确率,以及依靠这个准确率进行的调参,很容易过拟合。
  • 以及,我之前发现一个问题,如果单纯地把30天后的涨跌算作大盘指数涨跌,很容易让模型拟合噪音,于是我设定了10%的阈值,高于这个阈值的时候才认为大盘在涨,低于这个阈值的时候才认为大盘在跌。当然,更好的办法是使用mean in 30 days来作为指数涨跌的依据。不过个人觉得设定阈值已经足够表现大盘了。
  • 于是我熬夜改完了代码,发现这样一件事,决策树对于大盘的预测很稳健性很差。之前的帖子说决策树相对比较有效一定是过拟合了……嗯。
  • 还有一点,决策树认为有一些因子重要性为0,也有可能是我们选取数据的时候,没选取到足够预测大盘涨跌的有效数据。

  • import numpy as np
    import pandas as pd
    from CAL.PyCAL import Date
    from CAL.PyCAL import Calendar
    from CAL.PyCAL import BizDayConvention
    from sklearn.tree import DecisionTreeClassifier
    import seaborn as sns
    import talib

    又是处理数据……头疼

    def max_arr(arr):
    2
        try:
    3
            se=talib.MAX(np.array(arr),30)
    4
        except:
    5
            se=np.array([np.nan]*len(arr))
    6
        return se    
    7
    def min_arr(arr):
    8
        try:
    9
            se=talib.MIN(np.array(arr),30)
    10
        except:
    11
            se=np.array([np.nan]*len(arr))
    12
        return se
    13
    fields = ['tradeDate','closeIndex', 'highestIndex','lowestIndex', 'turnoverVol','CHG','CHGPct']
    14
    stock = '000300'
    15
    #tradeDate是交易日、closeIndex是收盘指数、h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值