1. quantmod包提供了几个辅助函数,用于根据列名从对象中提取特定列。
    Op(),Hi(),Lo(),Cl(),Vo()和Ad()函数可分别用于提取开盘价,最高价,最低价,收盘价,成交量和调整的收盘价等列集。
  2. PerformanceAnalytics包

Return.portfolio()进行计算。对于此函数,您将提供三个参数:R,weight和rebalance_on。R是返回的时间序列,weights是包含资产权重的向量,rebalance_on指定要重新平衡的日历周期。

Return.calculate(prices, method = c(“discrete”, “log”))
CalculateReturns(prices, method = c(“discrete”, “log”))
参数:价格 包含有序价格观察的数据对象
方法 计算“离散”或“日志”返回,默认离散(简单)

Return.portfolio(R, weights = NULL, wealth.index = FALSE,
contribution = FALSE, geometric = TRUE, rebalance_on = c(NA, “years”,
“quarters”, “months”, “weeks”, “days”), value = 1, verbose = FALSE, …)
重要的三个参数:
R是返回的时间序列的xts,vector,matrix,dataframe,timeSeries或zoo对象,weights是包含资产权重的向量,rebalance_on指定要重新平衡的日历周期
所有参数说明:
[R:资产返回的xts,vector,matrix,dataframe,timeSeries或zoo对象
weights (权重):包含资产权重的时间序列或单行矩阵/向量,作为十进制百分比,视为期间权重的开始。见下面的细节。
wealth.index:TRUE / FALSE是否返回财富指数。默认为FALSE
contribution:如果贡献为TRUE,则在给定时间段内添加资产所贡献的加权回报。默认为FALSE
geometric:利用几何链(TRUE)或简单/算术(FALSE)来聚合回报。默认值为TRUE。
rebalance_on:默认“无”; 或者“每日”,“每周”,“每月”,“年度”,以指定支持的日历期间再平衡 endpoints。如果weights是指定重新平衡日期的xts对象,则忽略。
values=1:期初总投资组合价值
verbose:如果verbose为TRUE,则返回中间计算列表。

工作区已加载returns
# step 1.创建等权重向量eq_weights,两个相加为1
eq_weights <- c(0.5, 0.5)
# step 2.创建基于买入并持有策略的投资组合pf_bh
pf_bh <- Return.portfolio(returns, weights = eq_weights, verbose = TRUE)
# step 3.创建一个每月重新平衡权重的投资组合pf_rebal
pf_rebal <- Return.portfolio(returns, weights = eq_weights, rebalance_on = "months", verbose = TRUE)
# step 4.创建一个新对象eop_weight_bh
eop_weight_bh <- pf_bh$EOP.Weight   # pf_bh$EOP.Weight改变了pf_bh的方法
# step 5.创建一个新对象eop_weight_rebal
eop_weight_rebal <- pf_rebal$EOP.Weight
# step 6.绘制期末权重
par(mfrow = c(2, 1), mar = c(2, 4, 2, 2))
plot.zoo(eop_weight_bh$AAPL)
plot.zoo(eop_weight_rebal$AAPL)
#来源于大二金融科技 链接后缀名是:r05/lessons/07权重的时间序列/

Return.annualized()计算==(几何)年化平均收益率==
StdDev.annualized()计算年化标准差
SharpeRatio.annualized()计算年化夏普比率

# step 1.计算sp500_returns的年平均值
Return.annualized(sp500_returns)

# step 2.计算sp500_returns的年度标准差
StdDev.annualized(sp500_returns)

# step 3.计算年化的夏普比率: ann_sharpe
ann_sharpe <- Return.annualized(sp500_returns) / StdDev.annualized(sp500_returns)
#夏普比率是通过将平均超额收益减去无风险利率,然后除以波动率得出的

# step 4.使用函数table.AnnualizedReturns()一次获取所有上述结果
table.AnnualizedReturns(sp500_returns)