- 金融科技
- 科学计算
【免费下载链接】tf-quant-finance
High-performance TensorFlow library for quantitative finance.
tf-quant-finance(下称 tff)在tf_quant_finance/math/optimizer下提供了一套面向 TensorFlow 张量生态的数值优化工具集。本指南以api_docs/tf_quant_finance/math/optimizer.md模块文档为骨架,逐一讲解模块公开的 10 个 API:BFGS、L-BFGS、Nelder-Mead、Differential Evolution 四大优化器,以及共轭梯度算法(仓库自研实现)与配套的停止条件、单步迭代函数。读完本文,你将掌握这些优化器的参数含义、调用方式、批量(batched)搜索技巧与停止条件控制,并了解其底层源码实现与测试验证方式,可直接用于模型校准、参数拟合、利率曲线构建等量化场景。
模块总览与 API 清单
tff.math.optimizer是 tff 数学子模块tf_quant_finance/math下负责"数值优化方法"的命名空间,通过tf_quant_finance/math/__init__.py挂载为tff.math.optimizer。模块文档明确列出其包含的四大优化算法:BFGS、L-BFGS、Nelder-Mead 与 Conjugate Gradient(共轭梯度),此外还包含差分进化(Differential Evolution)算法。
从tf_quant_finance/math/optimizer/__init__.py的源码可以确认,该模块的公开 API 由两部分构成:
- 从 TensorFlow Probability(TFP)直接复用:
bfgs_minimize、lbfgs_minimize、nelder_mead_minimize、nelder_mead_one_step、differential_evolution_minimize、differential_evolution_one_step、converged_all、converged_any、linesearch均来自tensorflow_probability.python.optimizer,通过from tensorflow_probability.python.optimizer import ...重导出(见init.py); - tff 自研实现:共轭梯度优化器
conjugate_gradient_minimize与参数类ConjugateGradientParams定义在仓库源码conjugate_gradient.py中,是本模块唯一有独立源码与测试的算法。
模块通过remove_undocumented(__name__, _allowed_symbols)将公开符号白名单锁定为上述 10 个 API(外加内部使用的linesearch),详见 _allowed_symbols。
| 类别 | API | 说明 |
|---|---|---|
| 基于梯度的拟牛顿法 | bfgs_minimize | 完整 BFGS 算法,维护稠密逆 Hessian 近似 |
lbfgs_minimize | 内存受限 L-BFGS,隐式维护最近若干步的修正对 | |
| 无导数(导数无关)算法 | nelder_mead_minimize | Nelder-Mead 单纯形法,支持非光滑目标 |
differential_evolution_minimize | 差分进化(种群进化)全局优化 | |
| tff 自研 | conjugate_gradient_minimize | Hager-Zhang 共轭梯度实现(CG_DESCENT) |
ConjugateGradientParams | 共轭梯度算法可调参数(attrs 数据类) | |
| 单步迭代 | nelder_mead_one_step/differential_evolution_one_step | 分别执行算法单次迭代 |
| 停止条件 | converged_all/converged_any | 批量搜索的全局停止策略 |
统一的"目标函数"接口约定
所有优化器都遵循同一套接口约定,这是正确使用本模块的前提:
- 输入:目标函数接收一个(或一批)实数
Tensor,形状为[..., n],其中n是解空间维度,前面的...是批量(batching)维度; - 输出:
- 基于梯度的优化器(BFGS/L-BFGS/共轭梯度)要求目标函数返回
(value, gradient)二元组,value形状为[...],gradient形状为[..., n]; - 无导数优化器(Nelder-Mead/差分进化)只要求返回
value(标量Tensor)。
- 基于梯度的优化器(BFGS/L-BFGS/共轭梯度)要求目标函数返回
为方便构造"值 + 梯度"形式的函数,tff 提供了两个辅助工具(定义于tf_quant_finance/math/gradient.py):
tff.math.value_and_gradient(f, xs):同时计算f在xs处的函数值与梯度;tff.math.make_val_and_grad_fn:装饰器,把只返回函数值的函数包装成返回(value, gradient)的函数,其 docstring 明确说明"这对构造 tff.math.optimizer 优化方法所需的函数非常有用"。
import tensorflow as tf import tf_quant_finance as tff minimum = tf.constant([1.0, 1.0]) scales = tf.constant([2.0, 3.0]) @tff.math.make_val_and_grad_fn def quadratic(x): return tf.reduce_sum(scales * tf.math.squared_difference(x, minimum), axis=-1)停止条件:converged_all 与 converged_any
批量优化时,每个 batch 成员可能以不同速度收敛或失败,需要统一决定何时终止整个搜索。模块提供了两个停止条件函数:
converged_all(converged, failed):当所有batch 成员都收敛或失败时才停止,是默认行为,保证每个起点都完成搜索;converged_any(converged, failed):只要任一batch 成员收敛,或全部失败,就停止,适合只关心"最快找到一个可行解"的场景。
二者签名一致:接收两个形状为[...]的布尔Tensor(converged与failed),返回一个布尔标量Tensor表示是否停止。可通过stopping_condition参数传入任意自定义停止函数。在conjugate_gradient_test.py的test_himmelblau_batch_any中,用converged_any对 Himmelblau 函数的 4 个起点批量搜索,验证了"至少一个收敛但并非全部收敛"的行为,同时断言迭代 7 次、共 27 次目标函数求值。
BFGS 优化器(bfgs_minimize)
功能与签名
bfgs_minimize使用 BFGS 拟牛顿方案对可微函数做无约束极小化,算法细节参考 Nocedal & Wright (2006)(该文档引用了其第 136–140 页)。完整签名:
tf_quant_finance.math.optimizer.bfgs_minimize( value_and_gradients_function, initial_position, tolerance=1e-8, x_tolerance=0, f_relative_tolerance=0, initial_inverse_hessian_estimate=None, max_iterations=50, parallel_iterations=1, stopping_condition=None, validate_args=True, max_line_search_iterations=50, f_absolute_tolerance=0, name=None )关键参数
| 参数 | 默认值 | 含义 |
|---|---|---|
value_and_gradients_function | — | 返回(value, gradient)的 Python 可调用对象 |
initial_position | — | 实数Tensor,形状[..., n],搜索起点;起点处函数值与梯度范数须有限 |
tolerance | 1e-8 | 梯度容忍度:梯度上确界范数低于该值即停止 |
x_tolerance | 0 | 相邻两次迭代位置绝对变化小于该值即停止(0表示不启用) |
f_relative_tolerance | 0 | 相邻两次目标值相对变化小于该值即停止 |
f_absolute_tolerance | 0 | 相邻两次目标值绝对变化小于该值即停止 |
initial_inverse_hessian_estimate | None | 逆 Hessian 初始估计,形状须可广播到[..., n, n];必须对称正定;缺省时用单位矩阵 |
max_iterations | 50 | 最大迭代次数(标量正 int32) |
parallel_iterations | 1 | 允许并行运行的迭代数 |
stopping_condition | converged_all | 停止策略,可换converged_any |
validate_args | True | 是否校验优化器参数合法性(False时非法输入可能静默产生错误输出) |
max_line_search_iterations | 50 | Hager-Zhang 线搜索的最大迭代次数 |
name | None | 操作名前缀,缺省为'minimize' |
用法示例(来自模块文档)
import numpy as np import tensorflow as tf import tensorflow_probability as tfp minimum = np.array([1.0, 1.0]) # 二次碗的中心 scales = np.array([2.0, 3.0]) # 两个轴上的尺度 def quadratic_loss_and_gradient(x): return tfp.math.value_and_gradient( lambda x: tf.reduce_sum(scales * tf.math.squared_difference(x, minimum), axis=-1), x) start = tf.constant([0.6, 0.8]) # 搜索起点 optim_results = tfp.optimizer.bfgs_minimize( quadratic_loss_and_gradient, initial_position=start, tolerance=1e-8) assert optim_results.converged np.testing.assert_allclose(optim_results.position, minimum) print("Function evaluations: %d" % optim_results.num_objective_evaluations) # 应为 5在optimizer_test.py中,test_bfgs_minimize用 BFGS 一次性从 4 个不同起点出发,找到 Himmelblau 函数的全部 4 个极小点((3,2)、(-2.805118, 3.131312)、(-3.779310, -3.283186)、(3.584428, -1.848126)),验证了批量搜索与converged_all停止条件的配合。
返回结果
bfgs_minimize返回命名元组,字段包括:
converged:形状[...]的布尔Tensor,指示每个 batch 成员是否在容忍度内找到极小值;failed:形状[...]的布尔Tensor,指示线搜索是否未能找到满足 Wolfe 条件的步长;无求值次数约束时它是converged的补集,若因求值次数耗尽而停止,则failed与converged可能同时为False;num_objective_evaluations:目标函数总求值次数;position:形状[..., n],搜索找到的最终位置(收敛时即目标函数的极小点);objective_value:position处的目标函数值;objective_gradient:position处的梯度;inverse_hessian_estimate:形状[..., n, n]的估计逆 Hessian。
L-BFGS 优化器(lbfgs_minimize)
功能与签名
lbfgs_minimize是 BFGS 的低内存版本(Nocedal & Wright 第 176–180 页),不维护稠密逆 Hessian,而是用最近若干步的(位置增量, 梯度增量)修正对做隐式近似,适合高维问题。完整签名:
tf_quant_finance.math.optimizer.lbfgs_minimize( value_and_gradients_function, initial_position, previous_optimizer_results=None, num_correction_pairs=10, tolerance=1e-8, x_tolerance=0, f_relative_tolerance=0, initial_inverse_hessian_estimate=None, max_iterations=50, parallel_iterations=1, stopping_condition=None, max_line_search_iterations=50, f_absolute_tolerance=0, name=None )与 BFGS 不同的关键参数
| 参数 | 默认值 | 说明 |
|---|---|---|
previous_optimizer_results | None | 传入上一次的LBfgsOptimizerResults以恢复优化状态(可配合新的stopping_condition续跑);与initial_position只能指定其一 |
num_correction_pairs | 10 | 保留的(position_delta, gradient_delta)修正对数量,控制隐式 Hessian 近似的记忆量 |
initial_inverse_hessian_estimate | None | 文档注明当前版本暂不支持该选项 |
其余参数(tolerance、x_tolerance、f_relative_tolerance、max_iterations、parallel_iterations、stopping_condition、max_line_search_iterations、f_absolute_tolerance、name)含义与 BFGS 一致。
用法示例(高维二次函数,来自模块文档)
ndims = 60 minimum = np.ones([ndims], dtype='float64') scales = np.arange(ndims, dtype='float64') + 1.0 def quadratic_loss_and_gradient(x): return tfp.math.value_and_gradient( lambda x: tf.reduce_sum(scales * tf.math.squared_difference(x, minimum), axis=-1), x) start = np.arange(ndims, 0, -1, dtype='float64') optim_results = tfp.optimizer.lbfgs_minimize( quadratic_loss_and_gradient, initial_position=start, num_correction_pairs=10, tolerance=1e-8) assert optim_results.converged np.testing.assert_allclose(optim_results.position, minimum)返回结果在 BFGS 字段基础上多了position_deltas与gradient_deltas,分别编码最近的位置变化与梯度变化。测试test_lbfgs_minimize展示了 50 个随机二次碗的批量搜索(batches=50, dim=10),配合converged_any停止条件,验证了批量 L-BFGS 的行为。
共轭梯度优化器(conjugate_gradient_minimize,tff 自研)
算法背景
conjugate_gradient_minimize是 tff 在仓库内自研实现的共轭梯度优化器,实现 Hager & Zhang 的 CG_DESCENT 算法([HZ2006]),搜索方向的更新公式采用其 2013 年改进版本([HZ2013]),线搜索部分调用 TFP 的linesearch.hager_zhang(见源码 conjugate_gradient.py)。该实现支持一维批量形状(1-dimensional batch shape)。
完整签名:
tf_quant_finance.math.optimizer.conjugate_gradient_minimize( value_and_gradients_function, initial_position, tolerance=1e-8, x_tolerance=0, f_relative_tolerance=0, max_iterations=50, parallel_iterations=1, stopping_condition=None, params=None, name=None )关键参数
参数含义与 BFGS 中同名参数一致,唯一的特殊参数是params:ConjugateGradientParams对象,用于调节算法内部行为,缺省时使用默认参数。
用法示例(来自模块文档)
minimum = np.array([1.0, 1.0]) scales = np.array([2.0, 3.0]) def quadratic(x): value = tf.reduce_sum(scales * (x - minimum) ** 2) return value, tf.gradients(value, x)[0] start = tf.constant([0.6, 0.8]) optim_results = conjugate_gradient.minimize( quadratic, initial_position=start, tolerance=1e-8) with tf.Session() as session: results = session.run(optim_results) assert results.converged np.testing.assert_allclose(results.position, minimum)ConjugateGradientParams 参数类
ConjugateGradientParams是基于tff_utils.dataclass的数据类(见 conjugate_gradient.py),各字段均与 [HZ2006] 中的符号一一对应,可独立调节:
| 字段 | 默认值 | 对应符号 | 取值范围 | 作用 |
|---|---|---|---|---|
sufficient_decrease_param | 0.1 | delta | (0, 0.5) | Wolfe 条件充分下降参数 |
curvature_param | 0.9 | sigma | [delta, 1) | Wolfe 条件曲率参数 |
threshold_use_approximate_wolfe_condition | 1e-6 | epsilon | (0, inf) | 切换近似 Wolfe 条件的阈值估计 |
shrinkage_param | 0.66 | gamma | (0, 1) | 线搜索收缩参数 |
direction_update_param | 0.4 | eta | (0, inf) | 计算下一方向时beta_k的下界参数 |
expansion_param | 5.0 | rho | (1.0, inf) | 线搜索区间未包络极小点时扩展初始区间的参数 |
initial_guess_small_factor | 0.2 | psi_1 | (0, 1) | 线搜索初始猜测中,前一步长乘以该因子以构造二次插值右端点 |
initial_guess_step_multiplier | 2.0 | psi_2 | (1, inf) | 二次插值失败时对前一步长的乘数 |
quad_step | True | QuadStep | 布尔 | 是否在线搜索初始步猜测时尝试二次插值 |
源码级的算法流程
从源码minimize可以还原完整实现脉络:
- 初始化:计算起点处函数值
f0与梯度df0,梯度 L2 范数低于tolerance即判定初始收敛,初始搜索方向取-df0(负梯度); - 主循环:
tf.while_loop驱动,循环条件为"迭代数未达上限且停止条件未满足"(_cond,源码 L327-L331); - 初始步长猜测(
_init_step,对应 [HZ2006] 的 I1-I2):以psi_1 * prev_step试探,尝试二次插值(quad_step=True时),失败则回退到psi_2 * prev_step(源码 L473-L540); - 线搜索:若初始步已满足精确/近似 Wolfe 条件则跳过(对应 [HZ2006] 的 T1/T2 判定,源码 L366-L381),否则调用
linesearch.hager_zhang执行 L0-L3 流程,其中参数theta固定为 0.5(不可调); - 方向更新:按 [HZ2013] 公式 (2.7)-(2.11) 计算
beta_k,并用eta_k做下界约束(b_k = max(b_k, eta_k)),保证充分下降(源码 L409-L419); - 收敛判定:梯度无穷范数
<= tolerance、位置绝对变化<= x_tolerance、目标相对变化<= f_relative_tolerance,三者满足其一即视为该 batch 成员收敛(源码 L421-L427)。
测试验证
conjugate_gradient_test.py对算法做了系统性验证,可作为使用参考:
- 单变量二次函数、随机二次型(2~15 维)、4 阶抛物面、逻辑回归(5 维 + L2 正则)、几何 GLM 的 MLE 数据拟合;
- 经典测试函数:Rosenbrock(2 维与 7 维)、Himmelblau(4 个不同极小点)、McCormick、Beale;
- 批量行为:
test_himmelblau_batch_all(全部收敛)与test_himmelblau_batch_any(converged_any提前停止); - 动态形状(graph 模式下未知维度占位符)与
float32dtype 兼容性。
无导数优化器:Nelder-Mead(nelder_mead_minimize)
功能与签名
nelder_mead_minimize使用 Nelder-Mead 单纯形法对(可能非光滑的)函数做无约束极小化,算法参考 Press et al. (2007) 与 Gao & Han (2012)。注意:该方法不支持单变量函数,解空间维度n必须大于 1。完整签名:
tf_quant_finance.math.optimizer.nelder_mead_minimize( objective_function, initial_simplex=None, initial_vertex=None, step_sizes=None, objective_at_initial_simplex=None, objective_at_initial_vertex=None, batch_evaluate_objective=False, func_tolerance=1e-8, position_tolerance=1e-8, parallel_iterations=1, max_iterations=None, reflection=None, expansion=None, contraction=None, shrinkage=None, name=None )初始单纯形的构建
算法围绕一个满秩单纯形(simplex)迭代,初始单纯形有两种提供方式:
- 直接指定
initial_simplex:形状为[n+1] + s的Tensor(n为问题维度,s为单个点的形状),每行是一个顶点,各行必须仿射独立; - 由顶点生成:给定
initial_vertex(单点)与step_sizes,构造坐标轴对齐单纯形,即顶点集合S = {v0} + {v0 + step_i * e_i},其中e_i是第i轴单位向量,step_i是沿该轴的特征长度。step_sizes不指定时每轴取单位步长;也可以只给一个标量用于所有轴,或为每轴分别提供步长。
initial_simplex与initial_vertex必须且只能提供一个,否则抛出ValueError;step_sizes与initial_simplex同时指定也会报错。
关键参数
| 参数 | 默认值 | 说明 |
|---|---|---|
batch_evaluate_objective | False | 为True时一次性在[n+1] + s打包张量上批量求值所有顶点(返回[n+1]),可利用向量化;目标函数允许时推荐开启 |
func_tolerance | 1e-8 | 单纯形顶点上最大与最小函数值绝对差低于该值即停止 |
position_tolerance | 1e-8 | 顶点坐标最大绝对差低于该阈值即终止 |
max_iterations | None | 最大迭代次数(int32);None表示不限 |
reflection/expansion/contraction/shrinkage | None | 单纯形四种几何变换的缩放参数:反射顶点缩放(正数)、扩展缩放(须> 1且> reflection)、收缩缩放((0,1))、收缩比例((0,1))。均不指定时采用 Gao & Han (2012) 的维度相关自适应参数方案 |
用法示例(非光滑目标,来自模块文档)
def sqrt_quadratic(x): return tf.sqrt(tf.reduce_sum(x ** 2, axis=-1)) start = tf.constant([6.0, -21.0]) optim_results = tfp.optimizer.nelder_mead_minimize( sqrt_quadratic, initial_vertex=start, func_tolerance=1e-8, batch_evaluate_objective=True) assert optim_results.converged np.testing.assert_allclose(optim_results.position, np.array([0.0, 0.0]), atol=1e-7) print("Function evaluations: %d" % optim_results.num_objective_evaluations)该示例的目标sqrt(x1^2 + x2^2)在原点不可微,正好体现 Nelder-Mead 不依赖梯度的优势。测试test_nelder_mead_minimize用 Rosenbrock 函数验证了从[-1.0, 1.0]出发收敛到[1.0, 1.0]。
返回结果包含:converged、num_objective_evaluations、position、objective_value、final_simplex、final_objective_values、initial_simplex、initial_objective_values、num_iterations。
全局优化器:差分进化(differential_evolution_minimize)
功能与签名
differential_evolution_minimize实现差分进化(Differential Evolution, DE)——一种基于候选解种群(population)的进化算法,通过变异(mutation)与重组(recombination)两种遗传算子迭代改进种群。候选s_1优于s_2当且仅当f(s_1) < f(s_2)。完整签名:
tf_quant_finance.math.optimizer.differential_evolution_minimize( objective_function, initial_population=None, initial_position=None, population_size=50, population_stddev=1.0, max_iterations=100, func_tolerance=0, position_tolerance=1e-8, differential_weight=0.5, crossover_prob=0.9, seed=None, name=None )关键参数
| 参数 | 默认值 | 说明 |
|---|---|---|
initial_population | None | 实数Tensor或Tensor列表;列表时各张量须秩至少为 1 且第一维(种群成员索引)相同。种群规模至少为 4(DE 算法硬性要求) |
initial_position | None | 单个种子解,用于初始化种群;与initial_population二选一,否则抛ValueError |
population_size | 50 | 种群规模(int32,须> 4);指定了initial_population时忽略 |
population_stddev | 1.0 | 从initial_position生成种群时,附加的零均值正态噪声标准差;指定了initial_population时忽略 |
max_iterations | 100 | 种群进化的最大代数 |
func_tolerance | 0 | 种群中最大与最小目标值的绝对差低于该值即停止 |
position_tolerance | 1e-8 | 种群成员坐标的最大绝对差低于该阈值即终止 |
differential_weight | 0.5 | 变异强度参数,须为正且< 2.0 |
crossover_prob | 0.9 | 每个位点的重组概率,须在(0, 1)之间 |
seed | None | 随机种子(int或None) |
多部件状态(multi-part state)支持
DE 优化器的一大特色是支持多部件状态:目标函数可接收多个Tensor。模块文档给出了一个完整示例——求 Easom 函数-(cos x * cos y * exp(-(x-π)^2 - (y-π)^2))在(π, π)处的全局最小值(该函数在全局最小点周围有大量平坦区域,是检验全局优化器的经典问题):
population_size = 40 # 方式一:指定初始种群(两部件状态) initial_population = (tf.random.normal([population_size]), tf.random.normal([population_size])) def easom_fn(x, y): return -(tf.math.cos(x) * tf.math.cos(y) * tf.math.exp(-(x - np.pi) ** 2 - (y - np.pi) ** 2)) optim_results = tfp.optimizer.differential_evolution_minimize( easom_fn, initial_population=initial_population, seed=43210) print(optim_results.converged) print(optim_results.position) # 应接近 [pi, pi] print(optim_results.objective_value) # 应为 -1 # 方式二:指定单个起点,由噪声生成种群 initial_position = (tf.constant(1.0), tf.constant(1.0)) optim_results = tfp.optimizer.differential_evolution_minimize( easom_fn, initial_position=initial_position, population_size=40, population_stddev=2.0, seed=43210)测试test_differential_evolution验证了 DE 对二次函数2*(x-1)^2 + 3*(y-1)^2的收敛性。
返回结果字段丰富:converged、num_objective_evaluations、position、objective_value、final_population、final_objective_values、initial_population、initial_objective_values、num_iterations,便于观察种群演化全貌。
单步迭代 API:differential_evolution_one_step 与 nelder_mead_one_step
除完整优化流程外,模块还提供两个"单步"函数,适合需要自定义循环、观察中间状态或与外部控制流集成的场景:
differential_evolution_one_step:对当前种群执行一步 DE 变异/重组。参数objective_function、population、differential_weight=0.5、crossover_prob=0.9、seed、name;可选population_values(当前种群的目标值,不传则自动计算,可节省一次批量求值)。返回(next_population, next_population_values)。种群同样要求至少 4 个成员;nelder_mead_one_step:对当前单纯形执行一步 Nelder-Mead 迭代。参数current_simplex、current_objective_values、objective_function、dim、func_tolerance、position_tolerance、batch_evaluate_objective及reflection/expansion/contraction/shrinkage。
两者的参数含义与对应完整优化器完全一致,可以作为构建自定义停止逻辑或嵌套优化方案的基础构件。
如何在量化实践中选用优化器
综合本文内容,给出基于仓库能力的选择建议:
- 可微目标、维度中等(n 在几十以内):优先
bfgs_minimize,收敛快、精度高,且可通过initial_inverse_hessian_estimate注入先验信息; - 可微目标、高维(如曲线校准、参数化模型拟合):选
lbfgs_minimize,通过num_correction_pairs控制内存与收敛速度的折中,还可用previous_optimizer_results续跑优化; - 目标不可微或梯度不稳定:用
nelder_mead_minimize(注意维度须 ≥ 2),配合batch_evaluate_objective=True与 Gao-Han 自适应参数获得更好性能; - 存在多个局部极小、需要全局搜索:用
differential_evolution_minimize,利用其种群机制与多部件状态接口,可配合func_tolerance/position_tolerance控制收敛精度; - 批量校准(同一模型多个市场场景):所有优化器都支持
[..., n]批量输入,配合converged_all(全部完成)或converged_any(最快收敛)两种停止策略,以及parallel_iterations控制并行度; - tff 自研共轭梯度:适合对存储敏感的中等规模可微问题,
ConjugateGradientParams提供了对线搜索与方向更新的细粒度控制,是理解 Hager-Zhang 算法的最佳参考实现。
进一步阅读:模块入口与符号清单见tf_quant_finance/math/optimizer/__init__.py,共轭梯度完整实现见conjugate_gradient.py,测试用例可参考optimizer_test.py与conjugate_gradient_test.py,模块构建配置见BUILD。
- 金融科技
- 科学计算
【免费下载链接】tf-quant-finance
High-performance TensorFlow library for quantitative finance.
相关推荐
tf-quant-finance 数值优化模块实战指南:BFGS、L-BFGS、Nelder-Mead 与共轭梯度
tf quant finance 数值优化模块实战指南:BFGS、L BFGS、Nelder Mead 与共轭梯度 tf_quant_finance.math.
金融科技科学计算tf-quant-finance 共轭梯度优化器:conjugate_gradient_minimize 完整实战指南
tf quant finance 共轭梯度优化器:conjugate_gradient_minimize 完整实战指南 导读 本文围绕 tf quant fin
金融科技科学计算tf-quant-finance 的 L-BFGS 无约束优化器:lbfgs_minimize 使用指南与源码解读
tf quant finance 的 L BFGS 无约束优化器:lbfgs_minimize 使用指南与源码解读 L BFGS(Limited memory
金融科技科学计算
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考