team/dev/: vista-3.0.8.post251231 metadata and description

Simple index

Add your description here

description_content_type text/markdown
requires_dist
  • agno>=2.1.3
  • 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
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.8.post251231-py3-none-any.whl
Size
112 KB
Type
Python Wheel
Python
3
  • Uploaded to team/dev by team 2025-12-31 07:33:53

vista

前瞻视野/长期推演;侧重趋势预测;因子挖掘流程

面向量价因子的系统化挖掘、计算、评估与截面建模工程。项目聚焦趋势预测与长期推演,提供从标准化数据 → 因子构建 → 性能评价 → 策略建模的端到端流程,兼顾工程可用性与研究可扩展性。

项目目标与特点

uv add vista --default-index https://pypi.zbczsc.com/team/dev --trusted-host pypi.zbczsc.com

pip install vista -i https://pypi.zbczsc.com/team/dev

目录结构

标准数据与因子列规范

核心模块说明

因子计算引擎

使用示例:

import pandas as pd
from vista.engines import quick_compute

# df 为标准K线,含 dt / symbol 与价格量字段
results = quick_compute(
    klines=df,
    factor_code="""
import inspect
import numpy as np
import pandas as pd

def demo_factor(df, **kwargs):
    factor_col = f"F#{inspect.currentframe().f_code.co_name}#DEFAULT"
    df[factor_col] = (df['close'] - df['open']).rolling(10).mean()
    return df
""",
    factor_name="demo_factor",
    n_jobs=4,
    chunk_size=100
)

算子库(operates)

因子数据库(ClickHouse)

环境变量:CLICKHOUSE_DSN(示例 clickhouse://user:password@localhost:9000/factor_db)。

写入因子示例:

from vista.factor_db.manager import get_factor_db_manager
from vista.factor_db.models import FactorDescribeCreate
from vista.factor_db.services import add_factor

mgr = get_factor_db_manager()
fd = FactorDescribeCreate(
    factor_name="demo_factor",
    factor_code="...python code...",
    factor_type="TimeSeriesTechnical",
    factor_tags=[],
    compute_engine="TimeSeriesEngine",
    description="示例因子"
)
add_factor(mgr, fd)

截面策略建模(models)

使用示例:

import pandas as pd
from vista.models import CSSorting, DirectExposure, MaxExpectedReturns, MaxFactorExposure

df = pd.read_csv('your_data.csv')

model = CSSorting(df, factor='F#YOUR_FACTOR', top_pct=0.2, bottom_pct=0.2)
weights = model.run()[['dt','symbol','weight']]

model = DirectExposure(df, factor='F#YOUR_FACTOR', normalize_method='zscore')
weights = model.run()[['dt','symbol','weight']]

model = MaxExpectedReturns(df, factor='F#YOUR_FACTOR', risk_aversion=1.0,
                           solver_config={'solver':'ECOS'})
weights = model.run()[['dt','symbol','weight']]

model = MaxFactorExposure(df, factor='F#YOUR_FACTOR', target_exposure=0.3,
                          solver_config={'solver':'ECOS'})
weights = model.run()[['dt','symbol','weight']]

批量因子分析(scripts)

python scripts/batch_factor_analyze.py scripts/config/batch_factor_config.toml

配置要点:factors_file(因子定义表),klines_files(一个或多个标准K线文件),output_file(CSV/PKL/Feather)。

智能体因子挖掘(examples)

运行示例:

# 因子矿工(zengbin)
python examples/zengbin/factor_miner.py

# 因子工厂(zyf/agno)
python examples/zyf/agno/factor_factory/build_factor_agent.py

端到端工作流

  1. 数据准备:按标准K线格式加载/转换,保证 dtsymbol 与价格量字段完整
  2. 因子构造:选择算子组合或智能体自动生成;在引擎中并行计算因子列
  3. 性能评估:计算截面IC、收益与稳定性指标,分时段统计 IC/ICIR/年化收益/波动/夏普 等
  4. 策略建模:选择排序法/直接暴露/组合优化/最大化因子暴露等策略,产出权重表用于回测或执行
  5. 因子库管理:描述/标签/输入/评估入库并可检索最新评估结果,支持批量写入与联表查询

开发环境与依赖

# 在项目根目录创建 pyproject.toml
uv init

# 指定 Python 版本
uv python install 3.11
uv python pin 3.11

# 安装所有依赖
uv sync
# uv sync --allow-insecure-host github.com

# 更新依赖
uv update

# 添加生产依赖
uv add pandas numpy matplotlib

# 添加开发依赖
uv add --dev pytest black isort mypy

# 检查依赖
uv tree

# 激活虚拟环境
uv venv
source .venv/bin/activate  # Linux/Mac
.venv\Scripts\activate     # Windows

# 在虚拟环境中运行命令
uv run python script.py
uv run pytest

测试与质量保障

路线图 / 下一步完善

参考资料

  1. AlphaEval - 系统性因子评价方法
  2. DeepCode - 论文复现Agent系统
  3. 从 75 秒到 0.24 秒:Polars/DuckDB 的魅力