Python implementa simulación histórica para calcular el valor en riesgo (VaR) (con código)

一,Valor en Riesgo(VaR)

El valor en riesgo (VaR) es un método de medición de riesgo comúnmente utilizado en la gestión de riesgos financieros, que se utiliza para estimar la pérdida máxima posible en un nivel de confianza determinado dentro de un período de tiempo determinado. El VaR se utiliza a menudo para evaluar el nivel de riesgo de una cartera, activo o pasivo, de modo que los inversores o comerciantes puedan comprender mejor su exposición al riesgo y tomar medidas adecuadas de gestión del riesgo.

2. Simulación histórica

El método de simulación histórica estima los riesgos futuros mirando hacia atrás en los datos históricos, clasificando las series de rendimientos históricos en orden cronológico y luego seleccionando una cierta cantidad de datos históricos para calcular el cuantil de su rendimiento, que es el VaR. Por ejemplo, seleccione los datos históricos del año pasado y calcule el percentil 5 de su rentabilidad, que es el VaR al nivel de confianza del 95%.

3. Utilice Python para calcular el método de simulación histórica para calcular el VaR.

Calcularemos el VaR utilizando datos históricos de precios de acciones, que están disponibles a través de la API de Yahoo Finance. Para simplificar los cálculos, asumiremos que los rendimientos siguen una distribución normal.

Primero, necesitamos importar las bibliotecas y módulos necesarios, incluidos pandas, numpy, matplotlib e yfinance:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import yfinance as yf

A continuación, necesitamos definir algunos parámetros. En esta demostración, utilizaremos una ventana móvil estándar con una duración de 252 días hábiles, que representa el número de días hábiles en un año. También fijaremos el nivel de confianza del VaR en 95%.

# 设置收益率窗口长度为252个交易日
rolling_window = 252

# 设置VaR置信水平为95%
alpha = 0.05

Luego, necesitamos obtener datos históricos del precio de las acciones. En esta demostración, obtendremos datos históricos de precios de Apple Inc. (AAPL).

# 使用yfinance获取AAPL的历史价格数据
stock_data = yf.download("AAPL", start="2016-01-01", end="2022-03-25")

A continuación, debemos calcular la tasa de rendimiento. En esta demostración, calcularemos el rendimiento utilizando precios de cierre diarios y lo convertiremos a rendimiento logarítmico.

# 计算每日收益率
stock_data["Returns"] = stock_data["Adj Close"].pct_change()

# 将每日收益率转换为对数收益率
stock_data["Log Returns"] = np.log(1 + stock_data["Returns"])

Ahora podemos empezar a calcular el VaR. En primer lugar, necesitamos utilizar una ventana móvil para calcular la serie de rentabilidad histórica de cada día de negociación. Luego utilizaremos estos rendimientos históricos para estimar la media y la desviación estándar y calcular el VaR correspondiente.

# 使用滚动窗口计算历史收益率序列
historical_returns = stock_data["Log Returns"].rolling(window=rolling_window).sum()

# 计算历史收益率序列的均值和标准差
mu = historical_returns.mean()
sigma = historical_returns.std()

# 计算VaR
var = -1 * np.sqrt(rolling_window) * (mu + sigma * np.percentile(historical_returns, 100 * alpha))

 Finalmente, podemos trazar el rendimiento frente al VaR histórico simulado e imprimir el valor del VaR.

# 绘制收益率和VaR曲线
fig, ax = plt.subplots()
ax.plot(stock_data.index, historical_returns, label="Historical Returns")
ax.axhline(y=var, color="r", label="VaR")

# 添加图例和标签
ax.legend()
ax.set_xlabel("Date")
ax.set_ylabel("

Supongo que te gusta

Origin blog.csdn.net/DonFred/article/details/129821632
Recomendado
Clasificación