首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >在云服务器上用JupyterLab做量化研究,随时随地写策略(附完整部署教程)

在云服务器上用JupyterLab做量化研究,随时随地写策略(附完整部署教程)

原创
作者头像
hollyx
发布2026-08-11 20:20:03
发布2026-08-11 20:20:03
1120
举报

在云服务器上用 JupyterLab 做量化研究,随时随地写策略

这篇教程解决一个问题:量化研究的代码、数据、环境散落在多台电脑上,换台设备就没法干活。跟着做完,你会得到一个跑在云服务器上的 JupyterLab,浏览器打开就能写策略,公司电脑、家里 iPad、甚至手机都是同一个环境,数据一份、环境一份、随时续上。

如您需求,可以到腾讯官网购买体验:

腾讯云国内官网云服务器大促活动:https://cloud.tencent.com/act/pro/featured-202607?fromSource=gwzcw.17760458.17760458.17760458

腾讯云国际站云服务器促销活动:https://www.tencentcloud.com/act/pro/promo?fromSource=intl.17760459.17760459.17760459


事情是这样的。

上周末我在外面吃饭,等位的时候突然想到一个策略思路——用 20 日波动率过滤均线信号。当时手边只有手机,只能把想法记在备忘录里。等晚上回到家打开电脑,那股劲儿已经过去了,而且这个思路需要翻历史数据验证,我本地那台电脑里存的行情数据还停留在上个月。

然后我就想起来,群里一个做量化的老哥说过一句话:"我的研究环境在云上,人在哪,环境就在哪。"

说实话我一开始是怀疑的。JupyterLab 那玩意儿我在本地用得好好的,搬到云服务器上图啥?浏览器里跑 notebook 不卡吗?数据放云上安全吗?

但那天晚上的憋屈劲儿让我决定试试。反正腾讯云轻量应用服务器一天不到一块钱,试错了也不心疼。

结果——

现在我写文章这会儿,人在咖啡馆,用的是一台五年前的旧 MacBook Air,打开浏览器就在跑回测,数据是昨天收盘后自动更新的。本地这台电脑里连 Python 都没装。


一、本地 Jupyter 的三个痛点,我受够了

先说我之前的工作方式,估计很多人和我一样:

研究在公司电脑上写一半,拷回家里的台式机继续,数据两份还经常不同步。上周回测用的数据和这周的对不上,同一个策略跑出两个结果,查了半天发现是数据版本不一样。

最崩溃的一次:我重装了一次系统,Anaconda 环境没备份,pandas、numpy、talib 一堆库重装,talib 编译报错搞了一个多小时。装完发现有个自己写的因子计算脚本忘了备份,没了。那种捶胸顿足的感觉,懂的都懂。

本地 Jupyter 的三个死结:

  1. 环境跟着机器走:换电脑=重新配环境,重装系统=从头再来
  2. 数据散落各处:哪台电脑里的数据是最新的?只有天知道
  3. 人必须在电脑前:想到点子没法立刻验证,灵感是有保质期的

把 JupyterLab 搬到云服务器上,这三个问题一次全解决。


二、部署:比我预想的简单太多

周日晚上 8 点,我开始动手。腾讯云轻量应用服务器,选的 2 核 4G(回测吃内存,建议别省这一档),Ubuntu 22.04 系统。

SSH 连上去,整个安装就这几步:

代码语言:bash
复制
sudo apt update && sudo apt install -y python3-pip python3-venv
python3 -m venv ~/quant-env
source ~/quant-env/bin/activate
pip install jupyterlab pandas numpy matplotlib tushare akshare

装完之后生成配置文件,设置密码:

代码语言:bash
复制
jupyter lab --generate-config
jupyter lab password   # 输入两次密码,会写入配置文件

然后改一下配置,允许远程访问:

代码语言:bash
复制
vim ~/.jupyter/jupyter_lab_config.py

改这两行:

代码语言:python
复制
c.ServerApp.ip = '0.0.0.0'      # 允许外部访问
c.ServerApp.port = 8888          # 端口
c.ServerApp.open_browser = False # 服务器上没有浏览器,别尝试打开

最后启动:

代码语言:bash
复制
jupyter lab

然后去腾讯云控制台,在轻量服务器的防火墙里放行 8888 端口。浏览器输入 http://你的服务器IP:8888,输密码——

熟悉的 JupyterLab 界面出现了。

我看了下时间:8 点 25 分。从零开始到能用,25 分钟,中间还包括我泡了杯茶。

对比一下当初我在本地配环境的经历:talib 编译报错查 StackOverflow、镜像源换来换去、版本冲突降级重装……每次都按小时计算。这次在云服务器上,Ubuntu 的纯净环境反而一路绿灯,一个报错都没有。


三、那个"随时随地"的体验,比想象中爽

部署完第二天是周一,我在公司午休的时候,用手机浏览器打开了 JupyterLab(界面在手机上有点小,但看个结果、跑个 cell 完全够用),把周六想到的那个波动率过滤策略写了个初版。

晚上回家,用 iPad 接着改。数据就是服务器上那一份,环境就是那一个,代码改到哪一行都是连续的,没有任何"同步"的概念,因为压根只有一份。

周三晚上回测跑完了,年化 23%,回撤 9%,比我原来的裸均线策略好了不少。

那感觉就像——以前我的研究环境是一间必须亲自到场的实验室,现在它变成了一片跟着人走的云。人在哪,浏览器在哪,实验室就在哪。

量化研究这个活儿,灵感来了能不能立刻验证,直接决定了很多策略的生死。以前从"想到"到"验证"最快也要等回家开电脑,现在是想到就打开浏览器


四、后台运行:关掉浏览器,回测接着跑

用了一阵我发现一个更香的点:长回测可以扔在服务器上跑。

本地跑回测有个问题——电脑不能关,风扇呼呼转一晚上,还占着机器没法干别的。现在我在云服务器上跑一个遍历 300 个参数组合的回测,笔记本合盖走人,第二天早上打开浏览器看结果。

不过这里要注意:直接 jupyter lab 启动的话,SSH 一断服务就停了。我一开始就是这么裸跑的,后来换成 systemd 托管(对,跟我实盘程序同款方案):

代码语言:bash
复制
sudo vim /etc/systemd/system/jupyter.service
代码语言:ini
复制
[Unit]
Description=JupyterLab
After=network-online.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/notebooks
ExecStart=/home/ubuntu/quant-env/bin/jupyter lab --config=/home/ubuntu/.jupyter/jupyter_lab_config.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
代码语言:bash
复制
sudo systemctl daemon-reload
sudo systemctl enable --now jupyter

从此 JupyterLab 在服务器上 7×24 小时在线,服务器重启它自己也会回来。我的浏览器只是个"屏幕",随时打开随时关。


五、踩坑:裸 HTTP 输密码,想想都后怕

坑来了,这个必须说。

头一个礼拜,我一直是用 http://IP:8888 裸连的。直到有天晚上我看了一条关于 HTTP 明文传输的帖子,突然反应过来:我每次登录 JupyterLab 输入的密码,都是明文在网络上传的,中间经过的每个路由节点理论上都能看到。

而且 JupyterLab 一旦登录,就能在服务器上执行任意代码——这等于把服务器大门的钥匙用明信片寄出去。

当时后背有点凉,赶紧处理。方案有两个:

方案一:SSH 隧道(推荐,最简单)

不在防火墙开放 8888 端口,本地终端建立隧道:

代码语言:bash
复制
ssh -L 8888:localhost:8888 ubuntu@你的服务器IP

然后浏览器访问 http://localhost:8888。所有流量走 SSH 加密通道,安全,也不用折腾证书。缺点是手机上不太好使。

方案二:HTTPS + 反向代理

如果你有自己的域名,用 Nginx 反代加 Let's Encrypt 免费证书,JupyterLab 配置文件里指定证书路径,就能 https:// 访问。适合需要在手机/iPad 上用的场景。

我最后是两个都用:电脑上用 SSH 隧道,iPad 上用 HTTPS。

所以给跟着做的朋友一句忠告:千万别裸 HTTP 长期用,哪怕你觉得"我这小服务器没人盯上"。


六、数据管理的最佳姿势

环境上云之后,数据自然也要上云。我的做法:

  • 历史行情数据用 akshare/tushare 下载,存在服务器的 ~/data 目录,SQLite 或 Parquet 格式
  • 写了一个定时脚本(crontab),每个交易日收盘后自动更新当天的数据
  • notebook 放在 ~/notebooks,每周打包备份一次到对象存储

这样数据永远只有一份、永远是最新的。回测的复现性问题彻底解决——同一个 notebook 今天跑和下个月跑,只要数据没动,结果就一致。

2 核 4G 的配置跑这些绰绰有余。我实测加载 10 年全市场日线数据(大概 200 多万行)做因子计算,内存峰值吃到 2G 左右,稳的。


七、也说两个不爽的地方

夸完了,说点实在的:

  1. 手机端体验只能算"能用"。JupyterLab 界面不是为手机设计的,改代码很费劲,手机只适合看看结果、跑个现成的 cell。别指望在手机上正经写策略。
  2. 网络依赖是双刃剑。服务器不卡,但你本地的网得通。有一次我在高铁上想干活,信号断断续续,体验就很痛苦。不过这没办法,云方案的本质就是这样。
  3. 如果是 2 核 2G 的最低配,跑大一点的回测会明显吃力,做研究的话建议直接上 4G 内存,这是我在配置选择上唯一坚持的点。

八、总结:本地 vs 云端,一笔明账

维度

本地 Jupyter

云服务器 JupyterLab

换电脑

重新配环境,按小时计

打开浏览器就行

重装系统

环境和代码可能全丢

毫发无损

数据版本

散落多台机器,对不上

永远只有一份

随时验证灵感

得等摸到电脑

手机/iPad 都能开

长回测

占着电脑,风扇起飞

扔云上跑,合盖走人

成本

电费+损耗

一天不到一块钱

用了一个多月,我的结论是:量化研究环境上云,是那种"回不去"的体验升级。就像用了网盘的人不会再回到 U 盘时代一样。

给不同朋友的建议:

  • 还在本地来回拷代码的:今晚就动手,这篇教程全程照抄,半小时内你能用上。
  • 纯小白:别被 SSH、systemd 这些词吓到,每一步命令我都给全了,复制粘贴改改 IP 就行。唯一要认真对待的是第五节的安全问题。
  • 已经在云上跑实盘的老鸟:研究和实盘建议分开,可以放同一台服务器但用不同的虚拟环境,别让你瞎折腾的 notebook 环境把实盘依赖搞崩了。

放心冲,早搬早享受。


如您需求,可以到腾讯官网购买体验:

腾讯云国内官网云服务器大促活动:https://cloud.tencent.com/act/pro/featured-202607?fromSource=gwzcw.17760458.17760458.17760458

腾讯云国际站云服务器促销活动:https://www.tencentcloud.com/act/pro/promo?fromSource=intl.17760459.17760459.17760459


常见问题 FAQ

Q:JupyterLab 部署在云服务器上安全吗?

关键看你怎么访问。裸 HTTP + 公网端口是不安全的,密码和代码都可能被窃听。正确做法是 SSH 隧道(ssh -L 8888:localhost:8888)或配置 HTTPS 证书,二选一即可。

Q:云服务器跑 JupyterLab 需要多大配置?

做量化研究建议 2 核 4G 起步。2G 内存加载全市场日线数据做因子计算会很紧张,4G 实测吃 2G 左右很稳。只是写写脚本、偶尔跑小数据的话 2G 也凑合。

Q:关掉浏览器后,正在跑的回测会中断吗?

不会。JupyterLab 的 kernel 跑在服务器上,浏览器只是显示界面。关掉浏览器、合上电脑,回测继续在云服务器上跑,下次打开浏览器接着看结果。

Q:怎么让 JupyterLab 开机自启动、崩溃自动恢复?

用 systemd 托管:创建一个 jupyter.service 文件,设置 Restart=always,然后 systemctl enable --now jupyter。具体配置见正文第四节。

Q:手机浏览器能写代码吗?

能打开、能看结果、能运行已有的 cell,但 JupyterLab 界面不是为触屏设计的,编辑代码体验很差。手机适合应急查看和触发运行,正经写策略还是用电脑或 iPad 加键盘。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 在云服务器上用 JupyterLab 做量化研究,随时随地写策略
    • 一、本地 Jupyter 的三个痛点,我受够了
    • 二、部署:比我预想的简单太多
    • 三、那个"随时随地"的体验,比想象中爽
    • 四、后台运行:关掉浏览器,回测接着跑
    • 五、踩坑:裸 HTTP 输密码,想想都后怕
    • 六、数据管理的最佳姿势
    • 七、也说两个不爽的地方
    • 八、总结:本地 vs 云端,一笔明账
    • 常见问题 FAQ
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档