第1章:Python金融分析环境搭建
做量化交易,第一件事不是写策略,而是搭环境。
我见过太多人,策略逻辑想得挺漂亮,结果一跑代码就报错——不是库版本冲突,就是API连不上。说白了,环境没搭好,后面全是坑。
这一章,咱们就把地基打牢。我会带着你一步步装好Anaconda、玩转Jupyter Notebook、复习三大件(NumPy/Pandas/Matplotlib),再聊聊国内常用的金融数据接口。
本章核心目标:让你能在30分钟内,从零搭建一个可用的量化分析环境。
1.1 Anaconda安装与配置
Anaconda是什么?简单说,它是一个Python发行版,帮你把Python解释器、常用库、包管理器打包在一起。你不需要一个个去pip安装,省心很多。
我个人习惯用Anaconda来管理多个Python环境。比如做回测用一个环境,做机器学习用另一个,互不干扰。
安装步骤
- 去官网下载Anaconda(选Python 3.9+版本,别选太老的)
- 安装时勾选「Add Anaconda to my PATH environment variable」
- 安装完成后,打开终端(Windows用Anaconda Prompt)
- 输入
conda --version验证安装
小技巧:我建议你创建一个独立的量化环境,别把东西都装在base里。
conda create -n quant python=3.9
conda activate quant
避坑指南:我曾经在base环境里装了太多包,结果某次更新NumPy时把pandas搞崩了。从那以后,每个项目我都单独建环境。
1.2 Jupyter Notebook使用技巧
Jupyter Notebook是量化分析的神器。你想想看,写一段代码、立刻看到结果、还能加注释和图表,多方便。
启动方式很简单:在终端输入 jupyter notebook,浏览器就会自动打开。
几个我常用的快捷键
| 快捷键 | 功能 |
|---|---|
| Shift + Enter | 运行当前单元格并跳到下一个 |
| Ctrl + Enter | 运行当前单元格但不跳转 |
| A / B | 在上方/下方插入新单元格 |
| DD | 删除当前单元格 |
| M | 切换到Markdown模式(写注释用) |
核心技巧:用Markdown单元格写策略思路,用代码单元格写实现。这样你的Notebook就是一份可执行的策略文档。
1.3 NumPy/Pandas/Matplotlib基础回顾
这三样东西,是量化分析的「三驾马车」。我每天写策略都离不开它们。
NumPy:数值计算的基础
说白了,NumPy就是Python里的数组工具。它比Python原生的列表快得多,因为底层是C写的。
import numpy as np
# 创建一个数组
prices = np.array([100, 102, 101, 105, 108])
returns = np.diff(prices) / prices[:-1]
print(returns) # 计算收益率
个人经验:做因子计算时,尽量用NumPy的向量化操作,别用for循环。速度能差几十倍。
Pandas:数据处理的核心
Pandas的DataFrame,你可以把它想象成Excel表格,但功能强大多了。
import pandas as pd
# 创建一个时间序列
dates = pd.date_range('2024-01-01', periods=5, freq='D')
data = pd.DataFrame({
'close': [100, 102, 101, 105, 108],
'volume': [10000, 12000, 11000, 15000, 13000]
}, index=dates)
print(data.head())
Matplotlib:可视化利器
画图是量化分析里最直观的验证方式。我习惯用Matplotlib来快速看数据分布。
import matplotlib.pyplot as plt
plt.plot(data.index, data['close'])
plt.title('价格走势')
plt.xlabel('日期')
plt.ylabel('收盘价')
plt.show()
注意:如果在Jupyter里画图,记得加一行 %matplotlib inline,否则图不会显示。
1.4 金融数据API接口介绍
做量化,数据是命根子。没有数据,策略就是空中楼阁。
国内常用的数据接口,我主要用两个:Tushare和JoinQuant。
Tushare
Tushare是老牌的数据接口,数据全、更新快。但需要注册获取token。
import tushare as ts
# 设置token(需要去官网注册)
ts.set_token('你的token')
pro = ts.pro_api()
# 获取日线数据
df = pro.daily(ts_code='000001.SZ', start_date='20240101', end_date='20240131')
print(df.head())
小建议:Tushare的token要保管好,别硬编码在代码里。我习惯用环境变量来存。
JoinQuant(聚宽)
聚宽不仅提供数据,还有在线回测平台。适合快速验证策略想法。
# 聚宽的数据获取方式(在聚宽平台内使用)
from jqdata import *
# 获取平安银行的历史数据
df = get_price('000001.XSHE', start_date='2024-01-01', end_date='2024-01-31')
print(df.head())
对比总结:
| 特性 | Tushare | JoinQuant |
|---|---|---|
| 数据范围 | 股票、期货、基金、宏观 | 股票、期货、基金 |
| 使用方式 | 本地调用 | 平台内使用 |
| 免费额度 | 积分制,基础免费 | 有一定免费额度 |
| 适合场景 | 本地回测、研究 | 在线回测、快速验证 |
本章知识体系
下面这张图,帮你理清本章的核心脉络:
嗯,这一章的内容就到这里。环境搭好了,后面咱们才能安心搞策略。