深圳融克迪特科技有限公司 Logo,金融科技,量化交易,软件开发

深圳融克迪特科技有限公司

RONG CREDIT TECHNOLOGY CO., LTD.

基础入门

【vectorbt 系列 第6讲】跑第一轮向量化回测

本讲把最小价格序列、买入信号和卖出信号正式接到 vectorbt 的回测入口上,使用 Portfolio.from_signals 跑出第一轮可继续读取结果的回测对象。目标是让入门者第一次完整走通从规则表达进入可执行回测的闭环。

2026-04-23 智铨研究 阅读时长 6 分钟

目录

vectorbt · 入门短课

  1. 第 1 讲【vectorbt 系列 第1讲】安装与首组价格序列构建:零依赖最小可验证回测起点
  2. 第 2 讲【vectorbt 系列 第2讲】准备最小回测数据
  3. 第 3 讲【vectorbt 系列 第3讲】计算5日均线
  4. 第 4 讲【vectorbt 系列 第4讲】构造买入信号
  5. 第 5 讲【vectorbt 系列 第5讲】构造卖出信号
  6. 第 6 讲【vectorbt 系列 第6讲】跑第一轮向量化回测
  7. 第 7 讲【vectorbt 系列 第7讲】查看收益回撤和交易次数
  8. 第 8 讲【vectorbt 系列 第8讲】比较5日和10日窗口

一、为什么学 XGBoost 之前,先把“它擅长解决什么问题”说清楚比安装更重要

很多人接触 XGBoost 的第一反应是去装库、找教程、跑一段示例代码。这当然是正常路径,但如果在开始之前没有先把一个问题想清楚,后面就很容易学歪。这个问题就是:XGBoost 到底擅长解决什么问题,它在量化研究里处在什么位置。若这一层没有先讲明白,学习过程很容易变成“我会调几个参数、会跑一个模型”,但真正到了研究场景里,却不知道该什么时候用它,什么时候又不该硬套它。

所以在正式进入 XGBoost 系列之前,先把定位讲清楚非常必要。它不是要拖慢进度,而是避免你后面花很多时间学习一个工具,却始终没有形成正确的使用边界。尤其在量化研究里,模型工具很多,树模型、线性模型、神经网络、统计模型各有擅长的地方。XGBoost 的价值不在于“它最先进”,而在于它在一类特定问题上非常实用:表格型特征、非线性关系、中等规模样本、相对复杂但仍然需要一定可解释性和调参可控性的场景。

只要这层定位先立住,后面学接口和参数时,你脑子里就会一直知道自己到底在学什么。

二、为什么说 XGBoost 更像一个强力的表格数据模型,而不是万能预测器

很多教程喜欢把 XGBoost包装成一种“拿来就能打”的通用机器学习利器,这种说法很容易让初学者产生误解。更准确一点说,XGBoost 首先是一个非常强的表格数据模型。它擅长处理结构化特征,也就是每一行样本对应若干列清晰特征的那类问题。例如技术指标、横截面风格因子、基本面整理后的特征列、过去若干期收益和波动统计等,这些都属于它比较熟悉的工作面。

但这并不意味着它适合所有预测任务。比如直接处理原始高频序列、非结构化文本、图像或复杂时序依赖特别强的问题,它就未必是最佳选择。对量化研究者来说,这个边界非常重要。因为你真正要做的不是盲目挑一个热门模型,而是根据数据形态和研究问题选择合适工具。XGBoost 的强项在于,它能够在表格型特征空间里有效捕捉非线性关系和特征交互,同时训练和调参的门槛又没有深度网络那么高。

因此,把它理解成“强力表格模型”,往往比把它神化成“万能模型”更接近真实,也更有助于后面用对地方。

三、为什么它在量化里常见,却不应该被当成默认答案

在量化研究圈里,XGBoost 的确很常见。因为很多研究任务天然就是表格问题,例如预测下一期涨跌方向、预测未来一段收益区间、筛选横截面更优资产、或者用一堆因子做分类和回归。对于这些任务,XGBoost 常常能在较少的特征工程假设下给出不错的基线效果,因此它成为很多人进入机器学习量化时的第一站。

但“常见”不等于“默认答案”。如果一个人把 XGBoost 当成任何问题都先上的工具,很容易出现两类问题。第一类是研究问题本身并不适合它,例如样本极少、时序结构特别强、或者更适合简单线性解释的场景。第二类是模型之外的问题反而更关键,比如标签定义不稳、样本切分不对、前视偏差未处理,这时就算上了 XGBoost,也只是把基础问题包上了一层更复杂的外壳。

所以更成熟的理解应该是:XGBoost 是量化里很有价值的一把工具,但它不是研究流程的起点,更不是万用默认选项。真正的起点还是问题定义、标签设计、特征构造和数据切分。

四、它最适合的研究场景,通常具备哪些共同特点

如果要把 XGBoost 适合的研究场景概括得更具体一些,通常会有几个共同特征。第一,数据已经整理成了较稳定的表格结构,每一行样本都能对应明确的目标标签。第二,特征之间可能存在一定非线性关系和交互,而不是简单的线性叠加就能说明。第三,样本规模通常在一个对树模型比较友好的区间,既不是极小到根本没法稳健学习,也不是大到必须依赖更重的深度模型基础设施。第四,研究者希望在性能和可解释性之间找一个相对务实的平衡点。

这几个特点组合起来时,XGBoost 的优势就会比较明显。它不要求你像深度学习那样准备特别复杂的网络结构,也不像一些极简模型那样对线性假设依赖很强。它更像一个实用主义者,擅长在表格特征的现实研究里给出一个强而不至于难以驾驭的基线。

也正因为如此,在因子研究、截面选股、分类风控、收益分层等任务里,你会反复看到它的身影。不是因为它永远最优,而是因为它往往足够好、足够稳、也足够容易落地比较。

五、为什么树模型的便利,有时也会让人低估数据问题的严重性

XGBoost 有一个很容易让人“上头”的地方,就是它对很多表格特征问题看起来都很能打,甚至在你没有把特征标准化得很漂亮时,也常常能给出还不错的结果。这种便利当然是优点,但也正因为它太方便,很多人会不自觉地低估数据问题本身的严重性。

举个最常见的例子,标签定义存在信息泄露、训练和验证切分穿越时间、样本去重不彻底、特征和目标对齐不严谨,这些问题在量化里都比“模型选哪一个”更致命。可一旦用了 XGBoost,看到分数还不错,就很容易误以为研究已经很成功。实际上,很可能只是模型把数据问题一起吃进去了。

所以学 XGBoost 时,一个非常重要的观念是:模型再强,也不能替代研究流程本身的干净。树模型的便利是为了帮你更快建立有效基线,而不是让你绕过数据质量和切分纪律。若这一层搞反了,模型越强,误导反而可能越大。

六、为什么它常被拿来做基线模型,而不是一上来就追求最终答案

在比较成熟的研究流程里,XGBoost 很适合扮演一个强基线模型的角色。所谓强基线,不是说它只是“凑合用一下”,而是说它足够有竞争力,足以帮助你判断当前特征和标签设定有没有基本信息量。若连 XGBoost 都完全学不到东西,那么问题很可能不在于模型不够复杂,而在于数据定义本身就还没有准备好。

把它作为强基线,有两个非常现实的好处。第一,你能较快得到一个性能还不错的参考点,不至于在一开始就陷入大量复杂模型比较。第二,你可以用它来检验特征工程和样本设计是不是已经具备基本可学习性。这样一来,后面无论你选择继续优化树模型,还是转向别的模型,都会站在一个更稳的起点上。

这也是为什么很多量化团队和研究者很喜欢先跑 XGBoost。它不是研究终点,但常常是一个非常有价值的起点标尺。

七、什么时候不该硬上 XGBoost,为什么知道“不用”也很重要

学一个工具时,人们往往只关心它什么时候有用,却很少认真想它什么时候不该用。其实后者同样重要。对 XGBoost 来说,至少有几类场景不适合硬上。比如样本量特别小,小到模型稍微分裂几次就会严重过拟合;比如研究目标本身更看重清晰线性解释,而不是尽量榨出非线性表现;再比如问题的核心信息存在于复杂时间顺序、文本语义或别的非结构化载体里,这时把它硬压成表格特征未必是最自然的做法。

知道什么时候不用 XGBoost,本质上是在建立研究判断力。因为真正成熟的研究者不会只想着“我会这个工具,所以所有问题都要套进去”,而是会根据问题本身决定是否使用它。量化里特别需要这种判断力,因为数据和问题形态差异很大,一把锤子不可能适合所有钉子。

因此,学习 XGBoost 的正确姿势不是把它神化,而是把它放进自己的工具箱里,知道什么时候拿出来,什么时候先放回去。

八、这一讲真正要建立的,是“模型定位意识”

如果说前面那些数据、回测、指标短课主要在建立处理流程意识,那么 XGBoost 这一讲在做的,是建立模型定位意识。也就是你开始知道:学一个模型,不应该只学怎么调包、怎么调参,还要先知道它在研究流程里扮演什么角色。它擅长什么,不擅长什么,常见误用在哪里,为什么很多人拿它做强基线而不是万能方案,这些都属于定位的一部分。

这个意识非常重要。因为后面你不管学 CatBoost、LightGBM、线性模型还是深度网络,只要先有了“先定位再学习”的习惯,就不太容易被工具本身带着跑。你会更自然地从研究问题出发,而不是从流行模型出发。这是从“会用库”走向“会做研究”的关键一步。

XGBoost 之所以值得用这样一讲来开头,正因为它足够常见,也足够容易被误用。先把定位说清楚,后面整个系列都会更稳。

九、为什么这一讲做完后,最好已经能主动区分“模型能力”和“研究条件”

学习 XGBoost 时,一个非常关键的分界线,是你能不能主动区分模型能力和研究条件。模型能力说的是它擅长非线性、交互关系、结构化表格数据;研究条件说的是你的标签是否合理、样本是否切分得当、特征是否存在泄露、评价方式是否可信。只要这两层不分开,模型很容易被神化,好像结果不好是模型不够强,结果好又像是模型天然正确。第 1 讲正是在帮你把这层混淆拆开。

这种区分很重要,因为它会直接决定你后面学建模时的心态。你会更自然地先去检查问题设置是否成立,而不是一上来就把希望全压在某个模型名字上。

十、这一讲也在帮你建立“工具先进不等于流程可省”的研究态度

XGBoost 常被认为是很强的模型,这没问题。但真正值得在开篇就讲清楚的是,工具再强,也不能跳过研究流程。标签设计、时间切分、样本质量、目标定义和结果解释,这些基础环节一个都不能省。第 1 讲如果能先把这层态度立住,后面你进入训练和验证环节时,思路就会稳很多,不会轻易滑向“先把模型跑起来再说”的惯性。

这也是为什么系列不急着一开始就写训练代码。先把态度和定位讲清楚,后面的代码练习才不容易跑偏。

十一、总结

这一讲的重点,不是立刻写代码训练 XGBoost,而是先把它在量化研究里的位置讲清楚。它更像一个强力的表格数据模型,适合处理中等规模、结构化特征、存在非线性和交互关系的任务,也常被用作强基线模型。但它绝不是万能预测器,更不能替代标签设计、样本切分和数据质量控制。只要这层定位先建立,后面进入真正的建模流程时,思路就会清楚很多。

十二、系列衔接

本讲是 XGBoost 量化应用系列的开篇导论,当前主题是《先理解 XGBoost 在量化里的定位》。这一讲先把工具边界和使用场景讲清楚,后面才会继续进入数据准备、标签设计、训练验证与结果解读等更具体的建模环节。

十三、风险揭示与免责声明

风险揭示与免责声明

本页面内容仅用于量化研究与技术交流,旨在展示研究方法与流程,不构成对任何金融产品、证券或衍生品的要约、招揽、推荐或保证。

本文所涉历史数据、回测结果与示例参数不代表未来表现,也不应作为投资决策依据。

市场存在波动、流动性与执行偏差等不确定性,任何策略均可能出现收益波动或阶段性失效。

读者应结合自身风险承受能力进行独立判断,并在必要时咨询持牌专业机构意见。