2、Python基础回顾:环境搭建与四大工具
说实话,很多做量化的人,最后放弃不是因为策略不行,而是卡在了环境配置上。我见过太多人,代码写好了,结果跑不起来——嗯,就是环境没搭对。这一章,我带你把基础打牢。
2.1 Python环境搭建:别让配置成为拦路虎
我个人习惯用Anaconda来管理Python环境。为什么?因为它把Python、NumPy、Pandas这些常用库打包好了,省得你一个个装。
安装步骤很简单:
- 去Anaconda官网下载对应系统的安装包
- 一路默认安装,记得勾选「Add Anaconda to my PATH」
- 打开终端或命令提示符,输入
python --version验证
装完之后,你还需要装几个量化必备库。打开终端,一行命令搞定:
pip install numpy pandas matplotlib jupyter
你想想看,这四样东西,就是咱们做量化的「四大金刚」。后面我会一个个讲。
2.2 Jupyter Notebook:交互式编程的利器
Jupyter Notebook这东西,说白了就是一个能写代码、能记笔记、能画图的「活文档」。我刚开始做量化研究时,就是靠它一步步调试策略的。
启动方式:
# 在终端输入
jupyter notebook
浏览器会自动打开一个页面,点右上角的「New」→「Python 3」,就能新建一个笔记本了。
Jupyter里最核心的概念是「单元格」(Cell)。有两种常用类型:
- 代码单元格: 写Python代码,按Shift+Enter运行
- Markdown单元格: 写笔记、公式、标题,用Markdown语法
为什么会这样?因为量化研究是个反复迭代的过程,Jupyter的「即写即得」特性,让你能快速验证想法。我个人觉得,这是做量化最舒服的开发环境。
2.3 NumPy基础:数值计算的基石
NumPy,全称是Numerical Python。它最核心的东西就是——数组(ndarray)。你想想看,股票价格、交易量、收益率,哪个不是一堆数字?NumPy就是专门处理这些数字的。
创建数组:
import numpy as np
# 从列表创建
prices = np.array([100, 102, 101, 105, 108])
# 创建全0数组
zeros = np.zeros(5)
# 创建等差数列
days = np.arange(1, 6) # [1, 2, 3, 4, 5]
常用操作:
# 计算收益率
returns = np.diff(prices) / prices[:-1]
# 计算均值、标准差
mean_return = np.mean(returns)
std_return = np.std(returns)
# 向量化运算——不用写循环!
prices_doubled = prices * 2
我在项目中遇到过一个问题:用Python列表计算100万条数据的均值,等了半天没反应。换成NumPy数组,0.1秒就出结果了。嗯,这就是NumPy的价值。
2.4 Pandas基础:表格数据的瑞士军刀
Pandas,说白了就是Python版的Excel。但它比Excel强太多了——能处理百万行数据,还能做各种复杂运算。
核心数据结构:
- Series: 一列数据,带索引
- DataFrame: 多列数据,像一张表格
读取股票数据:
import pandas as pd
# 从CSV读取数据
df = pd.read_csv('stock_data.csv')
# 查看前5行
print(df.head())
# 查看基本信息
print(df.info())
常用操作:
# 选择列
close_prices = df['close']
# 条件筛选
high_volume = df[df['volume'] > 1000000]
# 计算移动平均线
df['ma5'] = df['close'].rolling(window=5).mean()
# 缺失值处理
df = df.dropna() # 删除缺失值
# 或者
df = df.fillna(method='ffill') # 用前一个值填充
Pandas还有一个杀手锏——groupby操作。比如你想按月份统计每只股票的平均收益率:
monthly_returns = df.groupby(['stock', 'month'])['return'].mean()
一行代码,搞定Excel里要折腾半天的活儿。
2.5 Matplotlib基础:让数据说话
做量化,光有数字不行,你得能「看见」数据。Matplotlib就是干这个的。
画一条K线走势图:
import matplotlib.pyplot as plt
# 准备数据
dates = pd.date_range('2024-01-01', periods=100)
prices = np.random.randn(100).cumsum() + 100
# 画图
plt.figure(figsize=(12, 6))
plt.plot(dates, prices, label='股价', color='blue')
plt.title('股票价格走势')
plt.xlabel('日期')
plt.ylabel('价格')
plt.legend()
plt.grid(True)
plt.show()
画多个子图:
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8))
# 上子图:价格
ax1.plot(dates, prices, color='blue')
ax1.set_title('价格走势')
# 下子图:收益率
returns = np.diff(prices) / prices[:-1]
ax2.bar(dates[1:], returns, color='green', alpha=0.6)
ax2.set_title('日收益率')
plt.tight_layout()
plt.show()
你想想看,一个策略好不好,光看回测数字可能看不出来。但把净值曲线画出来,一眼就能看出问题——回撤大不大?收益稳不稳?这就是可视化的力量。
知识体系总览
下面这张图,把本章的核心内容串起来了。你可以把它当作一个「地图」,学完一章回来看看,就知道自己站在哪里。
这张图展示了我们这章的核心脉络。从Python环境出发,Jupyter负责交互式探索,NumPy做底层数值计算,Pandas处理表格数据,Matplotlib把结果画出来。四者环环相扣,缺一不可。
- 用Anaconda管理环境,别自己折腾Python路径
- Jupyter Notebook是量化研究的「草稿纸」,学会用它
- NumPy的向量化运算,是性能的关键
- Pandas的DataFrame,是你处理股票数据的「主战场」
- Matplotlib画图,让策略好坏一目了然
好了,基础工具就这些。别小看它们——我见过有人用Pandas一个函数就搞定了别人写50行循环才能做的事。工具用得熟,效率翻倍。