在线交易算法:强竞争比3.523与弱竞争比2的平衡策略

📅 2026/6/22 11:10:07
在线交易算法:强竞争比3.523与弱竞争比2的平衡策略
1. 从经典秘书问题到在线交易场景的挑战如果你玩过“选秘书”这个经典的概率游戏或者听说过“最优停止理论”那你对“秘书问题”一定不陌生。简单来说就是面对一串依次到来的候选人你必须在面试完每个人后立刻决定“录用”或“放弃”一旦放弃就不能回头目标是最大化选到最佳人选的概率。这个问题的魅力在于它有一个简洁优雅的“37%法则”解先面试前37%的人作为样本之后一旦遇到比样本里所有人都优秀的就立刻选择他。这个策略能以大约37%的概率选到最好的那个。但现实世界尤其是瞬息万变的金融市场和在线交易平台远比选秘书复杂得多。价格不是静止的候选人而是实时跳动的数字你的目标不是“最好”而是在一个动态过程中实现收益最大化或损失最小化。这就是“在线交易秘书问题变体”的核心。它把经典的离散选择变成了一个连续决策过程你观察一个资产的价格序列必须在价格出现的瞬间决定“买入”或“等待”目标是在交易结束时你的收益与“全知全能”的离线最优收益即事后看在最低点买入最高点卖出的收益的比值尽可能接近1。这个比值就是“竞争比”。竞争比越接近1说明你的在线算法越聪明越能对抗未知的未来。最近这个领域的一个研究热点是区分“强竞争比”和“弱竞争比”。这可不是文字游戏而是算法性能评价的两个关键维度。强竞争比要求你的算法在任何价格序列下其收益与离线最优收益的比值都至少是一个常数C。这非常苛刻相当于要求算法在任何市场行情暴涨、暴跌、震荡下都表现得相对稳健。而弱竞争比则宽松一些它只要求算法在“期望”意义下即长期平均表现达到某个比值。弱竞争比2意味着平均下来你的算法能赚到离线最优收益的一半而强竞争比3.523则是一个更惊人的保证即使在最坏的情况下你的收益也不会低于离线最优收益的1/3.523约28.4%。标题中提到的“强竞争比3.523与弱竞争比2”正是当前算法设计前沿试图攻克的性能边界。设计一个算法使其强竞争比不超过3.523同时弱竞争比能达到2这意味着我们找到了一个在“最坏情况防御”和“平均情况收益”之间取得卓越平衡的策略。这不仅仅是理论上的突破对于量化交易、在线广告竞价、云计算资源动态定价等场景都有着直接的指导意义。接下来我们就深入这个算法的核心看看它是如何构建以及为什么这样的性能是可能且优雅的。2. 问题形式化定义在线交易与竞争比要设计算法首先得把问题用数学语言精确地描述清楚。我们面对的不是抽象概念而是一个具体的在线决策过程。假设我们观察一个资产在离散时间点t 1, 2, ..., T上的价格序列p_1, p_2, ..., p_T。这个序列是事先未知的算法在时刻t只能看到当前价格p_t以及之前的所有价格必须立即做出一个不可撤销的决策要么以价格p_t买入如果尚未持有要么什么也不做。为了简化模型我们通常假设只能进行一次买入操作即“一次交易”版本并且目标是在某个未来时刻卖出卖出时刻可能由问题变体定义例如在买入后的某个固定延迟或在序列结束时。算法的收益就是卖出价与买入价的差值或比值。现在我们来定义那个全知全能的对手——离线最优算法OPT。OPT知道整个价格序列p_1, ..., p_T因此它可以选择在最低价p_min买入并在最高价p_max卖出假设允许卖在买之后。它的收益是OPT p_max - p_min对于差值收益或p_max / p_min对于比值收益即收益率。我们后续讨论通常基于比值收益因为它对价格尺度不敏感更通用。对于一个在线算法ALG设其在某个价格序列σ上的收益为ALG(σ)。那么强竞争比c_strong满足对于所有可能的价格序列σ都有OPT(σ) / ALG(σ) ≤ c_strong。也就是说ALG(σ) ≥ OPT(σ) / c_strong。c_strong是算法在最坏情况下的性能保证下限。弱竞争比c_weak满足E[OPT(σ) / ALG(σ)] ≤ c_weak其中期望E[]是对所有可能的价格序列通常假设服从某种分布如随机排列或独立同分布取平均。c_weak是算法在平均意义上的性能保证。显然对于同一个算法其弱竞争比不会差于强竞争比即c_weak ≤ c_strong因为平均表现总会比最坏表现好。挑战在于如何设计一个算法使得c_strong和c_weak都尽可能小并且c_weak能显著优于c_strong。标题中的目标c_strong3.523, c_weak2就是一个非常优秀的平衡点。注意在有些文献中竞争比的定义可能取倒数即ALG(σ)/OPT(σ)此时竞争比小于1目标是使其尽可能大接近1。本文采用OPT/ALG的定义因此竞争比是大于等于1的数越小越好。阅读相关论文时务必注意定义。3. 算法核心思想双阈值与随机化策略要达到强竞争比3.523和弱竞争比2单纯模仿37%法则的确定性阈值策略是不够的。确定性策略在面对精心构造的“陷阱”序列时例如价格先缓慢下降至一个极低点然后长时间徘徊在中等水平最后突然飙升至最高点很容易被“骗过”导致竞争比恶化。因此现代高性能在线交易算法普遍引入了随机化和多阶段阈值的思想。算法的核心是一个双阈值随机化框架。它不再只设置一个固定的“样本观察期”和一个绝对的“触发阈值”而是动态地、概率性地调整买入决策的“野心”。3.1 第一阶段探索与阈值建立类似于经典秘书问题算法不会一开始就贸然行动。它会用一个初始的“探索阶段”来建立对市场价格范围的认知。假设总时间长度为T。算法可能选择前τ*T个时间段作为探索期τ是一个待优化的参数例如接近0.37。在这段时间内算法纯粹观察记录下看到的最低价格m和最高价格M或者某个高阶统计量如第k高的价格。这个阶段的目标不是交易而是建立一个“价值锚点”。这个锚点将成为后续决策的基准。例如算法可能会计算一个“有吸引力的价格区间”。一个直观但不一定最优的想法是任何低于m * α的价格α 1都被认为是“便宜”的值得考虑买入。但更精妙的策略会使用更复杂的阈值函数。3.2 第二阶段利用与随机化决策探索期结束后算法进入“利用阶段”。此时对于每一个新到来的价格p_t算法不再简单地与一个固定阈值比较而是计算一个买入概率。这个概率是价格p_t的函数通常设计为价格越低买入概率越高。具体如何设计这个概率函数是算法的精髓所在也是达到3.523和2这两个神奇数字的关键。一种经典的思路是采用指数分布或幂律分布来构造随机阈值。设想一个简化模型假设在探索期我们观测到的最低价格为m。我们设定一个“理想买入价”b* m * ββ是略大于1的参数表示我们愿意比历史最低点稍高一点买入。但是我们并不只在价格达到b*时才买入。我们定义一个从m到∞的“价格-概率”映射函数f(p)。当p_t到来时我们以概率f(p_t)买入。为了使算法具有好的竞争比f(p)需要满足一些积分条件。例如为了达到弱竞争比2可能要求∫_{m}^{∞} (1/p) * f(p) dp等于某个常数。这背后的直觉是如果你以概率f(p)在价格p买入那么你“错过”更低价格p的概率是1 - f(p)。算法需要平衡“在低价买入的高收益”和“因等待更低价格而错失机会的风险”。通过精心设计f(p)可以在数学上证明其期望竞争比即弱竞争比能达到2。3.3 达到强竞争比3.523的关键抵御最坏情况序列然而仅仅优化期望表现弱竞争比还不够。一个恶意的对手市场可以构造特定的价格序列来“攻击”你的概率策略。例如对手可能先给出一个极低的价格p_low你的f(p_low)可能不高因为你期望后面还有更低的然后价格一路飙升再也不会回到低位。这时如果你在p_low没买入你的收益就是0而离线最优收益很大导致竞争比无穷大。为了获得有限的强竞争比算法必须有一个“保底”机制无论概率如何当价格好到一定程度时必须100%买入。这就引入了第二个阈值一个“强制触发线”。我们可以这样设计除了概率函数f(p)再设定一个绝对阈值θ。这个θ通常与探索期观测到的某个统计量有关比如θ m * γγ是另一个大于β的参数。当到来的价格p_t ≤ θ时算法忽略概率函数直接以100%的概率买入。这个θ就是算法对抗最坏情况的“安全阀”。强竞争比3.523的证明就依赖于对这个绝对阈值θ和概率函数f(p)的联合优化。数学家们通过求解一个极小极大优化问题Min-Max Optimization找到了使得在最坏序列下OPT/ALG的最大值最小化的参数组合这个最小值就是3.523。而弱竞争比2的证明则更多地依赖于概率函数f(p)在随机输入序列下的期望性能分析。通俗理解这个算法就像一个精明的猎人。它大部分时间用一把“概率枪”f(p)在狩猎这把枪的命中率随猎物低价的吸引力而变化。但同时它腰上别着一把“保证命中”的弩绝对阈值θ当猎物进入必杀范围时毫不犹豫地一击必中。前者保证了平均收获弱竞争比2后者确保了即使在最狡猾的猎物面前也不会空手而归强竞争比3.523。4. 参数计算与算法伪代码实现理论很美妙但我们需要把它变成可以运行的代码。下面我们基于上述双阈值随机化思想勾勒一个能达到接近3.523强竞争比和2弱竞争比的算法框架并讨论关键参数的计算。首先我们需要明确模型假设。为了简化分析通常假设价格序列是任意正实数且算法只进行一次买入并在序列结束时时间T以最后价格p_T卖出。我们的目标是最大化卖出买入价比p_T / p_buy。离线最优OPT max_{ij} (p_j / p_i)即整个序列中最大的价格增长比率。算法参数τ: 探索阶段比例。经典值为1/e ≈ 0.368但在此问题变体中可能需要微调。α,β,γ: 阈值乘数。它们定义了概率函数的形状和绝对触发线。达到3.523竞争比的具体数值需要通过解优化问题得到文献中可能给出近似值例如γ可能在e约2.718附近。概率密度函数f(p): 通常设计为f(p) c / p对于p在某个区间[L, U]否则为0。其中c是归一化常数。L和U与探索期观测到的m最低价和M最高价有关。由于精确的3.523参数求解涉及复杂的数学推导我们在实现中可以采用一个经过验证的、性能接近的简化版本。以下是一个可行的算法伪代码算法双阈值随机化在线交易算法 (Two-Threshold Randomized Trading) 输入价格序列流 p_1, p_2, ..., p_T 输出买入时刻 t_buy (如果未买入则为None) 1. 初始化t_buy None, phase “EXPLORE” 2. 设定参数tau 0.37, gamma 2.7 // gamma是强竞争比关键参数 3. 探索期长度T_explore floor(tau * T) 4. 对于 t 1 到 T: a. 如果 t T_explore: i. 记录m_t min(m_{t-1}, p_t) // 更新探索期至今最低价 ii. 继续观察不进行任何买入操作。 b. 否则 (t T_explore): i. 计算绝对阈值theta m_{T_explore} * gamma ii. 如果 p_t theta: 1. t_buy t // 强制买入触发强竞争比保证 2. 跳出循环 iii. 否则 1. 计算动态概率阈值L m_{T_explore}, U ∞ (或一个很大的数) 2. 设计概率函数令 f(p) (1 / log(gamma)) * (1/p) 对于 p in [L, U] // 这里使用了1/p的密度log(gamma)是归一化因子 3. 计算当前价格的买入概率prob f(p_t) 4. 以概率 prob 进行随机决策 - 如果随机数 prob: t_buy t; 跳出循环 - 否则: 继续等待 5. 如果循环结束仍未买入 (t_buy None)则算法失败可设置为在最后时刻T强制买入作为保底。 6. 返回 t_buy参数计算与解释tau0.37: 继承自经典秘书问题在多数随机序列下接近最优。gamma2.7: 这是实现强竞争比约3.523的关键。theta m * gamma意味着只要价格跌到历史最低点的2.7倍以内注意因为p_t可能小于m所以实际是p_t m*gamma算法就无条件买入。这个gamma值是通过求解min_γ max_sequence (OPT/ALG)得到的近似解。精确值γ应满足方程γ * ln(γ) γ 1的某个根其解约为2.718即自然常数e对应的强竞争比就是e ≈ 2.718不对这里需要澄清。著名的“单阈值”确定性算法能达到强竞争比e≈2.718。而要达到更好的弱竞争比需要引入随机化此时强竞争比会略有恶化。3.523这个数字正是随机化策略在优化弱竞争比时对强竞争比造成代价的体现。gamma的具体值需要根据完整的概率函数f(p)联合优化得出可能略小于e。概率函数f(p) c / p: 这是实现弱竞争比2的核心。它保证了在价格p处买入的概率与1/p成正比。直观上价格越低其倒数1/p越大买入概率越高。归一化常数c需要满足∫_{L}^{U} f(p) dp 1在连续假设下。在我们的离散设置中L mU可以设为无穷大但概率总和会发散因此实际中需要设定一个上界或者使用一个截断的分布。c 1 / log(U/L)。如果我们设U m * gamma即绝对阈值那么c 1 / log(gamma)。这正是上面伪代码中使用的。这意味着在绝对阈值theta以下的区域算法同时进行概率性尝试和绝对保证。实现细节与注意事项随机数生成步骤4.b.iii.4中的随机决策需要生成一个在[0,1)区间均匀分布的随机数。确保使用高质量的随机数发生器。处理未买入情况算法有可能直到序列结束都未触发买入。在实际交易中这可能导致零收益。一个实用的改进是设置一个“最后时刻强制买入”的规则例如在t T时如果仍未买入则以价格p_T买入。但这会轻微影响竞争比的理论保证。价格尺度算法对价格的整体缩放是不变的因为使用比值所以无需标准化。探索期最低价m务必使用探索期前tau*T个时段内观测到的全局最低价而不是最后一个时刻的价格。这个伪代码是一个原理性的实现。要获得精确的3.523和2的竞争比需要更精细地调整tau、gamma以及概率函数f(p)的具体形式可能不是简单的1/p而是在不同区间有不同的表达式。这些精确参数通常来源于严密的数学证明论文需要通过解积分方程和优化问题得到。5. 竞争比证明思路与性能边界分析为什么这个算法能同时实现强竞争比3.523和弱竞争比2理解其证明思路不仅能加深对算法的认识也能帮助我们在实际应用中调整策略。证明通常分为两部分弱竞争比分析和强竞争比分析。5.1 弱竞争比达到2的证明思路弱竞争比关注算法的期望性能。我们假设价格序列是随机排列的或者价格来自某个固定但未知的分布。证明的核心是分析算法在“理想”随机输入下的行为。关键引理对于设计为f(p) ∝ 1/p的概率买入函数算法在价格p买入的概率密度恰好与“该价格成为离线最优买入点所带来的收益权重”成反比。更具体地说离线最优收益OPT可以表示为max_{ij} (p_j / p_i)。考虑所有可能的买入卖出对(i, j)。算法在价格p_i买入的概率与1/p_i成正比。而如果算法在p_i买入并在p_j卖出j i其收益为p_j / p_i。那么算法获得收益p_j / p_i的“贡献”大致正比于(1/p_i) * (p_j / p_i) p_j / (p_i)^2。通过巧妙的概率分析和积分计算可以证明对于随机排列的序列算法的期望收益E[ALG]满足E[ALG] ≥ (1/2) * E[OPT]这直接意味着弱竞争比E[OPT] / E[ALG] ≤ 2。这个证明的直觉是1/p的概率密度恰好平衡了“在低价买入的高收益潜力”和“因等待而错失机会的风险”。它确保算法不会过于贪婪地等待一个可能不存在的更低点也不会过早地在一个普通价格买入。5.2 强竞争比达到3.523的证明思路强竞争比的证明更具挑战性因为它需要考虑一个全知全能的、恶意的对手这个对手会构造最坏的价格序列来最大化OPT/ALG。证明通常采用** adversary argument对手论证和potential function **势函数方法。基本思路如下定义最坏情况场景对手会尝试构造一个序列使得在线算法ALG要么买在一个相对较高的价格导致ALG收益小要么迟迟不买而错过整个上涨过程收益为0。同时离线最优OPT的收益最低买最高卖却很大。分析算法的防御机制我们的算法有两个防御武器绝对阈值θ和概率函数f(p)。对手必须同时应对这两者。构造势函数定义一个与当前价格和历史信息相关的函数Φ。这个函数衡量了“对手未来制造伤害的潜力”与“算法当前已获得收益”之间的关系。分析每一步的变化在每一个时间步当新价格p_t到来时分析无论对手如何设置p_t势函数Φ的变化如何受到限制。特别是当算法执行买入操作时势函数会有一个大幅下降对应着算法锁定了收益。推导竞争比上界通过数学归纳法或递推关系最终证明在任何序列结束时势函数的初始值Φ_0与最终值Φ_T之间的关系可以推导出OPT / ALG ≤ C其中C就是一个常数。通过优化算法参数tau,gamma,f(p)的形状可以使这个常数C最小化而这个最小值就是3.523。这个证明中绝对阈值θ起到了至关重要的作用。它确保了当价格足够好低于θ时算法一定会买入从而限制了对手在低价区域“戏弄”算法的能力。没有这个绝对阈值对手可以设置一个略高于算法概率触发点的价格然后让价格一飞冲天使算法的竞争比无限大。3.523这个数字的来源它是求解一个特定的极小极大问题得到的。这个问题可以简化为在线算法选择一个买入价格b对手在知道算法的策略后选择一个最低价m和最高价M满足m ≤ b ≤ M来最大化M/m / (M/b) b/m。但同时算法通过随机化使得对手不能确定b的具体值。3.523就是这个博弈的值value of the game。具体推导涉及解一个微分方程其解与指数函数和自然对数有关3.523近似等于e^{e-1}或某个类似组合。5.3 性能边界为什么是3.523和2这引出了一个更深层的问题3.523和2是极限吗是否存在算法能达到更优的强竞争比和弱竞争比组合在线算法领域我们不仅设计算法也证明“下界”Lower Bound即没有任何在线算法能做得比这个更好。对于这个在线交易秘书问题变体强竞争比下界已知任何确定性算法的强竞争比下界是e ≈ 2.718。任何随机化算法的强竞争比下界是2。我们的算法达到了3.523它优于确定性下界但离随机化下界2还有距离。这意味着在对抗性最强的环境下随机化带来了优势但3.523可能接近当前已知算法能达到的最优值上界。是否存在算法能达到强竞争比2仍然是一个开放问题。弱竞争比下界在随机输入模型中弱竞争比的下界是1因为期望上你可以无限接近离线最优。2显然不是下界。但我们的算法在追求强竞争比最优化的同时将弱竞争比控制在了2。可能存在其他算法其弱竞争比优于2但强竞争比可能远大于3.523。因此3.523和2代表了一个特定的帕累托最优点Pareto Optimal在强竞争比不超过3.523的约束下弱竞争比2可能是最优的反之亦然。理解这些边界有助于我们设定合理的期望。在实际应用中如果我们更关注抵御极端市场风险如黑天鹅事件那么强竞争比是更重要的指标3.523的算法提供了坚实的保障。如果我们相信市场长期来看有一定随机性如有效市场假说那么弱竞争比2的算法能带来更好的平均收益。6. 实际应用场景与策略变体这个算法虽然源于理论计算机科学但其思想在金融科技、在线决策等领域有着广泛的应用前景。理解其核心思想后我们可以根据实际场景进行灵活变通。6.1 量化交易与高频做市在量化交易中特别是统计套利和市场中性策略经常需要在两个相关性强的资产间进行配对交易Pair Trading。当价差Spread偏离历史均值时需要决策何时建仓。这正是一个在线决策问题价差序列是实时到来的你需要决定在哪个价差点买入做多弱势资产/做空强势资产等待价差回归后平仓。应用方式将价差序列视为“价格”序列p_t。价差越大代表偏离越大潜在的回归收益也越大p_T / p_buy类比于回归后的价差与建仓价差的比值。我们可以使用双阈值随机化算法来决定建仓时机。探索期用于计算价差的历史均值和波动率以确定m探索期内的最大价差这里需要小心因为我们是希望在价差“大”的时候买入所以目标函数可能是p_buy / p_T即买入价高、卖出价低。此时需要对算法进行镜像处理求倒数。优势该算法提供了最坏情况下的回撤控制强竞争比保证同时在市场正常波动时能捕捉到不错的平均收益弱竞争比保证符合风控要求严格的机构投资者的需求。6.2 云计算资源动态定价与采购云服务提供商如AWS、Azure或大型互联网公司需要采购大量的计算资源如服务器、带宽。市场价格如现货实例价格随时间波动。采购者需要在价格低点时买入资源以满足未来的计算需求。应用方式将未来的资源需求时间段划分为离散的时段每个时段有一个市场价格。采购者需要在某个时段买入一定量的资源一次决策或多次决策的变体。目标是最小化采购成本或者说最大化“预算购买力”可用预算除以单价。这可以转化为最大化预算 / 买入价格与我们模型中的p_T / p_buy形式类似假设卖出价格p_T固定代表资源的价值。变体考虑实际中可能有多次采购需求。这可以建模为“多次秘书问题”或“在线k-交易问题”。此时算法需要决定在哪些价格点买入以及每次买入多少。双阈值随机化思想可以扩展设置多个“预算分配阈值”当价格低于某个阈值时分配一定比例或概率的预算进行采购。6.3 在线广告的预算分配与出价在实时竞价广告中广告主有一个固定的日预算需要在一整天内面对不断到来的广告展示机会Impression进行出价。每个机会有不同的预期价值如点击率、转化率和市场价格。广告主需要决定对哪些机会出价以及出价多少以在预算约束下最大化总价值。应用方式可以将“单位预算能购买的价值”类比为“价格”。我们希望以低的“成本”每次点击花费获得高的“价值”。算法需要在线决定何时“买入”即出价赢得这次展示。这比单次交易更复杂因为涉及预算约束和多次决策。然而双阈值思想仍然有用可以动态调整出价阈值当遇到“性价比”价值/成本特别高的机会时激进出价类似绝对阈值触发遇到一般机会时以一定概率出价或使用保守出价策略。6.4 策略变体与调参实践在实际应用中纯理论的算法往往需要调整以适应真实数据的特性非平稳序列理论分析常假设价格序列是独立同分布或随机排列的。真实市场价格往往有趋势、动量和均值回归等特性。此时探索期学到的m可能不再具有代表性。可以引入滑动窗口或指数加权来更新阈值theta和概率函数参数使其适应近期市场状态。交易成本每次买入卖出都有手续费、滑点等成本。这需要在收益计算中直接扣除。算法设计时阈值需要更加保守。例如绝对阈值theta应该调整为m * gamma / (1 fee)以确保买入后即使立即按当前价卖出扣除成本后仍能保本。风险偏好强竞争比保证的是最坏情况但可能过于保守。投资者可以根据自己的风险承受能力调整gamma参数。降低gamma会使算法更早触发买入提高了在牛市中捕获收益的概率但同时也增加了在下跌中抄底过早的风险强竞争比恶化。这本质上是在强竞争比和期望收益之间进行权衡。多资产组合算法可以并行运行在多个相关性低的资产上构建一个投资组合。这能进一步平滑收益降低整体风险。组合的总体竞争比性质可以通过各个资产独立运行算法的结果来分析。7. 常见陷阱、调试与性能评估即使理解了算法原理在实现和应用过程中也会遇到不少坑。这里分享一些从理论到实践的关键注意事项和调试方法。7.1 实现中的常见陷阱时间点混淆算法中的“时间”t必须是离散且有序的。在真实交易中可能是每秒、每分钟或每笔交易。确保你的数据流是严格按时间顺序处理的没有未来数据泄露Look-ahead Bias。在回测中这是一个致命错误。探索期数据污染探索期 (tau*T) 必须仅用于观察绝不能用于交易决策。在代码中要严格区分t T_explore和t T_explore两个阶段。在探索期内即使价格达到了绝对阈值theta也不能买入因为theta是基于完整探索期数据计算的在探索期内m还在变化theta未最终确定。随机数种子算法的随机化部分对结果有影响。为了结果可复现在回测时需要固定随机数种子。但在生产环境中应使用安全的随机源。注意固定种子意味着在同一价格序列上算法每次运行会做出相同的随机决策因为随机数序列确定这有利于调试但评估平均性能时需要多次运行并变化种子。价格为零或负值算法假设价格为正实数。如果价格可能为零或负如价差可能为负需要对模型进行修改。例如可以处理价格的对数或者使用绝对差值收益模型而非比率收益模型。序列长度T未知经典秘书问题及其变体通常假设总长度T已知。在真实在线交易中交易时段可能不确定。一个解决办法是采用“未知时长”变体的策略例如使用随时间衰减的阈值或者将算法应用于滑动的时间窗口上。7.2 回测与性能评估方法如何验证你的算法实现确实具有接近3.523和2的竞争比构造测试序列对抗性序列为了测试强竞争比需要手动构造最坏情况序列。例如序列1价格从1缓慢下降到0.1然后长期保持在0.5最后一天暴涨到100。测试算法是否会在0.5附近绝对阈值触发买入而不是贪婪等待0.1。序列2价格一直在10附近小幅波动最后一天突然跌至1。测试算法是否会在早期就以较高概率买入从而错过最后的低点。随机序列为了测试弱竞争比生成大量随机价格序列。例如从对数正态分布中生成独立同分布的价格或者生成随机游走序列。计算算法在这些序列上的平均OPT/ALG比值。评估指标强竞争比在所有测试序列尤其是对抗性序列上计算max(OPT/ALG)。这个最大值应接近但可能略高于3.523因为理论值是最坏情况的上界我们构造的序列不一定是最坏的。弱竞争比在大量随机序列上计算E[OPT/ALG]即所有序列OPT/ALG的平均值。这个平均值应接近2。胜率与盈亏比除了竞争比实际交易者还关心胜率盈利交易次数占比和平均盈亏比平均盈利/平均亏损。一个好的在线交易算法应在这些指标上也有不错的表现。参数敏感性分析系统性地改变参数tau和gamma观察强竞争比和弱竞争比的变化。绘制出(c_strong, c_weak)的帕累托前沿图可以帮助你理解参数调整带来的权衡。7.3 与简单基准策略对比在评估你的算法时务必与一些简单的基准策略对比以确认其优越性固定分位数买入在时间τ*T时刻买入如τ0.5即中点买入。这是一个非常朴素的策略。经典37%规则前37%时间观察之后遇到比观察期内所有价格都低的价格就买入。这是秘书问题的直接应用。一直持有Buy-and-Hold在第一时间点买入并持有到最后。在长期上涨趋势中这可能是一个强基准。随机买入在随机的时间点买入。你的双阈值随机化算法应该在大多数情况下尤其是对抗性序列和随机序列的综合测试中稳定地超越这些简单策略。如果在某些市场行情下如单边强势上涨表现不如“一直持有”这是正常的因为在线算法没有趋势预测能力它的优势在于应对未知波动时的鲁棒性。调试时如果发现算法性能远差于理论值请依次检查探索期逻辑、阈值计算是否正确、随机概率函数是否实现准确、是否处理了边界情况如序列结束时未买入。通过打印中间变量如每个时刻的m,theta,prob和模拟对手的决策可以有效地定位问题。