布林带宽度(Bollinger Band Width)是美国股市分析家约翰·布林于2010年发明,用于测量布林带(Bollinger Bands于1980年发明)上下轨道线之间的相对距离。它随带宽变窄而减小,而随着带宽放宽而增加。因为布林带基于标准差,所以带宽的波动幅度可以反映波动性,并且可视为波动率指标。布林带由三条不同的线组成,包括简单移动平均线及正负距离两个标准差的上下轨道线。可为日常股票交易决策提供参考依据,是金融市场常用的技术指标之一。
要計算布林带宽度,第一步要先計算布林带,计算方法如下:
在公式中:
-
p = 价格
-
window = 移动平均线涉及的滑动窗口(通常为20或26)
-
SMA = 使用简单模型的移动平均值
-
SD = 標準差
-
n = 数字(通常为2,即2倍標準差)
-
BBU =布林带上轨道线
-
BBL = 布林带下轨道线
-
BBW = 布林带宽
一般来说,布林带指标常用于股票市场,在本文中,我们尝试将其用于股票型公募基金,以复权单位净值代替价格。 并且使用Elasticsearch作为分析的计算工具。以下示例使用基金名称工银高端制造股票基金,代码为000793.OF,日期从2021年01月01日到2021年04月30日的数据。假設我们的 Elasticsearch 服务器有一个索引,包括三个字段,基金代码(ts_code)、复权单位净值(adj_nav)和公告截止日期(end_date)。数据映射如下:
"mappings": {
"dynamic": "false",
"properties": {
"ts_code": { "type": "keyword" },
"adj_nav": { "type": "double" },
"end_date": { "type": "date", "format": "yyyyMMdd" }
}
}
以下步骤说明操作流程,同时演示REST API请求主体的代码:
- 通过搜索操作收集所有相关文档:
使用带有必要条件(must)子句的布林查询(bool query)来收集基金代码为000793.OF,和公告截止日期从2020年12月01日到2021年04月30日的文档。 由于需要计算移动平均值,因此多增加了前一个月的数据(从2020年12月01日到2020年12月31日)。
{
"query":{
"bool":{
"must": [
{"range":{"end_date":{"gte":"20201201", "lte":"20210430"}}},
{"term": {"ts_code":"000793.OF"}}
]
}
},