分类
新手都可掌握的蜡烛图分析法

可以考虑这6种对冲策略

In computer science, the 可以考虑这6种对冲策略 thundering herd problem occurs when a large number of processes or threads waiting for an event are awoken when that event occurs, but only one process is able to handle the event. When the processes wake up, they will each try to handle the event, but only one will win. All processes will compete for resources, possibly freezing the computer, until the herd is calmed down again

美股投资者如何做好尾部风险对冲?

另一个需要注意的问题是,投资者需要选择更适合自己投资组合的、更廉价的对冲方式。一般来说,股权投资风险通常是股票投资者在投资过程中较为常见的风险来源,此时购买股票的看跌期权是对冲风险的一种有效方式,但是却不是更廉价的对冲方式。在美国次贷危机前,信用衍生品市场曾经是股票投资组合最廉价的对冲方式,比股票期权便宜很多——总之,投资者想要在眼下的市场环境中找到更便宜的尾部风险对冲策略,这需要投资者将投资组合时间拉长,并谨慎考虑多种资产类别。

1、增加固定收益分配

在对冲效果方面,荷兰国际集团(ING Groep NV)经济学家Prakash Sakpal在多年前的一个研究报告中曾经对尾部风险对冲的常用策略进行比较。结论是,通过增加固定收益类资产分配比例来建立风险平价投资组合,在历史上实现了非常高的投资收益和良好的尾部风险保护,但是会显著降低最终投资收益。

2、通过出售价外看涨期权购买保护性看跌期权

需要注意的是,我们在近日的文章《苹果、特斯拉股价暴涨的真正原因是这个?》中,也指出,投资者在大量地买入看涨期权。根据Sundial Capital Research的数据,上周美国所有交易所中,交易买入的看涨期权比看跌期权多出了2200万张,高于6月份创下的历史纪录。

3、使用VIX期货进行套期保值

在我们此前的文章《这只ETN可帮助投资者对冲短期市场波动风险》中,英为财情Investing.com的独家ETF分析师Tezcan Gecgil曾经指出,iPath® Series B S&P 500® VIX Short-Term Futures™ ETN (NYSE:VXX)就为投资者提供了对标普500波动率短期期货指数总回报的投资敞口,该指数最终波动率指数短期期货合约的价值。因此VXX的目标是实现和跟踪VIX波动率指数的短期期货合约毎日変化完全匹配的日收益率,也就是说,这只ETN的收益率是跟随期货曲线的斜率。

在Go中如何正确重试请求

In computer science, the thundering herd problem occurs when a large number of processes or threads waiting for an event are awoken when that event occurs, but only one process is able to handle the event. When the processes wake up, they will each try to handle the event, but only one will win. All processes will compete for resources, possibly freezing the computer, until the herd is calmed down again

使用 net/http 重试所带来的问题

重试这个操作其实对于 Go 可以考虑这6种对冲策略 来说其实还不能直接加一个 for 循环根据次数来进行,对于 Get 请求重试的时候没有请求体,可以直接进行重试,但是对于 Post 请求来说需要把请求体放到 Reader 里面,如下:

服务端收到请求之后就会从这个 Reader 中调用 Read() 函数去读取数据,通常情况当服务端去读取数据的时候, offset 会随之改变,下一次再读的时候会从 offset 位置继续向后读取。所以如果直接重试,会出现读不到 Reader 的情况。

在上面这个例子中,在客户端设值了 10ms 的超时时间。在服务端模拟请求处理超时情况,先sleep 20ms,然后再读请求数据,这样必然会超时。

当再次请求的时候,发现 client 请求的 Body 数据并不是我们预期的20个长度,而是 0,导致了 err。因此需要将Body这个 Reader 进行重置,如下:

上面这段代码中,我们使用 io.NopCloser 对请求的 Body 数据进行了重置,避免下次请求的时候出现非预期的异常。

那么相对于上面简陋的例子,还可以完善一下,加上我们上面说的 StatusCode 重试判断、重试策略、重试次数等等,可以写成这样:

上面讲的是重试的概念,那么有时候我们接口只是偶然会出问题,并且我们的下游服务并不在乎多请求几次,那么我们可以借用 grpc 里面的概念:对冲策略(Hedged requests)

对冲是指在不等待响应的情况主动发送单次调用的多个请求,然后取首个返回的回包。对冲和重试的区别点主要在:对冲在超过指定时间没有响应就会直接发起请求,而重试则必须要服务端响应后才会发起请求。所以对冲更像是比较激进的重试策略。

并发模式的处理

因为对冲重试加上了并发的概念,要用到 goroutine 来并发请求,所以我们可以把数据封装到 channel 里面来进行消息的异步处理。

但是由于在 Go 中是无法获取每个 goroutine 的执行结果的,我们又只关注正确处理结果,需要忽略错误,所以需要配合 WaitGroup 来实现流程控制,示例如下:

从上面这段代码看为了进行流程控制,多用了两个 channel :totalSentRequests 、allRequestsBackCh,多用了一个 goroutine 异步关停 allRequestsBackCh,才实现的流程控制,实在太过于麻烦,有新的实现方案的同学不妨和我探讨一下。

除了上面的并发请求控制的问题,对于对冲重试来说,还需要注意的是,由于请求不是串行的,所以 http.Request 的上下文会变,所以每次请求前需要 clone 一次 context,保证每个不同请求的 context 是独立的。但是每次 clone 之后 Reader 的 offset 位置又变了,所以我们还需要进行重新 reset :

熔断 & 降级

因为在我们使用 http 调用的时候,调用的外部服务很多时候其实并不可靠,很有可能因为外部的服务问题导致自身服务接口调用等待,从而调用时间过长,产生大量的调用积压,慢慢耗尽服务资源,最终导致服务调用雪崩的发生,所以在服务中使用熔断降级是非常有必要的一件事。

其实熔断降级的概念总体上来说,实现都差不多。核心思想就是通过全局的计数器,用来统计调用次数、成功/失败次数。通过统计的计数器来判断熔断器的开关,熔断器的状态由三种状态表示:closed、open、half open,下面借用了 sentinel 的图来表示三者的关系:

sentinel

首先初始状态是 closed ,每次调用都会经过计数器统计总次数和成功/失败次数,然后在达到一定阈值或条件之后熔断器会切换到 open 状态,发起的请求会被拒绝。

熔断器规则中会配置一个熔断超时重试的时间,经过熔断超时重试时长后熔断器会将状态置为 half-open 状态。这个状态对于 sentinel 来说会发起定时探测,对于 go-zero 来说会允许通过一定比例的请求,不管是主动定时探测,还是被动通过的请求调用,只要请求的结果返回正常,那么就需要重置计数器恢复到 closed 状态。

  • 错误比率:熔断时间窗口内的请求数阈值错误率大于错误率阈值,从而触发熔断。
  • 平均 RT(响应时间):熔断时间窗口内的请求数阈值大于平均 RT 阈值,从而触发熔断。

比如我们使用 hystrix-go 来处理我们的服务接口的熔断,可以结合我们上面说的重试从而进一步保障我们的服务。

上面这个例子中就利用 hystrix-go 设置了最大错误百分比等于30,超过这个阈值就会进行熔断。

这篇文章从接口调用出发,探究了重试的几个要点,讲解了重试的几种策略;然后在实践环节中讲解了直接使用 net/http 重试会有什么问题,对于对冲策略使用 channel 加上 waitgroup 来实现并发请求控制;最后使用 hystrix-go 来对故障服务进行熔断,防止请求堆积引起资源耗尽的问题。

面对市场波动,你准备好了吗?简析对冲投资组合的不同策略

大多数投资者的投资组合通常非常简单,可能就是由3-10只股票组成,但只拥有这些股票对市场风险的防范作用甚微。以我们的绿色转型股票主题篮为例,该篮子由40只股票组成,均与绿色转型主题有关。过去6年来该股票篮对标明晟全球(MSCI World)指数的贝塔值(Beta)为1.33,这意味着当明晟全球指数下跌10%时,该投资组合下跌13.3%。现在许多散户投资者只有10只或更少的股票,这意味着他们对全球股票的贝塔值高达1.5,甚至2。如果全球股市修正20%,散户投资者的投资组合可能会下跌30-40%。问题是,大多数散户很难承受巨额亏损,并导致随后的投资组合决策失误。

尾部风险对冲策略与工具

下面简要介绍一些可能用于尾部风险对冲的金融工具。
1、股票期权:如上所述,看跌期权是保证投资组合抵御市场崩溃的最直接对冲工具。 期权标的可以为股票指数以及复制指数的ETF期权(例如,上交所的50ETF期权)。 场外交易市场可以提供更多的可定制期权(例如,不同的执行价、到期时间的期权、标的证券可以为个股甚至一揽子股票)。在实际操作方面,用看跌期权对冲的缺点包括对冲成本的波动,移仓的额外费用,以及到期/移仓时头寸监控。为降低对冲成本,投资者通常选用put-call collars(保护性封顶保底)来作尾部风险对冲。

2、波动率工具:芝加哥期权交易所(CBOE)基于波动率的收益开发了各种产品,包括各种VIX期货。 VIX本身嵌入了对未来市场波动的预期。投资者可以通过交易VIX期货对冲当前和未来隐含波动率水平之间的差异。另外,投资者可以使用场外衍生品——方差互换(Variance swaps),来对冲某些标的资产(如汇率,利率或股票指数)的波动率相关的风险。方差互换提供一个纯粹的标的资产价格波动风险的对冲工具,不会引入期权中存在的delta风险。

3、期货指数:投资者可以通过投资管理型商品期货例如期货投资基金(CTA)的分散化效果来对冲股票风险。 在市场恐慌期间,管理期货已经表现出优于其他投资策略,并且起到了真正的多元化投资收益效果。由于无需移仓或重新平衡投资组合,因此该策略的运营成本较低。

4、动态对冲:投资者也可以动态Delta对冲调仓来复制看跌期权策略。但这种策略对于大多数投资者来说过于技术化。

5、信用衍生品:常用来对冲的信用衍生品包括CDS、CDS指数、CDS指数期权和CDS指数tranches。

对冲效果比较

国外学者Prakash在实证研究中,对尾部风险对冲的常用策略进行了比较,基准为S&P500与60-40组合(baseline 60-40,其中40%投资于美国股指S&P Total Return Index (SPTR),60%投资于美国债券指数US Aggregate Bond Index (LBUSTRUU))