作业
来源:3-12 【实战】:比较3只股票的夏普指数
树叶1116
2021-07-16
import pandas as pd
import matplotlib.pyplot as plt
import data.stock as st
import strategy.base as stb
import strategy.strategy as sts
# 定义列表,用于存储三只股票的代码
# 比亚迪:002594
# 宁德时代:300750
# 隆基股份:601012
codes = ['002594.XSHE', '300750.XSHE', '601012.XSHG']
# 定义列表,存放三只股票的夏普比率
sharpes = []
# 创建dataframe,存放三只股票的每日收盘价
daily_closes = pd.DataFrame()
# 创建dataframe,存放三只股票的最大回撤,窗口期为252个交易日
max_drawdown = pd.DataFrame()
# 创建dataframe,存放三只股票应用周四买,周一卖的交易策略的累计收益
week_period = pd.DataFrame()
for code in codes:
data = st.get_single_price(code, 'daily', '2018-10-01', '2021-01-01')
# print(data.head())
# 计算每只股票的夏普比率
daily_sharpe, annual_sharpe = stb.calculate_sharpe(data)
sharpes.append([code, annual_sharpe])
# 获取每日收盘价
daily_closes[code] = data['close']
# 获取最大回撤
max_drawdown[code] = abs(stb.culculate_max_drawdown(data)['max_dd'])
# 计算本只股票应用周四买、周一卖的策略的累计收益
week_period[code] = sts.week_period_strategy(code, 'daily', '2018-10-01', '2021-01-01')['cum_profit']
# 可视化三只股票的夏普比率
sharpes = pd.DataFrame(sharpes, columns=['code', 'sharpe']).set_index('code')
sharpes.plot.bar(title='Compare Annual Sharpe Ratio')
plt.xticks(rotation=15)
# 可视化三只股票的每日收盘价
daily_closes.plot(title='Compare Daily Close Price')
# 可视化三只股票的年最大回撤
max_drawdown.plot(title='Compare Annual Max Drawdown')
# 可视化三只股票采用周四买入,周一卖出的策略的累计收益
week_period.plot(title='Compare Sum Profit')
plt.show()三只股票的夏普比率对比:

三只股票的日收盘价对比:

三只股票的最大回撤对比(窗口期为252个工作日):

三只股票应用周四买入、周一卖出的策略累计收益对比:

分析:
1、隆基股份的夏普比率最高,最大回撤相对也比较低,投资风险更小;
2、隆基股份的日收盘价虽然波动不是很剧烈,但是应用周四买入,买一卖出的策略,滚动收益更高。
我通过这次作业复习了本章的一些知识,自己对于有些知识的理解还不透彻。作业不一定正确,请老师和同学们批评指导。感谢。
写回答
1回答
-
DeltaF
2021-07-20
棒棒哒,祝学习愉快
00