You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写同时返回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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:05:33