第二章:Python量化环境搭建

做量化投资,说白了就是跟数据打交道。而Python,就是咱们手里最顺手的工具。

我记得刚入行那会儿,光装环境就折腾了两天。各种库版本冲突、依赖报错,搞得我差点想放弃。后来摸清了门道,才发现——嗯,其实没那么复杂。

2.1 Anaconda与Jupyter配置

我个人习惯用Anaconda来管理Python环境。为什么?因为它把Python、常用库、包管理器都打包好了,省心。

安装步骤很简单:

  1. 去Anaconda官网下载对应系统的安装包
  2. 一路默认安装,记得勾选「Add Anaconda to my PATH」
  3. 打开终端或Anaconda Prompt,输入 conda --version 验证

装完之后,咱们得创建一个独立的量化环境。你想想看,要是所有项目都混在一个环境里,迟早会出问题。

conda create -n quant python=3.9
conda activate quant

Jupyter Notebook是咱们写策略、做分析的主战场。安装也简单:

conda install jupyter
jupyter notebook

我个人建议装个Jupyter Lab,界面更现代,功能更强:

conda install jupyterlab
小技巧: 在Jupyter里按Tab可以自动补全代码,按Shift+Tab可以查看函数文档。这两个快捷键能帮你省下大量时间。

2.2 核心库安装:Pandas/Numpy/Matplotlib/Statsmodels

这四个库,是量化分析的基石。缺一个,你的分析链条就断了。

库名 作用 安装命令
Numpy 数值计算、矩阵运算 conda install numpy
Pandas 数据处理、时间序列 conda install pandas
Matplotlib 数据可视化、画图 conda install matplotlib
Statsmodels 统计建模、时间序列分析 conda install statsmodels

装完之后,建议跑个测试脚本,确认一切正常:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm

print("所有库导入成功!")
print(f"Numpy版本: {np.__version__}")
print(f"Pandas版本: {pd.__version__}")
注意: 我曾经遇到过Statsmodels和Numpy版本不兼容的问题,导致ARIMA模型死活跑不出来。后来发现是Numpy版本太新了。建议用 conda install 而不是 pip install,因为conda会自动处理依赖关系。

2.3 数据源API获取:Tushare与AkShare

做量化,数据是命根子。没有数据,再好的策略也是空中楼阁。

Tushare 是老牌的数据接口,数据质量高,但需要注册获取token:

pip install tushare
import tushare as ts

# 设置token(需要去tushare官网注册)
ts.set_token('你的token')
pro = ts.pro_api()

# 获取股票日线数据
df = pro.daily(ts_code='000001.SZ', start_date='20230101', end_date='20231231')
print(df.head())

AkShare 是后起之秀,完全免费,数据源覆盖广:

pip install akshare
import akshare as ak

# 获取股票日线数据
df = ak.stock_zh_a_hist(symbol="000001", period="daily", 
                        start_date="20230101", end_date="20231231", adjust="qfq")
print(df.head())

我个人更推荐AkShare做日常研究,因为它不用注册,拿来就用。但Tushare的数据更规范,适合做生产环境。

避坑指南: 我曾经在凌晨跑策略时,发现Tushare接口返回空数据。后来才知道,Tushare每天有调用次数限制,而且凌晨是数据更新窗口。建议把数据提前下载到本地,用CSV或数据库存着,别每次都实时拉取。

2.4 回测框架Backtrader入门

Backtrader是我用得最多的回测框架。它轻量、灵活,而且社区活跃。

安装:

pip install backtrader

一个最简单的回测示例:

import backtrader as bt

# 1. 定义策略
class MyStrategy(bt.Strategy):
    def next(self):
        if not self.position:
            # 没有持仓就买入
            self.buy(size=100)
        else:
            # 有持仓就卖出
            self.sell(size=100)

# 2. 创建Cerebro引擎
cerebro = bt.Cerebro()

# 3. 添加数据
data = bt.feeds.YahooFinanceData(dataname='AAPL', 
                                  fromdate='2023-01-01', 
                                  todate='2023-12-31')
cerebro.adddata(data)

# 4. 添加策略
cerebro.addstrategy(MyStrategy)

# 5. 设置初始资金
cerebro.broker.setcash(100000.0)

# 6. 运行回测
print(f'初始资金: {cerebro.broker.getvalue():.2f}')
cerebro.run()
print(f'最终资金: {cerebro.broker.getvalue():.2f}')

这个例子虽然简单,但包含了Backtrader的核心流程:

  • 策略类:继承 bt.Strategy,重写 next 方法
  • Cerebro引擎:负责调度整个回测流程
  • 数据源:支持多种格式,CSV、数据库、API都行
  • 资金管理:自动处理买卖、持仓、盈亏
个人经验: 刚开始用Backtrader时,我总想着把所有逻辑都塞进策略类里。后来发现,把数据预处理、信号生成、资金管理分开写,代码会清晰很多。记住——回测框架只是工具,核心是你的交易逻辑。

本章知识体系

下面这张图,帮你理清本章的核心脉络:

Python量化环境搭建知识体系 量化环境搭建 Anaconda + Jupyter Pandas/Numpy/Matplotlib/Statsmodels Tushare / AkShare Backtrader 回测框架 环境隔离 Jupyter Lab 数值计算 数据可视化 股票数据 基金/期货 策略编写 回测执行 目标:搭建一套完整的量化研究环境

环境搭好了,数据能拉了,回测能跑了。接下来,你就可以开始真正的研究了。

记住一句话:工欲善其事,必先利其器。花点时间把环境整利索,后面会省下无数麻烦。