ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

数学建模竞赛实战:资产清算交易策略的建模、算法与回测

数学建模竞赛实战:资产清算交易策略的建模、算法与回测 1. 项目概述当数学建模遇上金融实战看到“资产清算交易策略”这个题目很多参加过数学建模竞赛的同学可能会心头一紧。这不像一个纯粹的数学或物理问题它直接把我们拉进了金融市场的实战沙盘。简单来说这个题目要求我们扮演一个“清盘人”或“资产管理者”的角色面对一堆需要快速变现的资产比如股票、债券设计一套数学模型和交易策略在满足特定约束如时间、价格冲击、市场流动性的前提下最大化回收资金或者最小化损失。这绝不是一个纸上谈兵的优化问题。它融合了金融学、运筹学、统计学和计算机科学是对参赛者综合应用能力的一次高强度检验。你需要理解市场微观结构订单如何影响价格、掌握优化理论如何在约束下求极值还得有扎实的编程能力把模型实现出来。最终产出的不仅仅是一篇论文更是一个可以模拟运行的“交易引擎”原型。无论是对于未来想进入量化金融、资产管理领域的同学还是对于任何需要处理复杂决策优化问题的人这个题目都是一块极佳的试金石。2. 核心问题拆解与建模思路面对这样一个开放式题目第一步不是急着建模型而是把模糊的“资产清算”翻译成一系列清晰、可量化的数学问题。题目通常不会给出所有细节这就需要我们基于金融常识进行合理假设和问题定义。2.1 关键要素定义与问题边界划定一个典型的资产清算问题包含以下几个核心要素资产组合我们持有哪些资产通常是N支股票或债券。每个资产i有初始持有量 ( S_i(0) )。清算时限我们有多长时间把这些资产卖完可能是T个交易日或者更细粒度的T个时间间隔如每小时。价格模型资产的价格如何变化这是模型的核心。价格通常由两部分组成固有价格波动假设资产价格服从某种随机过程比如几何布朗运动 ( dP_t \mu P_t dt \sigma P_t dW_t )这代表了市场本身的风险。交易冲击这是清算策略特有的成本。当你大量卖出时你的卖单会压低压价。这种冲击通常是交易量 ( v_t ) 的函数。最常见的模型是线性冲击模型( \text{Impact} \lambda * v_t )其中λ是冲击系数衡量该资产的流动性。流动性差的资产如小盘股λ值很大卖得快会导致价格大幅下跌。目标函数我们追求什么最常见的是最大化最终变现收益或最小化损失。收益等于卖出所有股票的总收入。由于价格冲击的存在快速卖出减少价格波动风险和慢速卖出减少冲击成本之间存在权衡。约束条件我们必须遵守哪些规则清算完成约束在时限T结束时持有量必须为0即 ( S_i(T) 0 )。交易量约束每个时间段不能卖出超过市场深度每日成交量的一定比例否则无法成交。风险约束例如要求变现过程中的价值波动风险不能超过某个阈值。注意题目可能不会明确给出价格模型和冲击函数的形式。这时选择哪种模型本身就是建模的一部分。线性冲击模型因其简洁和可解性最常用但你也完全可以考虑更复杂的非线性冲击如平方根冲击或临时性/永久性冲击模型来体现深度。2.2 主流建模框架选择基于以上要素我们可以选择不同的数学框架来构建策略最优控制框架连续时间 这是最经典、最优雅的方法。将持有量 ( S(t) ) 视为状态变量交易速率 ( v(t) ) 视为控制变量。目标是最小化期望执行损失或等价地最大化收益。通过应用随机最优控制理论如哈密顿-雅可比-贝尔曼方程可以推导出最优交易轨迹 ( v^*(t) ) 的解析解或半解析解。著名的Almgren-Chriss模型就是这一框架的典范。它的优点是理论漂亮能深刻揭示“时间vs冲击”的权衡本质。缺点是对于复杂约束如交易量限制处理起来较困难。动态规划/随机规划框架离散时间 将时间离散化为 ( t0,1,...,T )。在每个时间点根据当前状态持有量、价格做出卖出多少的决策以优化从当前到结束的总期望收益。这更贴近实际的交易场景每天决策一次。可以用动态规划DP求解但当资产数量多时会遇到“维数灾难”。此时常用近似动态规划ADP或蒙特卡洛模拟结合优化方法来求解。静态规划框架 如果忽略价格的随机波动只考虑冲击成本那么问题简化为一个确定性优化问题如何将总卖出量 ( S_i(0) ) 分配到T个时间段上使得总冲击成本最小。这可以用简单的二次规划求解结果是一个均匀或前端加权的卖出计划。这可以作为更复杂模型的基准策略。我的思路选择建议对于数模竞赛我推荐采用离散时间的动态规划框架。原因有三第一它更直观易于向评委阐述第二它天然能处理各种复杂约束第三求解过程如后向递归编程实现相对直接。我们可以先建立一个简化版如单资产、线性冲击、几何布朗运动的DP模型求精确解再将其扩展为多资产版本并采用线性决策规则或模拟优化方法进行求解。3. 模型构建与核心算法实现让我们以一个具体的例子来贯穿整个实现过程假设我们需要在5个交易日内清算一只股票初始持有100万股每日收盘价执行交易目标是最大化最终现金收益。3.1 基础模型单资产Almgren-Chriss模型实现Almgren-Chriss模型是连续时间框架但我们可以将其离散化来理解和计算。模型假设价格服从算术布朗运动并叠加线性永久冲击。模型设定初始价格 ( P_0 50 ) 元。每日波动率 ( \sigma 2 ) 元算术假设下。永久冲击系数 ( \gamma 0.001 ) 元/股。卖出 ( v_t ) 股会使价格永久下降 ( \gamma v_t )。瞬时冲击系数 ( \eta 0.005 ) 元/股。卖出时立即产生的额外成本。时间 ( t 0, 1, 2, 3, 4 )5个时间点完成清算。状态与决策状态当前持有量 ( x_t )当前资产价格 ( \tilde{P}_t )已受之前交易冲击影响。决策当前时段卖出股数 ( v_t )满足 ( x_{t1} x_t - v_t )且 ( x_T 0 )。价格过程 ( \tilde{P}_{t1} \tilde{P}_t - \gamma v_t \sigma \epsilon_t )其中 ( \epsilon_t \sim N(0,1) )。 实际卖出单价为( P_t^{\text{exec}} \tilde{P}_t - \eta v_t )。你卖出的价格比当前市价还要低一个瞬时冲击目标函数最大化最终现金的期望效用通常等价于最小化执行损失。 执行损失 初始纸面价值 - 最终实际现金收入。 即最小化( \mathbb{E} \left[ \sum_{t0}^{T-1} (\eta v_t^2 \gamma v_t x_t) \right] \frac{\lambda}{2} \text{Var} \left( \sum_{t0}^{T-1} \sigma x_t \epsilon_t \right) ) 其中第一项是冲击成本第二项是风险成本λ是风险厌恶系数。这是一个经典的二次目标函数。求解离散化LQR 这个问题可以转化为一个线性二次型调节器问题。我们可以使用动态规划的后向递归来求解最优交易策略 ( v_t^* ) 是状态 ( x_t ) 的线性函数( v_t^* \beta_t x_t )。 通过推导解Riccati方程可以得到最优的卖出路径是一个指数衰减的形式初期卖得多后期卖得少。我们可以用Python快速实现这个计算。import numpy as np def almgr_chriss_optimal_schedule(T, x0, sigma, eta, gamma, lam, dt1): 计算Almgren-Chriss模型下的最优交易计划确定性部分 T: 时间步数 x0: 初始持有量 sigma: 波动率算术 eta: 瞬时冲击系数 gamma: 永久冲击系数 lam: 风险厌恶系数 dt: 时间步长 # 初始化 kappa np.sqrt(lam * sigma**2 / eta) rho np.sqrt(lam * sigma**2 * eta) / (eta gamma/2) sinh_kappaT np.sinh(kappa * T * dt) cosh_kappaT np.cosh(kappa * T * dt) # 最优持有量轨迹 (解析解) t np.arange(T1) * dt x_opt x0 * np.sinh(kappa * (T*dt - t)) / sinh_kappaT # 最优交易量轨迹 v_opt -np.diff(x_opt) / dt # 注意符号卖出量为正 return t, x_opt, v_opt # 参数设置 T 5 x0 1e6 sigma 2.0 eta 0.005 gamma 0.001 lam 1e-6 t, x_opt, v_opt almgr_chriss_optimal_schedule(T, x0, sigma, eta, gamma, lam) print(最优持有量计划:) for i in range(len(t)): print(f 时间 t{t[i]:.1f}: 持有 {x_opt[i]:.0f} 股) print(\n最优每日卖出量:) for i in range(len(v_opt)): print(f 时间段 {i} 到 {i1}: 卖出 {v_opt[i]:.0f} 股)运行这段代码你会得到一个前重后轻的卖出计划。这直观地反映了模型的核心思想为了降低未来价格不确定的风险风险厌恶我们倾向于早点卖出但为了减少大单对市场的冲击我们又应该慢慢卖。最优策略就是这个权衡下的平衡点。3.2 进阶模型多资产动态规划求解单资产模型是基础但竞赛题目极有可能是多资产的。这时问题复杂度指数上升。我们需要决定不同资产间的卖出顺序和节奏。一个实用的方法是采用离散时间动态规划并利用线性决策规则进行简化。模型扩展 假设有2只资产A和B。它们的价格相关冲击系数不同。状态变量( \mathbf{x}_t [x_t^A, x_t^B]^T )持有量向量( \mathbf{\tilde{P}}_t )价格向量。控制变量( \mathbf{v}_t [v_t^A, v_t^B]^T )卖出量向量。价格过程( \mathbf{\tilde{P}}_{t1} \mathbf{\tilde{P}}_t - \Gamma \mathbf{v}_t \mathbf{\epsilon}_t )其中 ( \Gamma ) 是永久冲击矩阵对角线元素为主( \mathbf{\epsilon}_t \sim N(0, \Sigma) ) 是相关的随机扰动。目标最小化 ( \mathbb{E}[\sum_t (\mathbf{v}_t^T \mathbf{H} \mathbf{v}_t \mathbf{x}_t^T \mathbf{\Lambda} \mathbf{x}_t)] )其中 ( \mathbf{H} ) 包含瞬时冲击和交叉冲击( \mathbf{\Lambda} ) 与风险厌恶和协方差矩阵有关。求解挑战与简化 精确求解这个多资产DP几乎不可能状态空间爆炸。我们采用近似动态规划中的“价值函数近似”思路。假设价值函数是二次型假设在时间t从状态 ( \mathbf{x}_t ) 出发到结束的最优成本函数 ( J_t(\mathbf{x}_t) ) 近似为二次型( J_t(\mathbf{x}_t) \approx \mathbf{x}_t^T \mathbf{A}_t \mathbf{x}_t \mathbf{b}_t^T \mathbf{x}_t c_t )。后向递归从最终时刻T开始( J_T(\mathbf{x}_T) 0 )必须清空否则有巨大惩罚。倒推回T-1时刻。在t时刻求解对于给定的 ( \mathbf{x}t )我们求解一个单期优化问题 ( \min{\mathbf{v}_t} \left{ \mathbf{v}_t^T \mathbf{H} \mathbf{v}_t \mathbf{x}_t^T \mathbf{\Lambda} \mathbf{x}t \mathbb{E}[J{t1}(\mathbf{x}_t - \mathbf{v}t)] \right} ) 由于我们假设了 ( J{t1} ) 是二次型且期望运算下随机项 ( \mathbf{\epsilon}_t ) 只影响常数项c所以这个优化问题是一个凸二次规划问题可以高效求解例如使用CVXPY库。拟合更新求解出最优的 ( \mathbf{v}_t^* ) 后我们可以得到该状态下的最优成本值 ( J_t^* )。我们在状态空间采样多个点 ( \mathbf{x}_t^{(k)} )求解对应的 ( J_t^*(\mathbf{x}_t^{(k)}) )然后用这些数据点拟合出二次型系数 ( \mathbf{A}_t, \mathbf{b}_t, c_t )。向前滚动在实际执行或模拟时从t0开始根据当前状态 ( \mathbf{x}_t )求解上述单期优化问题执行第一步决策 ( \mathbf{v}t^* )然后状态转移到 ( \mathbf{x}{t1} )重复此过程。import numpy as np import cvxpy as cp def multi_asset_DP_step(x_current, A_next, b_next, H, Lambda, Gamma, Sigma, risk_aversion): 多资产动态规划的单步求解 x_current: 当前持有量 (n_assets,) A_next, b_next: 下一时刻价值函数的二次型和一次型系数 H: 瞬时冲击矩阵 (n_assets, n_assets)正定 Lambda: 风险矩阵 (n_assets, n_assets)与Sigma和风险厌恶相关 Gamma: 永久冲击矩阵 (通常为对角阵) Sigma: 价格波动协方差矩阵 risk_aversion: 风险厌恶系数 返回: 最优卖出量 v_opt, 最优成本值 n len(x_current) v cp.Variable(n) # 决策变量卖出量 # 下一期预期持有量 x_next x_current - v # 成本项瞬时冲击成本 风险成本近似 未来成本期望 # 注意未来成本期望 E[J_{t1}(x_next)] x_next^T A_next x_next b_next^T x_next const # 其中const项与优化无关可以忽略。随机项epsilon_t的期望为0其方差影响常数项。 cost cp.quad_form(v, H) cp.quad_form(x_current, Lambda) cp.quad_form(x_next, A_next) b_next x_next # 约束卖出量非负且不能超过当前持有量 constraints [v 0, v x_current] prob cp.Problem(cp.Minimize(cost), constraints) prob.solve(solvercp.ECOS) if prob.status not in [optimal, optimal_inaccurate]: raise Exception(优化问题求解失败) return v.value, prob.value # 示例2个资产 n_assets 2 T 5 # 初始化参数 H np.array([[0.005, 0.0001], [0.0001, 0.008]]) # 瞬时冲击矩阵 Gamma np.diag([0.001, 0.002]) # 永久冲击矩阵 Sigma np.array([[4.0, 1.2], [1.2, 9.0]]) # 价格协方差矩阵 risk_aversion 1e-6 Lambda risk_aversion * Sigma # 简化风险成本 # 初始化价值函数系数最终时刻 A {T: np.zeros((n_assets, n_assets))} # A_T b {T: np.zeros(n_assets)} # b_T # 后向递归简化版这里只演示一步 # 在实际中我们需要从T-1循环到0并在每个时刻采样拟合A_t, b_t # 此处仅演示在给定A_next, b_next下对某个初始状态做一次决策 x0 np.array([500000.0, 300000.0]) # 初始持有 A_next A[T] b_next b[T] v_opt, cost_val multi_asset_DP_step(x0, A_next, b_next, H, Lambda, Gamma, Sigma, risk_aversion) print(f初始持有: {x0}) print(f第一步最优卖出量: {v_opt}) print(f预估第一步成本: {cost_val:.2f})这个框架非常灵活可以轻松加入交易量约束、整数手数约束等。虽然“拟合”价值函数这一步计算量较大但在数模竞赛的时间范围内对于3-5个资产的问题是完全可以实现的。4. 策略回测、评估与敏感性分析建好模型、写出策略只是第一步。在论文中你必须用数据证明你的策略是有效的。这就需要设计一个严谨的回测框架。4.1 回测框架搭建回测不是在历史价格上简单地跑一遍模型而是要尽可能模拟真实交易环境。数据获取与处理如果题目未提供数据你需要自己生成符合假设的模拟数据或从公开数据源如雅虎财经获取历史数据。关键是要包含价格序列和成交量数据用于估算市场深度和冲击系数。参数估计波动率与相关性用历史数据计算收益率的年化波动率 ( \sigma ) 和相关系数矩阵。冲击系数估计这是难点。一个简单的方法是冲击系数 ( \lambda ) 可以近似为 ( \frac{\text{价格}}{\text{日均成交额}} ) 的比例。或者使用更学术的方法通过分析订单簿数据或交易高频数据来估算。在竞赛中你可以基于资产流动性大盘股λ小小盘股λ大给出合理的假设值并进行敏感性分析。基准策略为了凸显你策略的优越性必须设置合理的基准进行比较。常见的基准有TWAP时间加权平均价格策略。将总数量在T个时段内均匀卖出。这是最朴素、最常用的基准。VWAP成交量加权平均价格策略。根据历史成交量分布来分配各时段的卖出比例。这需要预测成交量。立即全部卖出假设以当前价格瞬间卖出全部头寸但承受一个巨大的冲击成本可以用一个估计值。绩效指标不能只看最终收益。一套完整的评估指标包括最终执行价格总变现收入除以总股数。相对于基准的改进与TWAP/VWAP相比收益提升了多少基点。风险调整后收益比如夏普比率但这里样本期短可能不适用或者直接看收益的波动率。最大回撤清算过程中资产组合市值按市价计从高点回落的最大幅度。冲击成本模型估算出的总冲击成本。机会成本因未立即卖出而承受的价格不利波动的损失。4.2 敏感性分析与鲁棒性检验模型依赖于许多假设和参数。你必须检验你的策略是否“健壮”。参数敏感性关键参数风险厌恶系数λ、冲击系数η/γ、波动率σ上下浮动20%观察策略表现如最终收益、交易轨迹的变化。用图表展示例如画出收益随λ变化的曲线。一个稳健的策略应该在参数合理范围内表现稳定。模型误设检验你的模型假设价格服从几何布朗运动、冲击是线性的。如果真实情况不是呢价格跳跃在模拟数据中引入少数几个大的价格跳跃暴涨或暴跌看你的策略是否会失控。非线性冲击假设真实冲击成本是卖出量的平方根函数而你的模型仍用线性假设。用你的策略在“真实”非线性环境下回测看性能衰减多少。成交量不确定性你的策略可能假设每日能卖出某个量。如果某天市场流动性突然枯竭成交量锐减你的策略是否有应对机制例如加入基于实时成交量的自适应调整。市场状态适应性在不同的市场行情牛市、熊市、震荡市下测试你的策略。你可能发现在趋势明显的市场里快速清算更好在震荡市慢速清算更优。据此你可以提出一个自适应策略根据市场波动率或趋势指标动态调整风险厌恶系数λ。import matplotlib.pyplot as plt def backtest_strategy(strategy_func, price_paths, x0, params): 一个简单的回测函数框架 n_paths, T price_paths.shape final_cash [] for i in range(n_paths): cash 0.0 x x0 for t in range(T-1): # 获取当前价格 p price_paths[i, t] # 策略决定卖出量 v v strategy_func(t, x, p, params) # 计算冲击后执行价格 exec_price p - params[eta] * v # 更新现金和持有量 cash exec_price * v x - v # 最后一天清仓 v_last x exec_price_last price_paths[i, T-1] - params[eta] * v_last cash exec_price_last * v_last final_cash.append(cash) return np.mean(final_cash), np.std(final_cash) # 生成模拟价格路径 np.random.seed(42) n_paths 1000 T 10 mu, sigma 0.00, 0.02 # 假设零漂移日波动2% price_paths np.zeros((n_paths, T)) price_paths[:, 0] 50.0 for t in range(1, T): price_paths[:, t] price_paths[:, t-1] * np.exp((mu - 0.5*sigma**2) sigma * np.random.randn(n_paths)) # 定义两个策略 def TWAP_strategy(t, x, p, params): TWAP: 均匀卖出 return x / (params[T_total] - t) if (params[T_total] - t) 0 else x def AC_strategy(t, x, p, params): Almgren-Chriss策略 (使用预先计算好的计划) # 这里简化处理直接使用之前计算的最优计划v_opt # 在实际中需要根据剩余时间和剩余数量动态计算 remaining_time params[T_total] - t if remaining_time 0: return x # 一个简化的近似按剩余时间的平方根倒数比例卖出 # 这接近AC模型在风险中性下的解 return x / np.sqrt(remaining_time) # 回测参数 params {eta: 0.005, T_total: T, x0: 10000} params[x0] 10000 x0 params[x0] # 运行回测 twap_mean, twap_std backtest_strategy(TWAP_strategy, price_paths, x0, params) ac_mean, ac_std backtest_strategy(AC_strategy, price_paths, x0, params) print(fTWAP策略 - 平均最终现金: {twap_mean:.2f}, 标准差: {twap_std:.2f}) print(fAC策略 - 平均最终现金: {ac_mean:.2f}, 标准差: {ac_std:.2f}) print(fAC相对于TWAP的改进: {(ac_mean - twap_mean)/x0/50*10000:.2f} bps)5. 竞赛实战技巧与论文写作要点在72小时的数模竞赛中实现一个完美的资产清算策略系统是挑战。关键在于合理分配时间抓住得分点。5.1 解题步骤与时间规划第一天上午彻底吃透题目完成基础建模6小时精读题目用笔划出所有已知条件、隐含假设、目标和约束。和队友确认对题目的理解完全一致。文献速览快速搜索“Optimal Execution”、“Almgren-Chriss Model”、“Transaction Cost”等关键词下载2-3篇核心文献如Almgren Chriss, 2001的原始论文快速阅读其引言和模型部分理解核心思想。不要陷入公式推导的细节。确定基础模型团队讨论后确定采用哪个基础框架我推荐离散时间DP。写出模型的数学公式定义所有变量。完成这一步论文的“模型建立”部分就有了骨架。分工一人主攻模型推导与论文写作一人主攻算法实现与编程一人负责数据收集、处理与结果可视化。第一天下午至第二天模型实现与简单回测18小时编程实现核心算法使用Python推荐因库丰富或MATLAB。先实现单资产、简化版的策略如3.1节的代码。确保它能跑通给出一个合理的交易轨迹。获取或生成数据如果题目无数据则用代码生成符合模型的模拟数据。如果有数据立刻开始清洗和处理。完成第一个版本的回测在简化设定下单资产、线性冲击、几何布朗运动比较你的策略和TWAP。画出持有量随时间变化的图、收益分布的直方图。得到一些初步的、正向的结果。开始撰写论文的“模型”和“算法”部分将上午确定的数学模型清晰地表述出来并描述求解算法。第三天模型扩展、深入分析与论文完善30小时扩展模型将单资产模型扩展到多资产。实现4.2节中提到的近似动态规划框架。深入分析参数敏感性系统性地改变风险厌恶系数λ画出“有效边界”曲线最终收益 vs. 收益波动率。与更多基准比较加入VWAP、立即卖出等基准。市场环境测试生成高波动率和低波动率的价格路径分别测试策略表现。模型优缺点讨论诚实地讨论你的模型假设线性冲击、GBM价格的局限性并提出可能的改进方向如加入自适应机制。论文冲刺摘要最后写但最重要。用200-300字清晰说明问题、方法、模型、算法、主要结论和亮点。图表美化所有的图都必须有清晰的标题、坐标轴标签、图例。使用专业的配色如Set2, Set3色盲友好配色。表格要简洁突出关键数据。模型检验加入一节“模型检验”展示你的敏感性分析和鲁棒性测试结果。结论与推广总结核心发现并简要说明模型可以如何应用到其他领域如加密货币清算、大宗商品交割等。5.2 论文写作核心要点与避坑指南一篇优秀的数模论文是让一个不懂专业的评委也能看懂你的工作价值。摘要采用“总-分-总”结构。总用一两句话概括研究的问题和重要性。分简述你使用的模型框架“我们建立了一个基于离散时间动态规划的多资产最优执行模型”、核心算法“采用近似动态规划与二次价值函数拟合进行求解”、以及为处理某某约束引入的某某方法。总列出你的核心数值结果“回测显示我们的策略相比TWAP基准平均提升收益XX个基点”并总结模型的主要优点和适用范围。致命陷阱摘要里堆砌公式、没有具体数值结果、或者只说“我们建立了模型”而不说模型是什么。模型假设单独列出一节清晰说明。例如假设1资产价格服从几何布朗运动。假设2市场冲击成本是交易量的线性函数。假设3交易可在每个离散时间点瞬时完成且仅受冲击成本影响。假设4不考虑税费和手续费。这体现了你思维的严谨性。符号说明在模型建立前提供一个三线表格列出所有主要变量、符号和含义。这是专业性的体现。图表标题不要写“Figure 1: Result”而要写“Figure 1: Optimal trading trajectory for a single asset under different risk aversion levels (λ)”. 标题要自成一体说明图表内容。结果分析不要只说“从图1可以看出我们的策略更好”。要结合数据和图表具体说“如表2所示在风险厌恶系数λ1e-6时我们的策略实现了平均50.12元的执行价格比TWAP策略的49.85元高出0.27元相当于54个基点的改进。同时其收益标准差降低了15%表明在提升收益的同时也降低了风险。”代码附录将核心算法的代码如动态规划的主循环、优化问题的求解以附录形式给出。代码要简洁有必要的注释。最后一点心得资产清算这个题目评判的关键不在于你的模型有多复杂、多前沿而在于你能否将一个复杂的金融问题用清晰的数学语言定义出来并用严谨的计算过程去求解和验证。即使你最终只实现了一个单资产的简化模型但如果你对整个问题的拆解、建模的每一步理由、结果的全面分析都做得扎实到位你依然能获得很高的评价。清晰胜过复杂完整胜过花哨。
返回列表