如何编写同时返回Delta和Gamma值的R语言if-else函数?
R语言期权Delta与Gamma函数的多值返回解决方案
你的代码存在两个核心问题:
- if/else分支未用大括号包裹多语句,导致逻辑执行错误:当前写法下,不管
option_type是"c"还是其他,calleval(...)和puteval(...)都会被执行,而非仅在对应分支内运行。 - 错误使用
&运算符:&是R中的逻辑与运算符,用于布尔值判断,完全不适用于组合多个返回结果。
要同时返回Delta和Gamma值,R中通常用**列表(list)**来包装多个返回对象,同时给if/else分支加上大括号明确代码块范围。另外注意你的函数参数是stock_price,但代码里用了未定义的s,需要统一变量名。
修正后的代码如下:
library(optionstrat) library(quantmod) x <- 160 sigma <- 0.25 t <- 0.25 r <- 0.05 delta_gamma <- function(option_type, stock_price) { if (option_type == "c") { delta_val <- calldelta(stock_price, x, sigma, t, r) gamma_val <- calleval(stock_price, x, sigma, t, r)$Gamma list(Delta = delta_val, Gamma = gamma_val) } else { delta_val <- putdelta(stock_price, x, sigma, t, r) gamma_val <- puteval(stock_price, x, sigma, t, r)$Gamma list(Delta = delta_val, Gamma = gamma_val) } }
使用说明
调用函数后,可通过列表索引提取对应值:
# 示例调用 result <- delta_gamma("c", 150) result$Delta # 获取Delta值 result$Gamma # 获取Gamma值
内容的提问来源于stack exchange,提问作者Bubbles
相关产品推荐
相关产品推荐

