{"slug":"a-fund-monitor","title":"a-fund-monitor","summary":"A股基金净值监控：盘中实时估值 + 盘后实际净值，定时推送到 Telegram。","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-18T13:23:46.768487Z","repo":{"url":"https://github.com/aAAaqwq/AGI-Super-Team","stars":105,"forks":24,"license":"MIT","updatedAt":"2026-10-08T10:21:39Z"},"bodyHtml":"<hr>\n<p>name: a-fund-monitor\ndescription: \"A股基金净值监控：盘中实时估值 + 盘后实际净值，定时推送到 Telegram。\"\nversion: 2.1.0\ntriggers:</p>\n<ul>\n<li>A股 基金 监控 预测 净值 估值</li>\n<li>fund monitor A-share NAV estimate</li>\n<li>东方财富 基金 API</li>\n</ul>\n<hr>\n<h1>A股基金监控</h1>\n<p>A股基金净值监控，支持盘中实时估值和盘后实际净值，通过 OpenClaw cron 推送到 Telegram 私聊。</p>\n<h2>架构</h2>\n<pre><code>fund_monitor.py (纯 Python，无外部依赖)\n  ├── estimate 模式 → fundgz.1234567.com.cn (盘中实时估值)\n  └── nav 模式      → api.fund.eastmoney.com/f10/lsjz (收盘净值)\n\nOpenClaw cron (isolated agentTurn)\n  ├── 09:30-19:00 → estimate 模式（收盘后先推估值，净值当晚才公布）\n  └── 19:00 之后  → nav 模式（收盘实际净值）\n  └── stdout → delivery announce → Telegram 私聊\n</code></pre>\n<p><strong>关键路径</strong>: <code>skills/a-fund-monitor/scripts/</code>（本仓库）</p>\n<h2>手动执行</h2>\n<pre><code># 盘中估值（控制台输出）\npython3 scripts/fund_monitor.py estimate\n\n# 收盘净值（控制台输出）\npython3 scripts/fund_monitor.py nav\n</code></pre>\n<h2>Cron 定时任务</h2>\n<p>OpenClaw cron，使用 <strong>Asia/Shanghai</strong> 时区。</p>\n<table>\n<thead>\n<tr>\n<th>北京时间</th>\n<th>模式</th>\n<th>数据源</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>10:30</td>\n<td>盘中估值</td>\n<td>fundgz 接口</td>\n</tr>\n<tr>\n<td>12:30</td>\n<td>盘中估值</td>\n<td>同上</td>\n</tr>\n<tr>\n<td>14:30</td>\n<td>盘中估值</td>\n<td>同上</td>\n</tr>\n<tr>\n<td><strong>22:00</strong></td>\n<td>收盘净值</td>\n<td>lsjz 接口（避开 20:30 数据未发布，QDII 滞后 1 天）</td>\n</tr>\n</tbody>\n</table>\n<p><strong>合并为 1 个 cron job</strong>: <code>04a185b2-f8ae-454e-b454-bc1944ca5c00</code></p>\n<pre><code>Cron:     30 10,12,14,22 * * 1-5 (Asia/Shanghai)\nRuntime:  isolated agentTurn (changqing)\nModel:    minimax/MiniMax-M3 (fallback: deepseek/deepseek-v4-pro)\nTimeout:  300s\nDelivery: announce → telegram:8518085684 (Daniel 私聊)\n</code></pre>\n<p><strong>v2.1.1 (2026-06-22) 调整</strong>：20:30 → 22:00。多数基金 21:00-22:30 才陆续发布 NAV，旧时间会拿到 4-5 天前的旧数据。同时叠加「今日过滤 + QDII 标记 + HTTP 重试」三重防护。</p>\n<h3>模式判断逻辑</h3>\n<pre><code>北京时间 ∈ [09:30, 19:00) → estimate\n北京时间 ∈ [19:00, 次日)  → nav\n</code></pre>\n<p><strong>投递目标</strong>: <code>telegram:8518085684</code>（Daniel Li 私聊），accountId <code>changqing</code></p>\n<h2>添加/删除基金</h2>\n<p>编辑 <code>fund_monitor.py</code> 中的 <code>FUNDS</code> 列表：</p>\n<pre><code>FUNDS = [\n    (\"003304\", \"前海开源核心资源A\"),\n    # ... 添加 (\"代码\", \"简称\")\n]\n</code></pre>\n<h2>API 参考</h2>\n<p>详见 <code>references/eastmoney-api.md</code>。</p>\n<h2>变更记录</h2>\n<table>\n<thead>\n<tr>\n<th>日期</th>\n<th>版本</th>\n<th>变更</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>2026-06-22</td>\n<td>v2.1.1</td>\n<td>20:30 → 22:00 避免旧数据；脚本升级为「今日过滤 + QDII 标记 \uD83C\uDF0F + HTTP 重试」；cron model 改为 minimax primary（避开 glm-5.1 限流）；timeout 提到 300s</td>\n</tr>\n<tr>\n<td>2026-05-25</td>\n<td>v2.1.0</td>\n<td>4 个 cron 合并为 1 个(逗号分隔小时)；从 Hermes 迁移到 OpenClaw cron；推送目标改为 Daniel 私聊(8518085684)；超时提至 180s；19:00 前走估值避免陈旧数据</td>\n</tr>\n<tr>\n<td>2026-05-22</td>\n<td>v2.0.0</td>\n<td>初始 Hermes cron 版本</td>\n</tr>\n</tbody>\n</table>\n<h2>Pitfalls</h2>\n<ul>\n<li><strong>超时</strong>：14 只基金顺序请求，API 偶发慢速，cron timeout 设为 180s。</li>\n<li><strong>NAV 涨跌幅字段</strong>：东方财富 lsjz API 的涨跌幅字段是 <code>JZZZL</code>（净值增长率），不是 <code>NAVCHGRT</code>。</li>\n<li><strong>估值 API 返回 JSONP</strong>：<code>fundgz.1234567.com.cn</code> 返回 <code>jsonpgz({...});</code> 格式，需正则提取 JSON。</li>\n<li><strong>HTTP 请求头</strong>：两个 API 都需要 <code>Referer: https://fund.eastmoney.com/</code> 和 <code>User-Agent</code>，否则可能 403。</li>\n<li><strong>NAV 发布时间不均</strong>：多数基金 21:00-22:30 才陆续发布 NAV（QDII 滞后 1 天），脚本已升级为「今日过滤 + QDII 标记 \uD83C\uDF0F + HTTP 重试 2 次」。未发布基金显示「⏳ 待发布 (上次: 日期)」，不混进平均。</li>\n<li><strong>早期 20:30 触发坑</strong>：v2.1.0 之前用 20:30 跑 nav 会拿到 4-5 天前的旧数据（脚本只取 items[0] 不过滤日期），已升级为今日过滤。</li>\n<li><strong>QDII 基金估值时间</strong>：广发纳斯达克100联接的估值时间显示为 04:00（美股收盘时间），非 A 股 15:00。</li>\n<li><strong>周末/节假日</strong>：cron <code>1-5</code> 仅排除周末，中国法定节假日仍会触发（产出的是上一交易日数据）。</li>\n</ul>\n","files":[{"path":"references/eastmoney-api.md","sizeBytes":2888,"isText":true},{"path":"scripts/fund_estimate.sh","sizeBytes":66,"isText":true},{"path":"scripts/fund_monitor.py","sizeBytes":9002,"isText":true},{"path":"scripts/fund_nav.sh","sizeBytes":61,"isText":true},{"path":"SKILL.md","sizeBytes":4168,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-18T13:24:03.494811Z","sha256":"5EAF9E28FEF3E087EC1ACFABCFCD29E62732D7FEFE20EC64ECC480B1C1DBF2C9","sizeBytes":8004},"review":null,"source":{"repositoryUrl":"https://github.com/aAAaqwq/AGI-Super-Team","path":"skills/a-fund-monitor","license":"MIT","commit":"331ecd3c1dd6597c351e5dc5d7a7d9f6e6bcab13","subtreeSha":"8495C1ECFFE6CEE26FEA59E884EF01D4375970D070E293E6D13F08242DA7321C","lastSyncedAt":"2026-10-08T15:23:27.275331Z"},"reviewedAt":"2026-09-18T13:24:22.403987Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/aAAaqwq/AGI-Super-Team/tree/main/skills/a-fund-monitor"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install aaaaqwq-agi-super-team@llmmart"},{"target":"git","command":"git clone https://github.com/aAAaqwq/AGI-Super-Team.git"}]}