You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何快速计算多时间序列日对数收益率DataFrame的7日已实现波动率?

按周计算多列时间序列的7日已实现波动率

核心思路

已实现波动率基于日对数收益率的平方和开方计算,按周分组时直接对每周内的收益率执行该计算即可。若需要年化,可乘以$\sqrt{252/7}$(252为年交易日数)。

前提准备

确保你的DataFrame包含日期类型的索引或列,示例数据无日期,需先添加:

# 加载依赖包
library(dplyr)
library(lubridate)
library(data.table) # 可选,处理大数据更快

# 你的原始数据
df <- structure(list(ADA = c(0.00519787736925448, 0.0307208647325365, 
0.154138771350992, 0.0164342066551776, -0.0557120045069119, 0.0137042340758324, 
-0.00923274693800846, -0.0560696427736868, -0.0453846430358594, 
-0.0119861841881651), BNB = c(-0.0231997754459639, 0.0439663779991935, 
0.0685574769535244, -0.0310282134011945, 0.443641921228532, 0.400594784041669, 
-0.189571775497508, -0.0203461395784901, -0.0450853757768916, 
-0.00114121883972107), BTC = c(-0.0358973950143717, 0.0925827850343683, 
0.0145041249453595, 0.025856749062152, 0.110937798087752, 0.00557805699941127, 
-0.0617370565817161, -0.082670269191885, -0.0386173267907015, 
0.0255604355626176)), row.names = c(NA, 10L), class = "data.frame")

# 添加日期列(假设为连续交易日,从2023-01-01开始)
df <- df %>% mutate(date = ymd("2023-01-01") + days(0:(n()-1)))

方法一:用dplyr(简洁直观)

# 计算未年化的周度7日已实现波动率
weekly_rv <- df %>%
  mutate(week = floor_date(date, "week")) %>% # 按周分组,每周起始为周一
  group_by(week) %>%
  summarise(across(c(ADA, BNB, BTC), ~sqrt(sum(.x^2)))) %>%
  ungroup()

# 计算年化版本(转换为年波动率)
weekly_rv_annualized <- df %>%
  mutate(week = floor_date(date, "week")) %>%
  group_by(week) %>%
  summarise(across(c(ADA, BNB, BTC), ~sqrt(sum(.x^2)) * sqrt(252/7))) %>%
  ungroup()

方法二:用data.table(大数据下更快)

# 转成data.table格式
dt <- as.data.table(df)
dt[, week := floor_date(date, "week")]

# 未年化波动率
weekly_rv_dt <- dt[, lapply(.SD, function(x) sqrt(sum(x^2))), by = week, .SDcols = c("ADA", "BNB", "BTC")]

# 年化波动率
weekly_rv_dt_annualized <- dt[, lapply(.SD, function(x) sqrt(sum(x^2)) * sqrt(252/7)), by = week, .SDcols = c("ADA", "BNB", "BTC")]

注意事项

  • 若原始数据已有日期列,直接替换代码中的日期生成逻辑即可。
  • 若遇到某周交易日不足7天(如数据集首尾周),代码会自动计算该周现有交易日的波动率;若需严格滚动7天窗口,可使用slider包的滑动窗口函数。

内容的提问来源于stack exchange,提问作者Keeran04

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 06:27:28