首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中股票biWeekly收益率标准差的计算

R中股票biWeekly收益率标准差的计算
EN

Stack Overflow用户
提问于 2021-11-13 14:01:42
回答 1查看 108关注 0票数 0

多年来,我有一个非常长的大量股票数据集,类似于这个数据:

代码语言:javascript
复制
one_ticker = tq_get("AAPL", from = "2021-06-01")
one_ticker <- one_ticker %>%
                mutate(day = day(date),
                month = month(date),
                year = year(date))


 symbol date        open  high   low close   volume adjusted   day month  year
   <chr>  <date>     <dbl> <dbl> <dbl> <dbl>    <dbl>    <dbl> <int> <dbl> <dbl>
 1 AAPL   2021-06-01  125.  125.  124.  124. 67637100     124.     1     6  2021
 2 AAPL   2021-06-02  124.  125.  124.  125. 59278900     125.     2     6  2021
 3 AAPL   2021-06-03  125.  125.  123.  124. 76229200     123.     3     6  2021
 4 AAPL   2021-06-04  124.  126.  124.  126. 75169300     126.     4     6  2021
 5 AAPL   2021-06-07  126.  126.  125.  126. 71057600     126.     7     6  2021
 6 AAPL   2021-06-08  127.  128.  126.  127. 74403800     126.     8     6  2021
 7 AAPL   2021-06-09  127.  128.  127.  127. 56877900     127.     9     6  2021
 8 AAPL   2021-06-10  127.  128.  126.  126. 71186400     126.    10     6  2021
 9 AAPL   2021-06-11  127.  127.  126.  127. 53522400     127.    11     6  2021
10 AAPL   2021-06-14  128.  131.  127.  130. 96906500     130.    14     6  2021

  1. ,我想首先计算每月biWeekly调整后的价格回报:

-first biWeekly interval: days 1-15 -second biWeekly interval: days 16-30

计算每个quarter.内调整后的返回标准偏差的

以下是苹果过去6个月的业绩:

代码语言:javascript
复制
    1. Adjusted_biWeekly_Returns
    
[1]  0.043128324
[2]  0.052324355
[3]  0.081663817
[4] -0.003620508
[5]  0.026136504
[6]  0.004698278
[7] -0.022818187
[8] -0.048995111
[9]  0.0153523
[10] 0.022176775

解释:

1 129.257401/123.913231-1 = 0.043128324 (2021年调整价格/ 01/06/2021调整价格)

5 148.882721/145.090561-1 = 0.026136504 (13/08/2021和02/08/2021) -因为在15日和1日没有交易。

代码语言:javascript
复制
     2. Quarterly Standard Deviation: 

1/06/2021 - 1/09/2021 0.028944365 ([1]-[6] standard deviation) 
1/09/2021 - 1/01/2022 Not available yet. 

我如何在R中计算它?*有一个tq_transmute函数,它对于每周计算非常有用,但不适用于biWeekly计算。

EN

回答 1

Stack Overflow用户

发布于 2021-11-17 23:09:10

您可以单独执行每个步骤,并使用to.weeklyapply.quarterly函数,如下代码所示:

代码语言:javascript
复制
library(tidyverse)
library(tidyquant)
library(xts)
library(PerformanceAnalytics)
library(TTR)

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

aapl_adj <- xts(x = one_ticker$adjusted,
                order.by = one_ticker$date)

aapl_adj_weekly <- to.weekly(aapl_adj, OHLC = F) # convert to weekly

idx <- seq_along(aapl_adj_weekly) %% 2 > 0 # create index for bi-weekly dates
 
aapl_adj_biweekly <- aapl_adj_weekly[idx, ] # extract bi-weekly values

aapl_adj_biweekly_returns <- TTR::ROC(aapl_adj_biweekly, type = "discrete", na.pad = F)

aapl_adj_biweekly_returns

# compute quarterly standard deviation
xts::apply.quarterly(aapl_adj_biweekly_returns, sd)
                   e1
2021-06-18         NA
2021-09-24 0.03159961
2021-11-16 0.02900001

如果你不需要降低到双周的频率,你可以只运行一次,对每个滴答。这也具有更好地估计返回标准偏差的优点,因为您使用了所有可用的数据点,而不仅仅是每两周的数据:

代码语言:javascript
复制
# fast version without downsampling and annualized standard deviation
aapl_adj |> TTR::ROC(type = "discrete", na.pad = F) |> xts::apply.quarterly(FUN = PerformanceAnalytics::sd.annualized)

                  e1
2021-06-30 0.1551537
2021-09-30 0.2063587
2021-11-16 0.1701798
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69954973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档