返回题库

期权二叉树单步定价

Options Binomial Tree One Step

专题
Finance / 金融
难度
L2
来源
MyntBit

题目详情

某股票当前交易价格为 100 美元。下一期预计上涨至 110 美元或下跌至 90 美元。无风险利率为每期 5%。假设无分红,计算上涨的风险中性概率和该股票的欧式看涨期权价格(执行价 100 美元)。

任务:使用一步二叉树模型计算。风险中性概率 p = (e^{rT} - d)/(u - d),看涨期权价格 = e^{-rT} × [p × max(Su-K,0) + (1-p) × max(Sd-K,0)]。

英文原题

A stock is currently trading at 100 dollars. Over the next period, it is expected to either increase to 110 dollars or decrease to 90 dollars. The risk-free rate is 5% per period. Assuming no dividends, calculate the risk-neutral probability of the stock price increasing.

解析

问题分析

A stock is currently trading at 100 dollars. Over the next period, it is expected to either increase to 110 dollars or decrease to 90 dollars. The risk-free rate is 5% per period. Assuming no dividends, calculate the risk-neutral probability of the stock price increasing.

解法

根据题目要求实现相应功能。核心逻辑需要:

// 核心数据结构和方法——根据题目 API 约定实现
// 1. 确定状态表示——选择支持所需操作的数据结构
// 2. 实现核心算法——确保 O(·) 时间复杂度和正确性
// 3. 处理边界条件——空输入、极值参数、并发访问

验证

用具体输入验证:构造已知输入的测试用例,确认输出匹配预期结果。

复杂度与边界

  • 时间复杂度:取决于选用的算法
  • 空间复杂度:取决于数据规模
  • 关键边界条件:空输入、极值参数、并发场景下的正确性保证

英文解析

Analysis

A stock is currently trading at 100 dollars. Over the next period, it is expected to either increase to 110 dollars or decrease to 90 dollars. The risk-free rate is 5% per period. Assuming no dividends, the risk-neutral probability of the stock price increasing is calculated using the one-period binomial model. In risk-neutral pricing, the expected return of the stock must equal the risk-free rate: E[S] = S * e^(rdt). This gives us the risk-neutral probability q such the solution to: qu + (1-q)d = e^(-rdt) where u = 1.1 (up factor) and d = 0.9 (down factor).

Solution

struct BinomialResult { double q_up, double call_price, double put_price; };
BinomialResult oneStepBinomial(double S = 100, double u = 110, double d = 90, double r = 0.05) int periods = 1) {
    double dt = periods * r;  // Risk-free growth factor
    double q = (std::exp(r*dt) - d) / (u - d);  // Risk-neutral probability of up move
    double call_price = S * u * std::exp(-r*dt);  // Call payoff
    double put_price = S * d * std::exp(-r*dt);   // Put payoff
    return {q, call_price, put_price};
}
// Example: q = (e^0.05 - 0.9) / (1.1 - 0.9) = 0.525
// call_price = 110 * e^(-0.05) = 104.76
// put_price = 90 * e^(-0.05) = 85.54

Complexity & Edge Cases

  • Time complexity: O(1) for one-step model
  • Space complexity: O(1)
  • Edge cases: (1) When u/d ratio makes q outside [0,1] range, arbitrage exists (2) Multi-period trees are O(N) where N = number of time steps (3) Dividend payments reduce u and increase d

Verification

Verify q = 0.525, call_price = 104.76, put_price = 85.54. Check that risk-neutral expectation equals risk-free growth: q*u + (1-q)d = e^(rdt). Verify put-call parity holds.

Key Considerations

The one-step binomial model is the foundation of all option pricing. The risk-neutral probability q ensures that the expected growth rate equals the risk-free rate, a key requirement for no-arbitrage pricing. In practice, multi-step binomial trees extend this to American/European options with early exercise features by discretizing time into many small steps.