python数据科学(十三):实例——股票数据分析

数据科学(十三)

  • 功能
    • 分析波动幅度
    • 对复权收盘价进行重采样
    • 增长曲线
    • 增长倍数
      • 最高增长倍数
      • 最大年均复合增长率
    • 当前增长倍数及复合增长率
      • 当前平均增长倍数
      • 年复合增长倍数
    • 平均年化增长率

具体详见 https://github.com/kamidox/stock-analysis

功能

分析波动幅度

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

# 股票数据分析
## 分析波动幅度
print('1.分析波动幅度')
datadir = 'yahoo-data'
fname = '002001.csv'
data = pd.read_csv(os.path.join(datadir, fname), index_col='Date', parse_dates=True)
print(data)

python数据科学(十三):实例——股票数据分析_第1张图片

对复权收盘价进行重采样

使用resample

# 使用 resample 针对复权收盘价进行重采样
print('2.使用 resample 针对复权收盘价进行重采样')
adj_price = data['Adj Close']
print(adj_price)

resampled = adj_price.resample('m').ohlc()
print(resampled)
print((resampled.high - resampled.low) / resampled.low)

python数据科学(十三):实例——股票数据分析_第2张图片
python数据科学(十三):实例——股票数据分析_第3张图片
python数据科学(十三):实例——股票数据分析_第4张图片

增长曲线

## 增长曲线
print('3.增长曲线')
# 600690.ss 000951.sz 002001.sz
stockid = '600690.sz'
stockfile = '600690.csv'

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

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

python数据科学(十三):实例——股票数据分析_第5张图片

增长倍数

  • 最大增长倍数及最大年化复合增长率:
    计算最低价和最高价之间的收盘价比较,以及增长的倍数和年化复全增长率,这个反应的是一个股票最好的情况下的投资收益情况。
## 增长倍数
print('4.增长倍数')
### 最高增长倍数
print('4.1 最高增长倍数')
total_max_growth = adj_price.max() / adj_price.min()
print(total_max_growth)

# 最大年均复合增长率
print('4.2 最大年均复合增长率')
min_date = adj_price.argmin()
max_date = adj_price.argmax()
print(max_date.year)
print(min_date.year)

max_growth_per_year = total_max_growth ** (1.0 / (max_date.year - min_date.year))
print(max_growth_per_year)

python数据科学(十三):实例——股票数据分析_第6张图片

最高增长倍数

最大年均复合增长率

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

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

当前平均增长倍数

total_growth = adj_price.iloc[0] / adj_price.iloc[-1]

年复合增长倍数

growth_per_year = total_growth ** (1.0 / (now_date.year - old_date.year))

平均年化增长率

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

计算年化收益率时,diff 应该要除以前一年的价格,即在前一年的价格的基础上上涨了多少,而不是在当前年的价格。

## 当前增长倍数及复合增长率
print('5.当前增长倍数及复合增长率')
### 当前平均增长倍数
print('5.1 当前平均增长倍数')
total_growth = adj_price.iloc[0] / adj_price.iloc[-1]
print(total_growth)

### 年复合增长倍数
print('5.2 年复合增长倍数')
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))
print(growth_per_year)

### 平均年化增长率
print('5.3 平均年化增长率')
price_in_years = adj_price.to_period(freq='A').groupby(level=0).first()
print(price_in_years)
print(price_in_years.plot(figsize=(8,6)))

diff = price_in_years.diff()
rate_in_years =  diff / (price_in_years - diff)
print(rate_in_years)
print(rate_in_years.mean())

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='-')

python数据科学(十三):实例——股票数据分析_第7张图片
python数据科学(十三):实例——股票数据分析_第8张图片
python数据科学(十三):实例——股票数据分析_第9张图片

你可能感兴趣的:(python数据科学)