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

编写带条件分支的R函数,获取期权Delta及Gamma值的技术问题

基于optionstrat包扩展期权Delta与Gamma计算函数

需要编写R函数,根据option_type参数选择计算看涨/看跌期权的Delta和Gamma值:

  • 当option_type为"c"时,计算看涨期权的Delta(调用calldelta)和Gamma(从calleval结果中提取)
  • 当option_type不为"c"时,计算看跌期权的Delta(调用putdelta)和Gamma(从puteval结果中提取)

修改后的函数代码

library(optionstrat)

# 定义全局固定参数(也可改为函数参数增强灵活性)
x <- 10          # 执行价
sigma <- 0.25    # 波动率
t <- 0.25        # 到期时间(年)
r <- 0.05        # 无风险利率

stock_option_greeks <- function(option_type, s) {
    # 注意用==做相等判断,而非赋值符=
    if (option_type == "c") {
        delta_val <- calldelta(s, x, sigma, t, r)
        gamma_val <- calleval(s, x, sigma, t, r)$Gamma
    } else {
        delta_val <- putdelta(s, x, sigma, t, r)
        gamma_val <- puteval(s, x, sigma, t, r)$Gamma
    }
    # 用列表返回多个结果,便于调用后提取
    return(list(Delta = delta_val, Gamma = gamma_val))
}

函数调用示例

# 获取股价为10时的看涨期权Delta和Gamma
call_greeks <- stock_option_greeks("c", 10)
call_greeks$Delta  # 查看Delta值
call_greeks$Gamma  # 查看Gamma值

# 获取股价为10时的看跌期权Delta和Gamma
put_greeks <- stock_option_greeks("p", 10)
put_greeks$Delta
put_greeks$Gamma

关键优化说明

  • 修正判断逻辑:将原代码中的赋值符=改为相等判断符==,这是之前代码出现警告的核心原因之一
  • 多结果返回:用列表封装Delta和Gamma,支持一次性获取两个期权希腊值
  • 灵活扩展方案:若想避免依赖全局变量,可将x、sigma、t、r改为函数参数,示例如下:
stock_option_greeks <- function(option_type, s, x, sigma, t, r) {
    if (option_type == "c") {
        delta_val <- calldelta(s, x, sigma, t, r)
        gamma_val <- calleval(s, x, sigma, t, r)$Gamma
    } else {
        delta_val <- putdelta(s, x, sigma, t, r)
        gamma_val <- puteval(s, x, sigma, t, r)$Gamma
    }
    return(list(Delta = delta_val, Gamma = gamma_val))
}

# 调用示例:传入所有参数
call_greeks <- stock_option_greeks("c", s=10, x=10, sigma=0.25, t=0.25, r=0.05)

内容的提问来源于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 07:50:47