如何用R的quantmod给期权Put列表添加股价行权价差值百分比列
给仅含看跌期权的列表新增"%Strike-StockPrice"列
实现代码
library(quantmod) Symbols <- c("AA","AAL","AAOI","ABBV","ABC","ABNB") Options.20221111 <- lapply(Symbols, getOptionChain) names(Options.20221111) <- Symbols only_puts_list <- lapply(Options.20221111, function(x) x$puts) # 获取股票数据 start_date <- as.Date("2022-06-01") getSymbols(Symbols, from = start_date) # 提取每只股票的最新收盘价 latest_prices <- sapply(Symbols, function(sym) { # 获取对应股票的收盘价列,取最后一行的数值 last(get(sym)[, paste0(sym, ".Close")]) }) # 给每个看跌期权数据框新增目标列 only_puts_list <- mapply(function(puts_data, stock_price) { # 按你给出的例子计算百分比差值:(收盘价-行权价)/收盘价 *100 puts_data$`%Strike-StockPrice` <- ((stock_price - puts_data$Strike) / stock_price) * 100 puts_data }, only_puts_list, latest_prices, SIMPLIFY = FALSE)
关键说明
latest_prices通过sapply遍历所有股票代码,提取每只股票的最新收盘价,存储为命名向量,确保后续与期权数据一一匹配。- 使用
mapply同时遍历期权列表和收盘价向量,完成每只股票期权数据的列计算与新增,SIMPLIFY = FALSE保证返回结果仍为列表格式。 - 注:如果你的实际需求是基于行权价计算百分比差值(即
((收盘价-行权价)/行权价)*100),只需修改公式部分即可。
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

