team/dev/: vista-3.0.19.post260316 metadata and description

Simple index Newer version available

A versatile quantitative investment research and trading framework.

description_content_type text/markdown
requires_dist
  • agno>=2.1.3
  • chanfactor>=0.1.1
  • czsc>=0.9.68
  • tomlkit>=0.13.0
  • clickhouse-connect>=0.6.0
  • loguru>=0.7.0
  • pydantic>=2.6.0
  • tabulate>=0.9.0
  • cvxpy[complete]>=1.7.3
  • scs>=3.2.9
  • ecos>=2.0.14
  • osqp>=1.0.5
  • mosek>=11.0.29
  • openai>=2.8.0
  • fastapi>=0.121.2
  • uvicorn[standard]>=0.38.0
  • faiss-cpu>=1.13.0
  • joblib>=1.5.2
  • sqlalchemy>=2.0.44
  • psutil>=7.1.3
  • streamlit>=1.36.0
  • google-genai>=1.56.0
  • claude-agent-sdk>=0.1.18
  • fastmcp>=2.14.2
  • duckdb>=0.9.0
  • autogluon>=1.5.0
  • click>=8.1.0
  • rich>=13.0.0
  • typer>=0.9
  • fire>=0.7.0
  • python-dotenv>=1.0.0
  • polars>=0.20.0
requires_python >=3.11

Because this project isn't in the mirror_whitelist, no releases from root/pypi are included.

File Tox results History
vista-3.0.19.post260316-py3-none-any.whl
Size
373 KB
Type
Python Wheel
Python
3
  • Uploaded to team/dev by team 2026-03-16 13:33:40

Vista — 量化因子管理与策略建模框架

Vista(前瞻视野):面向量价因子的系统化挖掘、计算、评估与策略建模工程。 项目聚焦趋势预测与长期推演,提供从 标准化数据 → 因子构建 → 性能评价 → 策略建模 → 集成学习 的端到端流程。

设计理念

Vista 的设计围绕以下核心原则:

  1. 全链路覆盖:从数据标准化、算子库、并行计算引擎、因子评估、数据库化管理、策略建模到集成学习,覆盖因子研究的完整生命周期。
  2. 统一抽象与可扩展性:通过 BaseEngineBaseStrategyModelBasePredictor 三个基类,分别为因子计算、策略建模、集成学习建立统一的骨架(模板方法模式),子类只需实现核心逻辑。
  3. 工程可靠性:智能资源分配、内存监控与分批处理、并行失败自动回退单线程、防未来信息审计、完整的性能统计与告警机制。
  4. 配置驱动:Pydantic 数据模型贯穿全栈,支持 Python API 和 TOML 配置两种使用方式,确保可复现性。
  5. 插件化设计:用户自定义策略模型自动发现与加载(~/.vista/models/)、算子库可插拔扩展。

安装

# 推荐方式(uv)
uv add vista --default-index https://pypi.zbczsc.com/team/dev --trusted-host pypi.zbczsc.com

# pip 方式
pip install vista -i https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://pypi.zbczsc.com/team/dev -U

环境要求:Python ≥ 3.11

项目结构

vista/
├── engines.py              # 因子计算引擎(时序/截面/事件驱动)
├── operates.py             # TA-Lib 及自定义算子库
├── cs_operators.py         # 横截面算子库
├── fix_params_operates.py  # 固定参数预配置算子
├── data.py                 # 数据处理工具
├── factor_db/              # 因子数据库(ClickHouse 存储与管理)
│   ├── manager.py          #   数据库连接管理器(单例 + 线程安全)
│   ├── models.py           #   Pydantic 数据模型
│   ├── services.py         #   业务逻辑 CRUD 服务层
│   ├── enmus.py            #   枚举定义(ComputeEngine, EvaluateStatus)
│   ├── analyze.py          #   因子分析工具
│   └── cli.py              #   命令行工具 vista-factor
├── models/                 # 策略建模算法
│   ├── base.py             #   策略基类 BaseStrategyModel
│   ├── sorting.py          #   排序法 CSSorting
│   ├── direct_exposure.py  #   直接暴露法 DirectExposure
│   ├── max_expected_returns.py  # 组合优化 MaxExpectedReturns
│   ├── max_factor_exposure.py   # 因子暴露优化 MaxFactorExposure
│   ├── event.py            #   事件驱动 EventDriven
│   ├── backtest.py         #   回测管道 FactorBacktestPipeline
│   └── user.py             #   用户自定义策略自动加载
├── ensemble/               # 集成学习模块
│   ├── base.py             #   BasePredictor 基类(WalkForward 框架)
│   ├── configs.py          #   统一配置类(WalkForward/Autogluon/Qlib/CLI)
│   ├── preprocessor.py     #   数据预处理器(窗口级,防数据泄露)
│   ├── result.py           #   结果类 EnsembleResult
│   ├── workflow.py         #   工作流编排
│   ├── cli.py              #   命令行工具 vista-ensemble
│   └── predictors/
│       ├── autogluon.py    #     AutoGluon 预测器
│       └── qlib.py         #     QLIB 预测器
├── evaluate/               # 因子评估
│   ├── ic.py               #   截面 IC / 分组单调性分析
│   ├── models.py           #   模型评估(多策略批量回测)
│   └── utils.py            #   评估工具与时段划分
├── utils/                  # 工具库
│   ├── detect_future_info.py  # 防未来信息审计
│   ├── detect_factor.py    #   因子检测与验证
│   ├── event_analysis.py   #   事件因子分析
│   ├── returns_analysis.py #   收益差异分析
│   ├── norm.py             #   因子标准化(去极值/Z-score)
│   ├── duckdb_factors.py   #   DuckDB 因子查询
│   ├── duckdb_returns.py   #   DuckDB 收益计算
│   ├── faiss_with_labels.py #  FAISS 向量检索
│   └── ...
├── ui/                     # Web 界面(Streamlit)
│   ├── app.py              #   多页面应用主入口
│   └── pages/              #   人工因子审核/报告管理/多因子策略
├── agents/                 # AI 智能体
│   ├── claude_factor_review.py  # Claude 因子审核
│   └── ts_vpf_miner.py    #   时序因子挖掘
tests/                      # 单元测试
docs/                       # 文档

数据规范

标准 K 线格式

所有因子计算基于统一的标准 K 线 DataFrame,必须包含以下列:

列名 类型 说明
dt datetime K 线时间戳
symbol str 品种代码
open float 开盘价
close float 收盘价
high float 最高价
low float 最低价
vol float 成交量
amount float 成交金额

因子列命名规范

因子列统一以 F# 前缀命名,格式为 F#{因子名}#{后缀}

F#SMA60#DEFAULT      # 60日均线偏离因子
F#RSI14#v2           # RSI因子第2版
F#MOM_EVENT#DEFAULT  # 动量事件因子

因子数据类型为 float64,支持 NaN 值。

核心模块详解

1. 因子计算引擎(engines)

三种引擎继承自 BaseEngine,实现 validate → prepare → compute 的模板方法:

引擎 类名 枚举值 特点
时序引擎 TimeSeriesEngine ComputeEngine.TSE 按品种并行计算,自动内存监控,失败回退单线程
截面引擎 CrossSectionEngine ComputeEngine.CSE 按日期截面计算,整体执行因子函数
事件驱动引擎 EventDrivenEngine ComputeEngine.EDE 继承时序引擎,额外校验输出值为 {0, 1, -1}

使用示例

from vista.engines import TimeSeriesEngine
from vista.factor_db.models import FactorDescribe, ComputeEngine

# 1. 定义因子
factor = FactorDescribe(
    factor_name="SMA60",
    factor_code="""
def SMA60(df, **kwargs):
    df['F#SMA60#DEFAULT'] = df['close'] / df['close'].rolling(60).mean() - 1
    return df
""",
    compute_engine=ComputeEngine.TSE
)

# 2. 准备数据(标准K线 DataFrame)
data = {'klines': klines_df}

# 3. 计算因子(引擎初始化时自动执行)
engine = TimeSeriesEngine(data=data, factor=factor, timeout=30, verbose=True)

# 4. 获取结果
results = engine.results          # 包含因子列的 DataFrame
print(f"耗时: {engine.elapsed:.2f}s")
print(f"内存增量: {engine.memory_usage:.2f}MB")
print(f"告警: {engine.warnings}")

也可以通过 FactorDescribe.compute() 方法一步完成:

results = factor.compute(data=data, timeout=30)

2. 算子库(operates / cs_operators)

提供丰富的算子原语,供因子代码中调用组合:

3. 因子数据库(factor_db)

基于 ClickHouse 的因子元数据管理系统,采用三层架构:

Manager层(manager.py)    ← 单例连接 + 线程安全 + 自动建表
    ↓
Service层(services.py)   ← CRUD 业务逻辑
    ↓
Model层(models.py)       ← Pydantic Schema 定义

核心数据模型

Python API

from vista.factor_db import get_manager, add_factor, list_factors, get_factor

# 获取数据库管理器(自动读取 CLICKHOUSE_DSN 环境变量)
manager = get_manager()

# 添加因子
add_factor(manager, factor_describe)

# 查询因子
factors = list_factors(manager, tag="momentum", limit=10)
factor = get_factor(manager, "F#SMA60#DEFAULT")

CLI 工具vista-factor):

vista-factor ls                              # 列出因子
vista-factor ls --tag=momentum --limit=10    # 按标签过滤
vista-factor info F#SMA60#DEFAULT            # 查看因子详情及代码
vista-factor rm F#OLD_FACTOR                 # 删除因子
vista-factor tag add F#SMA60#DEFAULT trend   # 添加标签
vista-factor tag ls                          # 列出所有标签
vista-factor eval ls F#SMA60#DEFAULT         # 查看评估历史
vista-factor eval ranked --metric="IC"       # 按指标排名
vista-factor db stats                        # 数据库统计
vista-factor db cleanup                      # 清理已删除因子

4. 策略建模(models)

六种策略算法继承自 BaseStrategyModel,统一实现 prepare → compute → run 流程:

策略 类名 权重类型 适用场景
排序法 CSSorting 截面(cs) 多空组合构建,等权/按名次加权
直接暴露法 DirectExposure 截面(cs) 因子标准化直接映射权重
组合优化法 MaxExpectedReturns 截面(cs) 二次规划最大化预期收益
因子暴露优化 MaxFactorExposure 截面(cs) 目标因子暴露约束优化
事件驱动 EventDriven 时序(ts) 事件信号开平仓
用户自定义 继承 BaseStrategyModel 自定义 放置于 ~/.vista/models/ 自动加载

使用示例

from vista.models import CSSorting, DirectExposure, MaxExpectedReturns, MaxFactorExposure, EventDriven

# 排序法:选择因子值排名前20%做多,后20%做空
model = CSSorting(df, factor='F#SMA60#DEFAULT', top_pct=0.2, bottom_pct=0.2,
                  weighting_method='equal')  # 'equal' 或 'rank_weighted'
weights = model.run()

# 直接暴露法:因子标准化后映射为权重
model = DirectExposure(df, factor='F#SMA60#DEFAULT',
                       normalize_method='zscore', leverage=1.0)
weights = model.run()

# 组合优化法:二次规划最大化预期收益
model = MaxExpectedReturns(df, factor='F#SMA60#DEFAULT',
                           risk_aversion=1.0,
                           weight_bounds=(-0.8, 0.8),
                           solver_config={'solver': 'ECOS'})
weights = model.run()

# 因子暴露优化:最大化因子暴露,控制风险
model = MaxFactorExposure(df, factor='F#SMA60#DEFAULT',
                          target_exposure=0.3, leverage=1.6,
                          solver_config={'solver': 'ECOS'})
weights = model.run()

# 事件驱动:基于事件信号开平仓
model = EventDriven(df, factor='F#EVENT#DEFAULT',
                    timeout_bars=1, stoploss_bp=100)
weights = model.run()

批量回测管道

from vista.models import run_factor_backtest

# 批量运行多种策略并生成回测报告
results = run_factor_backtest(df, factor='F#SMA60#DEFAULT',
    models=[
        {"name": "sort_equal", "model": "CSSorting", "kwargs": {"top_pct": 0.2}},
        {"name": "exposure", "model": "DirectExposure", "kwargs": {"leverage": 1.5}},
    ])

5. 集成学习(ensemble)

基于 WalkForward 滚动窗口的集成预测框架,BasePredictor 提供完整流程,子类只需实现 fitpredict

预测器 框架 特点
AutogluonPredictor AutoGluon 自动机器学习,多模型自动集成
QlibPredictor QLIB 量化专用框架,支持 LightGBM/XGBoost/DNN

Python API

from vista.ensemble import AutogluonPredictor, WalkForwardConfig, AutogluonConfig

# 配置 WalkForward 滚动窗口
wf_config = WalkForwardConfig(
    train_end_dates=['2024-01-01', '2025-01-01'],
    max_train_days=365,
    min_train_days=180,
    gap_days=0        # 防未来信息泄露
)

# 配置 Autogluon
ag_config = AutogluonConfig(presets='medium_quality', time_limit=1800)

# 创建预测器
predictor = AutogluonPredictor(
    df=df,
    factor_cols=['F#Factor1', 'F#Factor2'],
    label_col='n1b',
    walk_forward_config=wf_config,
    autogluon_config=ag_config,
    enable_internal_preprocess=True    # 窗口级预处理,防数据泄露
)

# 执行训练预测
results = predictor.run_walk_forward()
predictions = results.predictions

TOML 配置驱动

from vista.ensemble import EnsembleConfig

config = EnsembleConfig.from_toml("ensemble.toml")
predictor = config.create_predictor(df, factor_cols=["f1", "f2"], label_col="n1b")
results = predictor.run_walk_forward()

CLI 工具vista-ensemble):

vista-ensemble init autogluon -o config.toml  # 生成配置模板
vista-ensemble validate config.toml            # 验证配置
vista-ensemble run config.toml --verbose       # 运行训练

6. 因子评估(evaluate)

from vista.evaluate import cross_sectional_ic, group_monotonicity, calculate_ic_performance

# 计算截面 IC(逐日因子与收益的相关性)
df_ic = cross_sectional_ic(df, factor='F#SMA60#DEFAULT', target='n1b')

# 因子分组收益单调性(分10组,看收益是否随因子值单调变化)
mono_score = group_monotonicity(df, factor='F#SMA60#DEFAULT', target='n1b', groups=10)

# 综合性能指标(IC均值、ICIR、夏普比率等)
perf = calculate_ic_performance(df, factor='F#SMA60#DEFAULT', target='n1b')

7. 工具库(utils)

工具 功能
detect_future_info() 自动检测因子是否使用了未来信息
detect_factor() 因子有效性检测与验证
normalize_factor() 因子标准化(去极值/Z-score)
analyze_returns_diff() 收益差异归因分析
事件分析系列 事件因子相关性、时序相关性、符号一致性、因子对比
DuckDB 工具 高性能因子查询与收益计算
FAISS 检索 带标签的因子向量相似性检索

8. Web 界面(UI)

基于 Streamlit 的多页面应用,提供可视化的因子分析和策略回测界面:

uv run --no-sync vista-ui                  # 默认端口 8588
uv run --no-sync vista-ui --port 8501      # 自定义端口

页面包括:人工因子审核、因子回测报告预览、HTML 报告管理、多因子策略回测。

9. AI 智能体(agents)

端到端工作流

标准K线数据 ──→ 因子计算引擎 ──→ 因子评估 ──→ 因子入库 ──→ 策略建模 ──→ 回测分析
                  │                  │                          │
            算子库组合          IC/分组单调性              多策略对比
          或 AI 智能体生成      性能指标统计             集成学习融合
  1. 数据准备:按标准 K 线格式加载数据,确保必备列完整
  2. 因子构造:选择算子组合编写因子函数,或使用 AI 智能体自动生成
  3. 引擎计算:通过时序/截面/事件驱动引擎并行计算因子值
  4. 性能评估:计算截面 IC、分组单调性、ICIR、夏普比率等指标
  5. 因子管理:将因子元数据、代码、评估结果写入 ClickHouse 数据库
  6. 策略建模:选择排序法/直接暴露/组合优化等策略,产出权重表
  7. 集成学习:多因子 WalkForward 训练,使用 AutoGluon/QLIB 集成模型
  8. 回测分析:批量回测、HTML 报告生成、UI 可视化分析

开发指南

本项目使用 uv 进行统一的开发管理,所有命令应通过 uv run 执行。

# 环境初始化
uv sync                          # 安装所有依赖
source .venv/bin/activate        # 激活虚拟环境

# 测试
uv run pytest                    # 运行全部测试
uv run pytest tests/test_engines.py -v   # 运行指定测试

# 代码质量
uv run black .                   # 代码格式化(行长 120)
uv run isort .                   # 导入排序
uv run mypy vista/               # 类型检查
uv run flake8 vista/             # 代码风格检查

环境变量(参考 .env.example):

CLICKHOUSE_DSN=clickhouse://default:@localhost:9000/factor_db   # 因子数据库
LOG_LEVEL=INFO                                                   # 日志级别

核心依赖

类别 依赖
数据处理 pandas, numpy, czsc, duckdb
因子计算 faiss-cpu, psutil, joblib
数据库 clickhouse-connect, sqlalchemy
优化求解 cvxpy, scs, ecos, osqp, mosek
机器学习 autogluon, qlib
Web/CLI streamlit, fastapi, uvicorn, typer, rich, click
AI 智能体 agno, openai, google-genai, claude-agent-sdk
配置管理 pydantic, tomlkit, python-dotenv
开发工具 pytest, black, isort, mypy

更多文档

参考资料

  1. AlphaEval - 系统性因子评价方法
  2. DeepCode - 论文复现 Agent 系统
  3. 从 75 秒到 0.24 秒:Polars/DuckDB 的魅力
  4. QuantaAlpha:基于轨迹进化的可控 Alpha 挖掘框架
  5. dexter: 投研全流程 agent
  6. chan-factor: 用C#实现的因子计算引擎