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

在R语言中计算股票月度双周调整收益率及季度标准差

R语言计算股票双周调整收益率及季度标准差实现方案

现有数据说明

你当前持有的多股票时间序列数据集结构参考如下(以AAPL为例):

# 单只股票数据构造示例
library(tidyquant)
library(lubridate)
library(tidyverse)

one_ticker = tq_get("AAPL", from = "2021-06-01")
one_ticker <- one_ticker %>%
                mutate(day = day(date),
                month = month(date),
                year = year(date))

输出结构预览:

symboldateopenhighlowclosevolumeadjusteddaymonthyear
AAPL2021-06-01125.125.124.124.67637100124.162021
.................................

需求说明

  • 按月拆分双周区间计算收益率:每月拆为1-15日(第一双周)、16日-月末(第二双周)两个区间,区间首尾非交易日时取区间内最近的交易日调整价计算,收益率公式为区间末调整价/区间初调整价 - 1
  • 按季度统计上述双周收益率的标准差

实现代码

步骤1:全量数据预处理(多股票适用)

# 加载依赖包
library(tidyverse)
library(lubridate)
library(tidyquant)

# 假设你的全量多股票数据集命名为stock_data,结构和示例一致
stock_data_processed <- stock_data %>%
  # 生成双周区间标识、年季度标识
  mutate(
    # 双周标识:1=当月1-15日,2=当月16日至月末
    biweek_period = ifelse(day <= 15, 1, 2),
    # 年季度标识,方便后续分组统计季度标准差
    year_quarter = paste0(year, "Q", quarter(date))
  )

步骤2:计算双周调整收益率

biweek_return <- stock_data_processed %>%
  # 按股票、年、月、双周区间分组
  group_by(symbol, year, month, biweek_period) %>%
  # 取区间最早交易日的调整价作为期初价,最晚的作为期末价
  summarise(
    period_start_date = min(date),
    period_end_date = max(date),
    start_adjusted = first(adjusted, order_by = date),
    end_adjusted = last(adjusted, order_by = date),
    .groups = "drop"
  ) %>%
  # 计算双周收益率,过滤区间仅1个交易日的无效数据
  mutate(biweek_return = end_adjusted / start_adjusted - 1) %>%
  filter(period_start_date != period_end_date)

步骤3:计算季度双周收益率标准差

quarterly_sd <- biweek_return %>%
  # 关联回原预处理数据的年季度字段
  left_join(stock_data_processed %>% distinct(symbol, year, month, year_quarter),
            by = c("symbol", "year", "month")) %>%
  # 按股票、季度分组
  group_by(symbol, year_quarter) %>%
  summarise(
    biweek_return_sd = sd(biweek_return, na.rm = TRUE),
    # 可补充统计该季度有效双周样本数
    sample_count = n(),
    .groups = "drop"
  )

注意事项

  • 如果需要保留区间仅1个交易日的记录,可删除filter(period_start_date != period_end_date)语句,对应收益率会为0
  • 多股票数据需要确保按symbol分组计算,避免不同股票数据混淆
  • 计算标准差时na.rm = TRUE会自动过滤区间无有效交易的缺失值,不需要额外预处理缺失数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:06:02