数据分析与挖掘入门——学习笔记(四)利用NumPy进行历史股价分析

这篇博客介绍了如何使用NumPy对历史股价进行深入分析,包括计算成交量加权平均值、算术平均值、时间加权平均值、最大值和最小值、中位数和极差等统计指标。此外,还涉及股票收益率计算、日期分析、周数据汇总、真实波动幅度均值、简单和指数移动平均线的计算,以及布林带的构建,为股票市场走势提供参考。
摘要由CSDN通过智能技术生成

利用NumPy进行历史股价分析

该练习使用的csv文件如下:
这里写图片描述
其中第二列为日期,格式是%d-%m-%Y;第四到七列分别是当日开盘价,最高价,最低价,收盘价和成交量
准备工作:

import sys
import numpy as np

# 读入文件,函数是loadtxt
# 第一个参数是文件名,delimiter是获取的数据的分隔符,usecols是指定读取哪列的数据,unpack为True表示获取的数据根据列分为不同的数组
# 这里分隔符是“,”,读取第6,7行(收盘价和交易量),unpack为true,分开存储为不同的变量
c, v = np.loadtxt('./data.csv', delimiter=',', usecols=(6, 7), unpack=True)

1 计算成交量加权平均值

np中使用average()计算加权平均值,第一个参数为计算的数组,第二个参数为加权平均值的权重

vwap = np.average(c, weights=v)  
vwap
# 350.58954935320088

2 计算算术平均值

np.mean(c)  # 计算算术平均值
# 351.03766666666672

3 计算时间加权平均值

t = np.arange(len(c))
np.average(c, weights=t)  # 计算时间加权平均值
# 352.42832183908041

4 寻找最大值和最小值

h,l = np.loadtxt('./data.csv', delimiter=',', usecols=(4, 5), unpack=True)
np.max(h)
# 364.89999999999998

np.min(l)
# 333.52999999999997

5 计算中程数和极差

(np.max(h) + np.min(l))  / 2  # 计算中程数
# 349.21499999999997

np.ptp(h)  # 计算最大值和最小值之间的差值 极差
# 24.859999999999957

np.ptp(l)  # 计算交易量的极差
# 26.970000000000027

6 统计分析

c = np.loadtxt('./data.csv', delimiter=',', usecols=(6,), unpack=True)  # 读取收盘价

np.median(c)  # 中间数
# 352.05500000000001

sorted = np.msort(c)
sorted   # 可见中间数是351.99和352.12的平均值
# array([ 336.1 ,  338.61,  339.32,  342.62,  342.88,  343.44,  344.32,
#         345.03,  346.5 ,  346.67,  348.16,  349.31,  350.56,  351.88,
#         351.99,  352.12,  352.47,  353.21,  354.54,  355.2 ,  355.36,
#         355.76,  356.85,  358.16,  358.3 ,  359.18,  359.56,  359.9 ,
#         360.  ,  363.13])

np.var(c)  # 方差的计算
# 50.126517888888884

np.mean((c - c.mean()) ** 2)  # 手动计算方差
# 50.126517888888884

7 股票收益率计算

c = np.loadtxt('./data.csv', delimiter=',', usecols=(6,), unpack=True)
returns = np.diff(c) / c[: -1]  # diff计算差分,总体是求股票收益率

np.std(returns)  # 求标准差
# 0.012922134436826306

log_returns = np.diff(np.log(c))  # 股票对数收益率
log_returns
# array([ 0.00953488,  0.01668775, -0.00205991, -0.00255903,  0.00887039,
#         0.01540739,  0.0093908 ,  0.008
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值