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

如何用R的最小化方法求解使目标公式最小的a、b、c值

用R实现目标公式的最小化求解

我们需要找到参数a、b、c,使得以下目标公式的取值最小:

目标公式:$\sum_{i=1}^n \left[ V_i - \left( a + bS_i + c\times\max(S_i - K, 0) \right) \right]^2$
其中:

  • $V_i$对应数据框data中的V_discounted_to_year2列
  • $S_i$对应数据框data中的S_2列
  • $K$为已定义的常数(值为1.10)

步骤1:确认预处理后的数据

先运行你提供的代码完成数据准备:

library(tidyverse)

r = 0.06
K = 1.10
t = 3
stock_prices = data.frame(
  S_0 = c(1, 1, 1, 1, 1, 1, 1, 1),
  S_1 = c(1.09, 1.16, 1.22, 0.93, 1.11, 0.76, 0.92, 0.88),
  S_2 = c(1.08, 1.26, 1.07, 0.97, 1.56, 0.77, 0.84, 1.22),
  S_3 = c(1.34, 1.54, 1.03, 0.92, 1.52, 0.90, 1.01, 1.34)
)

payoffs = data.frame( # P代表看跌期权的收益
  P_0 = c(0, 0, 0, 0, 0, 0, 0, 0),
  P_1 = c(0, 0, 0, 0, 0, 0, 0, 0),
  P_2 = c(0, 0, 0, 0, 0, 0, 0, 0),
  P_3 = c(0, 0, 0.07, 0.18, 0, 0.20, 0.09, 0)
)

data = stock_prices %>% 
  bind_cols(payoffs) %>% 
  mutate(
    monniness = ifelse(S_2 < K, "in_the_money", "out_the_money"),
    V_discounted_to_year2 = ifelse(monniness == "in_the_money", P_3* exp(-r * (t-2)), 0)
  )

步骤2:定义目标函数

编写一个函数,输入参数向量params(包含a、b、c),输出目标公式的平方和:

# 定义目标函数:计算平方和
objective_function <- function(params) {
  a <- params[1]
  b <- params[2]
  c <- params[3]
  
  # 计算每个样本的预测值:a + b*S_2 + c*max(S_2 - K, 0)
  predicted <- a + b * data$S_2 + c * pmax(data$S_2 - K, 0)
  
  # 计算平方和并返回
  sum((data$V_discounted_to_year2 - predicted)^2)
}

步骤3:使用R的优化函数求解

用基础包的optim()函数进行最小化求解,初始参数可以设为c(0, 0, 0),方法默认用Nelder-Mead(适合无约束优化):

# 初始参数猜测
initial_guess <- c(0, 0, 0)

# 运行优化
optim_result <- optim(initial_guess, objective_function)

# 查看结果
optim_result

结果解释

运行后optim_result会包含以下关键信息:

  • par:最优的a、b、c参数值
  • value:目标公式的最小平方和
  • convergence:收敛状态(0代表收敛成功)

你可以用以下代码提取最优参数:

# 提取最优a、b、c
best_a <- optim_result$par[1]
best_b <- optim_result$par[2]
best_c <- optim_result$par[3]

cat("最优参数:a =", round(best_a, 4), ",b =", round(best_b, 4), ",c =", round(best_c, 4), "\n")
cat("最小平方和:", round(optim_result$value, 6), "\n")

内容的提问来源于stack exchange,提问作者user113156

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:23:12