#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并且查验后没有问题,我调仓频率从季度一直到天一直都是异常的,图结果如下,而且调频后极端异常值的日期都会有所变化。


雷达卡



京公网安备 11010802022788号







