接下来我们做一点简单的特征工程,以便进行后面的工作。
这里用每日开盘价减去收盘价,并保存为一个新的特征:用最高价减去最低价,保存成另外一个特征。同时,如果股票次日收盘价高于当日收盘价,则标记为1,代表次日股票价格上涨;反之,如果次日收盘价低于当日收盘价,则标记为-1,代表股票次日价格下跌或者不变。这个过程可以称为创建股票的交易条件(tradingcondition)。
输入代码如下:
#下面我们来定义一个用于分类的函数,给数据表增加三个字段#首先是开盘价减收盘价,命名为0pen-Close#其次是最高价减最低价,命名为High-Lowdef classification_tc(df): df['0pen-Close'] = df['0pen'] -df['Close'] df['High-Low'] = df['High'] - df['Low'] #添加一个target字段,如果次日收盘价高于当日收盘价,则标记为1,反之为-1 df['target']= np.where(df['close'].shift(-1)>df['close'],1,-1) #去掉有空值的行 df = df.dropna() #将open-Close和High-Low作为数据集的特征 X=df[['Open-Close','High-Low']] #将target赋值给y y = df['target'] #将x与y进行返回 return(X,y)
运行代码,就完成了这个的数的定义。由于我们通过股票价格变化的情况对数据进行了分类,即1代表价格上涨,-1代表价格下跌或不变,这个交易条件可以用来训练分类模型。让模型预测某只股票在下一个交易日价格上涨与否。
如果要创建用于回归模型的交易条件,则可以对代码稍做调整,将次日收盘价减去当日收盘价的差作为预测的目标。这样就可以训练回归模型,使其预测次日股价上涨(或下跌)的幅度。输入代码如下:
#下面定义一个用于回归的函数#特征的添加与分类函数类似#只不过target字段改为次日收盘价减去当日收盘价def regression_tc(df): df['Open-Close'] = df['Open']- df['Close'] df['High-Low'] = df['High']- df['Low'] df['target'] = df['Close'].shift(-l)- df['Close'] df = df.dropna() X = df[['Open-Close','High-Low']] y= df['target'] #将x和y进行返回 return(X,y)
运行代码即可完成回归交易条件函数的定义。与分类交易条件一样,我们同样是把股票当日的开盘价和收盘价的差,与最高价和最低价的差作为样本的特征。不同的是,预测目标变成了次日收盘价与当日收盘价的差。
只是定义,没有任何结果。
我们在做任何的交易之前,一定要写好自己的逻辑,其逻辑可能本身没有什么直观的效果,但是确实最重要的一环。
像我这里,就需要输出的结果其实是预测了次日收盘价与当日收盘价的差值,简单来说,只要次日收盘价大于当日收盘价,即记为1,反之记为-1,通过将数据集分为训练集和验证集,用训练集训练模型,然后用验证集去验证模型的对错的概率。
Copyright © 2024-2025 成都宁时科技有限公司 版权所有