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

Bea ·
更新时间:2024-11-10
· 641 次阅读

数据科学(十三)功能分析波动幅度对复权收盘价进行重采样增长曲线增长倍数最高增长倍数最大年均复合增长率当前增长倍数及复合增长率当前平均增长倍数年复合增长倍数平均年化增长率
具体详见 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)

在这里插入图片描述

对复权收盘价进行重采样

使用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)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

增长曲线 ## 增长曲线 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))

在这里插入图片描述

增长倍数 最大增长倍数及最大年化复合增长率:
计算最低价和最高价之间的收盘价比较,以及增长的倍数和年化复全增长率,这个反应的是一个股票最好的情况下的投资收益情况。 ## 增长倍数 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)

在这里插入图片描述

最高增长倍数 最大年均复合增长率 当前增长倍数及复合增长率

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

当前平均增长倍数

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号