-
Notifications
You must be signed in to change notification settings - Fork 1
/
3.8计算股票收益率和波动率.py
50 lines (45 loc) · 1.44 KB
/
3.8计算股票收益率和波动率.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 3.8计算股票收益率和波动率
import numpy as np
'''
计算股票收益率和波动率
1.股票收益率
1)简单收益率:相邻的两个价格之间的变化率
#20 30 50 45 | (30 - 20)/20,(50 - 30)/30,(45 - 50)/50
2)对数收益率:所有价格取对数之后两两之间的差值
#20 30 50 45 | (log(30)-log(20))=log(30/20),log(50)-log(30),log(45)-log(50)
·涉及函数:
diff(a)
数组a所有相邻元素的差值组成一个数组,并返回
例:a = [20 30 50 45]
diff(a) = [10 20 -5]
std(a)
计算数组的标准差,标准差可以反映一个数据集的离散程度
where(a > 0)
可以根据设置条件过滤数组中的值的索引,索引构成一个NumPy数组,
返回一个元组(array([0,1,2,3,]),)
(array([0, 1, 2, 3]),)
log(a)
取数组a中元素的对数组成一个数组,并返回
sqrt(a)
取数组a中元素的平方根组成一个数组,并返回
2.股票波动率
是对价格变动的一种衡量
3.年股票波动率
(对数收益率的标准差)/(对数收益率的平均值)/252个工作日的倒数的平方根
4.月股票波动率
年波动率 * sqrt(1/12)
'''
# 1)简单收益率
a = np.array([20, 30, 50, 45])
b = np.diff(a) / a[:-1]
# 2)对数收益率
c = np.diff(np.log(a))
d = np.sqrt(a)
# 过滤正数收益率
e = np.where(a)
print(a)
print(b)
print(c)
print(d)
print(e)
print(e[0])