策略回测:控制历史数据偏差再评估表现
为什么选择: 构建可复现模拟,显式处理前视、幸存者、过拟合与交易成本。
何时不适用: 两笔玩具交易不足以选择或验证生产回测框架。
固定数据、时间戳、手续费和计算公式,用一组入门算例看清成本对复合结果的影响,再扩展到独立样本与模拟验证。
固定数据、时间戳、手续费和计算公式,用一组入门算例看清成本对复合结果的影响,再扩展到独立样本与模拟验证。 虚构收益 A=[4%,-2%]、B=[2%,1%]。每笔手续费 f 时,净复合收益为 (1+收益-f) 连乘再减 1。分别计算 0.2% 和 0.4%。
固定数据、时间戳、手续费和计算公式,用一组入门算例看清成本对复合结果的影响,再扩展到独立样本与模拟验证。
虚构收益 A=[4%,-2%]、B=[2%,1%]。每笔手续费 f 时,净复合收益为 (1+收益-f) 连乘再减 1。分别计算 0.2% 和 0.4%。 此处 f 是每笔完整玩具交易只扣一次的抽象总成本,不等同于 Freqtrade 的 --fee 设置;后者会分别计算入场与出场费用。
使用相同交易与假设,保存计算,再测试留出样本和现实成交。两笔交易不能证明优势或支持实盘建议。
用示例输入对照输出和验收规则。
用下方冻结的两组收益数据比较两档成本。这里的 f 是每笔完整玩具交易扣除一次的抽象总成本,不是 Freqtrade 的 --fee 参数;两笔数据不能支持业绩结论。
returns:
A: [0.04, -0.02]
B: [0.02, 0.01]
cost_per_complete_toy_trade f: [0.002, 0.004]
net_return = product(1 + return - f) - 1按两档成本计算结果,返回且仅返回以下字符串字段:fee_0_2pct_A、fee_0_2pct_B、fee_0_4pct_A、fee_0_4pct_B、limitation。两笔交易不足以支持业绩结论。
{
"fee_0_2pct_A": "1.5164%",
"fee_0_2pct_B": "2.6144%",
"fee_0_4pct_A": "1.1136%",
"fee_0_4pct_B": "2.2096%",
"limitation": "two fictional trades; no performance inference"
}为什么选择: 构建可复现模拟,显式处理前视、幸存者、过拟合与交易成本。
何时不适用: 两笔玩具交易不足以选择或验证生产回测框架。
为什么选择: 用统一pair、周期、费用和钱包参数避免策略比较不公平。
何时不适用: 不要比较来自不同数据集或时间窗口的策略结果。
为什么选择: 显式改变回测费率,量化手续费对每笔往返交易和整体策略的影响。
何时不适用: 比较交易成本时,还要把滑点、市场冲击和资金费率纳入模型。
为什么选择: 把开发期与后续验证期分开,避免在同一时间窗口反复调参再报成绩。
何时不适用: 两笔交易无法形成有意义的留出表现估计。
为什么选择: 检查策略是否引用决策当下不可得的未来K线。
何时不适用: 没有时序特征的手工计算没有未来函数路径可检查。
为什么选择: 从对齐的收益序列计算波动、VaR/CVaR、回撤及风险调整收益。
何时不适用: 两个观测值不足以估计稳定回撤或尾部风险指标。
为什么选择: 用模拟钱包和专用数据库观察信号及模拟成交,不触发真实账户订单。
何时不适用: 本地算术示例不需要交易所凭证或模拟账户。