fin-ml
fin-ml 是一个面向金融领域的机器学习与数据科学开源项目,提供了丰富的 Jupyter Notebook 案例教程。这些notebooks 源自 O'Reilly 出版的《Machine Learning and Data Science Blueprints for Finance》一书,涵盖了金融数据分析、量化投资、风险管理等多个实际应用场景。
对于想要将机器学习应用于金融领域的学习者和从业者来说,fin-ml 解决了入门门槛高、缺乏实战案例的问题。项目提供了可直接运行的代码示例,用户既可以在本地通过 Anaconda 环境运行,也可以直接在 Binder 或 Google Colab 等在线平台上浏览和执行,无需复杂的环境配置。
这个项目特别适合金融分析师、量化研究员、数据科学爱好者以及相关专业的学生。无论你是想学习 Python 数据分析,还是希望将机器学习技术应用到股票预测、资产组合优化、信用风险评估等具体场景,都能从中获得实用的参考。
技术层面,fin-ml 的亮点在于提供了完整的端到端案例流程,从数据获取、特征工程、模型构建到结果分析均有详细代码展示,并且兼容主流的机器学习框架。
使用场景
某券商量化研究团队的 junior 分析师小李,需要在一周内完成一份关于A股市场因子挖掘的研究报告,用于向投资决策委员会展示机器学习在选股策略中的应用效果。
没有 fin-ml 时
- 小李需要自己从 Wind 或 Tushare 下载数据,再逐行编写数据清洗、缺失值处理、标准化等基础代码,光是数据预处理就花了 3 天
- 网上关于金融机器学习的教程要么过于理论化,要么代码质量参差不齐,小李花了大量时间筛选和验证开源代码的正确性
- 在实现 PCA 降维和聚类分析时,小李对金融数据的特性把握不足,特征选择和参数调优全靠试错,模型效果始终不理想
- 由于缺乏系统性框架,小李的报告结构混乱,向非技术背景的决策者解释模型逻辑时非常吃力
- 临近截止日期,小李还在为代码调试和可视化图表发愁,无法专注于策略逻辑本身的优化
使用 fin-ml 后
- fin-ml 提供了完整的 Chapter 7 案例(无监督学习-降维与投资组合管理),小李直接复用其中的数据处理流程,将预处理时间压缩到半天
- 仓库中的 Jupyter Notebook 包含了针对金融数据优化的代码实现和详细注释,小李可以快速理解每个步骤的金融含义
- 案例中演示了如何将 PCA 应用于 Eigen Portfolio 构建,并提供了参数选择的最佳实践,小李的模型效果显著提升
- fin-ml 的案例结构清晰,配套了完整的数据文件和可视化代码,小李的报告逻辑严谨,图表专业
- 小李有充足时间进行策略回测和敏感性分析,最终报告获得了投资决策委员会的高度认可
fin-ml 通过提供可直接运行的金融机器学习案例模板,让量化分析师能够快速从零搭建完整的研究流程,将精力聚焦于策略本身的优化而非重复造轮子。
运行环境要求
- Linux
- macOS
- Windows
未说明(若有 TensorFlow 兼容 GPU 可提升性能)
未说明

快速开始
金融领域的机器学习和数据科学蓝图 - Jupyter 笔记本
此 GitHub 仓库包含 O'Reilly 书籍《金融领域的机器学习和数据科学蓝图》中的案例研究代码。
您可以通过克隆此仓库并在本地运行 Jupyter 来打开您感兴趣的 Jupyter 笔记本。此选项让您可以摆弄代码。在这种情况下,请按照下面的安装说明进行操作。
想要在线玩这些笔记本而无需安装任何东西?
可以使用以下任何服务。
警告:请注意,这些服务提供临时环境:您所做的任何操作都会在一段时间后被删除,因此请确保下载您关心的任何数据。
- 推荐:在 Binder 中打开它:
注意:Binder 是一个托管服务,书籍的目录将完全像在本地机器上一样打开,无需安装。文件夹内不同文件之间的连接将无缝工作。大多数情况下,Binder 启动快速且运行良好,但当本书的 GitHub 仓库更新时,Binder 会从头创建新环境,这可能需要相当长的时间。此外,某些案例研究,特别是需要更多缓存数据的案例研究可能会比较慢。
在 Colaboratory 中打开此仓库:
- 注意:Google colab 支持 GPU,速度可能相当快。但是,git 目录文件夹中数据文件的链接可能无法正常工作。在 google colab 上运行 jupyter 笔记本时,请单独上传数据文件。对于在 google colab 上加载数据文件,您可以用 github 路径替换本地目录路径。例如,对于第 7 章案例研究 1 的数据,代码中的 dataset = read_csv('Dow_adjcloses.csv') 可以替换为 dataset = read_csv('https://raw.githubusercontent.com/tatsath/fin-ml/master/Chapter%207%20-%20Unsup.%20Learning%20-%20Dimensionality%20Reduction/CaseStudy1%20-%20Portfolio%20Management%20-%20Eigen%20Portfolio/Dow_adjcloses.csv') 以便在 google colab 上运行。
只是想快速查看一些笔记本,而不执行任何代码?
使用 jupyter.org 的笔记本查看器 浏览此仓库:
想在您自己的机器上安装此项目?
首先安装 Anaconda(或 Miniconda)、git,如果您有 TensorFlow 兼容的 GPU,请安装 GPU 驱动。
接下来,通过打开终端并输入以下命令来克隆此项目(不要在每行开头输入 $ 符号,它们只是表示这些是终端命令):
$ cd $HOME # 或您喜欢的任何其他开发目录
$ git clone https://github.com/tatsath/fin-ml.git
$ cd fin-ml
如果您不想安装 git,可以改为下载 master.zip,解压它,将结果目录重命名为 fin-ml 并将其移动到您的开发目录。
如果您熟悉 Python 并且知道如何安装 Python 库,请继续安装 requirements.txt 中列出的库,然后跳转到 启动 Jupyter 部分。如果您需要详细说明,请继续阅读。我们鼓励您使用 'requirement.txt' 文件中的包版本。
Python 和所需库
当然,您显然需要 Python。Python 3 如今已在许多系统上预装。您可以通过输入以下命令来检查您拥有的版本(您可能需要将 python3 替换为 python):
$ python3 --version # 适用于 Python 3
任何 Python 3 版本都可以,最好是 3.5 或更高版本。如果您没有 Python 3,我们建议您安装它。要做到这一点,您有多个选项:在 Windows 或 MacOSX 上,您可以直接从 python.org 下载它。在 MacOSX 上,您也可以使用 MacPorts 或 Homebrew。如果您在 MacOSX 上使用 Python 3.6,需要运行以下命令来安装 certifi 证书包,因为 MacOSX 上的 Python 3.6 没有用于验证 SSL 连接的证书(请参阅此 StackOverflow 问题):
$ /Applications/Python\ 3.6/Install\ Certificates.command
在 Linux 上,除非您知道自己在做什么,否则应该使用系统的打包系统。例如,在 Debian 或 Ubuntu 上,输入:
$ sudo apt-get update
$ sudo apt-get install python3 python3-pip
安装 Anaconda
安装 Python 后,我们建议安装 Anaconda。这是一个包含 Python 和许多科学库的包。您应该选择 Python 3 版本。
使用 pip
安装 Anaconda 应该会安装案例研究中大多数常用的库。鉴于 Anaconda 包可能存在变化,某些库可能已过时,因此学习如何使用 pip 安装 Python 包是一个好主意。
安装 pip
以下是在终端中需要输入的命令,用于使用 pip 进行安装。注意:在以下所有命令中,如果你选择使用 Python 2 而不是 Python 3,必须将 pip3 替换为 pip,将 python3 替换为 python。
首先需要确保已安装最新版本的 pip。如果你使用的是最新版本的 Python,pip 应该已经安装了。你可以使用以下命令检查。
$ pip -V
如果没有安装 pip,可以在 Linux 上运行以下命令
$ sudo apt-get install python3-pip
或者下载 get-pip.py 并在 Windows 上使用以下命令安装
$ python3 get-pip.py
如果已经安装了 pip,最好将其升级到最新版本。
$ python3 -m pip install --user --upgrade pip
--user 选项将只为当前用户安装最新版本的 pip。如果你想在系统范围内安装(即为所有用户安装),你必须具有管理员权限(例如在 Linux 上使用 sudo python3 而不是 python3),并且应该删除 --user 选项。以下使用 --user 选项的命令也是如此。
创建虚拟环境(可选)
接下来,你可以选择创建一个隔离环境(virtual environment)。这是推荐的做法,因为它可以为每个项目创建不同的环境(例如,本项目一个环境),每个环境可以包含完全不同的库和版本:
$ python3 -m pip install --user --upgrade virtualenv
$ python3 -m virtualenv -p `which python3` env
这将在当前目录中创建一个名为 env 的新目录,其中包含基于 Python 3 的隔离 Python 环境。如果系统上安装了多个版本的 Python 3,你可以将 `which python3` 替换为你喜欢的 Python 可执行文件路径。
现在你必须激活这个环境。每次你想使用这个环境时,都需要运行这个命令。
$ source ./env/bin/activate
在 Windows 上,命令略有不同:
$ .\env\Scripts\activate
安装 Python 包
接下来,使用 pip 安装所需的 Python 包。如果不使用虚拟环境(virtualenv),应该添加 --user 选项(或者可以在系统范围内安装库,但这可能需要管理员权限,例如在 Linux 上使用 sudo pip3 而不是 pip3)。
以下命令用于安装特定版本的 Python 包。
$ pip3 install <PACKAGE>==<VERSION>
如果想从文件安装一系列包,可以使用以下命令。
$ python3 -m pip install --upgrade -r requirements.txt
太棒了!你已经设置好了,现在只需要启动 Jupyter 即可。
安装包模型
对于自然语言处理(Natural Language Processing)这一章,我们将使用 spaCy Python 包。安装 spaCy 不会安装语言模型(language models)。为此,我们需要打开 Python 并使用以下命令自行安装。
$ python -m spacy download en_core_web_lg
启动 Jupyter
好的!现在可以启动 Jupyter,只需输入:
$ jupyter notebook
这将打开浏览器,你应该会看到 Jupyter 的树形视图,显示当前目录的内容。如果浏览器没有自动打开,请访问 127.0.0.1:8888。点击 index.ipynb 开始!
在 Jupyter 中使用 pip 安装库
如果在 Jupyter 笔记本中安装库后无法导入,可能是因为安装到了系统 Python 环境中。我们可以使用 Jupyter 笔记本开头的 ! 符号来安装包。以下是截至目前最新 Anaconda 包之外所需的库。
$ !pip install spacy
$ !pip install pandas-datareader
$ !pip install keras
$ !pip install dash
$ !pip install dash
$ !pip install dash_daq
$ !pip install quandl
$ !pip install cvxopt
想查看各个案例研究或 Jupyter 笔记本吗?
###金融应用笔记本
1. 交易策略与算法交易
使用分类方法的比特币交易策略
比特币交易 - 使用降维(Dimensionality Reduction)提升速度和准确性
配对交易策略的聚类分析(Clustering)
基于强化学习(Reinforcement Learning)的交易策略
基于自然语言处理(NLP)和情感分析的交易策略
2. 投资组合管理与智能投顾
投资者风险容忍度与智能投顾 - 使用监督回归(Supervised Regression)
智能投顾仪表盘 - 由机器学习驱动
投资组合管理 - 特征投资组合(Eigen Portfolio)- 使用降维(Dimensionality Reduction)
投资组合管理 - 投资者聚类分析
分层风险平价(Hierarchical Risk Parity)- 使用聚类分析
投资组合配置 - 使用强化学习(Reinforcement Learning)
3. 衍生品定价与对冲
衍生品定价 - 使用监督回归(Supervised Regression)
衍生品对冲 - 使用强化学习(Reinforcement Learning)
4. 资产价格预测
股票价格预测 - 使用回归和时间序列(Regression and Time Series)
收益率曲线预测 - 使用回归和时间序列
收益率曲线构建与利率建模 - 使用降维(Dimensionality Reduction)
5. 欺诈检测
6. 贷款违约概率预测
贷款违约概率 - 使用分类方法(Classification)
7. 聊天机器人与自动化
数字助手聊天机器人 - 使用自然语言处理(NLP)
文档摘要 - 使用自然语言处理(NLP)
按机器学习类型分类的 Notebook
1. 监督学习 - 回归和时间序列模型
股票价格预测
衍生品定价
投资者风险承受能力和智能投顾
收益率曲线预测
2. 监督学习 - 分类模型
3. 无监督学习 - 降维模型
投资组合管理 - 特征投资组合
收益率曲线构建和利率建模
比特币交易 - 提升速度和精度
4. 无监督学习 - 聚类
5. 强化学习
6. 自然语言处理
基于自然语言处理和情感分析的交易策略
数字助手-聊天机器人
文档摘要
不同机器学习类型的主模板
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

