美文网首页数据&量化
量化分析之持仓风险分析

量化分析之持仓风险分析

作者: 杰克熊 | 来源:发表于2020-09-05 23:28 被阅读0次

    声明:文中所述股票仅为分析举例之用,请独立作出投资决策。Quantopian 为免费分析平台,与本文无利益关系。

    如果你有买股票,尤其是美股股票,今年不太可能没注意到特斯拉TSLA。特斯拉股票今年从低点涨了将近10倍,近两天股价大幅度回调,那么你应该去买进么?

    如果你是“信仰投资者”, 认定了一龙马教主的神功,那么就不必往下看了,闭着眼买然后把炒股软件删掉。 我长期也是看好特斯拉的,但是凯恩斯大师说过:“长期来看,我们都死了。。。”, 所以短期还是要尽可能分析一下。本文试图从持仓风险分析的角度来探讨下要不要买进TSLA, 所用量化分析平台为Quantopian,所用语言为Python

    关于持仓风险,你大概听过最基本的是要多买一些股票,不要把鸡蛋放在一个篮子里,但是随便多买几只就可以降低风险了么? 也不然,还是要想办法量化这个风险。有一种比较简单的分析方法,就是算一下现有持仓股票的协方差. 这个数值越高,表示你所持仓的股票其实价格走势越是类似, 这在持仓总回报上来讲如果上涨会涨的很高,但是下跌也会跌的很惨,就是所谓的波动率很大。我们显然不希望大的波动率,想象一下,你的持仓今天下跌10%明天上涨10%你是否还能睡好,可能早早就抛掉了,这就可能就会浪费很多机会。

    原始持仓

    假设你现在持仓是美股四大神兽['FB', 'GOOG', 'AMZN', 'AAPL'],每只股票持仓比例是均等的

    所以我们有持仓列表以及持股比例如下

    universe = ['FB', 'GOOG', 'AMZN', 'AAPL']

    weights = np.array([0.25, 0.25, 0.25, 0.25])

    通过Quantopian获得这些股票过去一年的价格时间序列,并且将其正规化(Normalize)到(0,1)区间

    prices = get_pricing(universe, fields='price', start_date=start, end_date=end)

    normal_prices = (prices-prices.min())/(prices.max()-prices.min())

    接下来利用Pandas 提供的计算covariance_matrix的方法.corr()即可以获得当前持仓的协方差矩阵cov_matrix

    Untitled.png

    这些数值从0到1, 数值越大表明两支股票走势越是相关,可以看到这几支股票相关性还是很高的(大部分>0.8)

    我们也可以绘制这个矩阵的热力图,利用seaborn 的.heatmap()方法

    sns.heatmap(cov,xticklabels=cov.columns,yticklabels=cov.columns)

    Untitled 1.png

    这样就可以根据颜色深浅直观的看到两支股票的相关性。

    我们也可以计算持仓总体方差

    total_variance = np.dot(np.dot(weights, cov_matrix.values), weights.T)

    计算得到数值为 0.895608093887

    原始持仓+TSLA

    下面我们看下如果这个持仓我们加入了TSLA会有什么变化

    现在的持仓列表以及权重分别为

    universe_T = ['FB', 'GOOG', 'AMZN', 'AAPL', 'TSLA']
    weights_T = np.array([0.2, 0.2, 0.2, 0.2, 0.2])

    同样计算方式可得,协方差矩阵

    Untitled 2.png

    热力图

    Untitled 3.png

    总体方差 0.895463150009

    可以看到TSLA跟其他四支股票,尤其是AMZN,AAPL相关性非常高,总体的方差同之前持仓基本一致,在比较高的水平。那么面临是否要买特斯拉,你可能要问一下自己这个问题,首先,你是否要继续增加已经比较高的持仓风险水平。如果答案是肯定的,你就是非常看好,那么好消息是增加了特斯拉并没有大幅提高整体的风险,当然前提是根据过去一年表现来看。

    原始持仓+BRK.B

    作为对比,我们也可以分析一下,如果增加的不是TSLA而是股神的BRK.B 会有什么结果,此时的持仓列表和权重将会是

    universe_B = ['FB', 'GOOG', 'AMZN', 'AAPL', 'BRK.B']
    weights_B = np.array([0.2, 0.2, 0.2, 0.2, 0.2])

    我们可以得到协方差矩阵

    Untitled 4.png

    热力图

    Untitled 5.png

    可以看到BRK.B与其他四支股票走势有较大区别,这也符合我们的直觉,但是巴菲特也投资了很多苹果股票啊,怎么这里并没有看到很高的相关性呢,是不是可以思考一下。。

    总方差计算为0.601009311705, 相对之前有大幅下降

    可见如果加入了BRK.B 是会大幅降低我们当前的持仓风险,但是是否就是意味着我们要买进BRK.B 而不是特斯拉呢,这又到了投资永恒的话题,风险和收益是正相关的,承担多少风险就会有可能有多大的收益(或亏损)。但是用一些简单的量化方法来分析至少让你心中有数,不会盲目的投奔于风险之中而不自知。

    本文代码
    https://github.com/niuguy/blog/blob/master/ofeng/source/codes/cov-analysis.ipynb

    参考文献

    https://www.quantopian.com/lectures/linear-correlation-analysis

    https://www.quantopian.com/lectures/position-concentration-risk

    相关文章

      网友评论

        本文标题:量化分析之持仓风险分析

        本文链接:https://www.haomeiwen.com/subject/mgjqektx.html