ETF基金定投数据分析1——数据收集
作为一个80后的小伙,我错过了一次又一次让自己财富增加的机会,唯一的投资理财就是把钱通通放到某额宝里。一年前,我开始学习理财的知识,最后选择进行etf基金定投来投资。找了一家券商开了户。投资的品种就两个:300ETF和纳指ETF,分别追踪沪深300指数和纳斯达克指数。选择这两个指数之前我用python跑了一下历史数据,二者的相关性很低,也许可以做风险对冲?
开始是每个月一次,后来逐渐增加到每个月三次,隔十天左右进行一次。单纯买入,没有止盈止损。我计划是先这么投一年,再看结果来调整。截止2019年1月9日,账户收益情况如下:
亏的。前几天美股暴跌,亏得更多。近一年定投的感受就是,这种投资方式真的很考验人性,好几次我都想卖了,忍住了。
现在,我们就用Python来分析一下近一年来的投资数据吧。开发环境:由于条件限制,我是在安卓手机上用Pydroid3做编程环境的,Python版本3.6.2。
常用的一些库都能安装,看自带的例子,似乎还能写安卓APP,我还没试过。与在电脑上编程相比,有两个限制:首先画图不能直接显示,要用savefig保存图片到文件;其次,深度学习的一些库,如Tensorflow等,装不了,可能是因为与硬件相关吧。但机器学习的库,如scikit-learn等,可以安装的。另外还安装了Termux等,用于进行git操作。
开发环境搞定了,接下来就是获取数据的问题了。我从券商的APP上把数据一个一个搬到Excel表格里,像这样:
本来想就这么读了,发现还可以另存为csv文件。那更好。于是数据就有了。开工吧。先导入相关的库,然后用read_csv读入数据:
import pandas as pd
from pandas import Series, DataFrame
#从csv文件读入数据
def ImportData(FileName):
df = pd.read_csv(FileName)
return df
#主程序
if __name__ == "__main__":
etfdata = ImportData("etfdata.csv")
print(etfdata)
OK,没问题。
接下来就开始折腾数据吧。DataFrame是一种表格式的,含有多列的数据结构。每列的数据类型可以不一样。每行/每列数据都有一个索引。用DataFrame.columns()得到每列的索引。
#探索数据
def ExploreData(Data):
#每列的索引名称
print(Data.columns)
用每列索引名称可以提取相应列的数据
print(Data["成交金额"])
还可以用"变量名.列名"的方式,结果是一样的。
print(Data.成交金额)
还可以用相同的方式输出指定行的信息:
print(Data.ix[1])
用values属性可以返回DataFrame的值。
#返回Data的值
print(Data.values)
现在,可以把原始数据按买入的etf分成两个了:
#分离数据:根据买入的etf的不同划分数据
def DivData(Data):
df_300 = Data[Data["证券名称"] == "300ETF"]
df_nas = Data[Data["证券名称"] == "纳指ETF"]
return (df_300, df_nas)
用describe描述数据特征
#描述数据
print(df_300.describe())
print(df_nas.describe())
按成交均价,画个图看看吧。
import matplotlib.pyplot as plt
plt.plot(df_300["成交均价"])
plt.plot(df_nas["成交均价"])
plt.savefig("成交均价.png")
OK,接下来要计算收益率等信息了,需要知道历