Skip to main content

xqfactor

xqfactor 是数据源无关、统一使用 pandas.DataFrame 传递因子值的因子表达式、 执行缓存和检验规范框架。

核心包不依赖 xqdata、RQData、数据库或本地数据仓库。应用项目通过 LeafFactor 的 resolver 实现实际取数;xqfactor 负责表达式组合、历史窗口需求、 轴对齐、递归求值和相同执行上下文下的缓存复用。

安装

uv add xqfactor

需要内置统计检验时:

uv add "xqfactor[analysis]"

基本用法

import pandas as pd

from xqfactor import EvaluationContext, LeafFactor, LeafRequest, MemoryCache, RANK


def load_close(request: LeafRequest) -> pd.DataFrame:
    """由应用负责从 API、数据库或本地文件读取数据。"""
    return pd.DataFrame(
        [[1.0, 2.0], [2.0, 1.0]],
        index=request.context.time_index,
        columns=request.context.universe,
    )


CLOSE = LeafFactor("close", load_close)
factor = RANK(CLOSE)
context = EvaluationContext(
    time_index=("2025-01-01", "2025-01-02"),
    universe=("000001.SZ", "000002.SZ"),
    frequency="D",
)
cache = MemoryCache(maxsize=256)
result = factor.evaluate(context, cache)

自定义算子

自定义算子分为“与因子无关的 DataFrame 计算函数”和“表达式构造函数”两层:

import pandas as pd

from xqfactor import AbstractFactor, CombinedFactor


def cross_sectional_demean(frame: pd.DataFrame) -> pd.DataFrame:
    """将每个时间截面的值减去截面均值。"""
    return frame.sub(frame.mean(axis=1), axis=0)


def DEMEAN(factor: AbstractFactor) -> CombinedFactor:
    """把横截面去均值逻辑应用到任意因子。"""
    return CombinedFactor(cross_sectional_demean, factor)

职责边界

  • 本项目负责因子表达式图、Pandas/NumPy 基础算子、显式执行上下文和内存执行缓存。
  • 具体基础因子、在线 API、DolphinDB、Parquet、DuckDB 和全量市场数据由应用项目负责。
  • 执行缓存只复用完全相同上下文下的叶子数据和中间因子,不是本地数据仓库。
  • Polars、PyTorch 等库可在某个自定义算子内部按需使用,但不形成独立计算后端。
  • 标准化、去极值和中性化等预处理使用因子算子表达;检验器只负责统计分析。

代码阅读路径

从应用创建 LeafFactor 开始,resolver 根据 LeafRequest 返回二维 DataFrame; operators.py 和应用自定义构造函数把基础因子组合成表达式图; factor.evaluate() 递归查询 MemoryCache、计算子节点并统一对齐时间轴和资产轴, 最后按 EvaluationContext 截取输出区间。检验流程从 analysis/base.pyAbstractAnalyzer.analyze() 开始,将因子表达式和检验器附加输入 统一求值后,交给 ic.pyquantile_return.pyregression.py 中的具体检验器统计。

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xqfactor-0.2.0.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xqfactor-0.2.0-py3-none-any.whl (21.3 kB view details)

Uploaded Python 3

File details

Details for the file xqfactor-0.2.0.tar.gz.

File metadata

  • Download URL: xqfactor-0.2.0.tar.gz
  • Upload date:
  • Size: 15.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for xqfactor-0.2.0.tar.gz
Algorithm Hash digest
SHA256 32b67395343ecaf5715961a43b2d734b6d6a4cd08a8b712dfbc35c4a5db48d78
MD5 936767d373734d35e68a70af6ce89e83
BLAKE2b-256 6d7143b7537d34776e31a694524b74c5fb4a2877d3dbe41c71487777620b0833

See more details on using hashes here.

File details

Details for the file xqfactor-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: xqfactor-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 21.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for xqfactor-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6b37275f588d77ae2006408e1e844cf16ab3621873347120375458a9133125df
MD5 f8fccec2765a91e2179232fd36d489d4
BLAKE2b-256 387c9c41b2146e4162dc650a7c55650c089a32b2a413918bea4aecc141824ccb

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.0

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

This release

0.2.0 This release

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page