二、Python量化回测实战:双均线策略从数据获取到绩效评估
一、这篇解决什么问题做量化研究时,很多人卡在第一步:知道策略逻辑,但不知道怎么把它变成可运行、可验证的代码。双均线是量化里最经典的入门策略,逻辑只有一句话:短期均线上穿长期均线时买入,下穿时卖出。它足够简单,能把“数据获取 → 信号生成 → 回测 → 评估”整条链路跑通,而且每个环节都看得见、改得动。本文用一只 ETF 的日频数据,完整实现这个流程。读完你可以得到:一份可运行的双均线回测代码一张带买卖点标记的价格图一份绩效指标对比(策略 vs 基准)一张参数敏感性表格二、环境与数据准备2.1 依赖库pipinstallpandas numpy matplotlib aksharepandas:数据处理numpy:数值计算matplotlib:绘图akshare:免费数据源,获取 ETF 日频行情2.2 获取数据importpandasaspdimportnumpyasnpimportakshareasak# 获取沪深300ETF日频数据(前复权)df=ak.fund_etf_hist_em(symbol="510300",period="daily",start_date="20200101",end_date="20241231",adjust="qfq"# 前复权,避免除权跳空造成假信号)df=df.rename(columns={'日期':'date','开盘':'open','最高':'high','最低':'low','收盘':'close','成交量':'volume'})df['date']=pd.to_datetime(df['date'])df=df.sort_values('date').reset_index(drop=True)print(df.head())print(df.shape)检查点:数据是否按日期升序是否有缺失值复权方式是否为前复权时间范围是否覆盖至少一轮牛熊关于复权处理的详细说明,见本系列第1期《Python量化交易入门:用Pandas做数据清洗与复权处理》。三、核心实现3.1 策略规则先写清楚写代码之前,先把规则用文字定义好。这一步不能跳。项目设定标的沪深300ETF(510300)短期均线5日长期均线20日买入条件短期均线上穿长期均线(金叉),次日开盘买入卖出条件短期均线下穿长期均线(死叉),次日开盘卖出仓位满仓买入,空仓卖出,不加杠杆成本佣金万分之三 + 滑点千分之一为什么用次日开盘:均线是用当日收盘价算的,收盘后才知道信号,最早只能次日开盘执行。这是避免未来函数的基本要求。3.2 计算均线与信号# 计算均线df['ma5']=df['close'].rolling(5).mean()df['ma20']=df['close'].rolling(20).mean()# 金叉:当日 ma5 ma20 且前一日 ma5 = ma20df['golden_cross']=((df['ma5']df['ma20'])(df['ma5'].shift(1)=df['ma20'].shift(1)))# 死叉:当日 ma5 ma20 且前一日 ma5 = ma20df['death_cross']=((df['ma5']df['ma20'])(df['ma5'].shift(1)=df['ma20'].shift(1)))# 持仓信号:金叉后为1,死叉后为0df['signal']=np.nan df.lo

相关新闻

图片懒加载从原理到实践:Intersection Observer方案与性能优化

图片懒加载从原理到实践:Intersection Observer方案与性能优化

我做过不少前端性能优化,图片懒加载算是最常见、也最容易出效果的一项改动。很多项目首屏图片十几张,全部加载完要等好几秒,用户早滑走了。把图片懒加载落地之后,页面首屏耗时能降下来一大截,尤其是长列表、电商商品页…

2026/10/11 19:53:47 阅读更多 →
本地同城信息系统(社交+资讯+分类信息+商家入驻+本地服务)源码怎么选?

本地同城信息系统(社交+资讯+分类信息+商家入驻+本地服务)源码怎么选?

本地同城信息系统源码选型与落地全案选同城信息系统源码,最容易踩的坑不是“功能少”,而是上线后才发现系统扛不住日常流量、核心业务模块改不动、想做本地化运营时处处受限于通用模板。真正能跑通长期运营的选型逻辑,不能只看演示页的界面美…

2026/10/11 19:53:47 阅读更多 →
学生选课系统:SQL Server数据库课程设计实战指南

学生选课系统:SQL Server数据库课程设计实战指南

简介:本资源是一份完整的数据库系统课程设计报告模板,面向高校计算机、软件工程等专业本科生,用于支撑《数据库系统概论》类课程的实践教学与课程设计作业。报告以“学生选课管理信息系统”为案例,系统覆盖需求分析(含…

2026/10/11 19:52:46 阅读更多 →

最新新闻

Apache Beam 依赖管理实践指南:从依赖冲突到升级政策的完整解读

Apache Beam 依赖管理实践指南:从依赖冲突到升级政策的完整解读

批处理流处理大数据 【免费下载链接】beam Apache Beam is a unified programming model for Batch and Streaming data processing. 项目地址: https://gitcode.com/gh_mirrors/beam15/beam 点击查看 免费下载 导读 本文以 Apache Beam 官方《Dependencies Guide…

2026/10/12 3:20:57 阅读更多 →
环境变量配置架构决策记录(ADR)解析:.env、.env.defaults 与 .env.schema 三件套实战

环境变量配置架构决策记录(ADR)解析:.env、.env.defaults 与 .env.schema 三件套实战

【免费下载链接】architecture-decision-record Architecture decision record (ADR) examples for software planning, IT leadership, and template documentation 项目地址: https://gitcode.com/gh_mirrors/ar/architecture-decision-record 点击查看 免费下载 …

2026/10/12 3:20:57 阅读更多 →
智算网络排障手记:用原厂工具秒杀AllReduce训练锯齿问题

智算网络排障手记:用原厂工具秒杀AllReduce训练锯齿问题

AllReduce 训练一直锯齿?手把手教你用 hccn_tool 交换机命令,30 分钟定位 RoCEv2 拥塞根因 如果你的 AllReduce 训练出现 Step Time 锯齿、吞吐掉 30%、Wireshark 看到 PSN 重传——大概率不是网卡坏了,而是拥塞控制链路出了三件套&#xff…

2026/10/12 3:20:57 阅读更多 →
Cobra 手册页生成实战:为你的 Go CLI 命令一键产出 man page

Cobra 手册页生成实战:为你的 Go CLI 命令一键产出 man page

云原生可观测性容器编排运维 【免费下载链接】scope Monitoring, visualisation & management for Docker & Kubernetes 项目地址: https://gitcode.com/gh_mirrors/sc/scope 点击查看 免费下载 导读 本文基于仓库中 vendor/github.com/spf13/cobra/man_d…

2026/10/12 3:20:57 阅读更多 →
注解(Annotation)原理与自定义注解实战:你不懂的注解背后究竟发生了什么?

注解(Annotation)原理与自定义注解实战:你不懂的注解背后究竟发生了什么?

全文目录:开篇语前言一、注解是什么?注解的基本用法1. 基本语法二、注解的原理:编译期、类加载期、运行时的作用1. 编译期(注解不参与程序运行)2. 类加载期(注解可以用作元数据)3. 运行时&#…

2026/10/12 3:20:57 阅读更多 →
PLC基本指令详解:从位逻辑到定时计数,掌握梯形图编程核心

PLC基本指令详解:从位逻辑到定时计数,掌握梯形图编程核心

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 3:19:56 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →