文章目录
提出问题
本文主要针对以下两个问题进行探讨:
- 如果投资者“不幸”从最高点开始定投指数基金,那么是否还能盈利?
- 周定投和月定投哪个更好?
获取数据
注意:本文为了简单起见,直接用指数代替了指数基金。
Step1 打开网址,登录帐号
Step2 进入研究环境
进入研究环境之后,会发现是一个类似于Jupyter Notebook
的开发界面。
Step3 新建一个Python3的Notebook
后面所有操作和Jupyter Notebook
一样。
Step4 在新建的Notebook中写入代码
获取指数数据函数
导入所需要用到的库
import pandas as pd
import matplotlib.pyplot as plt
定义获取指数数据的函数
# 获取股票数据函数
def get_stock_data(code, start_date, end_date):
"""
:param code: 需要获取数据的指数代码,注意使用的是上交所的指数代码
:param start_date: 开始获取数据的日期
:param end_date: 结束获取数据的日期
:return: 返回从开始到结束日期每天的指数数据
"""
df = get_price(code+'.XSHG', start_date=start_date, end_date=end_date, frequency='daily')
df = df.dropna() # 删除缺失值
df.to_csv(code+'.csv') # 保存为csv格式
return df
获取指数数据示例
# 获取沪深300指数,从2005年4月8日开始到2019年4月20日结束的日级交易数据
df300 = get_stock_data(code='000300', start_date='2005-04-08', end_date='2019-04-20')
df300
运行结果:
运行代码之后返回到Jupyter Notebook的主页,就能看到保存的000300.csv
文件,可以下载到本地进行操作,也可以直接在聚宽的研究环境中进行操作。
数据探索
先对我们获取到的沪深300指数数据进行一番了解,方便后续分析。
查看沪深300指数的总体信息:
df300.info()
查看沪深300指数收盘价的大体情况:
df300['close'].describe()
查看沪深300指数的历史走势图:
# 设置参数,将图形格式设置为‘svg’,能够输出更加清晰的图
%config InlineBackend.figure_format = 'svg'
# 建立画布
fig = plt.figure(figsize = (12,6))
# 用收盘价绘制折线图
plt.plot(df300.index, df300['close'])
找出收盘价极大值点的函数:
# 筛选出指数价格的极大值点
def find_max(stock_data, start_date, end_date):
"""
:param stock_data: 需要筛选出极大值点的指数数据
:param start_date: 筛选范围的开始日期
:param end_date: 筛选范围的结束日期
:return:返回极大值点对应当天数据
"""
max_price =