对数收益率序列的JB检验python代码
对数收益率序列的Jarque-Bera (JB) 检验是用来测试数据是否符合正态分布的统计方法。在Python中,我们可以使用scipy.stats.jarque_bera
函数来进行这个检验。假设我们有一个包含每日股票收益率的列表,首先需要计算对数收益率,然后进行检验。
以下是Python代码示例:
```python from scipy.stats import jarque_bera import numpy as np
假设你的收益率序列存储在一个名为returns的list中
daily_returns = [0.01, -0.005, 0.02, ...] # 用实际的收益率替换...
计算对数收益率
log_returns = np.log(1 + daily_returns)
进行Jarque-Bera检验
JB_statistic, p_value = jarque_bera(log_returns)
#解释结果:
JB_statistic是一个数值,值越大表示样本与正态分布偏差越大;
p_value是一个概率值,如果p_value小于显著性水平(如0.05),则拒绝原假设,认为数据不符合正态分布。
print(f" Jarque-Bera统计量: {JB_statistic}") print(f" p-value: {p_value}")
python实现对数收益率的DW检验
使用 Python 实现对数收益率时间序列的 Durbin-Watson (DW) 检验
为了执行 Durbin-Watson 检验,通常会先计算时间序列数据的线性回归模型残差。对于对数收益率的时间序列数据,可以按照如下方法操作:
导入必要的库
import numpy as np
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
import statsmodels.api as sm
准备对数收益率数据
假设 log_returns
是已经准备好的对数收益率时间序列数据。
# 假设 log_returns 已经是一个 Pandas Series 或 DataFrame 列表
# 这里仅作为示例创建一些模拟数据
np.random.seed(42)
dates = pd.date_range('1949-01', '1960-12', freq='M')
log_returns = pd.Series(np.random.randn(len(dates)), index=dates)
# 显示前几项以确认数据结构
print(log_returns.head())
计算线性回归并获取残差
通过拟合一个简单的自回归模型来获得残差,这一步骤是为了后续应用 Durbin-Watson 统计量做准备。
model = ARIMA(log_returns, order=(1, 0, 0))
results = model.fit()
residuals = results.resid
执行 Durbin-Watson 检验
利用 statsmodels.stats.stattools.durbin_watson()
函数可以直接计算 Durbin-Watson 统计值。
dw_statistic = sm.stats.stattools.durbin_watson(residuals)
print(f"Durbin-Watson Statistic: {dw_statistic}")
上述过程展示了如何基于给定的对数收益率时间序列数据完成 Durbin-Watson 检验的具体步骤[^1]。
对数收益率python
对数收益率是用来衡量资产或投资组合的收益率波动性的指标。在Python中,可以使用NumPy库来计算对数收益率。
下面是一个示例代码,演示如何计算某段时间每日的对数收益率:
import numpy as np
# 假设有一个价格序列
prices = [100, 105, 110, 115, 120]
# 使用NumPy的log函数计算对数收益率
log_returns = np.log(prices[1:] / prices[:-1])
# 输出对数收益率
print(log_returns)
运行以上代码,将得到以下输出:
[0.04879016 0.04783798 0.04575749 0.04361939]
这个输出表示每日的对数收益率。
根据对数收益率,可以进一步设计指标进行交易分析,比如计算年化收益和夏普比率等。
相关推荐














