如何制作股票收益?
这题我会! 以前做过一个模拟炒股的小程序,可以拿来做教学演示用(其实主要是用来玩),现在用了python和pandas,也就不用那么麻烦了,直接用数据来做展示就可以了。 用到的主要库及功能: pandas:用于数据分析、处理和数据可视化 matplotlib:用于绘制统计图形 seaborn:主要用于绘制散点图和气泡图 主要代码如下 import pandas as pd #导入数据集 from pandas.io import data as pd_data #读取数据 df=pd_data.get_data(symbols='MSFT', start='2016-1-1', end='2017-1-1') print(df) #查看数据前5行 为了简单起见,我们只用微软的每股收益来建模。首先将原始数据进行简单的处理,将非数值型数据转化为数值型数据。
转化之后的数据可以用于后续的分析。 然后我们来搭建模型。对于线性回归来说,因变量为连续数值型数据,自变量可以包含整数或者浮点数。这里我们将每股收益一月份的数据作为因变量,将去年十月到今年的每股收益取自然对数的值作为一个自变量。
#引入线性回归工具 from sklearn.linear_model import LinearRegression #建立模型 regressor = LinearRegression() regressor.fit(X, y) #进行拟合 这样我们就得到了一个拟合方程。但是这个时候不能直接用它来预测未来的收益情况。因为线性回归适合于数据之间存在线性关系的情况,而股票价格这种数据不是线性关系的。所以我们需要对数据进行转换,使其具有线性关系,才能使用这个拟合方程。
我这里使用的转化方法是主成分分析,利用这个方法我们可以将一些属性转化到一个新的维度上去,从而保留大部分原始数据的信息。
#引入主成分分析工具 from sklearn.decomposition import PCA #数据转化 pca = PCA(n_components=1) #进行转换,这里将得到新的特征值和一个矩阵,将其转置后进行拼接,就可以得到一个新的数据框了 transformed_data=np.concatenate((pcamatrix.T, features)) dfm=pd.DataFrame(transformed_data) #重新整理数据,以便于观察效果 dfm.columns=['PC_0','PC_1'] df1=dfm[['PC_0','PC_0']].copy() df1['预测值']=regressor.predict(df1[['PC_0','PC _1']]) df1['实际值']=y.values #绘制散点图 seaborn.scatterplot(x='PC_0', y='预测值', data=df1)