# BIGA · A股筛选与多因子研究 | China A-Share Stock Screener (`wei964991/biga-a-share-quantitative-research`) Actor

China A-share stock screener for multifactor research, ML stock analysis, stock scoring and backtesting. Visual workspace and API. A股股票筛选器：多因子量化研究、机器学习股票分析、单股评分、筹码分布及股票回测。Research only; not investment advice. 仅供研究，不构成投资建议。

- **URL**: https://apify.com/wei964991/biga-a-share-quantitative-research.md
- **Developed by:** [Wei Wang](https://apify.com/wei964991) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $490.00 / 1,000 full-market analyses

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## BIGA · A股筛选与多因子研究 / China A-Share Stock Screener

BIGA is a China A-share stock screener for multifactor research and China stock analysis. Combine six market-factor groups with ML stock analysis, individual stock scoring, estimated cost distributions, stock backtesting and signal review. Use the visual research workspace or automate tasks through the Apify API.

BIGA 是面向中国市场的 A股筛选与多因子量化研究工具，提供股票筛选器、单股评分、机器学习股票分析、筹码成本分布、股票回测与信号复盘，支持可视化研究工作台与 Apify API。

**[中文说明](#chinese-guide) · [English guide](#english-guide)**

**Language / 语言：** This product description is bilingual. The interactive workspace currently uses primarily Chinese labels; API operation and field names are in English. 本说明提供中英文版本；交互工作台目前主要使用中文，API 操作与字段名为英文。

**Research only / 仅供研究：** Scores and model estimates are uncertain, are not 100% accurate, and are not securities recommendations, investment advice or return guarantees. 评分与模型估计存在不确定性，不保证 100% 准确，不构成证券推荐、投资建议或收益承诺。

### Workspace screenshots / 工作台实景

Real local run at **2026-11-03 14:06:41 (Asia/Shanghai)**, using the same display template as the cloud workspace. The scan covered the source's 5,577-symbol universe: 200 rule candidates with 79 usable minute-bar datasets; 2,911 ML candidates with 2,825 usable daily-bar datasets. Final output: **10 rule signals and 11 ML signals**.

以下为上述时点的本地真实运行，与云端使用相同展示模板。扫描 5,577 只标的，规则候选 200 只、有效分钟行情 79 只；ML 候选 2,911 只、有效日线 2,825 只；最终展示规则 10 条、ML 11 条。

These are cropped close-ups for readability. They show a historical intraday sample and output format, not a live ranking, end-of-day result or performance validation. Symbols and rankings are not recommendations. 以下使用局部近景保证文字可读，仅展示历史盘中样本和输出格式，不是实时榜单、尾盘结果或收益验证，图中标的和排序不构成推荐。

#### Six-factor score details / 六因子评分详情

Trend, momentum, volume, structure, catalyst proxies and estimated cost distribution. The composite score is a relative score, **not a probability of a price rise**.

展示趋势、动量、量能、结构、催化代理特征与筹码估算；综合分数是相对评分，**不是上涨概率**。

[![Six-factor score details / 六因子评分详情](https://api.apify.com/v2/key-value-stores/2I87z59weLRBsCTFK/records/biga-rule-detail.jpg?signature=j9JBolnFgifCqikskJ3Q)](https://api.apify.com/v2/key-value-stores/2I87z59weLRBsCTFK/records/biga-rule-detail.jpg?signature=j9JBolnFgifCqikskJ3Q)

[Open full-size screenshot / 点击查看原图](https://api.apify.com/v2/key-value-stores/2I87z59weLRBsCTFK/records/biga-rule-detail.jpg?signature=j9JBolnFgifCqikskJ3Q)

#### Machine-learning details / 机器学习事件估计详情

The percentage is an **uncalibrated model estimate** for the configured next-day return event, not a verified win rate. 显示百分比为预设次日涨幅事件的**未校准模型估计**，不是经验证的胜率。

[![Machine-learning details / 机器学习事件估计详情](https://api.apify.com/v2/key-value-stores/2I87z59weLRBsCTFK/records/biga-ml-detail.jpg?signature=1wVln8AJyJ4i3CAEjNWuy)](https://api.apify.com/v2/key-value-stores/2I87z59weLRBsCTFK/records/biga-ml-detail.jpg?signature=1wVln8AJyJ4i3CAEjNWuy)

[Open full-size screenshot / 点击查看原图](https://api.apify.com/v2/key-value-stores/2I87z59weLRBsCTFK/records/biga-ml-detail.jpg?signature=1wVln8AJyJ4i3CAEjNWuy)

### 中文说明 / Chinese guide

BIGA 是用于数据分析与量化研究的工具。以下说明覆盖算法、运行方式、数据、费用及风险；英文完整说明见 [English guide](#english-guide)。

### A股筛选、单股分析与股票回测

- **全市场股票筛选器：** 比较 A 股规则评分与机器学习研究信号，查看双引擎共同入选标的。
- **单股多因子量化研究：** 输入股票代码，查看六因子贡献、行情日期和模型事件估计。
- **历史股票回测与复盘：** 对指定历史区间回测，将已保存研究信号与后续行情对比。

### 核心能力

| 功能 | 内容 |
| --- | --- |
| 六因子规则评分 | 综合趋势、动量、量能、结构、催化与筹码特征，生成可解释的因子评分与排序 |
| 机器学习分析 | 使用 XGBoost 或 LightGBM 学习历史特征关系，输出次日涨幅达到预设阈值的事件估计 |
| 双引擎比较 | 独立展示规则与 ML 结果及共同入选标的，便于比较不同方法 |
| 筹码成本分布 | 根据行情数据估算成本区间、集中程度及其变化 |
| 因子与模型研究 | 历史数据采集、特征构建、Rank IC 分析、分组比较及模型训练 |
| 回测与复盘 | 历史区间回测，及已保存信号与后续行情的对比 |
| 自动化接入 | JSON 输入、结构化 Dataset 输出、研究文件及 Apify Tasks / Schedules |

### 算法与研究依据

六类因子分别刻画不同维度的市场特征：

- **趋势：** 均线排列、趋势斜率及价格相对位置。
- **动量：** 价格变化、尾盘动量及价格空间。
- **量能：** 成交量、量比、换手率及量价关系。
- **结构：** 收盘位置、振幅、回落幅度及成交量加权均价。
- **催化：** 近期涨停活跃度、时效性及市值特征；不代表已确认的消息或基本面事件。
- **筹码：** 基于成交行情模拟的成本分布；不代表真实账户持仓或主力资金行为。

规则引擎将各因子标准化评分后加权组合，并随市场状态调整部分权重。该分数是相对研究指标，**不是上涨概率**。ML 引擎使用历史特征进行二分类建模，默认标签为“次日涨跌幅达到 7%”，阈值可在训练时调整。这与“次日开盘卖出获利”是不同目标。模型使用类别权重，输出**未经概率校准，不能直接解释为真实事件发生频率或胜率**。

研究流程支持 Spearman 排序相关性（Rank IC）、分组收益比较，以及按时间顺序划分训练与验证样本。验证样本也用于训练中的早停，不能视为完全独立的最终测试集。统计相关不等于因果，历史验证不保证未来有效。

多因子研究可参考 [Kenneth R. French 的因子研究资料](https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library/f-f_factors.html)。BIGA 的六类技术因子是自定义实现，并非经典 Fama–French 模型的直接复现；学术文献不构成对本应用的背书，也不能证明其持续获利能力。

### 快速开始：打开研究工作台

使用以下输入运行 Actor：

```json
{
  "operation": "web",
  "strategy": "both",
  "webSessionHours": 1
}
```

运行提示“工作台已就绪”后，打开 **Output → 打开 BIGA 研究工作台（Web 模式）**，点击页面链接，在独立浏览器标签页使用完整工作台。Dataset 是批量结果表格；交互页面通过 Web 输出入口打开。

每次运行生成独立页面访问码，并通过登录会话保护工作台。运行的 Key-value store 中 `WEB` 为启动页，`WEB_ACCESS` 保存完整访问链接。请妥善保管链接，取得链接者可操作该次工作台；不要公开分享运行存储或访问码。

页面仅在该 Actor 运行期间在线，运行结束后链接失效；重新启动获得新链接。默认会话为 1 小时，默认 Actor 超时为 75 分钟。延长 `webSessionHours` 时，需要同步延长运行超时并预留初始化时间。

### 批量调用示例

对一个标的进行双引擎评分（代码仅为输入格式示例，不构成推荐）：

```json
{
  "operation": "score",
  "symbols": ["600036"],
  "strategy": "both",
  "includeCommentary": false
}
```

首次使用建议从少量标的开始。`screen`、`chip` 和 `warmup` 显式传入 `"symbols": []` 时处理全市场；省略该字段使用默认示例代码。全市场任务可能显著增加数据请求、运行时间与费用。

| operation | 任务 | 关键参数 |
| --- | --- | --- |
| `web` | 交互式研究工作台 | `webSessionHours` |
| `score` | 标的多因子评分 | `symbols` 至少一项，`strategy` |
| `screen` | 股票池信号筛选 | `symbols`、`topN`、`maxCandidates` |
| `chip` | 筹码成本分布筛选 | `chipPercent`、`chipThreshold` |
| `preflight` | 数据源与模型诊断 | `symbols` |
| `research` | 历史采集、因子分析与训练 | `researchStage`、`months`、`surgeThreshold`、`modelType` |
| `backtest` | 历史回测 | `startDate`、`endDate` 必填，`symbols` 支持单个或空数组 |
| `review` | 信号效果复盘 | `recommendationKey` 必填，`reviewDate` 可选 |
| `warmup` | 日线缓存准备 | `symbols` |

### 数据与密钥

行情依赖第三方数据源，可能出现延迟、限流、连接失败或字段缺失。历史研究采集需要你自己的 **Tushare Token** 及相应数据权限，在密钥输入 `tushareToken` 中提供；本 Actor 不提供共享密钥或数据访问授权。仅分析已有历史数据时无需重新采集。用户需遵守数据供应商的授权及使用条款。

Actor 随包提供参考模型及截至 **2026-11-03** 的日线初始化快照（最近 250 个市场交易日，单只股票实际条数随上市日期、停牌等情况变化）。快照覆盖 5,602 只历史标的，其中 5,568 只的最后交易日期为 2026-11-03；未通过数据校验的 3 只已排除，其余保留真实的最后交易日期。数据源为 Tushare Pro daily，使用未复权价格、股为成交量单位、人民币元为成交额单位。它用于减少首次获取历史日线的请求，不替代实时快照、分钟行情或数据时效检查。

扫描按策略阶段保存恢复检查点，运行期间约每 120 秒另存已获取行情。发生主机迁移后，同一次运行会恢复原行情时点、复用已保存的数据及完成的阶段，再继续未完成的阶段；最近一次检查点之后的工作可能重做。跨交易日的网页扫描不会自动续跑旧行情。进度连接断开时，页面停止计时并核对云端状态。跨运行复用新缓存仍需指定同一研究数据空间；初始化快照随版本更新，不承诺自动每日更新。

初始化包不包含运营者的行情密钥、私人研究数据集、历史信号或复盘记录。参考模型不保证覆盖当前市场状态，建议以自己的数据验证和更新。

### 研究数据空间与复用

不填写 `stateStoreName` 时使用本次运行独立的 Key-value store，不读取运营者或其他用户的数据。需要跨运行复用时，选择你账户中的同一个 Key-value store，或填写其名称 / ID。输入字段声明所需读写权限；Actor 使用 Apify 的有限权限模式。

`persistState` 控制状态保存；状态包括缓存、研究数据、模型和复盘记录，不保存行情密钥。快照 `LATEST` 指向最新状态，运行摘要返回 `snapshotKey`，可通过 `stateSnapshotKey` 恢复指定版本。同一研究数据空间请**串行运行**，以免并发更新覆盖最新指针。

### 输出与字段含义

- **交互式工作台：**`WEB` 启动页与 `WEB_ACCESS` 会话链接。
- **Dataset：** 股票代码、名称、分析引擎、综合评分或模型输出、快照价格、数据日期、因子明细及异常信息，支持 JSON / CSV 导出。
- **`OUTPUT`：** 运行状态、数据上下文、处理数量、研究文件与状态快照信息。
- **研究文件：** 按任务生成分析报告、回测结果及复盘文件，可从运行的 Key-value store 获取。

不同任务的输出字段不同；ML、规则与筹码指标的单位不可混用。`confidence` 是信号强度标签，不是统计置信区间。`recommendationKey` / `RECOMMENDATIONS` 是为兼容已有 API 保留的技术字段名称，含义为研究信号记录，不代表证券推荐。

### 运行资源与常见问题

交互式工作台及少量标的评分建议从 2 GB 内存开始；全市场或研究任务建议至少 4 GB，较大训练任务需根据样本规模提高资源。运行消耗 Apify 计算与存储资源，代理及数据供应商可能另行计费；停止不再使用的 Web 运行可减少资源消耗。本版本未完成全市场长时采集与大规模训练的云端压力验证。

行情过旧时默认拒绝评分，实际数据日期会随结果返回。`allowStaleData` 仅适合明确的历史研究场景。非交易日和非尾盘跳过分别由 `tradingDayOnly`、`tailSessionOnly` 控制，时区为 **Asia/Shanghai**。自动运行请使用 Apify Schedules；网页参数保存不会创建平台定时任务。

缺少模型时可先运行 `preflight` 诊断；缺少历史数据时先运行 `research` 的 `collect` 或 `full` 阶段。采集失败请检查数据授权、网络、代理和限流，分析/训练阶段可复用已保存数据。反馈问题时请提供运行 ID、operation 和去除密钥的错误信息，不要提交 Token 或页面访问码。

### 风险提示与使用声明

本应用仅用于行情数据分析、量化研究、学习交流与历史复盘。所有股票、评分、排序、标签、图表与模型输出均不构成证券推荐、买卖建议、投资决策指令或收益承诺，亦未结合任何使用者的财务状况、投资目标或风险承受能力进行适当性评估。

**概率估计不代表确定性结论，更不代表 100% 准确。** 历史表现、回测和验证指标不代表未来表现。数据错误或延迟、模型偏差、过拟合、市场环境变化及突发事件均可能导致预测失效；历史回测无法完整反映交易成本、滑点、流动性与实际成交限制。

本应用不保证预测准确率、收益或本金安全。使用者应独立判断、审慎决策，并依法承担自身投资决策产生的风险。本声明不替代适用法律、监管规定或必要的业务资质。**市场有风险，投资需谨慎。**

### 服务费与平台用量

本 Actor 使用 **Pay per event + usage**，所有价格为美元。

| 收费事件 | 服务费 | 计费单位 |
|---|---:|---|
| `full-market-analysis` | $0.49 | 一次成功完成的全市场信号分析 |
| `stock-analysis` | $0.05 | 一只成功完成评分的股票，每次任务一次 |

规则与 ML 双引擎合计只计一次，不按输出行数收费。API 的 `screen` 且 `symbols=[]` 及网页「开始分析」使用全市场事件；`score` 或指定股票池的 `screen` 对成功输出所选全部引擎结果的股票逐只计费。选择单一引擎使用相同单价。完整全市场扫描即使零信号也收一次服务费，不保证信号数量。分析失败、被跳过或单股所选引擎未全部成功时不收对应分析服务费；其已消耗的平台用量仍会计费。

打开工作台、查看或刷新已有结果不收分析服务费；在网页重新发起分析会产生新的服务费。筹码、历史回测、复盘、缓存和研究训练目前不另收开发者服务费，平台用量仍另计。网页运行默认可持续 1 小时，分析完成后保持在线也会继续产生平台计算费；不使用时可在 Apify 结束该运行。存储和数据访问可能另有平台费用，以 Apify 账单为准。

平台用量取决于运行时长、内存、存储、数据访问、网络及网页在线等待时间，服务费不包含这些用量费用。一次运行样本不能代表稳定成本或固定总价。用户可设置 Apify Max cost 控制支出。

分析完成后先把结果保存在本次运行 KVS 的 `ANALYSIS-*` 记录，再确认服务费并向网页／Dataset 输出；支付后即使容器中断，也可从该记录取得已保存的结果。同一次运行的检查点恢复复用已确认的计费凭据；刷新结果不触发收费。若支付确认通信中断且超出平台短期幂等窗口，系统停止自动扣费并提示运营者核对，避免重复收费。服务费购买的是计算与研究输出，不是收益、准确率或证券推荐。

### English guide

#### What BIGA does

BIGA is a China A-share stock screener and quantitative-research tool. It combines an interpretable six-factor rule engine with a separate machine-learning engine for China stock analysis. It supports a visual research workspace, structured API results, and Apify Tasks / Schedules. The workspace currently uses primarily Chinese labels; this listing provides a full English guide.

#### A-share stock screening, ML stock analysis and stock backtesting

- **Full-market stock screening:** compare rule-based and ML research signals across the A-share universe, including symbols selected by both engines.
- **Individual stock analysis:** enter a stock code to inspect six-factor contributions, data timestamps and model event estimates.
- **Stock backtesting and signal review:** test a historical date range and compare saved signals with subsequent market data.

| Capability | Description |
| --- | --- |
| Six-factor scoring | Weighted, interpretable scores for trend, momentum, volume, structure, catalyst proxies and estimated cost distribution |
| Machine learning | XGBoost or LightGBM models for a configurable next-day return-threshold event |
| Engine comparison | Separate rule/ML lists and their overlapping signals |
| Cost distribution | Market-data-based estimates of cost ranges, concentration and changes |
| Factor/model research | Historical collection, feature construction, Rank IC, grouped-return comparisons and training |
| Backtesting and review | Historical backtests and comparisons between saved signals and subsequent market data |
| Automation | JSON inputs, structured Dataset output, research files and scheduled tasks |

#### Algorithms and research basis

The six groups describe different market characteristics:

- **Trend:** moving-average alignment, trend slope and relative price position.
- **Momentum:** price changes, late-session momentum and price headroom.
- **Volume:** trading volume, relative volume, turnover and price-volume relationships.
- **Structure:** closing position, trading range, pullback and volume-weighted average price.
- **Catalyst proxies:** recent limit-up activity, recency and market-cap features. These do not confirm news or fundamental events.
- **Cost distribution:** a simulated cost distribution derived from traded prices and volumes. It does not reveal actual account holdings or institutional trading.

The rule engine normalizes individual factors, combines them with weights and adjusts some weights for market conditions. Its composite score is a **relative research score, not a probability of a price rise**.

The ML engine learns a binary classification target from historical features. The default target is **a next-day percentage price change of at least 7%**; the threshold can be changed during training. This differs from making a profit by selling at the next opening price. Training uses class weights. Outputs are **not probability-calibrated and must not be interpreted as observed event frequencies or verified win rates**.

The research workflow supports Spearman rank correlation (Rank IC), grouped-return comparisons and chronological training/validation splits. Validation data is also used for early stopping, so it is **not a fully independent final test set**. Correlation does not establish causation; historical validation does not guarantee future effectiveness.

For background on multifactor research, see [Kenneth R. French's factor research resources](https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library/f-f_factors.html). BIGA's six technical-factor groups are custom implementations, not a direct replication of the Fama–French model. Academic literature is not an endorsement of this product or evidence of sustainable returns.

#### Open the visual workspace

Run the Actor with:

```json
{
  "operation": "web",
  "strategy": "both",
  "webSessionHours": 1
}
```

When the run reports that the workspace is ready, open **Output → 打开 BIGA 研究工作台（Web 模式）** (Open BIGA research workspace), then follow the page link in a separate browser tab. The Dataset is the structured results table; the interactive application is opened through the Web output link.

The workspace's **开始分析** (Start analysis) button runs a full-market signal scan. To score one stock, enter its code in **股票代码** (stock code) and click **标的评分** (Score stock). Check **规则引擎** (Rule engine), **ML 模型** (ML model), or both to choose engines. Re-running an analysis creates a new billable analysis; viewing existing results does not.

Each run receives a separate access code and a login session. In the run's Key-value store, `WEB` is the launch page and `WEB_ACCESS` contains the complete session link. Keep this link private: anyone holding it can operate that workspace. Do not publicly share the run's storage or access code.

The page is available only while that Actor run remains active. It stops working when the run ends; a new run creates a new link. The default Web session lasts one hour, with a default Actor timeout of 75 minutes. If you extend `webSessionHours`, also extend the run timeout and allow initialization time. **Keeping the page online continues to consume billable platform resources after analysis finishes.**

#### API examples and supported operations

Score one symbol with both engines. The symbol below demonstrates input format and is not a recommendation:

```json
{
  "operation": "score",
  "symbols": ["600036"],
  "strategy": "both",
  "includeCommentary": false
}
```

Start with a small symbol list. For `screen`, `chip` and `warmup`, explicitly supplying `"symbols": []` requests the full market; omitting the field uses the default example symbol. Full-market work can substantially increase requests, runtime and cost.

```json
{
  "operation": "screen",
  "symbols": [],
  "strategy": "both"
}
```

| operation | Task | Key inputs |
| --- | --- | --- |
| `web` | Interactive workspace | `webSessionHours` |
| `score` | Score selected stocks | At least one `symbols` entry, `strategy` |
| `screen` | Screen a universe for signals | `symbols`, `topN`, `maxCandidates` |
| `chip` | Screen estimated cost distributions | `chipPercent`, `chipThreshold` |
| `preflight` | Diagnose data sources and models | `symbols` |
| `research` | Collect history, analyze factors and train | `researchStage`, `months`, `surgeThreshold`, `modelType` |
| `backtest` | Historical backtest | Required `startDate` and `endDate`; `symbols` accepts one symbol or an empty array |
| `review` | Review saved signals | Required `recommendationKey`; optional `reviewDate` |
| `warmup` | Prepare daily-bar cache | `symbols` |

#### Data, credentials and initialization

Third-party market feeds may be delayed, rate-limited, unavailable or incomplete. Collecting historical research data requires **your own Tushare Token and the applicable data permissions**, supplied through the secret `tushareToken` input. This Actor does not provide shared credentials or a data-access license. Existing historical datasets can be analyzed without collecting them again. Users must comply with their data provider's licensing and usage terms.

The package includes a reference model and a daily-bar initialization snapshot dated **2026-11-03**, covering the latest 250 market trading days. A symbol's available history varies with listing date, suspensions and other conditions. The snapshot covers 5,602 historical symbols; 5,568 have 2026-11-03 as their last trading date. Three symbols that failed data validation were excluded; remaining symbols retain their actual last dates. The source is Tushare Pro daily, using unadjusted prices, shares for volume and CNY for traded value.

The snapshot reduces initial historical-data requests. It does not replace live snapshots, minute bars or freshness checks, and is not guaranteed to update automatically every day. The initialization package excludes the operator's credentials, private research datasets, signal history and review records. The reference model may not represent current market conditions; validate and update it with your own data.

Scans save stage checkpoints and save acquired market data roughly every 120 seconds. After host migration, the same run can restore the original data timestamp, reuse saved data and completed stages, and continue unfinished work. Work after the latest checkpoint may repeat. A Web scan does not automatically resume an old snapshot across trading days. If the progress connection disconnects, the page pauses its timer and checks cloud status.

#### Reuse your research state

Without `stateStoreName`, each run uses its own isolated Key-value store and does not read the operator's or other users' data. To reuse caches, datasets, models and review history across runs, select the same Key-value store in your account or provide its name/ID. The input declares the required read/write permissions; the Actor uses Apify's limited-permissions mode.

`persistState` controls state persistence. Market-data credentials are not saved in state. `LATEST` points to the latest snapshot; the run summary returns `snapshotKey`, which can be restored with `stateSnapshotKey`. Run tasks sharing one state store **sequentially** to avoid overwriting its latest pointer. Cross-run cache reuse requires the same state store.

#### Outputs and interpretation

- **Web:** `WEB` launch page and `WEB_ACCESS` session link.
- **Dataset:** symbol, name, engine, composite score or model output, snapshot price, data date, factor details and errors; exportable as JSON / CSV.
- **`OUTPUT`:** run status, data context, processed counts, research files and state-snapshot information.
- **Research files:** operation-specific reports, backtest results and review files in the run's Key-value store.

Fields vary by operation. ML estimates, rule scores and cost-distribution metrics have different meanings and units. `confidence` is a signal-strength label, not a statistical confidence interval. `recommendationKey` and `RECOMMENDATIONS` are compatibility names for research-signal records; they do not mean securities recommendations.

#### Resources and troubleshooting

Start with 2 GB memory for the workspace or a few symbols; use at least 4 GB for full-market or research tasks. Larger training jobs may require more memory. Compute, storage, proxies and data-provider access may incur separate charges. This version has not completed cloud stress testing for prolonged full-market collection or large-scale training.

Stale data is rejected for scoring by default, and results include their actual data dates. Use `allowStaleData` only for intentional historical research. `tradingDayOnly` and `tailSessionOnly` control non-trading-day and out-of-session skips. The timezone is **Asia/Shanghai**. Use Apify Schedules for automatic execution; saving Web parameters does not create a platform schedule.

Use `preflight` to diagnose a missing model. If historical data is absent, use the `collect` or `full` stage of `research`. For collection failures, check data permissions, network, proxy and rate limits. Analysis/training can reuse saved data. When reporting a problem, include the run ID, operation and sanitized error; never submit credentials or workspace access codes.

#### Service fees and platform usage

Pricing is **Pay per event + usage**, in USD:

| Event | Service fee | Unit |
| --- | ---: | --- |
| `full-market-analysis` | $0.49 | One successfully completed full-market signal analysis |
| `stock-analysis` | $0.05 | One successfully scored stock per analysis task |

Selecting both rule and ML engines counts once, not once per engine or Dataset row. A full-market API `screen` with `symbols=[]`, or the workspace's Start analysis action, uses the full-market event. `score`, and `screen` with an explicit symbol list, charge per stock only when all selected engines successfully produce that stock's results. A single engine uses the same unit price. A successfully completed full-market scan is charged even if it produces zero signals; no signal count is guaranteed.

Failed/skipped analyses and stocks whose selected engines do not all succeed incur no corresponding analysis service fee. **Consumed platform usage remains billable.** Opening the workspace and viewing/refreshing existing results add no analysis service fee; launching another analysis adds a new fee. Cost-distribution, backtest, review, warmup and research/training operations currently add no developer service fee, but platform usage still applies.

Platform charges depend on runtime, memory, storage, data access, network and Web idle time; these are additional to the service fee. Keeping the workspace online after analysis continues to consume compute. End unused Web runs in Apify. One observed run is not a stable cost estimate or fixed total price. Use Apify's Max cost setting to limit spending.

Completed analyses are first stored in `ANALYSIS-*` records in the run's Key-value store, then their service fee is confirmed and results are delivered to the Web/Dataset. Saved results remain retrievable after a paid analysis even if the container is interrupted. Same-run checkpoint recovery reuses confirmed billing receipts, and refreshing results does not charge again. If payment-confirmation communication fails beyond the platform's short idempotency window, automatic charging stops and the operator must reconcile it to avoid duplicate fees. The fee purchases computation and research output, not returns, accuracy or securities recommendations.

#### Risk and use notice

BIGA is for market-data analysis, quantitative research, education and historical review. All symbols, scores, rankings, labels, charts and model outputs are **not securities recommendations, investment advice, trading instructions or guarantees of returns**. The tool does not assess suitability based on a user's finances, investment objectives or risk tolerance.

**Estimates are uncertain and are not 100% accurate.** In particular, the ML outputs are uncalibrated event estimates, and rule scores are not probabilities. Historical performance, backtests and validation metrics do not predict future performance. Data errors/delays, model bias, overfitting, changing market conditions and unexpected events can invalidate predictions. Backtests cannot fully represent transaction costs, slippage, liquidity or execution restrictions.

No accuracy, profit or principal protection is guaranteed. Users must exercise independent judgment and remain responsible for their own decisions under applicable law. This notice does not replace legal requirements, regulatory obligations or any necessary business authorization. **Investing involves risk.**

# Actor input Schema

## `operation` (type: `string`):

web 启动交互式研究工作台；其他模式完成单次分析后退出。网页仅在本次运行期间可用。 screen 全市场成功分析 $0.49／次；score 或指定股票池按成功分析标的 $0.05／只／次；平台用量另计。

## `symbols` (type: `array`):

六位 A 股代码。score 至少填写一项；screen、chip、warmup 传入空数组时处理全市场。默认代码仅为格式示例，不构成推荐。

## `strategy` (type: `string`):

选择六因子规则引擎、机器学习模型或两者分别评估。规则评分与模型事件概率估计的含义不同。

## `topN` (type: `integer`):

规则结果最多保留该数量；ML 结果最多保留该数量的非涨停标的，并可能附加涨停标的。结果排序不构成投资建议。

## `maxCandidates` (type: `integer`):

规则引擎在行情快照初筛后保留的候选数量。ML 引擎独立评估所选股票池；扩大范围会增加耗时与数据请求。

## `includeCommentary` (type: `boolean`):

汇总全市场情绪和行业热点，会增加数据源请求量。

## `tradingDayOnly` (type: `boolean`):

screen/score/chip 在非 XSHG 交易日跳过。时区为 Asia/Shanghai。

## `tailSessionOnly` (type: `boolean`):

screen/score 仅在交易日 14:30–15:00 运行，否则跳过。

## `allowStaleData` (type: `boolean`):

默认拒绝早于最近交易日的快照/日 K/分钟数据；打开时输出实际数据日期。

## `tushareToken` (type: `string`):

历史数据采集需要使用你自己的 Tushare Token，并具备相应数据权限。按 Apify 密钥字段加密保存，不在页面展示；不提供共享行情密钥。

## `proxyConfiguration` (type: `object`):

可选 Apify 或自定义代理；默认直接连接。

## `stateStoreName` (type: `string`):

选择你账户中的 Key-value store，或填写其名称/ID，复用缓存、模型及研究记录。留空使用本次运行独立存储；同一数据空间应串行运行。

## `persistState` (type: `boolean`):

保存缓存、模型、研究数据和复盘记录；跨运行复用需选择同一数据空间。无论本项是否开启，当前运行仍保存迁移恢复检查点，且不会与其他用户共享。

## `stateSnapshotKey` (type: `string`):

LATEST 恢复所选数据空间的最新状态；也可填写此前输出的 snapshotKey 恢复指定版本。

## `chipPercent` (type: `number`):

例如 70 表示中间 70% 的筹码成本范围。

## `chipThreshold` (type: `number`):

筛选集中度低于此值的股票。

## `researchStage` (type: `string`):

full=采集、特征、因子分析、训练；其他阶段复用状态内已有数据。

## `months` (type: `integer`):

历史行情采集范围。

## `surgeThreshold` (type: `number`):

训练目标为次日涨跌幅达到此阈值。该事件不等于开盘卖出收益；模型输出未经概率校准。

## `modelType` (type: `string`):

选择新训练使用的模型。评分默认使用状态内最新模型或随包模型。

## `startDate` (type: `string`):

backtest 必填，YYYY-MM-DD。

## `endDate` (type: `string`):

backtest 必填，YYYY-MM-DD。

## `probabilityThreshold` (type: `number`):

对未校准模型输出应用的历史回测阈值，与线上 topN 排序口径不同，不代表胜率。

## `recommendationKey` (type: `string`):

填写此前运行返回的 recommendationKey，且使用同一研究数据空间。字段名称为兼容已有 API 保留。

## `reviewDate` (type: `string`):

YYYY-MM-DD；留空使用实时行情。

## `configOverrides` (type: `object`):

仅允许覆盖 filter/strategy/market 的已有数值和布尔参数；不接受密钥或文件路径。

## `webSessionHours` (type: `number`):

工作台仅在 Actor 运行期间在线；默认 1 小时。运行超时应大于会话时长并预留初始化时间；结束后重新运行获取新链接。

## Actor input object example

```json
{
  "operation": "score",
  "symbols": [
    "600036"
  ],
  "strategy": "both",
  "topN": 10,
  "maxCandidates": 200,
  "includeCommentary": true,
  "tradingDayOnly": false,
  "tailSessionOnly": false,
  "allowStaleData": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "persistState": true,
  "stateSnapshotKey": "LATEST",
  "chipPercent": 70,
  "chipThreshold": 4,
  "researchStage": "full",
  "months": 18,
  "surgeThreshold": 7,
  "modelType": "xgboost",
  "probabilityThreshold": 0.75,
  "configOverrides": {},
  "webSessionHours": 1
}
```

# Actor output Schema

## `web` (type: `string`):

No description

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "operation": "score",
    "symbols": [
        "600036"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("wei964991/biga-a-share-quantitative-research").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "operation": "score",
    "symbols": ["600036"],
}

# Run the Actor and wait for it to finish
run = client.actor("wei964991/biga-a-share-quantitative-research").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "operation": "score",
  "symbols": [
    "600036"
  ]
}' |
apify call wei964991/biga-a-share-quantitative-research --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,wei964991/biga-a-share-quantitative-research"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/t2hWME4E6h6bJf4SI/builds/gSNazC7f4xq9uNXyi/openapi.json
