实例:股票数据分析

使用 Numpy + pandas + matplotlib 进行练习
实例使用数据已上传:资源地址

股票数据分析

这里假设数据已经下载下来,并且保存在 yahoo-data 目录下。

分析波动幅度

通常波动幅度较大的股票更有赚钱效应

引包

import matplotlib
import pandas as pd
import numpy as np
import os
import matplotlib.pyplot as plt

导入数据

stockfile = '600690.csv'

ds = pd.read_csv(os.path.join('yahoo-data', stockfile), index_col='Date', parse_dates=True)
ds.head()

[Out:]
			Open	High	Low		Close	Volume		Adj Close
Date						
2016-05-20	8.74	9.15	8.74	9.14	55390400	9.14
2016-05-19	8.84	9.05	8.81	8.84	34785900	8.84
2016-05-18	8.82	8.93	8.65	8.88	44254300	8.88
2016-05-17	9.08	9.08	8.82	8.83	42392200	8.83
2016-05-16	8.90	9.08	8.80	9.07	59749500	9.07

增长曲线

Adj 除权价格,通常表示股票真实价值

adj_price = ds['Adj Close']
adj_price.plot(figsize=(8, 6))

在这里插入图片描述

增长倍数

最大增长倍数及最大年化复合增长率

计算最低价和最高价之间的收盘价比较,以及增长的倍数和年化复全增长率,这个反应的是一个股票最好的情况下的投资收益情况。

# 最高增长倍数
total_max_growth = adj_price.max() / adj_price.min()
total_max_growth

[Out:]
1113.2977809591985
# 最大年均复合增长率
min_date = adj_price.idxmin()
max_date = adj_price.idxmax()
max_growth_per_year = total_max_growth ** (1.0 / (max_date.year - min_date.year))
max_growth_per_year

[Out:]
1.3966150915746656

当前增长倍数及复合增长率

计算上市时的收盘价与当前的收盘价比较,增长的倍数和年化复全增长率。

# 当前平均增长倍数
total_growth = adj_price.iloc[0] / adj_price.iloc[-1]
total_growth

[Out:]
13.817641427203748
# 年复合增长倍数
old_date = adj_price.index[-1]
now_date = adj_price.index[0]
growth_per_year = total_growth ** (1.0 / (now_date.year - old_date.year))
growth_per_year

[Out]:
1.2446182358266846

平均年化增长率

计算每年的增长率,然后再求平均值。也可以计算每月的增长率,再求平均值,可以看到更短的一些周期变化。

price_in_years = adj_price.to_period(freq='A').groupby(level=0).first()
price_in_years

[Out:]
Date
1993    0.03573
1994    0.02459
1995    0.07254
1996    0.27879
1997    0.69135
1998    0.50219
1999    0.48011
2000    0.80252
2001    0.78662
2002    0.53786
2003    0.60910
2004    0.56913
2005    0.60712
2006    1.50079
2007    3.80700
2008    1.67358
2009    4.82062
2010    5.76779
2011    3.70347
2012    5.72073
2013    8.85739
2014    8.96458
2015    9.92000
2016    9.14000
Freq: A-DEC, Name: Adj Close, dtype: float64

每年价格走势图

price_in_years.plot(figsize=(8,6))

在这里插入图片描述

# 这里的关键信息:
# 计算年化收益率时,diff 应该要除以前一年的价格,即在前一年的价格的基础上上涨了多少,而不是在当前年的价格。
diff = price_in_years.diff()
rate_in_years =  diff / (price_in_years - diff)
rate_in_years

[Out:]
Date
1993         NaN
1994   -0.311783
1995    1.949980
1996    2.843259
1997    1.479824
1998   -0.273610
1999   -0.043967
2000    0.671534
2001   -0.019813
2002   -0.316239
2003    0.132451
2004   -0.065621
2005    0.066751
2006    1.471982
2007    1.536664
2008   -0.560394
2009    1.880424
2010    0.196483
2011   -0.357905
2012    0.544695
2013    0.548297
2014    0.012102
2015    0.106577
2016   -0.078629
Freq: A-DEC, Name: Adj Close, dtype: float64

rate_in_years.plot(kind='bar', figsize=(8,6))
X = [0, len(rate_in_years)]
Y = [0, 0]
plt.plot(X, Y, color='red', linestyle='-')

在这里插入图片描述

发布了45 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_22096121/article/details/103518724