Install any skill in seconds. Free to start, no credit card required.
Get Started Free →A股分红日历/除权除息追踪。当用户说"分红日历"、"除权除息"、"什么时候分红"、"登记日"、"除权日"、"dividend calendar"、"最近谁分红"、"XX什么时候除权"、"股权登记日"、"红利发放日"时触发。追踪A股上市公司分红方案公告、股权登记日、除权除息日、红利发放日,帮助投资者合理安排持仓和打新。支持研报风格(formal)和日历视图风格(brief)。
.claude/skills/aifinlab-a-share-dividend-calendar/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-22 | ✓→✗ | ▼ Worse | -41% | 0% |
| case-23 | ✓→✗ | ▼ Worse | -45% | 0% |
| case-24 | ✓→✗ | ▼ Worse | -31% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 113% | 0% |
bashSCRIPTS="$SKILLS_ROOT/cn-stock-data/scripts" # 分红配送方案(按年度查询) python -c "import akshare as ak; df = ak.stock_fhps_em(date='YYYY'); print(df.to_string())" # 个股行情(计算当前股息率) python "$SCRIPTS/cn_stock_data.py" quote --code [CODE]
补充 web 搜索:
Step 1: 获取分红数据
根据用户意图确定查询范围:
ak.stock_fhps_em(date='当年') 获取当年全部分红方案,筛选近期有除权除息安排的stock_fhps_em 返回字段: | 字段 | 说明 | |------|------| | 代码 | 股票代码 | | 名称 | 股票简称 | | 每股收益 | EPS | | 每股派息(税前) | 每10股派息金额 | | 送股 | 每10股送股数 | | 转增 | 每10股转增数 | | 股权登记日 | 登记日(当日收盘持有即可享有) | | 除权除息日 | 除权日(当日买入不再享有) | | 红利发放日 | 现金到账日 | | 公告日期 | 实施公告日 | | 方案进度 | 预案/股东大会/实施 |
Step 2: 日历视图构建
按时间线排列分红事件,展示关键日期节点:
📅 分红日历 — [日期范围]
[日期] 股权登记日
├─ 600519 贵州茅台 | 10派259.11元 | 股息率2.1%
└─ 000858 五粮液 | 10派55.00元 | 股息率3.5%
[日期] 除权除息日
├─ 601318 中国平安 | 10派9.20元 | 股息率4.2%
└─ ...
[日期] 红利发放日
└─ 600036 招商银行 | 10派18.22元 | 到账日分类标注方案进度:
Step 3: 股息率计算
每股派息 = 每10股派息 / 10
税前股息率 = 每股派息 / 当前股价 × 100%
税后股息率(按持股期限):
- 持股 > 1年:免税,税后股息率 = 税前股息率
- 1月 < 持股 ≤ 1年:税率10%,税后股息率 = 税前 × 90%
- 持股 ≤ 1月:税率20%,税后股息率 = 税前 × 80%
除权参考价 = (前收盘价 - 每股派息) / (1 + 送转比例)如有送转:
送转比例 = (送股数 + 转增数) / 10
除权参考价 = (前收盘价 - 每股派息) / (1 + 送转比例)Step 4: 输出
| 维度 | formal(研报风格) | brief(日历视图) | |------|-------------------|------------------| | 篇幅 | 2-4 页 | 1 页日历表 | | 展示形式 | 表格+分析 | 时间线日历 | | 股息率 | 税前/税后分别计算 | 仅显示税前 | | 送转分析 | 区分送转与分红,风险提示 | 简要标注 | | 除权影响 | 除权价计算+历史填权分析 | 除权参考价 | | 持仓建议 | 红利税+登记日操作建议 | 关键日期提醒 | | 免责声明 | 需要 | 不需要 |
默认风格:brief(日历视图)
python# 调用 skill result = run_skill({ "param1": "value1", "param2": "value2" })
bashpython scripts/run_skill.py --input data.json
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 18,467 | 17,411 | -6% | 1 | 1 | 0% | 2,729 | 1,757 | -36% | 0 | 0 | — |
case-02 | fail→fail | 29,644 | 10,986 | -63% | 1 | 1 | 0% | 4,482 | 2,164 | -52% | 0 | 0 | — |
case-03 | fail→fail | 24,020 | 13,957 | -42% | 1 | 1 | 0% | 3,854 | 1,994 | -48% | 0 | 0 | — |
case-04 | pass→pass | 6,999 | 8,341 | +19% | 1 | 1 | 0% | 1,280 | 2,727 | +113% | 0 | 0 | — |
case-05 | pass→pass | 12,595 | 10,484 | -17% | 1 | 1 | 0% | 1,770 | 3,351 | +89% | 0 | 0 | — |
case-11 | fail→fail | 26,178 | 58,551 | +124% | 1 | 1 | 0% | 3,474 | 1,889 | -46% | 0 | 0 | — |
case-06 | pass→pass | 10,077 | 10,603 | +5% | 1 | 1 | 0% | 1,539 | 3,377 | +119% | 0 | 0 | — |
case-07 | pass→pass | 17,652 | 22,681 | +28% | 1 | 1 | 0% | 2,659 | 3,655 | +37% | 0 | 0 | — |
case-08 | pass→pass | 13,804 | 32,199 | +133% | 1 | 1 | 0% | 1,835 | 3,589 | +96% | 0 | 0 | — |
case-09 | pass→pass | 23,042 | 27,510 | +19% | 1 | 1 | 0% | 3,486 | 5,355 | +54% | 0 | 0 | — |
case-10 | fail→pass | 8,835 | 6,877 | -22% | 1 | 1 | 0% | 1,567 | 2,283 | +46% | 0 | 0 | — |
case-12 | pass→pass | 8,461 | 10,848 | +28% | 1 | 1 | 0% | 1,405 | 3,240 | +131% | 0 | 0 | — |
case-13 | fail→fail | 15,628 | 8,148 | -48% | 1 | 1 | 0% | 2,623 | 1,591 | -39% | 0 | 0 | — |
case-14 | pass→pass | 7,179 | 7,156 | -0% | 1 | 1 | 0% | 1,027 | 2,364 | +130% | 0 | 0 | — |
case-15 | pass→pass | 6,753 | 5,739 | -15% | 1 | 1 | 0% | 1,206 | 2,262 | +88% | 0 | 0 | — |
case-16 | pass→pass | 6,209 | 6,848 | +10% | 1 | 1 | 0% | 870 | 2,625 | +202% | 0 | 0 | — |
case-17 | fail→fail | 18,802 | 10,589 | -44% | 1 | 1 | 0% | 2,335 | 1,614 | -31% | 0 | 0 | — |
case-18 | pass→pass | 14,434 | 16,057 | +11% | 1 | 1 | 0% | 1,942 | 3,442 | +77% | 0 | 0 | — |
case-19 | pass→pass | 11,000 | 10,758 | -2% | 1 | 1 | 0% | 1,666 | 3,109 | +87% | 0 | 0 | — |
case-20 | fail→fail | 25,075 | 14,558 | -42% | 1 | 1 | 0% | 2,891 | 1,937 | -33% | 0 | 0 | — |
case-21 | pass→pass | 17,585 | 22,456 | +28% | 1 | 1 | 0% | 2,413 | 4,125 | +71% | 0 | 0 | — |
case-22 | pass→fail | 44,319 | 11,237 | -75% | 1 | 1 | 0% | 3,186 | 1,881 | -41% | 0 | 0 | — |
case-23 | pass→fail | 23,894 | 9,986 | -58% | 1 | 1 | 0% | 3,415 | 1,875 | -45% | 0 | 0 | — |
case-24 | pass→fail | 18,885 | 46,081 | +144% | 1 | 1 | 0% | 3,121 | 2,152 | -31% | 0 | 0 | — |
case-25 | pass→pass | 21,904 | 21,180 | -3% | 1 | 1 | 0% | 3,419 | 4,852 | +42% | 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. 25 cases were attempted, and 15 counted toward the lift figure. The other 10 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -8 percentage points is the difference between those two pass rates over the 15 comparable cases. 6 cases got worse with the skill loaded, and they are included in that figure.
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.