免责声明本文基于个人使用体验与任何厂商无商业关系。内容仅供技术交流参考不构成投资建议。一、前言资金曲线是衡量策略表现最直观的指标。回撤与收益的评估能帮助判断策略是否可上实盘。做了二十年期货交易我习惯对每个策略做资金曲线分析。今天分享期货量化策略中资金曲线分析、回撤与收益评估的常用方法。二、资金曲线关键指标defcalc_curve_metrics(equity_curve):资金曲线关键指标importnumpyasnp returnsnp.diff(equity_curve)/equity_curve[:-1]# 累计收益total_return(equity_curve[-1]/equity_curve[0])-1# 最大回撤peaknp.maximum.accumulate(equity_curve)drawdown(equity_curve-peak)/peak max_drawdowndrawdown.min()# 夏普比率简化年化sharpereturns.mean()/returns.std()*np.sqrt(252)ifreturns.std()0else0return{total_return:total_return,max_drawdown:max_drawdown,sharpe_ratio:sharpe}三、回撤分析1. 最大回撤计算defmax_drawdown(equity_curve):最大回撤peakequity_curve.cummax()dd(equity_curve-peak)/peakreturndd.min(),dd.idxmin()2. 回撤持续时间defdrawdown_duration(equity_curve):回撤持续期数peakequity_curve.cummax()in_ddequity_curvepeak# 连续回撤区间returnin_dd.sum()四、在TqSdk回测中获取资金曲线fromtqsdkimportTqApi,TqAuth,TqBacktestfromdatetimeimportdate apiTqApi(backtestTqBacktest(start_dtdate(2024,1,1),end_dtdate(2024,12,31)),authTqAuth(账户,密码))accountapi.get_account()klinesapi.get_kline_serial(SHFE.rb2510,300,500)equity_list[]whileTrue:api.wait_update()equity_list.append(account.balanceaccount.float_pnl)ifnotapi.is_changing(klines)andlen(equity_list)100:breakapi.close()# 分析资金曲线importpandasaspd equitypd.Series(equity_list)total_return(equity.iloc[-1]/equity.iloc[0])-1peakequity.cummax()max_dd((equity-peak)/peak).min()print(f累计收益:{total_return:.2%}, 最大回撤:{max_dd:.2%})五、收益与回撤的平衡# 可接受的回撤与收益关系示例acceptable_metrics{最大回撤 15%:多数策略可接受,收益回撤比 1.5:收益相对回撤有优势,回撤恢复时间:不宜过长}六、总结资金曲线分析要点看累计收益、最大回撤、夏普与回撤持续期。回测时用天勤等工具导出权益序列即可计算。我目前每个策略都会做资金曲线与回撤评估再考虑实盘。量化交易有风险历史曲线不代表未来表现。声明本文基于个人学习经验整理仅供技术交流参考不构成任何投资建议。