介绍
估算量化交易策略或策略组合的损失风险对于长期资金增长至关重要,现代机构已经开发了许多风险管理技术,特别是一种被称为风险价值或在险价值(VaR)的技术是其核心,一般将VaR的概念应用于单一策略或一组策略,以帮助我们量化交易组中的风险。
定义
VaR是在给定的置信度下、给定时间段内投资组合损失大小的估计
给定的置信度:是例如95%或99%的值
给定时间段:如果要清算投资组合将导致最大市场影响的时间段
例如,在一天的时间段内,在95%置信水平下等于50万美元的VaR将简单地表明在第二天有95%的概率损失不超过50万美元
假设
其计算需有如下假设:
1、 标准市场条件VaR
不应考虑极端事件或“尾部风险”,而是应该在正常的“日常”操作下损失的预期。
2、 波动性和相关性
风险价值要求考虑的资产的波动性以及它们各自的相关性。这两个数量很难估算,并且会不断变化。
3、 收益的正态性
VaR以其标准形式资产或投资组合的收益前提是正态分布,但对大多数资产来说这是不切实际的。
优缺点
优点:
l 可以非常直接地计算个人资金、算法策略、量化投资组合、对冲基金甚至投资银行的风险。
l 可以针对具有不同时间范围的多个交易策略计算与VaR相关联的时间段。
l 不同的风险价值可以与不同形式的风险相关联。
l 策略可以设定约束,整个投资组合也可以基于其个人VaR进行约束
l VaR很容易被不专业外部投资者和基金经理解释。
缺点:
l 没有讨论超过VaR值的预期损失的大小。
l 它没有考虑极端事件,只考虑了典型的市场条件。
l 由于它使用历史数据,因此不会考虑可能改变资产波动性和相关性的未来市场变化 。
风险价值 VaR 计算代码
import datetime
import numpy as np
import pandas.io.data as web
from scipy.stats import norm
def var_cov_var(P, c, mu, sigma):
alpha = norm.ppf(1-c, mu, sigma)
return P - P*(alpha + 1)
if __name__ == "__main__":
start = datetime.datetime(2010, 1, 1)
end = datetime.datetime(2014, 1, 1)
citi = web.DataReader("C", ’yahoo’, start, end)
citi["rets"] = citi["Adj Close"].pct_change()
P = 1e6 # 1,000,000 USD
c = 0.99 # 99% confidence interval
mu = np.mean(citi["rets"])
sigma = np.std(citi["rets"])
var = var_cov_var(P, c, mu, sigma)
print("Value-at-Risk: $%0.2f" % var