发布时间:2026/9/3 19:14:53
《量化投资:以Python为工具》课后习题完整答案与代码资料包 简介《量化投资以Python为工具》课后习题配套资料包面向金融量化学习者与Python开发人员汇集了章节习题答案、可运行代码及配套CSV数据用于对照检验风险回报度量、资产组合优化、时间序列分析和机器学习建模等核心知识点。压缩包共78个文件包括34个Python脚本覆盖各章策略实现与数据预处理37个CSV文件提供历史行情、交易量等样本数据另有PDF答案总览、路径说明和Access数据库整体约91.84MB目录按章节和Part模块组织方便按需查阅。已有1649人学习浏览。通过阅读和运行这些代码读者可快速掌握pandas数据处理、numpy统计分析与matplotlib可视化的完整流程并结合习题答案理解模型构建、参数调优与回测验证的实用技巧是系统入门量化投资不可多得的高密度参考资料。1. 项目来龙去脉这本教材的课后题值得认真做一遍《量化投资以Python为工具》这本书在量化入门圈子里一直口碑不错尤其是蔡立耑那版把Python编程和金融数据分析结合得比较扎实。市面上讲Python的书很多讲量化的书也不少但能把“Python语法→数据处理→可视化→策略回测”这条链路完整串起来、还配了成体系课后习题的教材并不算多。我最初学这本书的时候最头疼的一件事就是课后题没有官方标准答案。书里每章末尾都有一堆练习题有的题目光看题干就能猜到意图有的题目拿到手根本不知道从哪个函数下手。当时我在网上翻了很多地方能找到的答案零零散散要么只有文字没有代码要么代码跑不通甚至还有把别的书答案贴过来凑数的。更麻烦的是书中不少题目明确要求“读取CSV文件”或“根据某数据文件完成分析”但配套数据文件的下载链接早就失效了找起来非常费劲。所以这个项目其实挺朴素的我自己认认真真把每一章课后题做了一遍把答案整理成了PDF文档每道题都配了完整可运行的Python代码顺手把所有用到的CSV数据文件也一并打包了。做完之后发现这些东西确实能帮到后面学这本书的人就整理成了一套完整的资料包分享出来。这套资料适合谁用如果你正在自学这本书、刷课后题卡住了或者已经刷完想对照一下自己的思路再或者你是个老师要布置作业、批改作业这套资料都能省你大量时间。不过我得先说一句实话答案只是参考答案量化这个东西本来就没有唯一解我提供的代码能跑通、能得出合理结果但不代表这是最优写法。你要是能写出比我更漂亮的实现那才是真正把这本书吃透了。2. 资料包结构与核心内容拆解2.1 答案PDF、代码、CSV三件套是怎么组织的整个资料包的目录结构大致是下面这样的quant_homework/ ├── 答案PDF/ │ ├── 第2章课后习题答案.pdf │ ├── 第3章课后习题答案.pdf │ ├── ... ... │ └── 第12章课后习题答案.pdf ├── 代码/ │ ├── chapter02/ │ │ ├── exercise_2_1.py │ │ ├── exercise_2_2.py │ │ └── ... │ └── chapter03/ │ └── ... └── 数据/ ├── stock_data.csv ├── ... ... └── README.mdPDF文件里是每道题的详细解题思路和最终输出结果截图代码文件夹里是按章节拆分的.py脚本数据文件夹里是习题中需要用到的原始CSV文件。三者之间用章节号和题号一一对应找起来很方便。这样设计的好处是分得很清楚你可以在IDE里直接打开代码跑一遍跑通了再去看PDF里的思路讲解比单纯看答案文字要直观得多。尤其是当你想改参数、换策略试效果的时候直接在.py文件里动代码就行不需要在PDF和代码之间来回切换。2.2 这本书的章节脉络哪些题值得重点刷回顾一下整本书的章节安排基本是沿着“Python基础→NumPy数值计算→Pandas数据分析→数据可视化→金融数据获取→策略回测”这条主线推进的。每个章节的课后题侧重点不太一样我梳理了一下自己在做题时的感受章节核心知识点习题特点刷题价值第2章 Python基础语法、数据类型、函数、文件读写偏语法练习难度低快速过第3章 NumPy数组创建、索引、切片、广播、随机数需要动手算跟数学结合紧高第4章 PandasDataFrame操作、缺失值处理、分组聚合题目量最大实用性最强极高第5章 数据可视化Matplotlib绘图、K线图、样式定制图形题目多验证直观高第6章 金融数据股票数据读取、日收益率计算、对数收益率开始接触金融概念极高策略相关章节均线策略、动量策略、回测框架综合性最强开放性大极高我花时间最多的是Pandas和策略回测这两个部分。原因很简单Pandas是量化数据处理的核心工具DataFrame操作熟练度直接决定后续效率而策略回测部分是前面所有知识的综合运用写起来最费劲但提升也最大。这两个章节的习题答案我在PDF里写得最详细代码注释也最多。3. 关键习题的解题思路与代码实现细节3.1 NumPy习题先把数组思维建立起来第3章好多题目都在变着花样让你创建数组、做索引切片、算统计量。有一道题印象很深给定一个二维数组要求用三种不同方式取出某个子区域的元素并计算平均值。大部分人第一次做都会用循环但这道题考察的其实是NumPy的切片和reshape特性。我当时给的解法是这样的import numpy as np # 构造一个6行4列的随机数组 arr np.random.randn(6, 4) # 方法一直接切片取第2~4行、第1~2列 sub1 arr[1:4, 0:2] mean1 sub1.mean() # 方法二先用布尔索引筛选行再取列 bool_idx arr[:, 0] 0 sub2 arr[bool_idx][:, 0:2] mean2 sub2.mean() # 方法三用take 轴参数 row_idx [1, 2, 3] col_idx [0, 1] sub3 np.take(np.take(arr, row_idx, axis0), col_idx, axis1) mean3 sub3.mean()这道题的解题思路其实核心就一句话NumPy的切片不会复制数据它产生的只是原数组的视图view所以无论用哪种方式取子数组本质上都在操作同一块内存。这个特性在写真实量化代码时特别重要——你切出来一个子数组后原地修改原数组也会跟着变不熟悉的话很容易出隐蔽的bug。PDF答案里我还会把每种方法的运行时间对比贴出来让大家直观感受一下向量化操作和循环之间的性能差异。NumPy这种“向量化计算”的思想越早建立越好后面写策略回测的时候能省下大量时间。3.2 Pandas和CSV操作数据处理的硬骨头第4、5、6章几乎每道题都会涉及CSV文件的读取和清洗。书里给的示例数据都是CSV格式这就逼着你必须掌握pd.read_csv()的各种参数。我在做习题时发现很多同学卡住的根本不是题目本身而是CSV文件读取这一步就报错了。最常见的几个坑文件路径里有中文导致读不出来、CSV编码不是UTF-8而是GBK、数据里带着千分位逗号没法直接转数值。我在这套答案里把所有CSV读取的代码都做了标准化处理统一加上了encoding参数和enginepython兜底避免跑题的时候在环境上浪费太多时间。例如书中某题要求读取“交易明细.csv”并计算每只股票的总成交量我的解法是import pandas as pd # 读取CSV兼容中文列名和特殊编码 df pd.read_csv(交易明细.csv, encodingutf-8, enginepython) # 查看基本结构和缺失值 print(df.head()) print(df.info()) # 按股票代码分组计算成交量之和 result df.groupby(股票代码)[成交量].sum().sort_values(ascendingFalse) print(result.head(10))Pandas这块题目我强烈建议你每道题都亲手敲一遍。原因很简单groupby、merge、pivot_table这些操作看答案觉得自己会了真到用的时候经常卡壳只有亲手处理过几份脏数据、踩过几个坑才能真正内化成自己的能力。我提供的CSV数据文件里有的故意包含缺失值、重复行和异常值就是为了配合书中习题练习数据清洗的场景。3.3 策略回测类习题框架完整、可自由扩展策略章节的课后题是最有意思的因为它们往往没有唯一标准答案。比如经典的“双均线交叉策略”题目要求你读取股价数据计算5日均线和20日均线生成买入卖出信号最后画出净值曲线。我给出的回测框架大致长这样简化版import pandas as pd import numpy as np # 读取数据 df pd.read_csv(600519.csv, parse_dates[日期], index_col日期) # 计算均线 df[MA5] df[收盘价].rolling(5).mean() df[MA20] df[收盘价].rolling(20).mean() # 生成信号5日均线上穿20日均线时买入下穿时卖出 df[signal] 0 df.loc[df[MA5] df[MA20], signal] 1 df[position] df[signal].diff().fillna(0) # 计算策略每日收益率 df[strategy_ret] df[position] * df[收盘价].pct_change().shift(-1) df[strategy_nav] (1 df[strategy_ret].fillna(0)).cumprod() # 输出最终净值 print(策略最终净值, round(df[strategy_nav].iloc[-1], 4))这个框架算是个极简种子版真实的回测远没有这么简单还要处理手续费、滑点、涨跌停、停牌等一堆细节。但作为书中习题来说够用且清晰。我在PDF里特意标注了这个框架的局限性告诉读者如果你想要更接近实盘的回测效果建议在position信号生成后面加上“第二天开盘价成交”“扣除双边手续费”这些逻辑。这部分的代码我给了一个比较完整的扩展版本文件名叫strategy_backtest_full.py里面额外加了手续费模拟、最大回撤计算和年化收益率统计。学过这本书之后你可以拿这个框架作为起点去验证自己的交易想法实用性比纯做习题高很多。4. 实操体验实录资料包是怎么跑通的4.1 环境准备与运行方式我在整理这套资料时用的Python版本是3.9.x依赖库版本大致是pandas 1.4.x、numpy 1.22.x、matplotlib 3.5.x。如果你用的是更新版本的Python或库大概率也兼容但个别API如果有变动理论上改改就能跑。为了保险起见我在代码文件夹里放了一个requirements.txt你可以直接用以下命令创建虚拟环境安装依赖# 创建并激活虚拟环境 python -m venv quant_env source quant_env/bin/activate # Windows下是 quant_env\Scripts\activate # 安装依赖 pip install -r requirements.txt安装完成后进入对应的章节文件夹直接运行Python脚本即可cd 代码/chapter04 python exercise_4_1.py所有代码都按照“文件路径相对于脚本所在目录”来写的不是相对于你当前终端的工作目录。换句话说你直接在脚本所在文件夹下运行就肯定能找到CSV数据文件不用额外改路径。4.2 我实测踩过的一些小坑整理这套答案的过程中我自己在运行书里习题代码时踩过不少坑挑几个有代表性的说一说。第一个坑是pd.read_csv()读不出来带BOM头的UTF-8文件。有些CSV文件用Excel编辑过再保存文件头会多一个\ufeff字符导致第一列列名变成\ufeff股票代码这种鬼样子按列名索引的时候死活报KeyError。解决方式很简单df pd.read_csv(data.csv, encodingutf-8-sig)用utf-8-sig而不是utf-8Python会自动把BOM去掉。我所有代码里读CSV的部分都统一用的utf-8-sig就是为了规避这个坑。第二个坑是CSV文件里的日期格式不一致。有的行是2023/01/05有的行是2023-01-05直接用pd.to_datetime()解析会报错或者解析成NaT。我给出的做法是先用errorscoerce强制转换再把NaT的行单独打印出来检查确认是数据格式问题还是数据缺失问题。第三个坑跟代码本身无关是策略回测时容易出现的“未来函数”问题。比如用当日收盘价计算均线信号然后假设当日就以收盘价成交——这在真实交易里是做不到的因为信号是收盘后才生成的。我在答案PDF里专门强调过这个点建议把信号执行挪到第二天开盘这是新手最容易忽略的细节。4.3 常见问题速查表根据我自己的经历以及平时帮别人调试代码时遇到的反馈整理了一份高频问题对照表直接放进PDF附录里了问题现象根本原因解决方式CSV中文乱码文件编码不是UTF-8而是GBK读取时指定encodinggbk列名多出\ufeff文件带BOM头用encodingutf-8-sig读取rolling(5).mean()全为NaN前几行本身就为NaN属于正常现象检查数据长度必要时用min_periods1策略净值曲线太平滑信号加在收盘价上忽略了次日的跳空用次日开盘价重算策略收益画出K线图没有显示Jupyter中未执行%matplotlib inline脚本模式用plt.show()Notebook加魔法命令读取后股票代码变成小数CSV中代码被Excel转成科学计数法读取时指定dtype{股票代码: str}分组聚合结果和预期不一致没有处理重复行先drop_duplicates()再聚合这些问题看起来很琐碎但在习题和真实数据分析中特别常见我全部在PDF里做了详细说明同时也在代码里做了针对性处理。你拿到资料后如果遇到类似报错直接查这个表能省不少事。最后再补充一个使用技巧这套代码和CSV文件不只是用来对答案的。你可以把CSV数据替换成自己下载的股票行情数据把习题里的代码改巴改巴变成自己的分析工具。比如第6章算日收益率的代码换个数据源就是一份能直接用的收益率计算脚本策略回测框架换个股票、调几个参数就能验证你自己的交易想法。这也是我整理这套资料最希望看到的用法——答案本身只是中点把这个过程中练出来的数据处理能力和策略思维用到自己的项目里才是终点。本文还有配套的精品资源点击获取

相关新闻

2026/9/3 19:14:53

Linux桌面配置完全指南:从输入法到开发环境的高效搭建

1. 这篇文章真正要解决的问题很多初学 Linux 的朋友都有过这样的经历:系统装好了,桌面也进来了,但真正用起来处处别扭。输入法切不出来,字体发虚,终端难看,装个软件不知道用哪个命令,笔记本合盖…

2026/9/3 19:09:53

AI金属铝箔压印特效技能包:ComfyUI工作流实战

这次我们来看一个很实用的 AI 技能文件包:真实金属铝箔压印特效。如果你在电商详情页、包装设计、LOGO 展示、海报标题里见过那种金属箔片压上去的凹凸质感,想直接用 AI 批量做出来,而不是靠 PS 一点点调图层样式,那这个技能包值得…

2026/9/3 19:09:53

海冰漂移反演中的最大互相关算法:Python实现与工程实践

简介:面向海冰灾害监测与极地研究场景,这份代码包提供了一套基于遥感图像的海冰漂移检测与分析工具,适合海洋科学、气候变化研究及航海安全领域的科研人员与学习者使用。资源包含完整Python源码、配置与说明文档,共15个文件&#…

2026/9/3 20:00:01

2026年ai搭建网站哪家可靠,这些你都认识吗?

2026年ai搭建网站哪家可靠,这些你都认识吗? 艾瑞咨询《2026年中国企业数字化建站行业白皮书》里有个挺劝退的数:国内AI建站渗透率破68%,但抽样超1200家中小企业里仅31%在生成站点半年后仍持续续费且搜索流量正向增长。佛山一家AR眼…

2026/9/3 20:00:01

中国水系及流域矢量数据获取与ArcMap实操全攻略

简介:中国水系及流域矢量数据是一份以2019年OpenStreetMap为基础的地理信息系统资源,采用SHP格式存储全国主要河流网络、水系中心线与流域边界,面向GIS开发、环境科研、水资源管理及城市规划等领域的从业者和学习者,尤其适合需要全…

2026/9/3 20:00:01

Conquest DICOM Server:轻量级DICOM测试靶机搭建与实战

简介:Conquest DICOM Server 是一款开源的 DICOM 服务器测试工具,适合医疗影像领域的开发人员、系统集成工程师和运维人员使用。该工具以 DICOM SCP 身份运行,能够接收并处理来自 PACS 或其他设备的 DICOM 请求,支持工作列表查询&…

2026/9/3 20:00:01

空屿故歌4灵魂永生攻略:唤魂使灵魂能量与召唤物机制详解

很多玩家第一次听说“空屿故歌”系列时,多半是被它的剧情氛围和独特地图设计吸引。而到了《空屿故歌4:灵魂永生》,玩法重心从单纯的岛屿探索,转向了灵魂、轮回与生死。玩家可以在空屿世界中扮演“唤魂使”,收集灵魂能量…

2026/9/3 19:55:00

盗版游戏《你的世界》技术拆解:恶意捆绑与安全排查方案

这两天“《你的世界》”这个名字又出现在不少下载站和网盘分享里。很多人看到的是“免费沙盒游戏”“单机整合包”“联机一键端”,但作为一个常年做软件分析和安全测试的技术博主,我更关心的是另一件事:这个包为什么能传播这么快,…

2026/9/3 18:28:26

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/3 14:29:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/3 14:30:35

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/3 0:02:06

零基础装 OpenClaw 小龙虾 AI:Windows 一键部署教程与避坑要点

Windows 部署 OpenClaw 完整教程|本地 AI 智能体 5 分钟落地,环境配置一次搞定 版本说明:Windows 3.1.0 / Mac 2.7.9 写在前面 近两年开源 AI 领域有一款被称作「数字员工」的工具持续走热,它就是 OpenClaw,圈内人更习…

2026/9/3 0:02:06

Hermes Agent 本地部署新方案:Windows 整合包减少依赖报错

Windows 本地部署 Hermes 太麻烦?这版一键包 5 分钟快速跑通 很多人想体验 Hermes Agent,但真正开始部署时,往往会卡在环境配置这一步。 需要安装各类依赖、调试运行环境、处理路径问题,还容易遇到命令行报错、系统拦截、文件缺…

2026/9/3 0:02:06

实测 OpenClaw 一键包,5 分钟完成本地自动化环境搭建

OpenClaw 本地 AI 自动化工具部署指南|使用一键包规避环境配置难题 痛点:部署 AI 自动化工具常常要处理 Python、Node.js 各类依赖,版本冲突、环境配置耗费大量时间,OpenClaw 提供一键安装包,降低部署门槛。 适配系统&…

2026/9/2 1:15:22

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/3 17:51:43

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/2 1:15:20

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…