机器学习入门量化交易:从环境搭建到首个策略Demo全流程解析 简介一份面向量化交易入门者的Python机器学习与量化交易学习笔记聚焦多因子选股与数据预处理核心环节。内容覆盖p16~p20五个章节包括市值因子选股策略的案例介绍与代码演示、多因子策略整体流程、因子数据组成与面板数据概念并重点讲解中位数去极值、三倍中位数去极值和三倍标准差法去极值的具体实现以及如何利用RiceQuant平台获取财务数据、筛选股票池、调整持仓。笔记为单文件PDF共一个文件压缩包大小五百六十二KB适合直接阅读和随时回看。已有一千三百余人学习被不少量化入门者作为参考。通过阅读这份笔记读者可快速掌握市值因子选股的完整步骤理解因子异常值对模型稳定性的影响学会使用去极值技术减小极端数据干扰为后续构建更复杂的多因子策略打下扎实基础。1. 这一part到底讲了啥从“跑通代码”到“看懂流程”先说个实话量化交易这块大多数人一开始都是被“自动赚钱”四个字吸引进来的结果一上手就懵了——pandas都没装明白机器学习四个字更是听着像天书。我当初也是这样所以这份笔记我特意按p16到p20的顺序重新整理了一遍核心就一件事把机器学习在量化里的角色讲清楚然后让你亲手跑通一个最简单的流程。这4节课的内容定位很明确不是教你写多复杂的策略而是帮你把“数据 → 特征 → 模型 → 信号 → 回测”这条链路打通。p16到p20刚好覆盖了环境搭建收尾、机器学习基础概念、以及第一个简单的量化策略demo。如果你正卡在“代码能跑但不知道在干嘛”的阶段这几节课就是给你补上那个“干嘛”的。适合谁来参考两类人。一是刚学完python基础、想往量化方向走但不知道从哪下手的二是已经装了一堆库、但始终没搞明白机器学习在交易里到底怎么用的人。如果你是冲着“一周暴富”来的那可以直接关掉这里只有枯燥的数据和代码。2. 环境搭建收尾别在第一步就劝退自己2.1 python装哪个版本、用不用anacondap16花了些时间讲环境很多人觉得啰嗦但以我带过几十个新人的经验讲环境问题能卡住一半以上的人。python版本这块无脑选3.8到3.10之间的就行别追最新版。原因很实际量化生态里大量库的预编译包更新速度跟不上python新版本发布速度你装个3.12很可能遇到numba、ta-lib这种库直接没有对应wheel包只能源码编译然后报一堆错。至于anaconda我的建议是如果你只是学机器学习那直接装miniconda就行体积小够用。如果你连python都没装过那anaconda一步到位更省心自带conda环境管理python版本随便切换不污染系统环境。我当年就是嫌anaconda太大死活不用结果装个库把系统python搞崩了一次后来老实了。提示环境管理是量化开发的刚需千万别图省事把所有库都往系统python里装。一个项目一个虚拟环境出事直接删掉重建五分钟恢复。2.2 vscode还是jupyter这两节课明显是用jupyter notebook演示的我建议你也用。机器学习的探索阶段特征怎么选、参数怎么调本身就是不断试错的过程jupyter的单元格执行模式天然适合这种工作流。数据长什么样、中间结果对不对你一眼就能看到。vscode当然也有jupyter插件但我个人体验是插件版偶尔会有内核连不上的问题尤其是conda环境切换之后。所以你要是纯学习直接装个anaconda打开jupyter就能用界面丑点没关系能干活就行。等后面写正式策略了再换vscode写.py文件也不迟。3. 机器学习核心概念用“预测房价”理解一切3.1 特征、标签、训练集、测试集p17到p18开始讲机器学习基础这部分如果你之前看过相关视频会觉得重复但它的意义在于把概念和量化场景绑在一起讲——这是很多纯机器学习课程做不到的。拿预测房价来打比方你要预测一套房子能卖多少钱这是标签也就是y你手里有面积、地段、房龄、朝向这些信息这是特征也就是X。机器学习做的就是找到一套规则能从这些特征算出房价。规则怎么找给它看大量“特征真实房价”的样本这叫训练集看完之后拿它没见过的数据考它这叫测试集。放到量化里特征就是各种技术指标、量价数据、甚至舆情信息标签就是你未来N天是涨还是跌或者涨跌幅。模型的任务变成根据这些特征算出未来上涨的概率或者预测的涨跌幅。本质和预测房价没区别只是数据源和业务背景不同。3.2 过拟合你以为学会了其实只是背题了p19重点讲了过拟合我建议你把这个概念刻在脑子里因为它是量化策略回测最经典的坑。过拟合说白了就是模型在训练集上表现极好因为把它“背”下来了但一到没见过的数据上就原形毕露。我见过太多新手策略在回测里收益曲线完美得像画出来的一样一上实盘就亏成狗九成都是过拟合。怎么判断最简单的办法是看训练集和测试集的差距训练集准确率95%测试集只有60%那基本就是过拟合了。后面做特征工程和参数优化时这个问题会反复遇到现在先有这个概念后面少交学费。4. 你的第一个“量化策略”demo从数据到信号4.1 数据从哪里来p20开始动手写第一个简单的策略demo用到的数据是tushare或者其他免费数据源。这里有个大坑我先提醒一下现在很多数据源的接口改了规则老视频里的代码直接跑会报错别慌这是正常现象。我写这篇笔记的时候tushare pro需要积分才能获取完整日线数据但基础的每日行情数据用免费额度基本够用。如果你不想注册、不想搞token也可以直接用yfinance拉美股数据接口稳定、不用注册。或者用akshare覆盖国内数据免费且接口比较干净。选数据源的原则就一条先跑通流程别在数据下载上耗太久。import pandas as pd import numpy as np from sklearn.linear_model import LinearRegression # 模拟数据过去20天的收盘价 np.random.seed(42) price pd.Series(np.cumsum(np.random.randn(100) * 2 50)) # 构造特征过去N天的收益率 df pd.DataFrame({price: price}) df[ret_1] df[price].pct_change() df[ret_2] df[price].pct_change(2) df[ret_3] df[price].pct_change(3) df[ret_5] df[price].pct_change(5) # 标签未来1天的收益率 df[target] df[price].shift(-1) / df[price] - 1 df df.dropna() # 特征和标签划分 X df[[ret_1, ret_2, ret_3, ret_5]].values y df[target].values # 划分训练集和测试集 split int(len(X) * 0.8) X_train, X_test X[:split], X[split:] y_train, y_test y[:split], y[split:] # 训练线性回归模型 model LinearRegression() model.fit(X_train, y_train) # 预测测试集 y_pred model.predict(X_test) # 简单判断方向预测涨就买预测跌就卖 signal np.where(y_pred 0, 1, -1)这段代码看着简单但包含了完整流程造数据、做特征、设标签、分训练集测试集、训练模型、生成交易信号。我建议你一定要亲手敲一遍而不是复制粘贴。敲的过程中你会注意到很多细节比如pct_change会产生NaN需要dropna比如shift(-1)才是“未来一天”方向搞反了整个模型就废了。4.2 这个demo的局限它离“策略”还差得远p20这个demo说白了是个教学演示不是能实盘的东西。它没有算交易成本没有考虑资金管理也没有做任何回测验证。线性回归预测涨跌幅本身就是一个极弱的模型更别说只用过去几天收益率当特征这本质上就是在预测一个随机游走序列——理论上就赚不到钱。但它的意义在于把一个抽象的“量化机器学习流程”变成了具体可运行的代码。你可以改特征、换模型、调参数然后在同样的数据上看效果变化这是理解整个系统的最高效路径。我自己当年就是把每个小demo都改一遍、折腾一遍才真正把流程刻进脑子里的。4.3 特征工程初体验不是特征越多越好p16到p20虽然没有展开讲特征工程但demo里其实隐含了这个问题。上面代码里我用了ret_1、ret_2、ret_3、ret_5四个特征它们之间高度相关——都基于同一个价格序列算出来的。特征之间的相关性高会对某些模型比如线性回归的系数解释造成干扰但这不代表模型完全不能用。新手做特征工程最大的误区是堆特征觉得特征越多信息越多模型越准。实际往往是反的冗余特征带来噪声增加过拟合风险拉慢训练速度。我的习惯是先用手里的数据做几个有业务逻辑的特征跑一版看效果再逐步加特征对比验证每个特征是否真的在“增量”。这个方法论比特征本身重要得多。5. 常见问题与排查技巧实录5.1 pandas的pct_change和shift方向搞混这是我自己第一批踩的坑也是我带新手时见的最多的错误。pct_change是算当前值相对前一个值的变化率方向是“过去 → 当前”而shift(-1)是把整个序列往前移动一格相当于把未来的值放到现在的位置。做标签时要用shift(-1)把未来收益挪到当前行做特征时用pct_change是取值过去的变化。我见过有人把标签方向弄反了模型训练出来预测结果和实际走势恰好相反——预测涨的它跌、预测跌的它涨。但神奇的是如果忽略正负号只看绝对值模型“准确率”还挺高。这种错误最迷惑人因为你会觉得自己已经做出来了只是效果不够好于是开始调参、换特征折腾半天才发现方向反了。注意写完特征和标签后先打印出最后几行看一遍确认“当前行的特征是已知的标签是未来发生的”这是最便宜的验证方式。5.2 sklearn版本更新导致的代码不兼容老视频里的很多代码在最新版sklearn下会报Warning甚至Error最典型的就是一些旧API被移除了。比如老代码里可能有from sklearn.cross_validation import train_test_split这个模块早就被移到sklearn.model_selection底下了。解决方法很简单报错了就搜一下新API是什么别死磕旧代码。顺便说一句国内访问部分pip镜像源不稳定建议把源切到清华或者阿里云pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scikit-learn pandas numpy或者一次性配置好pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple5.3 jupyter kernel连接不上这个问题在新手期太常见了。明明conda环境里装了库jupyter里import却报错或者kernel直接死掉。原因通常是jupyter不是在当前环境里启动的。解决办法conda activate your_env conda install ipykernel python -m ipykernel install --user --name your_env --display-name your_env然后在jupyter界面里切换kernel到你刚注册的环境。这个操作本质上就是在告诉jupyter“每个kernel对应哪个python环境别搞混了”。5.4 回测结果好得离谱先别高兴看p20的demo如果你把策略的收益率曲线打印出来可能会发现“哇这策略太强了”。停一下先冷静。这个demo没有任何交易成本、没有任何滑点假设它的“收益”是模型在测试集上预测方向和实际走势一致的累计结果本质上是在验证模型有没有学到东西不是在证明这个策略能赚钱。真实的回测至少要包含手续费和滑点、涨跌停无法成交的情况、停牌股的处理、信号产生到实际成交的时间差。这些p16到p20都没涉及后面才会讲到。所以你现在看任何回测曲线都默认打上“理想化”三个字别上头。6. 这4节课学完你该有什么状态按我的理解p16到p20学完之后你不需要背下来任何算法原理也不需要记住所有函数参数。你只需要确认自己能做到三件事第一能独立搭建起jupyter环境知道在哪个环境里安装了哪些库。第二能看懂一行简单的机器学习代码在做什么——特征、标签、训练、预测这四个环节分别对应哪段代码。第三能跑通上面那个demo并且能动手改一个特征或多个参数观察结果怎么变。做到这三点这4节课就算真正吸收了。如果还要再进一步我建议你试着用真实股票数据替换掉demo里的模拟数据把代码里sklearn的LinearRegression换成其他模型比如随机森林RandomForest或者逻辑回归LogisticRegression你会发现同一个流程换个模型只需要改一两行代码但对整体流程的理解会深很多。最后再分享一个小经验学量化机器学习最怕的不是数学差、代码弱而是“看懂了但不动手”。视频里代码一跑结果一出来你觉得“我懂了”关闭视频三天后让你自己写大脑一片空白。所以我的习惯是每看完一小节先关掉视频凭记忆手写一遍代码写不出来的地方先空着最后再对照视频补。这样折腾几轮代码就是你自己的了。p21开始估计就要进入真实的特征工程和策略优化了这部分底子打好了后面会轻松很多。本文还有配套的精品资源点击获取

相关新闻

最新新闻

Pandas数据导出实战:CSV、Excel与MySQL避坑指南

Pandas数据导出实战:CSV、Excel与MySQL避坑指南

在数据分析流程里,导数据往往是收尾那一哆嗦。前面辛辛苦苦做完清洗、转换、聚合,到最后一步发现导出卡壳,或者导出来的文件换个环境就乱码、格式全丢,这种事我见过太多次了。Pandas的导出方法看着就那几个函数,但真要…

2026/9/8 1:59:24
VS2019+MFC开发销售管理系统:环境搭建、常见坑与打包部署完整实践

VS2019+MFC开发销售管理系统:环境搭建、常见坑与打包部署完整实践

简介:基于VS2019与MFC的销售管理系统完整工程源码包,面向需要学习Windows桌面应用开发、MFC框架及C项目实践的开发者。系统围绕商品进货、出货、库存、报表统计、用户权限和数据导入导出等核心业务模块展开,适合作为课程设计、毕业设计或企业…

2026/9/8 1:59:24
高级VB实战:SendInput、MSComm、Inet控件与GDI绘图全解析

高级VB实战:SendInput、MSComm、Inet控件与GDI绘图全解析

简介:这是一份为具备一定Visual Basic基础、渴望突破初级瓶颈的开发者准备的经典进阶资料,以著名VB专家Matthew Curland的《Advanced Visual Basic》为核心,系统梳理面向对象编程、事件驱动机制、ADO.NET数据库访问、多线程并发、COM组件自动…

2026/9/8 1:59:24
西工大数电实验通关笔记:从报告排版到代码调试

西工大数电实验通关笔记:从报告排版到代码调试

简介:西工大数字电子技术实验完整资料包,面向西工大及同类院校学习数电实验的本科生,解决实验报告撰写、代码调试与结果验证的全流程需求。资源共702个文件,压缩包约29.98MB,核心文件类型包括硬件描述语言源码、Quartu…

2026/9/8 1:59:24
Python生成γ心流专注声场:从脑波原理到音频工程实践

Python生成γ心流专注声场:从脑波原理到音频工程实践

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

2026/9/8 1:59:24
多设备HMI监控设计:布局、报警与操作路径优化

多设备HMI监控设计:布局、报警与操作路径优化

工厂里最容易被低估的一个角色,就是站在操作台前盯着好几块屏幕的人。我见过不少项目,PLC程序写得没毛病,电气柜配得也干净,唯独HMI画面设计得一塌糊涂,设备跑起来之后,操作员一天要在十几个画面之间来回切…

2026/9/8 1:54:23