mcpField
D
dividend-tracking

dividend-tracking

github.com/aojdevstudio数据与数据库33038 次安装5 天前更新
代码仓库

关于 dividend-tracking

用于从本地 SQLite 数据库跟踪股息收入的工作流技能,面向需要分析投资收入的人士。它规定先同步交易记录,再按月份和股票代码汇总,并提醒当前月份数据可能尚未完整。

主要功能

  1. 01先刷新交易数据再读取
  2. 02按股票代码和月份查询股息
  3. 03汇总月度收入并对照目标
  4. 04按过去 12 个月收益率评估
  5. 05提示月末数据延迟

适用场景

  1. 01同步交易后查看已收股息
  2. 02将月度股息收入与目标比较
  3. 03按过去 12 个月收益率评估持仓

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aojdevstudio/finance-guru --skill dividend-tracking

安装后在 Claude Code 中输入/dividend-tracking确认已加载。

详细介绍

股息追踪

目的

从本地数据库 transactions 表中读取已收股息记录(先刷新同步),并报告第 2 层收入与目标的对比情况。

family_office.db 是权威数据源。Dividends 表及其 Apps Script 自动化已于 2026-07-31 停用。

步骤 0:刷新(必须先同步)

股息记录来自数据库,必须先刷新,确保收入数据不会过时。遵循共享的 先同步 + 读数据库 模式。

uv run python -m src.integrations.snaptrade.sync_transactions_db          # writes transactions
uv run python -m src.integrations.snaptrade.sync_transactions_db --show   # confirm freshness

完成标准:在读取任何股息之前,同步命令已报告成功。

不要以 MAX(synced_at) 是否推进作为判断依据。 活动同步通过 dedupe_key 实现幂等,仅为实际写入的行添加时间戳,因此,如果运行时没有发现新活动,时间戳就不会变化。已于 2026-08-04 验证:同步报告 2690 fetched, 0 new, 2690 duplicates skipped,且 MAX(synced_at) 保持为上次运行的值。这是正常的无操作,并不表示数据表过时。

请改为查看命令本身的输出行:

  • N new 大于 0,且时间戳推进 → 已导入新活动。
  • 0 new, N duplicates skipped → 数据已完整,时间戳未变化是正常的。
  • 命令出错或没有报告任何内容 → 确实发生故障,请停止。

完整性由去重键保证,而不是由时间戳保证。

**月末延迟:**分配款会在数天内陆续入账,因此当月数据大约要到次月 3 日或 4 日才完整。2026-07-31,7 月月末读取到 30 笔付款;该月最终结算为 42 笔付款,高出约 17%。切勿将尚未完整的当月数据与已结束的前几个月比较,也切勿在当月结束前将月度环比下降称为下降趋势。

读取股息

sqlite3 family_office.db \
  "SELECT date, symbol, amount, description FROM transactions WHERE type = 'DIVIDEND' ORDER BY date;"

每行包含 date、symbol、amount 和 description。空值 symbol 的股息已在活动同步期间解析出股票代码(从 description 中解析,例如 ... ETF (SCHD),与持仓/期权的股票代码回退逻辑一致),因此 symbol 是可靠的。

去重无需外部台账:活动同步通过 dedupe_key 实现幂等,因此重复运行不会重复计数。

月度分析

按股票代码和月份汇总:

sqlite3 family_office.db \
  "SELECT strftime('%Y-%m', date) AS month, symbol, ROUND(SUM(amount), 2) AS received
   FROM transactions WHERE type = 'DIVIDEND'
   GROUP BY month, symbol ORDER BY month DESC, received DESC;"

月度总额与第 2 层目标的对比:

sqlite3 family_office.db \
  "SELECT strftime('%Y-%m', date) AS month, ROUND(SUM(amount), 2) AS total
   FROM transactions WHERE type = 'DIVIDEND' GROUP BY month ORDER BY month DESC LIMIT 12;"

评估标准

  • 根据过去 12 个月的收益率评估持仓,而不是根据月度分配变化。
  • 对于基于期权的基金,月度分配变动 ±5-15% 属于正常情况。不要将其视为风险并发出警报。
  • **只有以下情况才构成卖出触发的危险信号:**持续下跌超过 30%、净资产值侵蚀,或策略变更。正常波动不属于此类情况。

保证金覆盖

股息收入与保证金利息的比率是决定加仓触发条件的覆盖率。请参阅 margin-management 技能;此处不要重新计算阈值。

CSV 备用方案

imports/Dividend_Positions_MMM-DD-YYYY.csv(Fidelity 股息视图导出文件)仍可作为手动对账数据源,以备实时活动同步不可用时使用。它不是主要数据路径。

参考文件

  • 用户档案:user-profile.yaml
  • 先同步模式:.claude/skills/_shared/SyncFirstDbRead.md
  • 收益工具框架:fin-guru/data/modern-income-vehicles.md

仅供教育用途,不构成投资建议。股息分配并无保证,过去的收益率不能预测未来收入,基于期权的收益基金存在本金损失风险。采取行动前,请咨询持牌金融和税务专业人士。

技能类型:领域(工作流指导) 执行方式:SUGGEST 优先级:高

评论

支持 Markdown