BSE) 是做什么的?
使用网络搜索(不接入实时市场数据接口)对一只或多只 NSE/BSE 上市的印度股票进行结构化、数据驱动的分析。输出结果为可供其他技能或会话复用的 JSON 文件,以及聊天中的可读摘要。
这是一个独立的技能——它不依赖也不调用 trader-* 插件技能(那些是美国市场、基于数据接口驱动的)。它专用于印度股票,基于网络搜索驱动。
硬性要求——始终遵守
- 非财务建议。 每份报告——无论是聊天内联报告还是 JSON 的
disclaimer字段——都必须声明这是来自公开来源的信息分析,而非投资建议,用户应在行动前向 SEBI 注册顾问核实。切勿将任何推荐表述为确定无疑。 - 先询问模式。 在研究之前,始终使用
ask_user_input_v0询问用户选择日内交易还是长期投资,除非用户的消息中已明确说明(例如“日内交易”、“今日短线” → 日内交易;“投资两年” → 长期)。如果模棱两可,则必须询问。 - 仅网络搜索 获取价格、新闻、计划、申报文件。绝不捏造价格、日期或申报文件。如果通过网络搜索无法找到某个数字,则将其标记为
null并附上说明,不要猜测。 - 来源优先级(在
sources_used中引用实际使用的来源):- 主要/官方来源:BSE(bseindia.com)、NSE(nseindia.com)、PIB/政府部委新闻稿、SEBI、联邦预算文件
- 券商研究:Groww、Zerodha Varsity/Pulse、Upstox、Angel One
- 主流财经新闻(用于“当前新闻”):Economic Times、Moneycontrol、LiveMint、Business Standard
- 避免使用没有署名或缺乏一手来源的低质量聚合器/博客内容。
- 写入 JSON 文件 到工作目录下的
trader/stock-analysis.json(如果trader/文件夹不存在则创建),并在每次运行时生成,然后根据相同的数据在聊天中呈现人类可读的摘要。如果present_files可用,同时展示该 JSON 文件。
工作流程
步骤 1 — 收集输入
从用户消息中提取:
- 股票:股票代码或公司名称。如果只给出了公司名称,则通过网络搜索解析为 NSE/BSE 代码(例如“Reliance” → NSE 的
RELIANCE/ BSE 的500325)。 - 预算(₹),如果消息中已说明。如果没有,则在步骤 2 中收集——无论是单只股票还是多只股票,始终询问预算,因为可负担性是四个评分组成部分之一。如果用户拒绝提供,则按之前的方式将可负担性的权重重新分配到其他三个组成部分中。
步骤 2 — 询问模式和预算
在一次调用 ask_user_input_v0 中最多提出两个问题:
- “这是用于日内交易,还是长期投资?”— 选项:
日内交易、长期投资 - “你的预算是多少?”— 即使对于单只股票且无需比较,也始终询问,因为可负担性是评分的一部分。仅当用户消息中已明确说明预算金额时才跳过。 仅当用户自己的措辞已经明确表达了交易模式时,才跳过模式问题——如果你跳过了,请在回应中说明你推断的模式。即使跳过了模式问题,预算仍然要单独询问(或确认)。
步骤 3 — 研究(每只股票,通过 web_search / web_fetch)
对每只股票分别进行搜索,涵盖以下内容:
- 当前价格及近期走势 — 最新成交价、今日/最近百分比变化、52周范围(券商网站或新闻)。
- 当前新闻 — 过去1-4周的特定公司新闻。
- 公司公告/申报文件 — BSE/NSE 公告:业绩、董事会会议、资本支出批准、合同、融资、发起人行为。搜索
"<公司> BSE announcement"/"<公司> NSE corporate announcement",如果可能则抓取 BSE/NSE 页面;如果交易所网站阻止抓取,则退而求其次使用券商网站或同一申报文件的新闻报道。 - 即将推出的政府计划 — PLI 计划资格、预算拨款、与公司所在行业相关的行业政策(搜索 PIB/部委来源)。
- 即将开展的公司项目 — 新工厂、产能扩张、资本支出计划、订单获胜、产品发布——如果声明了,则包含预期时间表。
- 分析师/券商观点 — 来自 Groww/Zerodha/Upstox/Angel One 研究的目标价格或展望(如果有)。
根据股票数量调整搜索深度:1只股票 → 彻底搜索(6–10次搜索);3只或以上股票 → 每只股票进行 3–5 次重点搜索,优先考虑最新信息。
搜索时间范围——与步骤 2 中选择的模式关联。 印度券商/图表网站通常将价格历史暴露为标签页:1D、5D、1M、6M、YTD、1Y、5Y、Max。在选择搜索窗口时模仿此约定:
- 日内交易 → 仅使用
1D、5D、1M窗口(例如"<公司> share price today"、"<公司> share price 5 day"、"<公司> stock October 2026"使用实际的当前月份/年份)。丢弃或降低任何超过约 1 个月的旧信息的权重;它们与当日交易无关。如果价格结果冲突或带有不同日期,优先选择最新日期的结果,并明确标记价格可能已经过时,而不是将其呈现为当前价格(搜索没有实时数据流)。 - 长期投资 → 使用剩余窗口:
6M、YTD、1Y、5Y、Max(例如"<公司> stock performance 1 year"、"<公司> 5 year return"、"<公司> all-time high low"、"<公司> YTD performance")。这会显现多年的催化剂、历史波动性,以及当前新闻是短期波动还是长期趋势的一部分——不要仅依赖过去一周的新闻来做长期判断。
步骤 4 — 对每只股票评分(0–100)
计算四个子分数,每个 0–100 分,然后计算加权总分。展示你的组成部分分数,不要只断言一个最终数字。
| 组成部分 | 权重 | 衡量内容 |
|---|---|---|
| 新闻情绪与动能 | 30% | 近期新闻/公告的净基调(发现的正面催化剂 vs. 负面/风险因素) |
| 即将推出的催化剂 | 30% | 具体的、有日期或近期计划/项目/合同,可能推动股价——如果有日期且具体则更强,如果推测性则更弱 |
| 可负担性(预算匹配) | 20% | 仅当给出了预算:预算在多大程度上允许建立有意义的仓位(能买入的整股数量,在给定列表中分散投资的能力)——如果没有给出预算,则将此权重按比例重新分配到其他三个组成部分中 |
| 风险水平 | 20%(反向:风险越低 → 分数越高) | 近期价格波动、行业/监管风险、新闻中可见的杠杆/债务标志所暗示的波动性 |
简明记录每个组成部分的理由(1-2行),使分数不是黑箱。
步骤 5 — 时机建议
- 日内模式:根据通过搜索(券商图表页面、新闻)找到的最新价格/水平,建议一个合理的入场区间(例如,“接近今日支撑位 ₹X,确认突破 ₹Y 后”),以及离场/止损区间。明确声明日内水平具有时效性,搜索数据可能在市场开盘时已经过时——建议用户在行动前在其券商终端上确认实时水平。不要声称具有实时准确性。
- 长期模式:给出每只股票的理想持有期限估计(例如,“12–24 个月,与 PLI 计划支付时间表挂钩”,或“3-5 年,等待资本支出驱动的产能翻倍在盈利中反映”),明确与步骤 3 中发现的催化剂时间线(计划/项目完成日期)挂钩,而不是使用通用的默认期限。
步骤 6 — 排名与推荐(多只股票 + 预算)
如果给出了多只股票和预算:按总分排名,然后说明预算最支持哪只(哪些)股票——考虑股价与预算(整股可负担性)的关系,以及将预算分散到排名靠前的股票进行多元化投资是否优于集中投资于单一最高分股票。解释这种权衡;不要只默默地挑选一个。
步骤 7 — 输出
JSON(写入 trader/stock-analysis.json,完整模式见 references/schema.md):
mode(intraday | long_term)、budget、generated_at、disclaimerstocks[]:每只股票包含symbol、exchange、last_price、price_as_of、scores(news、catalysts、affordability、risk、total)、score_notes、news_summary、catalysts(数组,包含 description 和 expected date,如果已知)、filings(数组)、timing(日内交易的 entry/exit,或长期投资的holding_period)、sources_usedrecommendation:排名列表 + 预算分配理由(如果适用)
聊天摘要:与以上相同内容的人类可读简洁版本——每只股票的分数 + 一行理由、时机/持有建议、预算推荐以及免责声明。不要将原始 JSON 转储到聊天中;总结它,如果使用了 present_files,则提及文件已保存。
参见 references/schema.md 了解确切的 JSON 字段名称及示例。