eiten

GitHub
3.2k 371 简单 1 次阅读 今天GPL-3.0Agent开发框架图像
AI 解读 由 AI 自动生成,仅供参考

Eiten 是一款由 Tradytics 开源的投资策略工具箱,旨在让每个人都能轻松构建基于统计和算法的投资组合。它解决了普通投资者难以量化选股、缺乏专业回测框架以及无法科学验证策略有效性的痛点。通过内置的特征组合(Eigen Portfolios)、最小方差、最大夏普比率及遗传算法等多种成熟策略,Eiten 能帮助用户从自选股票池中生成有望跑赢市场的投资组合。

这款工具特别适合具备一定编程基础的开发者、量化金融研究人员以及对算法交易感兴趣的高级个人投资者使用。其独特亮点在于严谨的测试框架:不仅支持利用雅虎财经数据灵活加载不同粒度(从分钟级到日线)的历史行情,还集成了蒙特卡洛模拟来预测未来价格走势。更关键的是,Eiten 原生支持“样本外测试”,即自动预留部分最新数据用于向前验证,从而避免过拟合,让用户对策略的真实表现更有信心。只需简单配置股票列表和参数,用户即可在本地完成从策略生成到性能对比的全流程分析。

使用场景

一位个人量化投资者希望从科技股池中构建能跑赢纳斯达克(QQQ)的投资组合,但缺乏专业的统计建模与回测能力。

没有 eiten 时

  • 策略单一且主观:只能凭经验手动分配权重或简单均分,无法应用特征投资组合(Eigen Portfolios)或遗传算法等高级统计策略。
  • 回测流程繁琐:需自行编写代码清洗 Yahoo Finance 数据、划分训练集与测试集,极易出现“未来函数”导致结果虚高。
  • 缺乏严谨验证:难以进行蒙特卡洛模拟或噪声过滤,无法评估策略在未知市场环境下的稳健性。
  • 对标分析困难:手动计算夏普比率并与市场指数对比耗时耗力,难以快速迭代优化方案。

使用 eiten 后

  • 策略自动落地:通过一行命令即可调用最小方差、最大夏普比率等多种算法,自动为选定的 5-50 只股票生成最优权重。
  • 内置科学回测:利用内置的 backtester.py 自动隔离样本外数据(如预留 90 天),确保回测结果真实反映实战表现。
  • 深度压力测试:直接启用噪声过滤和蒙特卡洛模拟器,提前预演极端行情下的组合表现,建立投资信心。
  • 一键绩效对标:自动生成包含 QQQ 指数对比的性能报告,直观展示各策略是否真正跑赢大盘。

eiten 将复杂的机构级量化建模流程简化为可执行的开源工具,让个人投资者也能以低成本构建并验证超越市场的算法投资组合。

运行环境要求

操作系统
  • 未说明
GPU

不需要 GPU

内存

未说明

依赖
notes该工具主要用于统计和算法投资策略(如特征投资组合、最小方差组合等),不涉及深度学习模型,因此无需 GPU 加速。用户需自行修改 stocks/stocks.txt 文件以指定股票列表(建议 5-50 只)。数据源依赖 Yahoo Finance,分钟级数据仅支持最近一个月,日线数据支持最近五年。
pythonPython 3
scikit-learn
numpy
tqdm
yfinance
pandas
scipy
eiten hero image

快速开始

Eiten - 面向所有人的算法投资策略

Eiten 是由 Tradytics 开发的开源工具包,实现了多种统计和算法投资策略,例如 特征组合最小方差组合最大夏普比率组合 以及基于 遗传算法 的组合。它允许您使用自己选择的股票构建能够跑赢市场的投资组合。Eiten 内置的严格测试框架使您可以对您的投资组合充满信心。

如果您希望深入探讨这些工具,并了解我们正在开发的更多工具,请随时加入我们的 Discord 社区,那里还有许多其他实用工具。

文件说明

路径 描述
eiten 主文件夹。
└  figures 本 GitHub 仓库中的图表。
└  stocks 存放您用于创建投资组合的股票列表的文件夹。
└  strategies 用 Python 实现的一系列投资策略。
backtester.py 回测模块,可对所有投资组合进行回测和前瞻测试。
data_loader.py 从 Yahoo Finance 加载数据的模块。
portfolio_manager.py 主程序文件,接受多个参数并为您生成多个投资组合。
simulator.py 模拟器,利用历史收益和蒙特卡洛方法模拟投资组合的未来价格。
strategy_manager.py 管理在 'strategies' 文件夹中实现的各种策略。

必需的软件包

您需要安装以下软件包来训练和测试模型:

您可以使用以下命令一次性安装所有软件包。请注意,该脚本是使用 Python 3 编写的。

pip install -r requirements.txt

构建您的投资组合

让我们看看如何使用工具包中的各种策略来构建投资组合。首先,您需要修改 stocks 文件夹中的 stocks.txt 文件,添加您选择的股票。建议保持股票列表较小,即 5 到 50 只 股票即可。我们已经提供了一个包含 AAPL、MSFT、TSLA 等科技股的小型股票列表。现在让我们开始构建投资组合吧。以下是您需要运行的主要命令:

python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 1 --market_index QQQ --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt

此命令将使用过去 5 年的日线数据(不包括最近 90 天),为您构建多个投资组合。然后,它会使用这 90 天的样本外数据对这些组合进行测试,并显示每个组合的表现。最后,它还会将表现与您选择的市场指数(此处为 QQQ)进行比较。下面我们详细介绍一下各个参数:

  • is_test: 该值决定程序是否会保留一部分数据用于未来的测试。当启用时,future_bars 的值应大于 5。
  • future_bars: 这些是工具在构建投资组合时排除的数据条数,并将在这些排除的数据上对投资组合进行前瞻测试。这也被称为样本外数据。
  • data_granularity_minutes: 您希望使用多细粒度的数据来构建投资组合。对于长期投资组合,应使用日线数据;而对于短期投资,则可以使用小时或分钟级别的数据。可能的取值有 3600、60、30、15、5、1。其中 3600 表示日线数据。
  • history_to_use: 是否使用特定数量的历史数据条数,还是使用从 Yahoo Finance 获取的所有数据。对于分钟级别数据,我们最多只能获取一个月的历史数据;而对于日线数据,则可以获取长达 5 年的历史数据。如果您希望使用所有可用数据,应设置为 all;如果只想使用较短的历史数据,可以设置为一个整数值,例如 100,这样只会使用最近 100 根柱线来构建投资组合。
  • apply_noise_filtering: 此功能使用 随机矩阵理论 来过滤掉协方差矩阵中的随机噪声,从而获得更优的投资组合。值为 1 时表示启用,值为 0 时表示禁用。
  • market_index: 您希望使用哪个指数来比较您的投资组合。通常应选择 SPY,但由于我们分析的是科技股,因此选择了 QQQ
  • only_long: 是否仅使用做多的投资组合,还是同时允许做空交易。研究表明,采用算法技术时,仅做多的投资组合往往表现更好。
  • eigen_portfolio_number: 使用第几个特征组合。1 到 5 之间的任何值均可。第一个特征组合(1)代表市场组合,其表现应与标的指数(如 SPY 或 QQQ)相似。第二个特征组合与市场正交且不相关,风险和收益都较高。后续的特征组合风险和收益逐渐降低。更多信息请参阅 特征组合
  • stocks_file_path: 包含您用于构建投资组合的股票列表的文件路径。

投资组合构建示例

以下是一些构建不同类型投资组合的示例:

  • 同时构建 多头和空头 投资组合,分析过去 90 天 的数据,并将 最后 30 天 作为测试数据。这样我们将有 60 天的组合构建数据和 30 天的测试数据。
python portfolio_manager.py --is_test 1 --future_bars 30 --data_granularity_minutes 3600 --history_to_use 90 --apply_noise_filtering 1 --market_index QQQ --only_long 0 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
  • 仅构建 多头投资组合,使用过去 30 天60 分钟线 数据。不进行未来测试。将结果与 SPY 指数而非 QQQ 比较。
python portfolio_manager.py --is_test 0 --future_bars 0 --data_granularity_minutes 60 --history_to_use all --apply_noise_filtering 1 --market_index SPY --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
  • 不对协方差矩阵应用噪声过滤。使用 第一个特征组合(市场组合),并与 SQQQ 指数比较。
python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 0 --market_index SQQQ --only_long 1 --eigen_portfolio_number 1 --stocks_file_path stocks/stocks.txt

投资组合策略

该工具包目前支持四种不同的投资组合策略。

  1. 特征投资组合
    1. 这些投资组合与市场整体正交且不相关,因此能够带来较高的收益和阿尔法。然而,由于它们与市场不相关,也可能带来较大的风险。第一个特征投资组合被视为市场组合,通常会被忽略。第二个特征投资组合与其他投资组合不相关,提供了最高的风险和收益。随着编号的降低,风险和收益都会相应减少。
  2. 最小方差投资组合(MVP)
    1. MVP旨在最小化投资组合的方差。这些投资组合的风险和收益都是最低的。
  3. 最大夏普比率投资组合(MSR)
    1. MSR通过求解一个优化问题来最大化投资组合的夏普比率。在优化过程中会使用历史收益率,这意味着如果未来收益率与过去不同,结果可能会有所偏差。
  4. 基于遗传算法(GA)的投资组合
    1. 这是我们自己实现的一种基于遗传算法的投资组合策略,同样旨在最大化夏普比率,但方式更为稳健。通常情况下,这种策略能够提供比其他策略更稳健的投资组合。

当你运行上述命令时,我们的工具将根据所有这些策略生成投资组合,并将其呈现给你。接下来我们来看一些生成的投资组合。

生成的投资组合

为了演示这些结果,我们将使用 stocks/stocks.txt 文件中的9只股票。当我们运行上述命令时,首先会得到四种策略下的投资组合权重。出于测试目的,上述命令使用了截至4月29日的过去五年的日度数据。而今年剩余的数据则用于前瞻性测试,即在构建投资组合时,这些策略无法访问这部分数据。

如果我的投资组合需要不同的股票怎么办?:你只需更改 stocks.txt 文件中的股票列表,然后再次运行工具即可。以下是用于获取投资组合的最终命令:

python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 1 --market_index QQQ --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt

投资组合权重

我们可以看到,特征投资组合对TSLA赋予了较大权重,而其他投资组合则较为均匀地分配了权重。这里一个有趣的现象是,所有策略都自动学会了利用SQQQ进行对冲。每个策略都为SQQQ分配了一定的正权重,同时也为其他股票分配了正权重,这表明这些策略正在自动尝试对投资组合进行风险对冲。显然,这并不完美,但仅仅是这一现象的发生就令人着迷。接下来让我们看看在2020年4月29日之前的五年内的回测结果。

回测结果

回测结果看起来相当令人鼓舞。黑色虚线代表市场指数,即QQQ。其他线条则代表不同的策略。我们自定义的遗传算法实现似乎表现最好,因为它是在其他策略基础上进一步优化的版本。而对TSLA权重最大的特征投资组合虽然波动性最高,但其收益也非常可观。最后,正如预期,MVP具有最小的方差,因此最终的收益也最低。不过,由于方差极低,它对于那些希望保持安全的人来说是一个不错的选择。接下来最有趣的部分来了,让我们来看看这些投资组合的前瞻性或未来测试结果。

前瞻性测试结果

这些结果来自2020年4月29日至9月4日。特征投资组合的表现最佳,但也伴随着较大的波动。此外,大部分收益都归功于TSLA在过去几个月中的大幅上涨。随后,我们的GA算法表现相当出色,成功跑赢了市场指数。再次印证了预期,MVP的风险和收益都是最低的,在4到5个月的时间里缓慢上升。这充分展示了这些算法化投资组合优化策略的有效性和强大之处——我们为不同风险和收益偏好开发了多种投资组合。

结论与讨论

我们很高兴能与交易社区分享这个工具包,并希望更多人喜欢并参与其中。如同交易中的所有事物一样,这些策略并非完美,但它们基于严谨的理论和一些出色的实证结果。请在使用这些策略进行交易时务必谨慎,并始终做好风险管理。上述结果并非刻意挑选,而是因为近几个月市场持续走牛,才带来了如此强劲的表现。我们非常期待社区尝试不同的策略,并与我们分享他们的经验。

特别致谢

特别感谢Scott Rome的博客。特征投资组合和最小方差投资组合的概念均源自他的博文。用于过滤协方差矩阵特征值的代码也主要来源于他的其中一篇帖子。

许可证

许可证:GPL v3

Tradytics出品

版权所有 © 2020–至今,Tradytics.com

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|4天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|5天前
开发框架图像Agent

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 真正成长为懂上

149.5k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|今天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|昨天
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|4天前
插件开发框架