news 2026/2/9 8:49:43

【期货量化进阶】期货量化交易策略策略评估指标(Python量化)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【期货量化进阶】期货量化交易策略策略评估指标(Python量化)

一、前言

策略评估是量化交易的重要环节。选择合适的评估指标,可以准确衡量策略表现。本文将介绍各种策略评估指标及其计算方法。

本文将介绍:

二、为什么选择天勤量化(TqSdk)

TqSdk策略评估支持:

功能说明
回测框架支持策略回测
数据统计pandas/numpy支持指标计算
灵活扩展支持自定义指标
结果分析支持结果分析

安装方法

pipinstalltqsdk pandas numpy scipy

三、收益指标

3.1 总收益率

#!/usr/bin/env python# -*- coding: utf-8 -*-""" 功能:策略评估指标 说明:本代码仅供学习参考 """fromtqsdkimportTqApi,TqAuthimportpandasaspdimportnumpyasnpdefcalculate_total_return(returns):"""计算总收益率"""total_return=(1+returns).cumprod().iloc[-1]-1returntotal_return# 使用示例strategy_returns=pd.Series([0.01,-0.005,0.02,0.01,-0.01])total_return=calculate_total_return(strategy_returns)print(f"总收益率:{total_return:.2%}")

3.2 年化收益率

defcalculate_annualized_return(returns,periods_per_year=252):"""计算年化收益率"""total_return=(1+returns).cumprod().iloc[-1]-1n_periods=len(returns)annualized_return=(1+total_return)**(periods_per_year/n_periods)-1returnannualized_return# 使用示例annual_return=calculate_annualized_return(strategy_returns)print(f"年化收益率:{annual_return:.2%}")

3.3 累计收益曲线

defcalculate_cumulative_returns(returns):"""计算累计收益"""cumulative=(1+returns).cumprod()returncumulative

四、风险指标

4.1 波动率

defcalculate_volatility(returns,periods_per_year=252):"""计算年化波动率"""volatility=returns.std()*np.sqrt(periods_per_year)returnvolatility# 使用示例volatility=calculate_volatility(strategy_returns)print(f"年化波动率:{volatility:.2%}")

4.2 最大回撤

defcalculate_max_drawdown(returns):"""计算最大回撤"""cumulative=(1+returns).cumprod()running_max=cumulative.expanding().max()drawdown=(cumulative-running_max)/running_max max_drawdown=drawdown.min()returnmax_drawdown# 使用示例max_dd=calculate_max_drawdown(strategy_returns)print(f"最大回撤:{max_dd:.2%}")

4.3 下行波动率

defcalculate_downside_volatility(returns,periods_per_year=252,target=0):"""计算下行波动率"""downside_returns=returns[returns<target]iflen(downside_returns)==0:return0downside_vol=downside_returns.std()*np.sqrt(periods_per_year)returndownside_vol

五、风险调整收益指标

5.1 夏普比率

defcalculate_sharpe_ratio(returns,risk_free_rate=0.0,periods_per_year=252):"""计算夏普比率"""excess_returns=returns-risk_free_rate/periods_per_year sharpe=excess_returns.mean()/returns.std()*np.sqrt(periods_per_year)returnsharpe# 使用示例sharpe=calculate_sharpe_ratio(strategy_returns)print(f"夏普比率:{sharpe:.2f}")

5.2 索提诺比率

defcalculate_sortino_ratio(returns,risk_free_rate=0.0,periods_per_year=252,target=0):"""计算索提诺比率"""excess_returns=returns-risk_free_rate/periods_per_year downside_vol=calculate_downside_volatility(returns,periods_per_year,target)ifdownside_vol==0:return0sortino=excess_returns.mean()/downside_vol*np.sqrt(periods_per_year)returnsortino# 使用示例sortino=calculate_sortino_ratio(strategy_returns)print(f"索提诺比率:{sortino:.2f}")

5.3 卡玛比率

defcalculate_calmar_ratio(returns,periods_per_year=252):"""计算卡玛比率"""annual_return=calculate_annualized_return(returns,periods_per_year)max_drawdown=abs(calculate_max_drawdown(returns))ifmax_drawdown==0:return0calmar=annual_return/max_drawdownreturncalmar# 使用示例calmar=calculate_calmar_ratio(strategy_returns)print(f"卡玛比率:{calmar:.2f}")

六、交易指标

6.1 胜率

defcalculate_win_rate(trades):"""计算胜率"""iflen(trades)==0:return0wins=sum(1fortradeintradesiftrade['pnl']>0)win_rate=wins/len(trades)returnwin_rate# 使用示例trades=[{'pnl':100},{'pnl':-50},{'pnl':200},{'pnl':-30}]win_rate=calculate_win_rate(trades)print(f"胜率:{win_rate:.2%}")

6.2 盈亏比

defcalculate_profit_loss_ratio(trades):"""计算盈亏比"""profits=[trade['pnl']fortradeintradesiftrade['pnl']>0]losses=[abs(trade['pnl'])fortradeintradesiftrade['pnl']<0]iflen(losses)==0:returnfloat('inf')iflen(profits)>0else0avg_profit=np.mean(profits)ifprofitselse0avg_loss=np.mean(losses)profit_loss_ratio=avg_profit/avg_lossifavg_loss>0else0returnprofit_loss_ratio# 使用示例pl_ratio=calculate_profit_loss_ratio(trades)print(f"盈亏比:{pl_ratio:.2f}")

6.3 交易次数

defcalculate_trade_count(trades):"""计算交易次数"""returnlen(trades)

6.4 平均持仓时间

defcalculate_avg_holding_period(trades):"""计算平均持仓时间"""iflen(trades)==0:return0holding_periods=[]fortradeintrades:if'entry_time'intradeand'exit_time'intrade:period=(trade['exit_time']-trade['entry_time']).total_seconds()/3600holding_periods.append(period)iflen(holding_periods)==0:return0avg_period=np.mean(holding_periods)returnavg_period

七、综合评估

7.1 综合评估函数

defcomprehensive_evaluation(returns,trades=None):"""综合评估"""metrics={}# 收益指标metrics['total_return']=calculate_total_return(returns)metrics['annualized_return']=calculate_annualized_return(returns)# 风险指标metrics['volatility']=calculate_volatility(returns)metrics['max_drawdown']=calculate_max_drawdown(returns)# 风险调整收益指标metrics['sharpe_ratio']=calculate_sharpe_ratio(returns)metrics['sortino_ratio']=calculate_sortino_ratio(returns)metrics['calmar_ratio']=calculate_calmar_ratio(returns)# 交易指标iftrades:metrics['win_rate']=calculate_win_rate(trades)metrics['profit_loss_ratio']=calculate_profit_loss_ratio(trades)metrics['trade_count']=calculate_trade_count(trades)metrics['avg_holding_period']=calculate_avg_holding_period(trades)returnmetrics# 使用示例metrics=comprehensive_evaluation(strategy_returns,trades)forkey,valueinmetrics.items():ifisinstance(value,float):print(f"{key}:{value:.4f}")else:print(f"{key}:{value}")

7.2 评估报告

defgenerate_evaluation_report(returns,trades=None):"""生成评估报告"""metrics=comprehensive_evaluation(returns,trades)report=f""" 策略评估报告 ============ 收益指标: 总收益率:{metrics['total_return']:.2%}年化收益率:{metrics['annualized_return']:.2%}风险指标: 年化波动率:{metrics['volatility']:.2%}最大回撤:{metrics['max_drawdown']:.2%}风险调整收益: 夏普比率:{metrics['sharpe_ratio']:.2f}索提诺比率:{metrics['sortino_ratio']:.2f}卡玛比率:{metrics['calmar_ratio']:.2f}"""iftrades:report+=f""" 交易指标: 胜率:{metrics['win_rate']:.2%}盈亏比:{metrics['profit_loss_ratio']:.2f}交易次数:{metrics['trade_count']}平均持仓时间:{metrics['avg_holding_period']:.2f}小时 """returnreport# 使用示例report=generate_evaluation_report(strategy_returns,trades)print(report)

八、总结

8.1 评估指标分类

类别指标用途
收益总收益率、年化收益率衡量收益
风险波动率、最大回撤衡量风险
风险调整夏普、索提诺、卡玛综合评估
交易胜率、盈亏比交易质量

8.2 注意事项

  1. 综合评估- 使用多个指标综合评估
  2. 样本外验证- 使用样本外数据验证
  3. 持续监控- 持续监控策略表现
  4. 对比基准- 与基准对比评估

免责声明:本文仅供学习交流使用,不构成任何投资建议。期货交易有风险,入市需谨慎。

更多资源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/8 20:31:19

Python 实战:自动监控数据变化并推送至企业微信外部客户群

​​QiWe开放平台 个人名片 API驱动企微自动化&#xff0c;让开发更高效 核心能力&#xff1a;API 驱动企微自动化&#xff0c;提升开发效率 官方站点&#xff1a;https://www.qiweapi.com 对接通道&#xff1a;进入官方站点联系客服 团队定位&#xff1a;企微生态深度服务&am…

作者头像 李华
网站建设 2026/2/8 11:47:24

20天恢复“混合侵权”封号,完整申诉思路!

亚马逊知识产权侵权&#xff08;混合侵权&#xff09;申诉案例账户站点&#xff1a;US停用原因&#xff1a;知识产权侵权&#xff08;混合侵权&#xff09;停用时间&#xff1a;2025年7月23日接单时间&#xff1a;2025年7月24日恢复时间&#xff1a;2025年8月13日账户现状&…

作者头像 李华
网站建设 2026/2/8 5:18:26

如何不花一分钱降AI?亲测6种降AI工具,手把手教你免费降AI

最近身边好多同学都在为论文的AI率头疼。明明自己认真改过好几遍了&#xff0c;查重系统还是显示AIGC率爆表&#xff0c;导师那关根本过不去。现在用AI工具辅助确实提升了效率&#xff0c;但怎么让内容更"人性化"&#xff0c;避免被系统标红&#xff0c;这才是关键。…

作者头像 李华
网站建设 2026/2/8 8:10:30

NIST网络安全框架概述与漏洞评估核心原则

NIST网络安全框架&#xff08;CSF&#xff09;最新版本&#xff08;如CSF 2.0&#xff09;将漏洞管理嵌入其核心功能&#xff1a;识别、保护、检测、响应和恢复。该框架强调风险驱动方法&#xff0c;要求测试从业者从资产识别起步&#xff0c;映射潜在威胁&#xff08;如外部攻…

作者头像 李华
网站建设 2026/2/9 2:26:37

深度测评AI论文平台,千笔·专业学术智能体 VS 灵感ai,MBA写作者首选!

随着人工智能技术的迅猛迭代与普及&#xff0c;AI辅助写作工具已逐步渗透到高校学术写作场景中&#xff0c;成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生&#xff0c;开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…

作者头像 李华