第1章:环境搭建与核心技术栈
说实话,每次带新人做数字孪生项目,我最怕听到的一句话就是:「我环境装好了,但跑不起来。」
嗯,这几乎是每个入门者的噩梦。我自己也踩过不少坑,所以这一章,咱们把环境彻底搞定。磨刀不误砍柴工,对吧?
1.1 Python环境配置
Python版本怎么选?我个人习惯用3.9或3.10。为什么?因为3.11之后有些科学计算库的兼容性还在磨合期,而3.8以下又太老了。你想想看,回测引擎跑着跑着报个「不兼容」的错误,多闹心。
推荐版本:Python 3.9.13 或 3.10.11
下载地址:python.org 直接下载安装包就行。记得勾选「Add Python to PATH」。
💡 小技巧:安装完后,在终端输入 python --version 确认版本。如果显示的不是你装的版本,八成是PATH没配好。我曾经在这上面浪费了半小时,后来发现是安装时忘了勾那个复选框。
1.2 Anaconda与虚拟环境
为什么要用Anaconda?说白了,就是不想让不同项目的依赖打架。你同时做两个数字孪生项目,一个用Pandas 1.3,另一个用2.0,没有虚拟环境的话,你就等着哭吧。
我建议直接用Anaconda,它自带conda包管理器,省心。
# 安装Anaconda后,创建虚拟环境
conda create -n dt_trading python=3.9
# 激活环境
conda activate dt_trading
# 退出环境
conda deactivate
⚠️ 注意:虚拟环境的名字别起得太随意。我见过有人起名叫「test」或「aaa」,过两周自己都忘了是干嘛的。建议用项目名缩写,比如 dt_trading 表示 Digital Twin Trading。
为什么会这样?因为conda会把每个环境隔离得干干净净。你在这个环境里装的东西,不会影响到其他环境。我曾经因为没隔离环境,导致一个回测脚本在另一个项目里跑出了完全不同的结果——排查了整整一天才发现是依赖版本冲突。
1.3 核心依赖库
好了,环境有了,接下来装库。这四个库是数字孪生回测引擎的基石,缺一不可。
NumPy — 数值计算的基础
说白了,所有数据在底层都是NumPy数组。Pandas基于它,Matplotlib也基于它。你想想看,没有NumPy,就像盖楼没有地基。
pip install numpy
# 验证安装
import numpy as np
print(np.__version__) # 应该输出 1.24.x 或更高
💡 我在项目中遇到过:用列表做循环计算,速度慢得让人抓狂。换成NumPy数组后,速度提升了上百倍。记住,能向量化就别用循环。
Pandas — 数据处理的核心
回测引擎里,K线数据、交易记录、持仓信息,全得靠Pandas来管理。DataFrame就是你的电子表格,但比Excel快一万倍。
pip install pandas
# 快速上手
import pandas as pd
# 创建一个简单的K线数据
data = {
'open': [100, 102, 101],
'high': [105, 104, 103],
'low': [99, 100, 100],
'close': [102, 103, 101],
'volume': [1000, 1200, 900]
}
df = pd.DataFrame(data, index=pd.date_range('2024-01-01', periods=3))
print(df)
Matplotlib — 静态图表
回测结果总得可视化吧?收益曲线、回撤图、交易信号,Matplotlib都能搞定。虽然它看起来有点「老派」,但胜在稳定、可控。
pip install matplotlib
import matplotlib.pyplot as plt
# 画个简单的收益曲线
plt.plot([1, 2, 3, 4, 5], [100, 102, 101, 105, 110])
plt.title('回测收益曲线')
plt.show()
Plotly — 交互式图表
Matplotlib适合做报告里的静态图,但如果你想让用户拖拽、缩放、查看数据点,Plotly是更好的选择。数字孪生回测引擎里,我通常用Plotly做前端展示。
pip install plotly
import plotly.express as px
# 交互式K线图
fig = px.line(x=[1,2,3,4], y=[100,102,101,105])
fig.show()
| 库名 | 用途 | 安装命令 |
|---|---|---|
| NumPy | 数值计算、数组操作 | pip install numpy |
| Pandas | 数据处理、时间序列 | pip install pandas |
| Matplotlib | 静态图表绘制 | pip install matplotlib |
| Plotly | 交互式图表 | pip install plotly |
1.4 版本控制与项目初始化
嗯,这里我要多说两句。很多人觉得版本控制是「大项目才需要」的东西,其实不然。你写回测引擎,改一个参数可能就导致结果天差地别。没有Git,你怎么回溯?
项目初始化步骤:
- 在GitHub或Gitee上创建仓库
- 本地初始化:
git init - 添加远程仓库:
git remote add origin 你的仓库地址 - 创建
.gitignore文件,排除虚拟环境和缓存
# .gitignore 文件内容示例
__pycache__/
*.pyc
.env
dt_trading/ # 虚拟环境目录
*.log
data/ # 数据文件,通常不提交
⚠️ 我曾经犯过一个错误:把包含API密钥的配置文件提交到了GitHub。虽然很快就删了,但谁知道有没有人已经抓取到了?记住,.env 文件和敏感信息永远不要提交。
初始化完成后,你的项目结构应该是这样的:
dt_trading_engine/
├── .git/
├── .gitignore
├── README.md
├── requirements.txt
├── data/ # 存放历史数据
├── src/ # 源代码
│ ├── __init__.py
│ ├── backtest.py
│ └── utils.py
└── notebooks/ # Jupyter Notebook 实验
知识体系总览
下面这张图,是我自己画的项目结构图。你可以把它当作本章的「地图」——每个模块怎么连接,一目了然。
这张图你看懂了吗?底层是Python和Anaconda,中间是四个核心库,顶层就是我们要构建的回测引擎。每一层都依赖下一层,缺一不可。
💡 我个人习惯:把所有依赖写进 requirements.txt,这样换机器时一行命令就能恢复环境:pip install -r requirements.txt
好了,环境搭好了,库也装齐了,项目也初始化了。接下来就可以开始写真正的回测逻辑了。不过别急,先把这一章的内容消化掉——环境问题往往是最大的坑,填平了它,后面就顺畅了。
公众号:蓝海资料掘金营,微信deep3321