第1章:Python量化环境搭建
做量化交易,第一步不是写策略,而是搭环境。
我见过太多人,策略逻辑想得挺美,结果一跑代码就报错——库没装、版本冲突、数据接口连不上。说白了,环境没搭好,后面全是坑。
这一章,我就带你一步步把Python量化环境整明白。咱们的目标是:装好就能用,跑起来不报错。
1.1 Anaconda安装:量化人的“瑞士军刀”
Anaconda是什么?你可以把它理解成一个Python的“全家桶”。它自带Python解释器、包管理器conda,还有一大堆常用的科学计算库。
我个人习惯用Anaconda来管理Python环境。为什么?因为做量化交易,你经常需要在不同项目间切换。有的项目用pandas 1.0,有的用2.0,用conda创建虚拟环境,互不干扰。
安装步骤:
- 去Anaconda官网下载对应系统的安装包(Windows/Mac/Linux)
- 双击安装,一路默认选项就行
- 安装完成后,打开终端(或Anaconda Prompt),输入
conda --version验证
小技巧:安装时记得勾选“Add Anaconda to my PATH environment variable”。虽然安装程序会提醒你不推荐,但我建议勾上。省得后面每次都要手动激活环境。
安装完Anaconda,你其实已经拥有了一个基础的量化环境。但别急,我们还需要配置Jupyter Notebook——这才是我们写策略的主战场。
3.2 Jupyter Notebook配置:交互式开发的利器
Jupyter Notebook,说白了就是一个在浏览器里写代码的工具。它最大的好处是:你可以一段一段地跑代码,随时看结果。这对量化分析来说太方便了。
你想想看,你写一个策略,需要先加载数据,然后做回测,最后看收益曲线。用Jupyter,每一步都能看到中间结果,哪里出问题一目了然。
启动Jupyter:
# 在终端输入
jupyter notebook
运行后,浏览器会自动打开一个页面。默认端口是8888。如果端口被占用,它会自动换一个。
注意:我曾经遇到过Jupyter启动后页面空白的情况。后来发现是浏览器缓存问题。清一下缓存,或者换个浏览器就好了。
我个人习惯在Jupyter里装几个插件,让体验更好:
- jupyter_contrib_nbextensions:提供代码折叠、目录生成等功能
- autopep8:自动格式化代码,保持整洁
安装命令:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
3.3 pandas/numpy安装:数据处理的双引擎
做量化交易,你每天要处理海量的行情数据。pandas和numpy就是处理这些数据的核心工具。
pandas:专门处理表格数据。比如你从交易所拿到的分钟K线,就是一个典型的DataFrame。
numpy:提供高效的数组运算。回测时计算收益率、波动率,底层全靠它。
安装很简单:
# 用conda安装(推荐)
conda install pandas numpy
# 或者用pip
pip install pandas numpy
避坑指南:我曾经在Windows上直接用pip安装pandas,结果报了一堆编译错误。后来换成conda安装,一次成功。所以,能用conda就别用pip,尤其是在Windows上。
验证安装:
import pandas as pd
import numpy as np
print(pd.__version__)
print(np.__version__)
如果输出版本号,说明安装成功。
3.4 tushare/akshare数据接口:获取行情数据
环境搭好了,数据从哪来?两个最常用的免费接口:tushare和akshare。
| 接口 | 特点 | 适用场景 |
|---|---|---|
| tushare | 老牌接口,数据全面,但需要注册获取token | 股票、基金、期货等基础行情 |
| akshare | 开源免费,无需注册,覆盖范围广 | ETF、期权、宏观经济数据 |
安装:
pip install tushare akshare
使用示例:
import tushare as ts
import akshare as ak
# tushare需要设置token(去官网注册获取)
ts.set_token('你的token')
pro = ts.pro_api()
# 获取上证50ETF的日线数据
df_50etf = pro.fund_daily(ts_code='510050.SH', start_date='20240101', end_date='20240301')
print(df_50etf.head())
# akshare直接获取
df_50etf_ak = ak.fund_etf_hist_em(symbol="510050", period="daily", start_date="20240101", end_date="20240301", adjust="qfq")
print(df_50etf_ak.head())
注意:tushare的token是个人标识,不要泄露。我见过有人把token直接贴在代码里发到GitHub上,结果被别人盗用,导致接口被封。
知识体系总览
下面这张图,帮你理清本章的知识结构:
嗯,到这里,你的Python量化环境就基本搭好了。Anaconda管理环境,Jupyter写代码,pandas/numpy处理数据,tushare/akshare获取行情。这套组合拳,足够应付大部分量化场景了。
环境搭好只是第一步。下一章,我们会真正开始接触ETF做市的核心逻辑。到时候,这些工具都会派上用场。
公众号:蓝海资料掘金营,微信deep3321