如何计算包含贡献和股息再投资的资本收益?

问题描述

我想在有 2 个条件的情况下计算股票(例如 FXAIX)在年底的资本收益:

  1. 每月 1 号自动投资(如果该月 1 号不是交易日,则贡献到下一个工作日
  2. 当日自动再投资股息

使用 tidyquant 获取 FXAIX 数据:

library(tidyquant)
library(tidyverse)

#checking fxaix
from <- "2019-01-01"
to <- "2020-01-01"

fxaix <- tq_get("FXAIX",from = from,to = to)

选择日期和收盘价:

fxaix_filter <- fxaix %>%
  select(date,close)

获取股息收益率数据:

fxaix_dividend <- tq_get("FXAIX",get = "dividend",to = to) %>%
  rename(dividend=value) %>%
  select(date,dividend)

stock_div <- fxaix_filter %>%
  left_join(fxaix_dividend,by = "date")

在每个月的第一天设置贡献/投资

# select the Trading dates available in order to contribute
dateseq <- fxaix %>%
  select(date)

# annual investment
annual_investment <- 19500

# contribution annual investment on the 1st of each month 
date_df <- dateseq %>%
  mutate(day = day(date)) %>%
  filter(day %in% c(1:3)) %>% #if there is no 1st of month then insert $$ on 2nd. if no 2nd,insert on 3rd
  mutate(contribution = annual_investment/12) %>% #monthly investment,hence divided by 12
  ungroup() %>%
  select(date,contribution)

加入贡献df与主df

fxaix_monthly <- fxaix_filter %>%
  left_join(date_df,by = "date") %>%
  left_join(fxaix_dividend,by = "date") %>%
  filter(!is.na(contribution)|!is.na(dividend)) %>%
  mutate(share = contribution/close,share_cum = cumsum(share)) 
fxaix_monthly

# A tibble: 16 x 6
   date       close contribution dividend share share_cum
   <date>     <dbl>        <dbl>    <dbl> <dbl>     <dbl>
 1 2019-01-02  87.2          700   NA      8.03      8.03
 2 2019-02-01  94.2          700   NA      7.43     15.5 
 3 2019-03-01  97.8          700   NA      7.16     22.6 
 4 2019-04-01 100.           700   NA      6.99     29.6 
 5 2019-04-05 100.            NA    0.574 NA        NA   
 6 2019-05-01 102.           700   NA      6.89     NA   
 7 2019-06-03  95.6          700   NA      7.32     NA   
 8 2019-07-01 103.           700   NA      6.77     NA   
 9 2019-07-05 104.            NA    0.48  NA        NA   
10 2019-08-01 103.           700   NA      6.81     NA   
11 2019-09-03 101.           700   NA      6.91     NA   
12 2019-10-01 103.           700   NA      6.82     NA   
13 2019-10-04 103.            NA    0.502 NA        NA   
14 2019-11-01 107.           700   NA      6.56     NA   
15 2019-12-02 109.           700   NA      6.45     NA   
16 2019-12-13 110.            NA    0.751 NA        NA   

如何将股息包括在累计股份总数中?例如,在 2019-04-05,股息同日再投资为 0.574*29.6/100 = 0.169904。我如何将此公式添加到 share_cum 中,其中它还将包括股息再投资并继续累积添加。而下一次股利计算将使用总份额(包括股利再投资)来计算股利再投资

提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...