老郑聊量化 · 第 3 篇
2026 年 7 月 2 日
一句话开场
很多人问我:"老郑,你的回测数据是怎么跑出来的?是不是要写很复杂的程序?"
答案是:不需要。
今天这篇,我把回测的核心思路讲清楚。你不需要是程序员,你只需要有一台电脑,和一点点耐心。
回测是什么?
简单说就是:用历史数据验证你的想法靠不靠谱。
比如你觉得"股票连跌3天后大概率会反弹"——这是你的直觉。
回测就是拿过去3年的数据,把所有"连跌3天"的情况找出来,看看第二天到底涨了多少、跌了多少、胜率多少。
数据说了算,不是感觉说了算。
第一步:装好工具(5 分钟)
打开电脑终端,输入一行命令:
plaintext
1
2
pip install akshare pandas
这两个库就够了:
akshare:免费的 A 股数据源,历史 K 线、财务数据都有
pandas:数据处理工具,帮你把几千条数据整理成你想要的样子
第二步:拉取数据(3 分钟)
三行代码拿到一只股票 3 年的日 K 线:
python
1
2
3
4
5
6
7
import akshare as ak
df = ak.stock_zh_a_hist(symbol="002861", period="daily",
start_date="20230101", end_date="20251231",
adjust="qfq")
print(df.head())
跑完你会看到一张表格:日期、开盘、收盘、最高、最低、成交量、涨跌幅……
这就是你接下来所有分析的基础数据。
第三步:定义你的想法(核心)
回测最重要的不是代码,是你想验证什么。
举个例子,我的一个策略逻辑是:
"下影线特别长的股票,第二天大概率会涨。"
翻译成代码就是:
找出每天的下影线长度(收盘价到最低价之间的距离)
和下影线很短的对比,看第二天的涨跌幅有没有差别
如果有显著差别,说明这个"想法"有统计依据
我不给你完整代码——不是藏着掖着,是每个人的策略逻辑不同,你需要自己想清楚"要验证什么"。
但我可以告诉你结果:
用这个方法跑 3 年数据,筛出 37 次信号,胜率 76%。
第四步:看结果(2 分钟)
python
1
2
3
4
print(f"总交易次数:{len(result_df)}")
print(f"胜率:{(result_df['收益率'] > 0).mean() * 100:.1f}%")
print(f"平均收益:{result_df['收益率'].mean():.2f}%")
跑出来一张表:
表格
指标 数值
总交易次数 37 笔
胜率 76%
平均每笔收益 +1.68%
这就是回测的全部意义——用数据说话,不用感觉赌命。
回测最容易踩的 3 个坑
坑 1:未来函数
你的策略在 9:30 用了 15:00 才知道的数据——这就是"偷看答案"。
常见错误:用当天的收盘价决定是否在当天买入。实际上你在收盘前根本不知道收盘价是多少。
解决方法:严格用 T 日数据做决策,T+1 日执行交易。
坑 2:忽略手续费和滑点
很多人回测收益 +200%,一上实盘就亏。因为没算手续费。
别小看万分之几的手续费,高频交易一年下来能吃掉你 6-8% 的收益。
坑 3:幸存者偏差
你选了"表现好的股票"来回测,那些退市的、暴雷的你看都不看。
解决方法:回测范围要包含所有股票,而不是只挑好看的。
我的回测习惯
每次改参数,先跑全市场回测——改一个数字,可能从赚变亏
样本量要够——少于 30 笔交易的策略,我根本不信
不同市场环境都跑一遍——牛市赚钱不算本事,熊市也能赚钱才是真功夫
简单记录在 Excel 里——每笔交易的买卖价、收益率、持仓天数,一目了然
写在最后
回测不是万能药,但没有回测的策略就是赌博。
30 分钟,一台电脑,两个 Python 库——你就能验证一个想法到底靠不靠谱。
与其花 18 年自己踩坑,不如花 30 分钟先跑一遍数据。
下一篇,我会用一个真实案例告诉你"下影线策略"是怎么选股的。
关注我,少走弯路。
风险提示
本文仅供学习交流,不构成投资建议。
回测数据不代表未来表现。
投资有风险,决策靠自己。
老郑
2026 年 7 月 2 日
广东
本文首发于公众号"老郑聊量化"。