-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy path杂谈4.md
89 lines (63 loc) · 3.02 KB
/
杂谈4.md
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 杂谈:股票波动率的计算
在投资时,人们一般会习惯性看投资收益,往往会忽略投资风险。更加推荐的方法应该是风险与收益平衡,攻守兼备。
数学上如何刻画风险呢?答案就是:波动率。
关于波动率的更加深刻的讲解,建议您去学一下“渔阳”老师的“量化小学”,里面绝对是干货满满。
量化小学课程地址:https://wallstreetcn.com/premium/articles/3045516
这篇文章,我们简单聊一下股票波动率的计算,算是对“量化小学”的一点补充操作实例,也是对网友提出的需求的回应。
## 波动率计算步骤
波动率的计算有三个步骤:
1. 计算股票的对数日收益率序列, r_1, r_2, ..., r_n,r_i = log(p_i/p_i-1)
2. 计算日收益率序列的标准差std
3. 计算年化波动率 = sqrt(242) * std
这里的基本假设是:
1. 股票的对数日收益率是一个正态分布,通过前两步,可以计算出这个分布的方差。(样本空间)
2. 股票的日收益率是独立同分布的,即不同天数的分布相互独立,这样可以计算年化波动率是日化波动率乘以sqrt(242)。即波动率是按照根号扩大的。
## 一个计算实例代码
下面我们在quantos上,计算一下上证50在2017年的年化波动率的情况。
```python
from jaqs.data import DataView
from jaqs.data import RemoteDataService
# 准备数据
data_config = {
"timeout": 600,
"remote.data.address": "tcp://data.tushare.org:8910",
"remote.data.username": user,
"remote.data.password": token}
# 启动DataView,并设置用户名密码
dv = DataView()
ds = RemoteDataService()
ds.init_from_config(data_config)
startdate = 20161230
enddate = 20171229
universe = '000050.SH'
# 设置DataView
props = {'start_date': startdate,
'end_date': enddate,
'universe': universe,
'fields': 'close_adj',
'freq': 1}
dv.init_from_config(props, data_api=ds)
dv.prepare_data()
# 计算日对数收益率
dv.add_formula('return', 'Log(close_adj / Delay(close_adj, 1))', is_quarterly=False)
# 计算年化波动率
dv.add_formula('vol', 'StdDev(return, 242) * Sqrt(242)', is_quarterly=False)
# 年华波动率排名
ts_vol = dv.get_snapshot(snapshot_date=enddate)['vol'].dropna()
ts_vol.sort_values()
```
## 结果分析
在上证50成份股里面,2017年年化波动率最小的5只是:
+ 601818.SH - 光大银行 - 13.02%
+ 601985.SH - 中国核电 - 13.12%
+ 601328.SH - 交通银行 - 13.15%
+ 601857.SH - 中国石油 - 13.40%
+ 601988.SH - 中国银行 - 13.48%
在上证50成份股里面,2017年年化波动率最大的5只是:
+ 601919.SH - 中远海控 - 34.33%
+ 600340.SH - 华夏幸福 - 36.77%
+ 600309.SH - 万华化学 - 36.83%
+ 600111.SH - 北方稀土 - 40.30%
+ 603993.SH - 洛阳钼业 - 49.89%
不难发现,波动率小的都是大票,波动率大的都是一些有概念的票,期间都出现过股价的大幅波动,这也符合大家的直观。
这只是一个引子,也欢迎大家在其他股票上试试。