NumPy常用函数(7)-- 计算股票收益率和波动率

    收盘价的分析常常是基于股票收益率的。股票收益率又可以分为简单收益率和对数收益率。

    简单收益率:是指相邻两个价格之间的变化率。

    对数收益率:是指所有价格取对数后两两之间的差值。

 

  简单收益率的计算

        NumPy中的diff函数可以返回一个由相邻数组元素的差值构成的数组。不过需要注意的是,diff返回的数组比收盘价数组少一个元素。

  

  对数收益率的计算

        对数收益率计算起来甚至更简单一些。我们先用log函数得到每一个收盘价的对数,再对结果使用diff函数即可。一般情况下,我们应该检查输入数组以确保不含有零和负数。

        我们有时只对交易日的收益率为正值感兴趣。我们可以用where函数,指定判断条件,where函数会返回满足条件的数组元素的索引值。

 

  股票波动率的计算

        股票波动率是对价格变动的一种衡量。计算波动率(年波动率和月波动率)时,需要用到对数波动率。 年波动率等于对数波动率的标准差除以其均值,再除以交易日倒数的平方根,通常交易日取252天。

 

实例:

#NumPy常用函数:计算股票收益率和波动率
from numpy import *


#简单收益率:相邻两个价格之间的变化率
#20 30 50 45         (30 - 20)/20,(50 - 30)/30,(45 - 50)/45
#对数收益率:所有价格取对数后两两之间的差值
#(log(30) - log(20) = log(30/20))
#log(a) - log(b) = log(a/b)


#diff  std  where  log  sqrt
#diff:返回由相邻数组元素的差值组成的数组
#std:计算标准差,sqrt(((x1 - a)^2 + (x2 - a)^2 + (x3 - a)^2 ...+ (xn - a)^2))/n)
#标准差可以反映一个数据集的离散程度
#where:可以根据设置的条件过滤数组中值的索引

#计算简单收益率
a = array([4,7,10,4])
print(diff(a))

c = loadtxt('data.csv',delimiter=',',usecols=(6,),unpack=True)
print(c)
returns = diff(c) / c[:-1]
print(returns)
print("标准差:",std(returns))


#计算对数收益率
logreturns = diff(log(c))
print(logreturns)

#过滤正的收益率
print('简单收益率(正)',where(returns > 0))
print('对数收益率(正)',where(logreturns > 0))


#股票波动率:是对价格变动的一种衡量。
#年股票波动率:对数收益率的标准差除以对数收益率的平均值,然后再除以252个工作日的倒数的平方根。
annualVolatility = std(logreturns) / mean(logreturns)
annualVolatility = annualVolatility / sqrt(1/252)
print("年波动率:" ,annualVolatility)
print("月波动率:" ,annualVolatility * sqrt(1/12))

 

输出结果:

 

[ 3  3 -6]
[ 336.1   339.32  345.03  344.32  343.44  346.5   351.88  355.2   358.16
  354.54  356.85  359.18  359.9   363.13  358.3   350.56  338.61  342.62
  342.88  348.16  353.21  349.31  352.12  359.56  360.    355.36  355.76
  352.47  346.67  351.99]
[ 0.00958048  0.01682777 -0.00205779 -0.00255576  0.00890985  0.0155267
  0.00943503  0.00833333 -0.01010721  0.00651548  0.00652935  0.00200457
  0.00897472 -0.01330102 -0.02160201 -0.03408832  0.01184253  0.00075886
  0.01539897  0.01450483 -0.01104159  0.00804443  0.02112916  0.00122372
 -0.01288889  0.00112562 -0.00924781 -0.0164553   0.01534601]
标准差: 0.0129221344368
[ 0.00953488  0.01668775 -0.00205991 -0.00255903  0.00887039  0.01540739
  0.0093908   0.0082988  -0.01015864  0.00649435  0.00650813  0.00200256
  0.00893468 -0.01339027 -0.02183875 -0.03468287  0.01177296  0.00075857
  0.01528161  0.01440064 -0.011103    0.00801225  0.02090904  0.00122297
 -0.01297267  0.00112499 -0.00929083 -0.01659219  0.01522945]
简单收益率(正) (array([ 0,  1,  4,  5,  6,  7,  9, 10, 11, 12, 16, 17, 18, 19, 21, 22, 23,
       25, 28], dtype=int64),)
对数收益率(正) (array([ 0,  1,  4,  5,  6,  7,  9, 10, 11, 12, 16, 17, 18, 19, 21, 22, 23,
       25, 28], dtype=int64),)
年波动率: 129.274789911
月波动率: 37.3184173773

 

 

 

 

data.csv文件内容如下:

AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800
AAPL,31-01-2011, ,335.8,340.04,334.3,339.32,13473000
AAPL,01-02-2011, ,341.3,345.65,340.98,345.03,15236800
AAPL,02-02-2011, ,344.45,345.25,343.55,344.32,9242600
AAPL,03-02-2011, ,343.8,344.24,338.55,343.44,14064100
AAPL,04-02-2011, ,343.61,346.7,343.51,346.5,11494200
AAPL,07-02-2011, ,347.89,353.25,347.64,351.88,17322100
AAPL,08-02-2011, ,353.68,355.52,352.15,355.2,13608500
AAPL,09-03-2011, ,355.19,359,354.87,358.16,17240800
AAPL,10-02-2011, ,357.39,360,348,354.54,33162400
AAPL,11-02-2011, ,354.75,357.8,353.54,356.85,13127500
AAPL,14-02-2011, ,356.79,359.48,356.71,359.18,11086200
AAPL,15-02-2011, ,359.19,359.97,357.55,359.9,10149000
AAPL,16-02-2011, ,360.8,364.9,360.5,363.13,17184100
AAPL,17-02-2011, ,357.1,360.27,356.52,358.3,18949000
AAPL,18-02-2011, ,358.21,359.5,349.52,350.56,29144500
AAPL,22-02-2011, ,342.05,345.4,337.72,338.61,31162200
AAPL,23-02-2011, ,338.77,344.64,338.61,342.62,23994700
AAPL,24-02-2011, ,344.02,345.15,338.37,342.88,17853500
AAPL,25-02-2011, ,345.29,348.43,344.8,348.16,13572000
AAPL,28-02-2011, ,351.21,355.05,351.12,353.21,14395400
AAPL,01-03-2011, ,355.47,355.72,347.68,349.31,16290300
AAPL,02-03-2011, ,349.96,354.35,348.4,352.12,21521000
AAPL,03-03-2011, ,357.2,359.79,355.92,359.56,17885200
AAPL,04-03-2011, ,360.07,360.29,357.75,360,16188000
AAPL,07-03-2011, ,361.11,361.67,351.31,355.36,19504300
AAPL,08-03-2011, ,354.91,357.4,352.25,355.76,12718000
AAPL,09-03-2011, ,354.69,354.76,350.6,352.47,16192700
AAPL,10-03-2011, ,349.69,349.77,344.9,346.67,18138800
AAPL,11-03-2011, ,345.4,352.32,345,351.99,16824200

注:

第一列为股票代码以表示股票(苹果公司股票代码为AAPL)
第二列为dd-mm-yyyy格式的日期

第三列为空
第四列为开盘价
第五列为最高价
第六列为最低价
第七列为收盘价
第八列为成交量

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    原文作者:zhubao124
    原文地址: https://blog.csdn.net/zhubao124/article/details/80789112
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞