10.矢量化回测


计算Beta(β) 比率(CAPM 指标)

  • CAPM,资本资产定价模型(Capital Asset Pricing Model 简称CAPM)
    是由美国学者威廉·夏普(William Sharpe)、林特尔(John Lintner)、特里诺(Jack Treynor)和莫辛(Jan Mossin)等人于1964年在资产组合理论和资本市场理论的基础上发展起来的,主要研究证券市场中资产的预期收益率与风险资产之间的关系,以及均衡价格是如何形成的,是现代金融市场价格理论的支柱,广泛应用于投资决策和公司理财领域。 资本资产定价模型假设所有投资者都按马克维茨的资产选择理论进行投资,对期望收益、方差和协方差等的估计完全相同,投资人可以自由借贷。基于这样的假设,资本资产定价模型研究的重点在于探求风险资产收益与风险的数量关系,即为了补偿某一特定程度的风险,投资者应该获得多少的报酬率。
  • Beta系数(小于1风险小,大于1风险大)
    按照CAPM的规定,Beta系数是用以度量一项资产系统风险的指针,是用来衡量一种证券或一个投资组合相对总体市场的波动性(volatility)的一种风险评估工具。
    从市场组合的角度看,可以视单项资产的系统风险是对市场组合变动的反映程度,用贝塔系数度量。β表示的是相对于市场收益率变动、个别资产收益率同时发生变动的程度,是一个标准化的度量单项资产对市场组合方差贡献的指标。
    也就是说,如果一个股票的价格和市场的价格波动性是一致的,那么这个股票的Beta值就是1。如果一个股票的Beta是1.5,就意味着当市场上升10%时,该股票价格则上升15%;而市场下降10%时,股票的价格亦会下降15%。Beta是通过统计分析同一时期市场每天的收益情况以及单个股票每天的价格收益来计算出的。
    贝塔系数是统计学上的概念,它所反映的是某一投资对象相对于大盘的表现情况。其绝对值越大,显示其收益变化幅度相对于大盘的变化幅度越大;绝对值越小,显示其变化幅度相对于大盘越小。如果是负值,则显示其变化的方向与大盘的变化方向相反;大盘涨的时候它跌,大盘跌的时候它涨。

在我们的例子中,我们将选择 S&P500作为基准指数,当我们计算出 β 时,有两种可能的情况。

第一,β的绝对值<1

所以如果β 的绝对值< 1,这很好,因为这意味着您的投资组合的变化小于指数。

第二, β的绝对值> 1

这并不是什么好事,除了一些策略非常具体,但通常我们不希望β值太高,因为这意味着如果出现

危机或非常系统性的影响,您的投资组合将遇到非常大的困难,您将损失很多钱。

那么让我向您展示如何计算 beta:

首先,我们需要导入标准普尔 500 指数的数据,为此,我们做的事情与之前完全相同。

然后我们想要调整后的收盘价“Adj Close”,我们想要这个资产的变化。这里我们不需要放一个“dropna”

,因为我们稍后会放它。但是如果你现在把它放上去就不是一个错误。

我们更改 S&P500 的名称为“SP500”。

然后我们将 returun_serie 和 sp500 连接起来。为此,我们将使用 pandas 的“concat”函数。

现在我们用 dropna() 函数删除所有缺失值。

使用这个dataframe,我们将计算各种协方差矩阵,所以它是一个非常复杂的术语,这个矩阵只是一个包含标准普尔 500 指数和我们的策略之间的协方差的label。以及我们策略的方差和标准普尔 500 指数的方差。

因此,为了计算方差协方差矩阵,我们将使用 Numpy 中的“cov()”函数。

然后我们将所有数据帧转换为一个数组,将一个数组交给 Numpy,因为 Numpy 通常使用数组。

然后我们只需要指定参数为“rowvar”,我们需要将其设置为“False”

# We need compute the covariance between the marlet and the portfolio
sp500 = yf.download('^GSPC', proxy="http://127.0.0.1:7890")['Adj Close'].pct_change(1)
sp500.name = 'SP500'

# We concate them to do the covariances
val = pd.concat((return_serie, sp500), axis=1).dropna()

# We compute beta
cov_var_mat = np.cov(val.values, rowvar=False)
cov = cov_var_mat[0][1]
cov_var_mat
10.矢量化回测
# We need compute the covariance between the marlet and the portfolio
sp500 = yf.download('^GSPC', proxy="http://127.0.0.1:7890")['Adj Close'].pct_change(1)
sp500.name = 'SP500'

# We concate them to do the covariances
val = pd.concat((return_serie, sp500), axis=1).dropna()

# We compute beta
cov_var_mat = np.cov(val.values, rowvar=False)
cov = cov_var_mat[0][1]
var = cov_var_mat[1][1]

beta = cov / var

print(f"Beta: {'%.3f' % beta}")
10.矢量化回测

原创文章,作者:朋远方,如若转载,请注明出处:https://caovan.com/10-shilianghuahuice/.html

(0)
打赏 微信扫一扫 微信扫一扫
朋远方的头像朋远方
上一篇 2022年11月15日 下午10:14
下一篇 2022年12月9日 下午5:02

相关推荐

发表回复

登录后才能评论