Install any skill in seconds. Free to start, no credit card required.
Get Started Free →异常交易识别助手(高频撤单版),适用于券商风控、合规监控、交易行为分析、监管报送等场景。 以下情况请主动触发此技能: - 用户提供了交易数据、撤单记录、委托流水,问"有没有异常""帮我看看""是否涉嫌高频撤单" - 用户问"高频撤单怎么识别""撤单率多少算异常""什么是虚假申报" - 用户需要:高频撤单监控规则、阈值设定、异常账户筛查、监管标准解读 - 用户提到:撤单率、申报频率、成交占比、虚假申报、幌骗交易、spoofing - 用户需要形成风控报告、合规核查意见、异常交易说明 不要等用户明确说"高频撤单识别"——只要涉及交易委托撤单行为分析、异常申报模式识别、交易合规性判断,就应主动启动此技能。
.claude/skills/aifinlab-abnormal-trading-high-frequency-cancellation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 80% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 32% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 103% | 0% |
你的核心职责:识别高频撤单/虚假申报行为,判断是否触及监管红线,形成可落地的风控结论。
收到用户请求后,先做两个判断:
判断 1:是否有交易数据?
判断 2:用户需要哪种深度?
| 用户意图 | 适用模板 | |---------|---------| | "是否异常""有没有问题" | 模板 A:快速筛查 | | "详细分析""形成报告" | 模板 B:标准分析 | | "合规意见""监管报送""风控建议" | 模板 C:汇报版 | | 未明确说明 | 默认模板 A,再提供"需要详细分析可继续" |
委托流水必备字段:
聚合指标(如有):
高频撤单典型特征:
虚假申报(幌骗交易)识别要点:
撤单率 = 撤单委托笔数 / 总委托笔数 × 100%
成交占比 = 成交笔数 / 总委托笔数 × 100%
申报频率 = 单位时间(如 1 分钟)内申报笔数
大额申报占比 = 大额委托(如>50 万)笔数 / 总委托笔数
快速撤单占比 = 申报后 X 秒内撤单笔数 / 总撤单笔数| 等级 | 撤单率 | 申报频率 | 其他特征 | 建议动作 | |-----|--------|----------|----------|----------| | 正常 | <30% | <10 笔/分钟 | 无 | 持续监控 | | 关注 | 30%-50% | 10-30 笔/分钟 | 偶有大额撤单 | 加强监控,记录原因 | | 异常 | 50%-70% | 30-50 笔/分钟 | 频繁大额撤单 | 预警,联系客户 | | 严重 | >70% | >50 笔/分钟 | 快速撤单 + 反向成交 | 限制交易,上报合规 |
> 适用:"是否异常""有没有问题"
**筛查结论**:[正常/关注/异常/严重]
**关键指标**:
- 撤单率:XX%
- 申报频率:XX 笔/分钟
- 大额撤单占比:XX%
**是否触及阈值**:是/否(说明具体触及的阈值)
**建议动作**:xxx> 适用:"详细分析""形成报告"
**分析对象**:账户/证券/时间段
**数据概览**:
- 总委托笔数:XX
- 撤单笔数:XX
- 成交笔数:XX
- 分析时段:XXX
**异常指标识别**:
- 撤单率:XX%(阈值 50%,[未触及/触及])
- 申报频率:XX 笔/分钟(阈值 30,[未触及/触及])
- 快速撤单占比:XX%(申报后<1 秒撤单)
- 大额撤单特征:xxx
**行为模式分析**:
- 是否存在反复申报撤单:是/否
- 是否存在反向成交获利:是/否
- 是否集中在特定时段(开盘/尾盘):xxx
**初步判断**:xxx(是否涉嫌高频撤单/虚假申报)
**建议措施**:xxx> 适用:"合规意见""监管报送""风控报告"
**事件概述**:xxx
**核心结论**:xxx
**关键数据与事实**:
- xxx
**监管标准对照**:
- 触及条款:xxx
- 阈值对比:xxx
**风险评估**:xxx
**处置建议**:
- 短期:xxx
- 长期:xxx
**后续跟踪**:xxx数据不完整:基于已有数据给出判断框架,说明"完整分析需 XX 字段"
多账户联动嫌疑:如有多账户数据,分析申报时间同步性、方向一致性、价格关联性
客户解释合理性:如客户提供解释(如程序故障、策略调整),评估解释合理性并记录
监管问询应对:协助准备说明材料,包括交易背景、策略说明、整改措施
监管法规:
行业标准:
学术参考:
Python 计算示例:
pythonimport pandas as pd import numpy as np def calc_cancellation_rate(df): """计算撤单率""" total_orders = len(df) cancelled_orders = len(df[df['status'] == 'cancelled']) return cancelled_orders / total_orders * 100 if total_orders > 0 else 0 def calc_order_frequency(df, time_unit='min'): """计算申报频率(笔/分钟)""" df['time'] = pd.to_datetime(df['order_time']) df = df.set_index('time') freq = df.resample('1T').size() return freq.mean(), freq.max() def detect_high_freq_cancellation(df, threshold_rate=50, threshold_freq=30): """高频撤单检测""" rate = calc_cancellation_rate(df) freq_mean, freq_max = calc_order_frequency(df) result = { 'cancellation_rate': rate, 'order_frequency_mean': freq_mean, 'order_frequency_max': freq_max, 'is_abnormal': rate > threshold_rate or freq_max > threshold_freq } return result
SQL 查询示例:
sql-- 查询账户日度撤单率 SELECT account_id, trade_date, COUNT(*) as total_orders, SUM(CASE WHEN status = 'CANCELLED' THEN 1 ELSE 0 END) as cancelled_orders, SUM(CASE WHEN status = 'CANCELLED' THEN 1 ELSE 0 END) * 1.0 / COUNT(*) as cancellation_rate FROM order_table WHERE trade_date = '2026-03-16' GROUP BY account_id, trade_date HAVING cancellation_rate > 0.5 ORDER BY cancellation_rate DESC;
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 15,501 | 9,251 | -40% | 1 | 1 | 0% | 2,155 | 3,869 | +80% | 0 | 0 | — |
case-02 | pass→pass | 23,828 | 16,441 | -31% | 1 | 1 | 0% | 3,743 | 4,947 | +32% | 0 | 0 | — |
case-03 | fail→fail | 23,078 | 23,788 | +3% | 1 | 1 | 0% | 3,434 | 5,875 | +71% | 0 | 0 | — |
case-04 | pass→pass | 10,546 | 8,288 | -21% | 1 | 1 | 0% | 1,773 | 3,593 | +103% | 0 | 0 | — |
case-05 | pass→pass | 12,457 | 7,812 | -37% | 1 | 1 | 0% | 2,009 | 3,553 | +77% | 0 | 0 | — |
case-06 | pass→pass | 9,172 | 5,910 | -36% | 1 | 1 | 0% | 1,361 | 3,330 | +145% | 0 | 0 | — |
case-07 | pass→pass | 18,868 | 11,868 | -37% | 1 | 1 | 0% | 2,679 | 4,146 | +55% | 0 | 0 | — |
case-08 | fail→pass | 17,664 | 14,735 | -17% | 1 | 1 | 0% | 2,669 | 4,573 | +71% | 0 | 0 | — |
case-09 | pass→pass | 17,501 | 12,578 | -28% | 1 | 1 | 0% | 3,030 | 4,003 | +32% | 0 | 0 | — |
case-10 | pass→pass | 26,303 | 18,041 | -31% | 1 | 1 | 0% | 3,420 | 4,921 | +44% | 0 | 0 | — |
case-11 | pass→pass | 21,206 | 22,380 | +6% | 1 | 1 | 0% | 3,157 | 5,320 | +69% | 0 | 0 | — |
case-12 | pass→pass | 17,711 | 14,644 | -17% | 1 | 1 | 0% | 2,663 | 4,356 | +64% | 0 | 0 | — |
case-13 | fail→fail | 20,773 | 21,667 | +4% | 1 | 1 | 0% | 2,911 | 5,404 | +86% | 0 | 0 | — |
case-14 | pass→pass | 20,495 | 19,049 | -7% | 1 | 1 | 0% | 2,856 | 5,065 | +77% | 0 | 0 | — |
case-15 | pass→pass | 24,025 | 20,402 | -15% | 1 | 1 | 0% | 2,777 | 5,029 | +81% | 0 | 0 | — |
case-16 | pass→pass | 14,365 | 9,350 | -35% | 1 | 1 | 0% | 2,218 | 3,488 | +57% | 0 | 0 | — |
case-17 | pass→pass | 17,875 | 17,653 | -1% | 1 | 1 | 0% | 2,797 | 4,788 | +71% | 0 | 0 | — |
case-18 | pass→pass | 12,841 | 8,010 | -38% | 1 | 1 | 0% | 2,127 | 3,518 | +65% | 0 | 0 | — |
case-19 | fail→pass | 14,748 | 8,143 | -45% | 1 | 1 | 0% | 2,732 | 3,459 | +27% | 0 | 0 | — |
case-20 | pass→pass | 12,694 | 12,673 | -0% | 1 | 1 | 0% | 2,235 | 4,145 | +85% | 0 | 0 | — |
case-21 | pass→pass | 14,934 | 13,973 | -6% | 1 | 1 | 0% | 2,075 | 4,419 | +113% | 0 | 0 | — |
case-22 | pass→pass | 25,358 | 21,192 | -16% | 1 | 1 | 0% | 3,371 | 5,345 | +59% | 0 | 0 | — |
case-23 | pass→pass | 21,272 | 18,544 | -13% | 1 | 1 | 0% | 3,308 | 5,164 | +56% | 0 | 0 | — |
case-24 | pass→pass | 19,523 | 18,932 | -3% | 1 | 1 | 0% | 2,976 | 4,691 | +58% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +8 percentage points is the difference between those two pass rates over the 24 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.