3、Python量化环境搭建:Anaconda安装、Jupyter Notebook配置、常用量化库介绍
说实话,很多做量化交易的朋友,一开始就栽在环境搭建上。
我见过太多人,策略逻辑写得头头是道,结果装个库报错半天,最后心态崩了。其实没必要,环境搭好了,后面至少省一半的精力。今天我就带你把这套东西捋顺。
3.1 为什么选Anaconda?
你可能会问:直接用Python官方版本不行吗?
行,但没必要。Anaconda相当于一个「全家桶」,把Python解释器、常用科学计算库、包管理工具都打包好了。我个人的习惯是,每做一个新项目,就用conda创建一个独立环境。为什么?因为不同项目依赖的库版本可能冲突。比如你一个策略用pandas 1.0,另一个用2.0,混在一起迟早出事。
3.2 Anaconda安装步骤
下载地址我就不贴了,直接去官网选对应系统版本。安装时注意两点:
- 勾选「Add Anaconda to my PATH environment variable」 —— 这样你才能在命令行直接敲conda命令
- 安装路径不要有中文和空格 —— 这是老生常谈了,但总有人踩坑
装完后,打开终端(Windows用Anaconda Prompt),输入:
conda --version
能看到版本号,就说明装好了。
3.3 创建量化交易专用环境
我个人习惯给每个策略系列建一个环境。比如我们做商品CTA,可以这样:
conda create -n cta_trading python=3.9
conda activate cta_trading
这里python=3.9是我推荐的版本。太新的Python(比如3.12)有些量化库还没完全适配,太老的又缺特性。3.9是个稳妥的选择。
3.4 Jupyter Notebook配置
Jupyter Notebook是我们做量化研究的利器。它的好处是:写一段代码,立刻看到结果,还能加文字说明。非常适合策略探索阶段。
安装很简单:
conda install jupyter notebook
启动:
jupyter notebook
浏览器会自动打开一个页面。这里我建议你做两件事:
- 修改默认工作目录 —— 在配置文件里改,不然每次启动都要cd到你的策略文件夹
- 安装jupyter_contrib_nbextensions —— 这个插件包能加很多实用功能,比如代码折叠、目录生成
conda install -c conda-forge jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
嗯,装完之后,你会在Notebook里看到多了一个Nbextensions标签,勾上「Table of Contents」和「Collapsible Headings」,写策略文档会舒服很多。
3.5 常用量化库介绍
下面这几个库,是我们做商品CTA趋势跟踪的核心工具。我按使用频率排序讲。
3.5.1 pandas —— 数据处理的灵魂
说白了,pandas就是Python里的Excel,但比Excel强一百倍。它最核心的两个东西:
- DataFrame —— 表格数据,行是时间,列是品种、价格、成交量等
- Series —— 一列数据,比如收盘价序列
举个例子,读取CSV格式的期货日线数据:
import pandas as pd
df = pd.read_csv('rb888.csv', parse_dates=['date'], index_col='date')
print(df.head())
我在项目中遇到过最常用的pandas操作:
df['close'].rolling(20).mean()—— 计算20日均线df['signal'] = df['close'] > df['ma20']—— 生成交易信号df['returns'] = df['close'].pct_change()—— 计算收益率
3.5.2 numpy —— 数值计算的基础
numpy是pandas的底层引擎。它提供多维数组和大量数学函数。你写策略时可能不直接调用numpy,但pandas背后全靠它。
我个人觉得,numpy最实用的场景是:
- 数组运算 —— 比Python原生列表快几十倍
- 随机数生成 —— 做蒙特卡洛模拟时必备
- 线性代数 —— 计算协方差矩阵、特征值等
import numpy as np
# 生成1000个正态分布的随机收益率
np.random.seed(42)
returns = np.random.normal(0, 0.01, 1000)
# 计算累计收益
cum_returns = np.cumprod(1 + returns)
print(cum_returns[-1])
3.5.3 matplotlib —— 可视化利器
做量化交易,不看图怎么行?matplotlib是Python最经典的绘图库。
我习惯这样画K线和均线:
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
plt.plot(df.index, df['close'], label='Close')
plt.plot(df.index, df['ma20'], label='MA20', linestyle='--')
plt.legend()
plt.title('螺纹钢主力合约日线')
plt.show()
这里有个小技巧:用plt.style.use('ggplot')可以让图表更好看。我刚开始做策略展示时,默认的matplotlib风格太丑,被领导吐槽过。后来换了ggplot风格,顺眼多了。
3.5.4 backtrader —— 回测框架
终于到重头戏了。backtrader是Python里最流行的量化回测框架之一。它把策略、数据、资金管理、业绩分析都封装好了。
一个最简单的双均线策略长这样:
import backtrader as bt
class SmaCross(bt.Strategy):
params = (('pfast', 10), ('pslow', 30),)
def __init__(self):
sma_fast = bt.ind.SMA(period=self.params.pfast)
sma_slow = bt.ind.SMA(period=self.params.pslow)
self.crossover = bt.ind.CrossOver(sma_fast, sma_slow)
def next(self):
if not self.position:
if self.crossover > 0:
self.buy()
elif self.crossover < 0:
self.sell()
你想想看,如果没有backtrader,你要自己处理滑点、手续费、仓位管理,那得写多少代码?
cerebro.broker.setcommission()设置手续费,千万别省这一步。
3.6 知识体系总览
下面这张图,帮你理清今天讲的所有内容之间的关系:
3.7 环境验证
装完所有东西后,我建议你跑一个简单的验证脚本,确保一切正常:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import backtrader as bt
print(f"pandas版本: {pd.__version__}")
print(f"numpy版本: {np.__version__}")
print(f"backtrader版本: {bt.__version__}")
# 生成随机数据测试
data = np.random.randn(100)
df = pd.DataFrame(data, columns=['value'])
df['ma'] = df['value'].rolling(10).mean()
print(df.head(15))
如果没报错,恭喜你,环境搭好了。接下来就可以开始真正的策略开发了。
公众号:蓝海资料掘金营,微信deep3321