全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1552 3
2018-12-12
---
#R包加载准备
```{r}
library(readxl)
library(tidyquant)
library(dplyr)
library(PortfolioAnalytics)
```
---
#导入数据
```{r}
#从本地文件目录中获取数据,用read_xls读入。
#该表格数据为HS300十个行业指数近两年(2016-12-12到2018-12-10)来收益率日表现,数据源自CSMAR。
#idxcd、idxdate、idx、idxr分别代表指数代码、日期、指数值、日收益率。
hs300_cons <- readxl::read_xls("data/IDX_Idxtrd.xls",
              range = "A2:D4871",
              col_names =c("idxcd","idxdate","idx","idxr")
              ) %>%
              mutate(idxcd = str_c(idxcd, ".HS"))
#在数据处理中我们不需要具体的指数,故删除指数列后缀加上[,-3]
hs300_cons[,-3]
```
---
#数据转换
```{r}
#将股票代码转化为同行字符,将收益率分散。
hs300_cons1 <- spread(hs300_cons[,-3], idxcd,idxr)
hs300_cons2 <- hs300_cons1[,-1]
```
---
#数据转换
```{r}
#将字符格式的idxdate改成日期格式,并转化dataframe成为xts。
dt <- as.Date(unlist(hs300_cons1[,1]))
hs300_consxts <- xts(x = hs300_cons2, order.by = dt)

```
---
#基准投资组合
```{r}
returns <- hs300_consxts[, 1:10]
head(returns)

```
---
#基准投资组合
```{r}
#十项因子赋予等权重。
equal_weights <- rep(1 / ncol(returns), ncol(returns))
#按照季度调整权重计算回报
benchmark_returns <- returns %>%
  Return.portfolio(weights = equal_weights,
                   rebalance_on = "seconds")
colnames(benchmark_returns) <- "benchmark"
```
---
#基准投资组合
```{r}
#基准组合的表现
table.AnnualizedReturns(benchmark_returns)
```
---
#基准投资组合
```{r}
#图形表现
library(dygraphs)
benchmark_returns %>% dygraph() %>% dyRangeSelector()
```
以上是我码到现在的代码,老师布置的作业,使用的是10个沪深300行业指数的等权重基准,数据我已经转化成xts并且查验后没有问题,我调仓频率从季度一直到天一直都是异常的,图结果如下,而且调频后极端异常值的日期都会有所变化。
d844c4b1d11c77b79a3173ce2baa125.png 8f33a73851a0b89bbb948cedefe226b.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2018-12-12 16:14:05
如果有一个reproducible的example就好了,比如上传一个已经spread过后的csv/excel文件就好了

不过我读了一遍你的代码,问题应该是Return.portfolio中的argument:rebalance_on = "seconds",这个应该是笔误吧,所以导致代码能跑通,但是结果完全不对
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-12-12 16:17:05
应该是rebalance_on = "seconds"错了,这个应该是笔误吧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-12-15 10:29:56
xc2156 发表于 2018-12-12 16:17
应该是rebalance_on = "seconds"错了,这个应该是笔误吧
好的 谢谢~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群