2017 Intel Mac + macOS Ventura 搭建美股量化环境(Docker + Python + Backtrader + Jupyter 完整教程)

一、背景

我的电脑配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
设备:
MacBook Pro 13-inch 2017

CPU:
2.3GHz 双核 Intel Core i5

内存:
8GB

系统:
macOS Ventura 13.7.8

架构:
Intel x86_64

目标:

搭建本地美股量化环境,实现:

  • Docker 容器化开发
  • Python 量化环境
  • Jupyter Notebook
  • 美股数据获取
  • 策略开发
  • 回测
  • 后续接入自动交易

技术栈:

1
2
3
4
5
6
7
8
Docker
Python3.11
Jupyter
Pandas
Numpy
Backtrader
yfinance
Matplotlib

二、踩坑记录

直接下载最新版 Docker:

会报错:

1
This version of Docker Desktop is not supported on your macOS

或者:

1
Current system unsupported

原因:

新版 Docker 要求:

1
macOS 14+

而我的系统:

1
macOS Ventura 13.7.8

解决方案:

安装兼容版本:

1
Docker Desktop 4.47.x (Intel)

三、下载 Docker Desktop(兼容 Ventura)

打开:

https://docs.docker.com/desktop/release-notes/

找到:

1
2
Docker Desktop 4.47.x
Mac with Intel chip

下载:

1
Docker.dmg

注意:

一定要选择:

1
Intel Chip

不是:

1
Apple Silicon

四、清理旧 Docker(推荐)

如果安装失败过:

删除旧文件:

1
2
3
4
5
6
7
sudo rm -rf /Applications/Docker.app

rm -rf ~/.docker

rm -rf ~/Library/Containers/com.docker.docker

rm -rf ~/Library/Application\ Support/Docker*

重启:

1
sudo reboot

五、安装 Docker

双击:

1
Docker.dmg

拖入:

1
Applications

启动:

1
Docker.app

第一次:

系统会要求:

1
2
3
输入密码
授权权限
安装组件

允许即可。


六、验证 Docker 安装

打开终端:

查看版本:

1
docker -v

输出:

1
Docker version xx.xx

检查 compose:

1
docker compose version

输出:

1
Docker Compose version xx

测试:

1
docker run hello-world

成功:

1
Hello from Docker!

说明安装完成。


七、调整 Docker 配置(适合 8GB 内存)

打开:

1
2
3
4
5
Docker Desktop

Settings

Resources

建议:

CPU:

1
2 Core

内存:

1
4GB

Swap:

1
1GB

Disk:

1
30GB

否则:

Docker 很容易占满内存。


八、创建量化项目

创建目录:

1
2
3
mkdir stock_quant

cd stock_quant

目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
stock_quant/

Dockerfile

docker-compose.yml

requirements.txt

src/

backtest.py

strategy.py

九、创建 requirements.txt

新建:

1
touch requirements.txt

内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pandas

numpy

matplotlib

jupyter

yfinance

backtrader

ta

plotly

十、编写 Dockerfile

创建:

1
touch Dockerfile

内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .

RUN pip install --upgrade pip

RUN pip install -r requirements.txt

COPY . .

EXPOSE 8888

CMD [

"jupyter",

"lab",

"--ip=0.0.0.0",

"--allow-root",

"--no-browser"

]

十一、创建 docker-compose

创建:

1
touch docker-compose.yml

内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
version: "3"

services:

quant:

build: .

ports:

- "8888:8888"

volumes:

- .:/app

stdin_open: true

tty: true

十二、启动容器

执行:

1
docker compose up --build

第一次:

需要等待:

1
5~20分钟

安装依赖。

成功:

出现:

1
http://127.0.0.1:8888/lab?token=xxxx

浏览器打开:

1
localhost:8888

进入:

1
Jupyter Lab

十三、下载美股数据

进入 Notebook:

测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import yfinance as yf


aapl = yf.download(

"AAPL",

start="2020-01-01",

end="2025-01-01"

)

aapl.head()

保存:

1
2
3
4
5
aapl.to_csv(

"AAPL.csv"

)

生成:

1
AAPL.csv

十四、第一个量化策略:双均线

创建:

strategy.py

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import backtrader as bt


class MyStrategy(

bt.Strategy

):

def __init__(self):

self.ma5 = bt.ind.SMA(

period=5

)

self.ma20 = bt.ind.SMA(

period=20

)


def next(self):

if self.ma5 > self.ma20:

self.buy()


elif self.ma5 < self.ma20:

self.sell()

十五、回测

创建:

backtest.py

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import yfinance as yf

import backtrader as bt

from strategy import MyStrategy


data = yf.download(

"AAPL",

start="2020-01-01"

)


feed = bt.feeds.PandasData(

dataname=data

)


cerebro = bt.Cerebro()

cerebro.addstrategy(

MyStrategy

)

cerebro.adddata(

feed

)

cerebro.run()

cerebro.plot()

运行:

1
python backtest.py

生成收益曲线。


十六、下一步学习路线

建议:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Python


Pandas



Numpy



量化基础



Backtrader



技术指标

MACD

RSI

布林带



策略优化



组合投资



自动交易



云部署

十七、总结

最终环境:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
MacBook Pro 2017



Docker Desktop 4.47



Python3.11



Jupyter



Backtrader



美股数据



回测



自动交易

对于:

1
2
8GB RAM
Intel 双核

已经足够学习和开发中低频美股量化策略。

后续可扩展:

1
2
3
4
5
6
7
8
9
10
11
12
13
ETF轮动

SPY

QQQ

NVDA

TSLA

AAPL

自动交易

完成完整量化闭环。