Skip to content
Agentmart
Submit a tool

canslim-trader

CANSLIM 交易员:按七因子(C/A/N/S/L/I/M)给 A 股打分排序,产出买入 / 卖出 / 融券做空信号,并在 A 股 T+1 与两融约束下用 `ptrade` 模拟盘 CLI 走完「扫描 → 建议 → 计划 → 下单 → 结算 → 风控 → 平仓 → 台账」闭环。需要 CANSLIM…

Skill by hatsuyuki0103

IndexedMIT★ 5
Write a review

Chalk Labs

Need help deploying canslim-trader?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/hatsuyuki0103-canslim-trader

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

CANSLIM 交易员:按七因子(C/A/N/S/L/I/M)给 A 股打分排序,产出买入 / 卖出 / 融券做空信号,并在 A 股 T+1 与两融约束下用 `ptrade` 模拟盘 CLI 走完「扫描 → 建议 → 计划 → 下单 → 结算 → 风控 → 平仓 → 台账」闭环。需要 CANSLIM 选股、买卖点判定或模拟盘演练时使用。

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/canslim-trader

What's inside

Skill name
canslim-trader
Description
CANSLIM 交易员:按七因子(C/A/N/S/L/I/M)给 A 股打分排序,产出买入 / 卖出 / 融券做空信号,并在 A 股 T+1 与两融约束下用 `ptrade` 模拟盘 CLI 走完「扫描 → 建议 → 计划 → 下单 → 结算 → 风控 → 平仓 → 台账」闭环。需要 CANSLIM 选股、买卖点判定或模拟盘演练时使用。
License
MIT
Instructions
286 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# CANSLIM 交易员(canslim-trader)

> 可选能力:本技能引用的可选工具(DSH 原生 `ralph` 工具、官方团队九工具、`workflow`、`subagent`/`subagent_fork`)可能在当前 profile 未挂载或被预设停用;探测方式与四级降级阶梯见本包根目录 `docs/capability-matrix.md`(技能目录上两级:`../../docs/capability-matrix.md`)。

本技能把 **CANSLIM 七因子选股口径** 与 **`ptrade` 模拟盘** 绑成一条可验证的流水线。口径真源是 `ptrade` 仓库的 `INTERFACES.md`:§6.1(七因子打分)/ §6.2(信号判定顺序)/ §2(阈值配置)/ §7(CLI 契约);`ptrade` 同时是该接口的实现。技能内任何数值与实现冲突时,**以 `INTERFACES.md` 与 `ptrade/strategy.py` 的实际阈值为准**,并同步本文件。

## 何时用

- 想让一批 A 股按 CANSLIM 口径**打分、排序、出买入候选**(强票 / 弱票对照);
- 想在模拟盘里验证「七因子 → 信号 → 交易计划 → 成交 → 结算 → 风控 → 平仓」的完整闭环;
- 想复现某个历史交易日(`--asof`)的选股结论,或核对账户台账(`ledger` / `status`);
- 想演练**融资买入 / 融券卖出**在 T+1、保证金比例与维持担保比例约束下的真实行为,且不承担真金白银风险;
- 想给已持仓做**止损 / 止盈 / 破位离场**的机械化判定。

## 何时不用

- **真实资金实盘下单**:`ptrade` 是本地模拟撮合器,不含任何券商通道;要实盘请走券商终端,并自行承担全部风险。
- **日内 / 高频 / T+0 策略**:本包按日线 + 日频结算建模,A 股当日买入不可当日卖出(见「A 股 T+1 约束」),不存在日内回转口径。
- **纯基本面研究或宏观判断**:本技能产出的是「可执行信号 + 交易计划」,不是投研报告;需要定性研究请用别的工具。
- **数据缺失却要求最新结论**:`--offline` 只读本地缓存,缺数据就如实报错;不得用记忆里的数字顶替行情。
- **需要保证收益**:任何打分与信号都是机械规则,不构成收益承诺。

## 前置检查(开工前 30 秒)

1. **`ptrade` 是否可用**:`python -m ptrade --help` 能跑通 → 包已装(Python ≥ 3.11)。
   **不可用时先安装**(`ptrade` 是独立发布的 Python 包,不随本插件分发):

   ```sh
   pip install git+https://github.com/hatsuyuki0103/ptrade
   # 或从 Releases 下载 wheel:https://github.com/hatsuyuki0103/ptrade/releases
   ```

   首次使用若需要 `--offline`(离线夹具),在 `ptrade` 仓库跑一次
   `python tools/fetch-fixtures.py`(从 release 下载夹具与剧本)。

2. **数据根**(后文记作 `<root>`):按 `--root <path>` → `PTRADE_HOME` → 源码检出根 → `~/.ptrade` 依次解析。
   三个中最常用的是显式指定:`python -m ptrade ... --root <path>`;想固定一个工作目录就设 `PTRADE_HOME`。
   账户状态、台账、缓存、图表产物都落在 `<root>` 下。
3. **配置**:`<root>/config.json` 存在则覆盖默认阈值,缺失字段回落到默认值(下表默认值即 `INTERFACES.md` §2);
4. **三条铁律**:① `--offline` 下**绝不联网**;② 任何一单先 `plan` 后 `order`;③ 每笔成交后必须 `settle` 到次一交易日才能再动同一持仓。

## CANSLIM 七因子打分口径

子分先归一到 **0-100**,再按权重加权求和;**缺失数据 → 该因子 50 分(中性)** 并在 `risks` 标注 `"<因子>数据缺失"`。权重和 = 1.0。

| 因子 | 含义 | 权重 | 主数据源 | 打分规则(与 `strategy.py` 一致) |
|---|---|---|---|---|
| **C** | 当季盈利 | 0.18 | `quarterly_report(最近报告期).net_profit_yoy` | `>=100%`→100;`>=50%`→90;`>=30%`→80;`>=20%`→70;`>=10%`→55;`>=0`→40;`<0`→15。**加速加成**:本季增速 > 上季增速 → 得分 × `c_accel_bonus`(默认 1.25,上限 100) |
| **A** | 年度盈利 | 0.16 | `fin_indicator(code)` 年度 `net_profit_yoy` / `roe` | 取最近 3 个年报,每年映射:`>=50`→100;`>=25`→85;`>=15`→70;`>=5`→55;`>=0`→40;`<0`→20;`roe >= 17%` 该年额外 +10(上限 100);三年取均值 |
| **N** | 新事物(新高) | 0.14 | `daily()` 250 日区间位置 + 量能 | 收盘 ≥ 250 日最高 × 0.98(创新高)→100;距高点 `<=5%`→85;`<=15%`→65;`<=30%`→45;否则 25。**创新高且成交量 > 50 日均量 ×1.5 → 取 `max(score, 90)`** |
| **S** | 供给(流通盘 + 量能) | 0.12 | `spot()` 的 `float_mv` / `turnover`;`holders().holders_chg_pct` | 流通市值:`<50 亿`→80;`50-200 亿`→90;`200-500 亿`→75;`500-1000 亿`→60;`>=1000 亿`→45。换手率 `3%-15%`→+10;股东户数**减少**(筹码集中)→+10,增加 →−10;上限 100、下限 0 |
| **L** | 龙头 / 落后(相对强度) | 0.16 | `daily()` 计算 RS = 个股近 6 月涨幅 − 指数近 6 月涨幅 | 行业内(`industry_constituents`)RS 百分位:前 10%→100;前 25%→85;前 50%→65;前 75%→45;后 25%→25。行业取不到 → 绝对 RS 分档:`>30%`→90;`>15%`→75;`>0`→60;`>-15%`→40;否则 20 |
| **I** | 机构认同度 | 0.12 | `top_holders()` 机构合计持股比例与环比变化 | 合计持股 `10%-60%`→85;`60%-80%`→70;`>80%`(过挤)→55;`3%-10%`→60;`<3%`→35;机构数/持股环比**增加** → +10,减少 → −10;上限 100、下限 0 |
| **M** | 市场方向 | 0.12 | `market_breadth()` | 基础 20 分;指数在 50 日线上 +20、200 日线上 +20;指数 20 日涨幅 `>5%`→+25,`>0`→+15,`>-5%`→+5,否则 0;涨跌家数比 `>2`→+20,`>1`→+12,`>=0.5`→+5,否则 0;涨停家数 `>50`→+15,`>=20`→+8;上限 100 |

`total` = Σ(子分 × 权重),取值 0-100;M 因子不随个股变化(同交易日共用,内部缓存)。

## 买入信号

判定**顺序敏感、先命中先返回**(与 `strategy.py` 一致):

1. `total <= short_threshold`(默认 40)→ `short`(做空候选,见下节)
2. `total >= buy_threshold`(默认 75)**且** `M >= 50` **且** `L >= 60` → `buy`
3. `total >= buy_threshold` 但 `M < 50` 或 `L < 60` → `watch`(原因写进 `reasons`:市场方向或相对强度不达标)
4. `total >= 50` → `watch`
5. 其他 → `avoid`

**买入前置条件(缺一不可)**:`M >= 50`(市场方向不逆风)+ `L >= 60`(相对强度在行业前 50% 内)。CANSLIM 里 M 与 L 是否决项——个股再好,市场下跌或个股落后,就不买。

建仓纪律:

- `plan` 先把推荐转成计划(`action ∈ {open_long, add_long, open_short, close_long, close_short, hold, watch}`——做多与做空的加/平动作齐全),**不落单**;
- **单票仓位上限**:`(多头市值 + 融券市值) / 净资产 <= max_position_pct`(默认 0.20,即单票 ≤ **净资产**的 20%)——分母是**净资产,不是总资产**:总资产含融券券款与融资买入形成的市值,杠杆下随开仓自动放大,用它当分母会让「单票 20%」越加杠杆越松,风控形同虚设(`INTERFACES.md` §5 强约束 v2 裁决);
- 同时持仓数 ≤ `max_positions`(默认 5);总敞口 ≤ `max_gross_exposure`(默认 2.0);
- 数量:`qty > 0` 且 `qty % 100 == 0`,否则 `INVALID_LOT`;
- 涨停(`price >= limit_up`)不可买 → `LIMIT_UP_NO_BUY`;停牌 → `SUSPENDED`;资金不足 → `INSUFFICIENT_CASH`。

## 卖出信号与止损

按下列次序先命中先执行:

1. **−7% 止损**:相对成本价跌幅 `<= stop_loss_pct`(默认 `-0.07`)→ 无条件平仓(`close`),**不加仓、不摊薄**;
2. **跌破均线**:收盘跌破 50 日均线 → 减半或清仓(中期趋势破坏);跌破 200 日均线 → 清仓(破位即离场);
3. **连续放量下跌**:连续 3 个交易日下跌且每日成交量 > 50 日均量 → 清仓(放量杀跌,供给涌出);
4. **止盈**:浮盈 `>= take_profit_pct`(默认 0.25)→ 分批止盈(先减半,余仓用移动止损保护);
5. **信号退化**:`total < 50`(`avoid`)或 `<= 40`(`short`)→ 平多。

执行:`python -m ptrade close --code 600519 [--ratio 1.0]`;`--ratio` 支持部分平仓。跌停(`price <= limit_down`)不可卖 → `LIMIT_DOWN_NO_SELL`。

## 做空(融券)信号

**做多与做空是两条独立口径,不得互相推断**:`buy` / `watch` 属多头;`short` 只在 `total <= short_threshold`(默认 40)时给出——「分数不高」不等于「可以做空」。

做空前置条件(缺一不可,任何一条不满足就放弃该票):

1. **仅两融标的可融券做空**:`ds.is_short_target(code)` 为真,否则 `NOT_SHORT_TARGET`(融资标的 ≠ 融券标的,金融股/次新股常只可融资);
2. **保证金空间充足**:融券保证金比例 `margin_ratio_short`(默认 1.00 = 100%)所需额度可用,否则 `INSUFFICIENT_MARGIN_SPACE`;
3. **杠杆闸(v3 新增)**:开仓后必须同时满足 `leverage = total_debt / net_assets <= max_leverage`(默认 2.0)**且** `maintenance_ratio >= 1.30`,否则拒单 → `LEVERAGE_LIMIT`(防「开仓即低于平仓线」);
4. **券源约束**:单票可融券量 ≤ 该股流通股本 × `short_source_limit_ratio`(默认 2%),超限 → `SHORT_SOURCE_LIMIT`;
5. **敞口约束**:融券市值 / 净资产 ≤ `max_short_exposure`(默认 0.50);总敞口 ≤ `max_gross_exposure`(默认 2.0);
6. **担保比例约束**:维持担保比例 ≥ 平仓线(默认 1.30 = 130%),低于警戒线 1.50 后停止加仓,触发平仓线后 `forced_liquidation` 只允许减仓(拒 `SHORT_SELL`/`BUY`/`MARGIN_BUY` → `BELOW_MAINTENANCE`)。

- 做空平仓 = **买券还券**(`BUY_TO_COVER`),同样受 T+1 与券源约束;`close` 会先买券还券,再卖券还款 / 卖出;
- 成本:融券费率 `lending_rate_annual`(默认 8%/年)、融资利率 `financing_rate_annual`(默认 6.5%/年)按日计息——做空持仓要把券息算进成本,`settle` 时入账;
- 费用:佣金(双边,`max(额 × 0.00025, 5)`)、印花税 0.0005(卖出方向)、过户费 0.00001(沪深双边)、市价单滑点 5bp。

## 模拟盘玩法(CLI 闭环)

按顺序复制执行(真源:`INTERFACES.md` §7)。打分示例用 `600519`(强票)/`002594`(中性)/`000001`(弱票),**交易示例用低价票 `601398`**(工商银行 ≈ 7.02 元)——高价票在 50 万账户里一手就超单票上限。下列命令均已在 `--offline` + 夹具下**逐条实跑,退出码全为 0**:

```sh
# 0) 初始化账户:默认 50 万现金;--reset 重置
python -m ptrade init --cash 500000

# 1) 查看账户状态(快照)
python -m ptrade status --json

# 2) 同步行情 / 财务数据(--offline 只读本地缓存,绝不联网)
#    ⚠️ 多代码必须加引号!Windows PowerShell 会把裸写的逗号当数组运算符、把 002594/000001 当数值 → 丢前导零

From hatsuyuki0103/oh-my-deepseek-harness, MIT.

More from hatsuyuki0103/oh-my-deepseek-harness

Signals

Stars
5
Forks
0
Open issues
0
Last commit (this folder)
Oct 14, 2026 (16 days ago)
Last release
Oct 12, 2026 (18 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from hatsuyuki0103

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get canslim-trader running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying canslim-trader?

CallGet help
Cite this page

canslim-trader skill. Agent Mart. https://agentmart.dev/skills/hatsuyuki0103-canslim-trader (last updated 2026-10-24)