Stock Evaluator
股票评估器(增强版)
⚠️ 关键:必交成果清单
每份分析报告必须包含以下所有内容:
- ☐技术分析(价格行为、技术指标、关键价位、一目均衡表)
- ☐基本面分析(业务、财务状况、竞争地位)
- ☐高级财务指标(F分数、Z分数、M分数、最大回撤、价值陷阱评分)
- ☐投资者画像评分(8位传奇投资者的分析框架)
- ☐估值评估(多种方法结合安全边际)
- ☐看涨与看跌论点(双方论点及平衡性评估)
- ☐明确建议(买入/持有/卖出,附带确信度评级)
- ☐备选标的(若选择"卖出":请提供3-5个更优的替代选项)
- ☐增强型量化风格仪表盘(包含60多项指标、一目均衡表、投资者画像、头条新闻和关键说明的React仪表盘)
如果您无法完成任何一项,请立即停止并请求澄清。
⚠️ 关键:数据完整性规则
零编造政策
严禁编造、估算或臆测任何数值数据点。仪表盘中的每个指标必须来自:
- 附有引用来源的网络搜索结果
- 公司文件(10-K年报、10-Q季报、财报)
- 官方金融数据提供商
如果无法找到数据 → 使用"N/A"或"--"
强制性网络搜索(每次分析最低要求)
在填充仪表盘数据前,您必须执行以下搜索:
| 搜索 # | 查询模板 | 检索到的数据 |
|---|---|---|
| 1 | "[股票代码] 股价 市值 市盈率" | 价格、市值、市盈率 |
| 2 | "[股票代码] 净资产收益率 总资产收益率 利润率 2024年年度报告" | 财务比率 |
| 3 | "[股票代码] 收入增长 盈利增长 2024财年" | 增长率(已报告) |
| 4 | "[股票代码] 皮奥特洛斯基F分数" | F分数(或计算得出) |
| 5 | "[股票代码] 内幕交易 美国证券交易委员会表格4 2025年" | 内部买入/卖出 |
| 6 | "[股票代码] 空头权益 百分比 流通股" | 空头权益 |
| 7 | "[股票代码] 相对强弱指数 平滑异同移动平均线 50日 200日移动平均线 贝塔系数 波动率" | 技术指标 |
| 8 | "[股票代码]分析师目标价共识" | 分析师目标 |
数据源层级
请按此优先级顺序使用数据源:
- 公司官方申报文件(美国证券交易委员会EDGAR数据库,公司投资者关系网站)
- 交易所数据(纽约证券交易所、纳斯达克、伦敦证券交易所官方数据)
- 已验证的金融数据(雅虎财经、谷歌财经、市场观察)
- 美国证券交易委员会表格4(仅用于内幕交易信息)
- 美国金融业监管局/交易所(仅用于卖空头寸信息)
禁止事项
- 使用训练知识获取任何具体的当前数据
- 分析师报告(根据用户偏好)
- 无来源依据的估算
- "常识性"假设
处理不可用数据
| 情况 | 行动 | 显示 |
|---|---|---|
| 搜索后未找到指标 | 显示 "N/A" | 数值: "N/A" |
| 数据已过时(超过1年) | 注明日期 | 数值: "15.2% (2023)" |
| 来源冲突 | 使用最权威的来源 | 在分析中注明 |
| 计算指标(F-Score) | 显示计算过程 | 在文本中解释 |
| 内部数据不可用 | 显示 "N/A" | 内部买入: "N/A" |
关键:零值表示"确实为零" - 切勿用零值替代缺失数据。
标准化指标标签
在仪表板中使用这些确切标签(与参考截图匹配):
第1行:价格与估值 | 财务表现
| 标签 | 备注 |
|---|---|
| 价格: | XX.XX美元或XX.XX欧元 |
| 市值: | XXB美元或XXB欧元 |
| 追踪市盈率: | XX.XX |
| 预期市盈率: | XX.XX |
| 子行业市盈率: | XX.XX 或 不适用 |
| 市盈增长比率(1年): | X.XX,基准(<1) |
| 净资产收益率: | XX.XX%,基准(>20%) |
| 总资产收益率: | XX.XX%,基准(>10%) |
| 净利率: | XX.XX%,基准(>20%) |
| 营业利润率: | XX.XX%,基准(>20%) - 注:此处为“营业”利润率,非“经营”利润率 |
| 毛利率: | XX.XX%,基准(>40%) |
| 投入资本回报率: | XX.X%,基准(>15%) |
第2行:增长指标 | 风险指标
| 标签 | 备注 |
|---|---|
| 营收(同比): | XX.XX%,基准(>10%) - 仅限已报告数据 |
| 盈利(同比): | XX.XX%,基准(>0%) - 仅限已报告数据 |
| 每股收益(TTM): | $X.XX |
| 预期每股收益: | $X.XX |
| 增长率: | 封顶:X.X% / 未封顶:X.X% |
| 分析师目标价: | $XX.XX |
| CRS(0-1): | X.XX,基准(中等) |
| 债务权益比(最近季度): | X.XX,基准(0.5-1) |
| 皮奥特洛斯基F分数: | X,基准(≥7) |
| 奥特曼Z分数: | X.XX,基准(>3) |
| 贝尼什M分数: | X.XX,基准值 (<-1.78) |
| 价值陷阱: | XX(标签) |
第3行:流动性 & 自由现金流 | 内部人士交易 & 市场情绪 & 分类
| 标签 | 备注 |
|---|---|
| 流动比率: | X.XX,基准值 (1-2) |
| 现金: | $X.XB |
| 债务: | $X.XB 或 不适用 |
| 自由现金流5年增长率: | XX.X%,基准值 (>5%) |
| 自由现金流收益率: | X.XX%,基准值 (>4%) |
| 自由现金流利润率: | XX.XX%,基准值 (>15%) |
| 派息比率: | XX.XX%,基准值 (<50%) |
| 买入(过去12个月): | X - 源自SEC Form 4表格 或 不适用 |
| 卖出(过去12个月): | X - 源自SEC Form 4表格 或 不适用 |
| 净股份数 (12个月): | +/-XX千股 - 来自SEC表格4或不适用 |
| 做空比例 (%): | X.X% |
| 市场情绪 / 文章数: | +X.XXX / XX (积极/消极) |
| 股票类型 + 股息收益率: | 合并:“股票类型:增长型” + “股息收益率:X.XX%” |
| 板块/行业: | 合并:“板块 / 行业” |
第4行:质量评分 | 护城河与其他
| 标签 | 备注 |
|---|---|
| CQVS: | XX.XX 附基准范围 |
| 标签: | 强/中/弱 |
| 估值: | XX.XX |
| 质量: | XX.XX |
| 强度: | XX.XX |
| 诚信度: | XX.XX |
| 巴菲特护城河: | 与基准比较 (4-7) |
| 格林布拉特(神奇公式): | 盈利率:X.X% / 资本回报率:X.X% 或 不适用 |
| 贝塔值:+ 1年波动率: | 组合显示:"贝塔值:X.XX" + "1年波动率:XX.X%" |
| 盈利预测: | XX.X% 与基准比较 (>80%) |
| 最大回撤 (5年): | -XX.X% 带标签 (低/中/高) |
| 数据完整性:+ 数据质量: | 组合显示:"XX.X%" + "高/中/低" |
标准化基准 (单一事实来源)
使用以下确切阈值进行颜色编码:
| 指标 | 绿色 (良好) | 黄色 (中性) | 红色 (警告) |
|---|---|---|---|
| 净资产收益率 | >20% | 10-20% | <10% |
| 总资产收益率 | >10% | 5-10% | <5% |
| 利润率 | >20% | 10-20% | <10% |
| 营业利润率 | >20% | 10-20% | <10% |
| 毛利率 | >40% | 25-40% | <25% |
| 投资资本回报率 | >15% | 8-15% | <8% |
| 负债权益比 | <1 | 1-2 | >2 |
| 流动比率 | 1-2 | 0.5-1 或 2-3 | <0.5 或 >3 |
| 皮奥特洛斯基F值 | ≥7 | 4-6 | ≤3 |
| 奥特曼Z值 | >2.99 | 1.81-2.99 | <1.81 |
| 贝尼什M值 | <-2.22 | -2.22 至 -1.78 | >-1.78 |
| 市盈率相对盈利增长比率 (1年) | <1 | 1-2 | >2 |
| 相对强弱指数 (14) | 30-50 | 50-70 | >70 或 <30 |
| 空头头寸 / 卖空比例 | <5% | 5-10% | >10% |
| 自由现金流收益率 | >5% | 2-5% | <2% |
| 自由现金流利润率 | >15% | 10-15% | <10% |
| 股息收益率 | >2% | 1-2% | <1% 或 >8% |
| 价值陷阱 | 0-39 | 40-59 | 60-100 |
| 最大回撤 | >-30% | -30% 至 -50% | <-50% |
| 营收增长率 | >10% | 0-10% | <0% |
| 盈利增长率 | >0% | -10% 至 0% | <-10% |
概述
此功能提供机构级别的潜在股票投资评估。与审查现有持仓的投资组合分析不同,此功能评估您正在考虑买入的股票。或决定是否购买。
评估回答:
- 我是否应该买入这支股票?
- 我应该在什么价位进场?
- 我应该分配多少资金?
- 我的上行和下行空间分别是多少?
- 我应该在何时卖出?
默认货币:€(欧元)
仪表板中的所有货币值都应显示为欧元(€)作为默认货币:
- 价格:€42.13
- 市值:€783亿
- 分析师目标价:€56.45
- 入场/止损/目标价位:€38,€35,€56
- 每股收益值:€1.39,€1.91
重要提示:使用报告的增长速率
对于仪表板指标"收入增长率"和"收益增长率":
- 使用报告增长率- 而非基础、调整或有机增长率
- 报告数据反映了包括汇率变动、收购、剥离在内的实际GAAP/IFRS数据
- 这能更准确地反映投资者实际获得的情况
- 示例:如果基础增长率为7%但报告增长率为2.2%,则使用2.2%
- 盈利同理:使用报告每股收益增长率,而非调整后的每股收益增长率
核心用途
股票评估器适用于:
- ✅ 在购买前评估潜在投资
- ✅ 分析观察列表中的候选股票
- ✅ 获取带有具体价格的买入/持有/卖出建议
- ✅ 比较多个投资机会
- ✅ 为当前考虑的投资寻找更好的替代方案
不适用于:
- ❌ 审查现有投资组合持仓(请使用投资组合分析器功能)
- ❌ 一般性股票市场问题
- ❌ 股票筛选或从零开始发现
- ❌ 期权、衍生品或加密货币分析
评估框架
股票评估的五大支柱
1. 估值评估
- 股票是被低估、估值合理还是被高估?
- 多种估值方法(DCF、相对估值、彼得·林奇法、资产基础法)
- 安全边际要求(15-30%)
- 包含置信区间的公允价值估算
2. 质量分析
- 商业模式强度与竞争护城河
- 财务健康状况与趋势(5-10年视角)
- 管理层质量与资本配置
- 行业地位与竞争优势
3. 时机评估
- 技术面设置与入场点
- 近期催化剂与事件
- 市场情绪与仓位
- 最佳入场价格区间
4. 仓位规模
- 投资组合配置建议(占比)
- 基于信心、风险与分散化考量
- 最大配置上限
- 风险调整后的仓位规模
5. 投资信心评级
- 强烈买入:信心度高,估值明显偏低,风险较低
- 买入:机会良好,估值合理,风险适中
- 持有:估值公允,当前无明显买入理由
- 回避:估值过高,存在显著风险,或有更优替代选择
价值陷阱指标
定义说明
价值陷阱指股票看似估值偏低(低市盈率、低市净率),实则因基本面问题而廉价。这类股票在看似"便宜"的情况下持续下跌。
价值陷阱评分计算(0-100分,分数越低越真实,越高越可能是陷阱)
评估维度(出现陷阱特征时累加分数):
1. 价格动能(最高25分)
- 6个月股价变动对比市场:若跑输超过20%,则加15-25分
- 12个月股价变动:持续下跌则加10-20分
- 若价格动能呈积极态势:加0分
2. 盈利质量(上限25分)
- 每股收益趋势(3年期):下降则加10-25分
- 营收趋势:下降则加5-15分
- 利润率趋势:收窄则加5-10分
- 若盈利质量强劲:加0分
3. 资产负债表健康状况(上限25分)
- 债务水平是否上升?是则加5-15分
- 现金流为负或下降?是则加10-20分
- 营运资本是否恶化?是则加5-10分
- 若资产负债表健康:加0分
4. 估值背景(上限25分)
- 低估值倍数是否由基本面恶化所导致?是则加10-25分
- 将当前基本面与估值倍数较高时期进行对比
- 若基本面支撑当前估值:加0分
评分公式
Value Trap Score = Momentum Penalty + Quality Penalty + Balance Sheet Penalty + Valuation Penalty
(分数范围从0到100,其中0 = 明确真实价值,100 = 明确价值陷阱)
分数解读
- 0-19:真实价值(可能被低估,基本面完好)- 绿色
- 20-39:可能真实(轻微担忧,需监控)- 浅绿色
- 40-59:谨慎区域(信号混杂,需谨慎行事)- 黄色
- 60-79:可能陷阱(多个危险信号)- 橙色
- 80-100:强烈陷阱信号(避免)- 红色
展示格式
Value Trap: 21 (Genuine)
颜色编码:绿色 <40,黄色 40-60,红色 >60
投资者类型评分
根据8位著名投资大师的理念对每只股票进行评分(0-10分制)。这有助于用户了解该股票适合哪种类型的投资者。
1. 沃伦·巴菲特评分
基于《巴菲特之道》——寻求持久的竞争优势
关键指标权重:
- 净资产收益率(>20%):2分
- 利润率(>15%):2分
- 自由现金流为正且增长:2分
- 护城河强度(品牌、定价能力):2分
- 可预测的收益:2分
巴菲特青睐:业务可预测、有定价能力、资本支出需求低、盈利持续稳定
2. 查理·芒格评分
基于《穷查理宝典》——思维格栅模型,逆向思考
重点关注:可能出错的环节(逆向原则)
评分方式:从10分起,扣除扣分项:
- 高负债(负债权益比 > 2):扣3分
- 收益波动大:扣2分
- 管理层历史表现不佳:扣2分
- 无竞争优势护城河:扣2分
- 会计预警信号:扣3分
3. 瑞·达利欧评分
基于《原则》——全天候投资组合,经济机器理解
关键指标:
- 负债权益比 < 1:2分
- 贝塔系数 < 1:2分
- 周期内利润率稳定:2分
- 收益波动率低:2分
- 具备抗衰退历史:2分
达利欧偏好:去杠杆化操作、运营效率、周期韧性
4. 彼得·林奇评分
基于《彼得·林奇的成功投资》——GARP(合理价格增长策略)
主要指标:市盈率相对盈利增长比率(市盈率 ÷ 增长率)
- 市盈率相对盈利增长比率 < 0.5:10分
- 市盈率相对盈利增长比率 0.5-1.0:8分
- 市盈率相对盈利增长比率 1.0-1.5:6分
- 市盈率相对盈利增长比率 1.5-2.0:4分
- 市盈率相对盈利增长比率 > 2.0:2分
调整因素:
- 若收益持续增长:+1分
- 若业务易于理解:+1分
- 若处于衰退行业:-1分
5. 本杰明·格雷厄姆评分
基于《聪明的投资者》——安全边际
格雷厄姆标准(每项2分,最高10分):
- 市盈率 < 15
- 市净率 < 1.5
- 流动比率 > 2
- 连续10年盈利
- 连续20年以上派发股息
6. 乔尔·格林布拉特得分
基于《打败市场的小书》——神奇公式
结合两项排名:
- 收益率(息税前利润/企业价值):越高越好
- 资本回报率(息税前利润/净固定资产+营运资本):越高越好
评分方法:综合排名前10% = 10分,按比例递减
7. 约翰·邓普顿得分
基于逆向投资、全球价值投资理念
关键因素:
- 交易价格处于多年低点:+3分
- 不受分析师青睐:+2分
- 尽管市场悲观但基本面强劲:+3分
- 全球视野(非美国机会):+2分
8. 乔治·索罗斯评分
基于《金融炼金术》——反身性
关键因素:
- 动量与趋势强度:3分
- 宏观顺风:3分
- 市场认知转变:2分
- 拐点催化剂:2分
索罗斯偏好:宏观博弈、反身性情境、趋势参与
展示格式
在雷达图周围显示8个带有分数和颜色编码的徽章:
- 绿色(7-10分):高度匹配
- 黄色(4-6.9分):中度匹配
- 红色(0-3.9分):匹配度低
增强技术分析
一目均衡表分析
需计算的组成部分:
- 转换线(Tenkan-sen):(9周期高点 + 9周期低点)/ 2
- 基准线(Kijun-sen):(26期最高价 + 26期最低价)/ 2
- 先行带A:(转换线 + 基准线)/ 2,绘制于26期前方
- 先行带B:(52期最高价 + 52期最低价)/ 2,绘制于26期前方
- 迟行带:当前收盘价绘制于26期后方
云图:先行带A与先行带B之间的区域
需识别并显示的信号:
- TK金叉:转换线上穿基准线(看涨信号) - 用◆标记
- TK死叉:转换线下穿基准线(看跌信号) - 用◆标记
- 云图扭转看涨:云图由红转绿 - 用◆标记
- 云图扭转看跌:云图由绿转红 - 用◆标记
- 价格与云图关系:云图之上(看涨),云图之下(看跌),云图之中(中性)
双重市盈率与增长率比值(PEG)
- 一年期PEG:市盈率 ÷ 一年期预期增长率
- 五年期PEG:市盈率 ÷ 五年历史增长率
- 两者为增长估值提供了不同的视角
自由现金流利润率
- 公式:自由现金流 / 营收 × 100
- 基准:>15%为优秀,>10%为良好
- 显示相对于销售额的现金生成效率
新闻情绪与空头净额
- 新闻情绪:基于近期文章情绪的-1至+1标度
- 空头净额:流通股中卖空的比例(>10% = 高,<5% = 低)
- 两者均指示市场情绪及潜在的轧空/反转可能性
基本面分析流程
1. 业务理解(始终第一步)
分析内容:
- 这家公司是做什么的?(产品、服务、商业模式)
- 收入来源与构成
- 目标客户与市场
- 竞争优势(护城河来源)
- 市场地位与份额
- 行业动态与趋势
管理层评估:
- CEO背景、任期、业绩记录
- CFO及核心高管
- 资本配置决策(分红、回购、收购、研发)
- 管理层薪酬与利益一致性
- 内部人交易模式(买入是看涨信号)
- 从财报电话会议和股东信看领导力质量
竞争地位:
- 市场份额与趋势
- 主要竞争对手(识别3-5家直接同行)
- 这家公司的差异化是什么?
- 可持续的竞争优势?
2. 财务分析(5-10年视角)
研究流程顺序:
- 首先查看最新的10-K年报- 了解当前业务状况与近期业绩
- 回溯5-10年的历史10-K年报- 理解业务演变过程
- 审阅近2-3年的10-Q季报- 把握当前发展趋势
- 查阅委托声明书- 公司治理与薪酬结构
核心分析指标:
质量基准线:
- 净资产收益率 > 15%
- 净利润率 > 15%
- 毛利率 > 30%
- 负债 < 年度营收
- 正向增长的自由现金流
- 经通胀调整的5年营收增长率
需评估的趋势:
- 营收增长轨迹(加速/稳定/减速?)
- 利润率扩张或收缩(原因?)
- 现金流稳定性与质量
- 资产负债表健康度(负债水平、流动性)
- 投入资本回报率(ROIC)
- 营运资本管理
警示信号:
- 收入增长但利润率下降
- 自由现金流为负或不稳定
- 债务增速快于现金生成速度
- 市场份额流失
- 长期业绩指引未达标
- 会计违规行为
3. 竞争护城河评估
护城河强度:宽广 / 狭窄 / 无
评估来源:
- 网络效应:产品是否随用户增加而改善?
- 品牌忠诚度:品牌实力是否带来定价权?
- 转换成本:转换是否困难/昂贵?
- 监管壁垒:许可证、专利、法规?
- 成本优势:规模、技术、地理位置?
- 无形资产:专利、商标、专有数据?
护城河持久性:
- 竞争优势能维持多久?
- 什么因素可能侵蚀护城河?
- 护城河是在加强还是在削弱?
同业比较:比较该公司与3-5家直接竞争对手的护城河:
- 市场份额趋势
- 盈利能力指标(利润率、净资产收益率)
- 增长率
- 财务实力
4. 高级财务健康状况指标
除了基本的质量指标外,计算这些高级评分以获得更深入的洞察:
皮奥特罗斯基F分数(财务实力)
目的:一个9分制评分,从盈利能力、杠杆率和运营效率方面衡量财务实力。
评分(0-9分,越高越好):
盈利能力(4分):
- 资产收益率 > 0:+1
- 经营活动现金流量 > 0:+1分
- 资产收益率同比改善:+1分
- 经营活动现金流量 > 净利润(盈利质量):+1分
杠杆/流动性(3分):
- 长期债务同比减少:+1分
- 流动比率同比改善:+1分
- 过去一年未发行新股:+1分
运营效率(2分):
- 毛利率同比改善:+1分
- 资产周转率同比改善:+1分
解读:
- 8-9分:财务状况极佳
- 6-7分:财务状况良好
- 4-5分:财务状况尚可
- 0-3分:财务状况薄弱
奥特曼Z值(破产风险)
用途:预测两年内破产概率
公式(适用于公开上市的制造业公司):Z = 1.2(A) + 1.4(B) + 3.3(C) + 0.6(D) + 1.0(E)
其中:
- A = 营运资本 / 总资产
- B = 留存收益 / 总资产
- C = 息税前利润 / 总资产
- D = 市值 / 总负债
- E = 销售额 / 总资产
解读:
- Z > 2.99:安全区(破产风险低)
- Z 1.81-2.99:灰色区(风险中等)
- Z < 1.81:困境区(破产风险高)
注意:对于非制造业公司需调整系数。
贝尼什M值(盈余操纵检测模型)
目的:识别盈余操纵的可能性。
关键指标(简化版):
- 应收账款天数指数(上升=预警)
- 毛利率指数(下降=预警)
- 资产质量指数(上升=预警)
- 销售增长指数(过度增长=预警)
- 折旧指数(下降=预警)
- 销售及管理费用指数(不成比例的变化=预警)
- 杠杆指数(上升=预警)
- 总应计利润与总资产比率(高=预警)
解读:
- M-Score > -1.78:可能存在财务操纵(危险信号)
- M-Score < -1.78:不太可能存在财务操纵(清白)
实用检查(如果无法获取完整的M-Score):
- 应计利润相对于现金流是否持续偏高?
- 应收账款天数是否比营收增长得更快?
- 营收增长时,利润率是否在下降?
- 是否有会计重述或审计师变更?
最大回撤(5年期)
目的衡量最大峰谷价格跌幅。
计算方法:
- 识别过去5年内的最高价格
- 找出复苏前的最低后续价格
- 最大回撤率 % = (最低价 - 最高价) / 最高价 × 100
解读:
- 0-20%:低波动性(防御性股票)
- 20-40%:中等波动性(典型股票)
- 40-60%:高波动性(周期性/成长型股票)
- >60%:极端波动性(投机性股票)
综合评分
实力评分 (0-100):综合以下因素:
- 财务指标(F分数贡献)
- 盈利能力(净资产收益率,利润率)
- 增长率
- 市场地位
诚信评分 (0-100):综合以下因素:
- M分数(盈利质量)
- 现金流与盈利的匹配度
- 会计实务
- 管理层透明度
可预测性分数(0-100):综合指标:
- 收入一致性(低波动性)
- 盈利一致性
- 商业模式稳定性
- 周期性评估
数据质量分数(0-100):
- 财务数据完整性
- 财报时效性
- 审计师质量
- 信息披露透明度
5. 风险分析
公司特有风险:
- 执行风险(管理层能否达成目标?)
- 竞争风险(市场份额流失、新进入者)
- 产品集中度(单一产品依赖)
- 客户集中度(少数大客户)
- 关键人员风险(CEO依赖)
- 财务困境风险(Z值评估)
- 盈利质量风险(M值评估)
行业风险:
- 颠覆性风险(技术或商业模式)
- 周期性风险(经济敏感性)
- 监管风险(政策变化)
- 商品化风险(定价能力弱化)
- 结构性衰退风险(长期不利因素)
宏观风险:
- 经济风险(衰退、通胀、利率)
- 地缘政治风险(贸易战、冲突)
- 货币风险(外汇敞口)
- 市场风险(估值水平、市场情绪)
总体风险水平:低/中/高
综合风险评分:(0-1分制,分值越低越好)
- 包含:Z值、波动性、杠杆率、盈利质量
- <0.30:低风险
- 0.30-0.60:中等风险
-
>0.60:高风险
估值评估
使用多种估值方法- 综合得出公允价值估计。
所需估值方法
1. DCF分析(现金流折现法)
- 预测自由现金流(5-10年)
- 应用适当的折现率(加权平均资本成本)
- 计算终值
- 包含安全边际:15-30%
- 基于不同假设的敏感性分析
2. 相对估值法
- 与3-5家直接可比公司进行比较
- 关键乘数:市盈率、企业价值倍数、市销率、市净率
- 针对增长差异进行调整
- 考虑行业特定乘数
- 使用当前和历史的可比公司平均值
3. 彼得·林奇公允价值法
- 合理价格增长框架
- 比较市盈率与增长率(市盈率相对盈利增长比率)
- 当市盈率 ≈ 增长率时即为公允价值
- 根据质量因素进行调整
4. 资产基础法(如适用)
- 适用于房地产投资信托基金、金融机构、重资产公司
- 账面价值或重置成本
- 净资产价值计算
估值综合
公允价值估算:€X.XX
对各方法进行适当加权:
- 贴现现金流法:40%(若现金流可靠)
- 相对估值法:30%(同业比较)
- 彼得·林奇法:30%(经增长调整)
安全边际:
- 当前价格 vs. 公允价值:折价/溢价 X%
- 必要标准:最低15%安全边际
- 充足标准:15-30%安全边际
- 优秀标准:>30%安全边际
估值结论:
- 价值低估低于公允价值15%以上(买入机会)
- 估值合理在公允价值±15%范围内(持有)
- 估值偏高高于公允价值15%以上(规避/卖出)
技术分析(入场时机)
关注寻找最佳入场点,而非完整技术分析
关键技术要素
1. 价格走势(过去30-60天)
- 当前趋势:上升趋势 / 下降趋势 / 区间震荡
- 近期价格形态
- 成交量趋势(上涨时是否放量?)
- 动量评估
2. 关键价位
- 支撑位:买盘兴趣显现的位置
- 主要支撑位:€X.XX
- 次要支撑位:€X.XX
- 阻力位:卖压增强的位置
- 主要阻力位:€X.XX
- 次要阻力位:€X.XX
3. 技术指标
- RSI(相对强弱指数):
-
70 = 超买(可能回调)
- <30 = 超卖(可能反弹)
- 40-60 = 中性
-
- MACD(移动平均收敛散度):
- 看涨交叉 / 看跌交叉 / 中性
- 动量在加速还是减速?
- 移动平均线:
- 50日移动平均线:€X.XX(价格在其之上/之下?)
- 200日移动平均线:€X.XX(趋势指标)
4. 入场评估
- 技术形态:看涨 / 中性 / 看跌
- 最佳入场点:等待回调至支撑位 / 市价买入 / 等待突破
- 入场价格范围:€X.XX - €X.XX
- 避免高于:€X.XX(风险/回报比不佳)
看涨与看跌案例分析
必备条件:每项分析都必须公平地呈现双方观点。
看涨情景(乐观预期)
潜在上涨空间:+X% 至 €X.XX
- [关键看涨论据1,附具体证据]
- [关键看涨论据2,附具体证据]
- [关键看涨论据3,附具体证据]
实现条件:
- [必要条件1]
- [必要条件2]
看跌情景(悲观预期)
潜在下跌空间:-X% 至 €X.XX
- [关键看跌论据1,附具体证据]
- [关键看跌论据2,附具体证据]
- [关键看跌论据3,附具体证据]
触发条件:
- [风险触发因素1]
- [风险触发因素2]
平衡性评估
哪种情况更有可能发生:[牛市 / 熊市 / 平衡市]
[解释为何某一情况更有可能,需考虑:
- 各方证据的质量
- 历史先例
- 管理层过往记录
- 行业动态
- 当前估值]
投资建议结构
买入建议标准
- 公允价值高于当前价格15%以上(具备足够安全边际)
- 基本面强劲或持续改善
- 技术面呈现合理或看涨态势
- 存在可识别的催化因素
- 风险水平可接受
- 推荐力度:强力买入或买入
持有建议标准
- 公允价值在当前价格±15%范围内
- 基本面稳定,缺乏显著催化因素
- 可能存在更佳投资机会
- 等待更好的入场价格
- 确信度:持有
卖出/避免推荐标准
- 公允价值低于当前价格超过15%(估值过高)
- 基本面恶化
- 存在重大风险
- 有更好的替代选择
- 必须提供3-5个备选标的
- 确信度:避免
仓位规模框架
基于以下因素进行配置推荐:
确信度 + 风险 = 仓位规模
强力买入(高确信度,低风险):
- 仓位规模:投资组合的5-8%
- 最高:10%
买入(中等确信度,中等风险):
- 仓位规模:投资组合的3-5%
- 最高:7%
投机性/高风险:
- 仓位规模:投资组合的1-3%
- 最高:5%
注意事项:
- 多样化需求(避免行业集中度风险)
- 与现有持仓的相关性
- 整体投资组合风险
- 流动性要求
- 用户的风险承受能力(基于项目背景)
入场与退出策略
入场策略
不采用分批建仓策略- 建议采用单次入场方式:
若买入:
- 理想入场价格:€X.XX - €X.XX(最优区间)
- 最高买入价格:€X.XX(高于此价位,风险/回报比不佳)
- 操作方式:
- "按当前市价立即买入"(若当前价位合适)
- "等待回调至€X.XX支撑位买入"(若价格已大幅上涨)
- "突破€X.XX后买入"(若呈突破形态)
- "€X.XX以上不买入"(若估值过高)
退出策略
目标价位(12个月):€X.XX (+X% 上涨空间)
- 保守估计:€X.XX
- 基本情形:€X.XX
- 乐观估计:€X.XX
止损点:€X.XX (-X% 最大损失)
- 技术性止损:关键支撑位下方
- 基本面止损:若投资逻辑失效
卖出条件(逻辑失效情形):
- [具体基本面恶化情况]
- [具体竞争威胁]
- [具体估值门槛]
持有期限:
- 预期时间:[6-12个月 / 1-3年 / 3-5年以上]
- 基于投资类型(波段交易 vs 长期持有)
催化剂识别
识别可能推动股价表现的具体事件。
短期(0-6个月):
- 即将发布的财报:[日期]
- 产品发布:[事件]
- 监管决定:[预期时间]
- 行业活动:[会议、数据发布]
中期(6-18个月):
- 市场扩张计划
- 新产品周期
- 利润率提升举措
- 战略合作伙伴关系
长期(18个月以上):
- 结构性行业趋势
- 市场份额增长
- 技术领导力
- 商业模式演进
关键分析约束
核心原则:
-
基本面分析不使用新闻/媒体报道
- 仅使用公司申报文件(10-K、10-Q、8-K、股东委托书)
- 使用财报电话会议记录
- 不依赖新闻报道或新闻稿
- 例外:近期动态可参考新闻,但需通过申报文件核实
-
把握幅度而非追求精确
- 专注于具有良好安全边际(>15%)的股票
- 无需完美预测
- 大致的正确胜过精确的错误
- 保守的假设优于乐观的假设
-
长期视角
- 分析5-10年的趋势,而不仅仅是最近几个季度
- 暂时的挫折与结构性问题
- 可持续的竞争优势最为重要
- 短期噪音与长期信号
-
进行同类比较
- 以3-5个直接竞争对手为基准
- 不仅仅是广泛的市场指数
- 行业特定的指标和规范
- 根据公司规模和成熟度进行调整
-
知识诚实
- 承认局限性和未知因素
- 公平地呈现看涨和看跌的观点
- 在适当的时候说“我不知道”
- 当证据发生变化时更新观点
输出模板
# [SYMBOL] - [Company Name] Evaluation
## ⚠️ DELIVERABLES CHECKLIST ✓
☑ Technical Analysis Complete
☑ Fundamental Analysis Complete
☑ Valuation Assessment Complete
☑ Bull vs. Bear Case Complete
☑ Clear Recommendation: **[BUY / HOLD / SELL]**
☑ Alternative Candidates: [If SELL, list 3-5 alternatives below]
---
## 📊 Executive Summary
[2-3 sentence bottom-line assessment with key reasoning]
**Recommendation: [BUY / HOLD / SELL]**
**Conviction: [Strong Buy / Buy / Hold / Avoid]**
---
## 💰 Valuation Assessment
**Fair Value Estimate: €X.XX** (Current: €X.XX)
- **Margin of Safety: X%** [Adequate >15% / Insufficient <15%]
- **Valuation: [UNDERVALUED / FAIRLY VALUED / OVERVALUED]**
| Valuation Method | Fair Value | vs. Current | Weight |
|-----------------|-----------|-------------|--------|
| DCF Analysis | €X.XX | +X% | 40% |
| Peer Relative | €X.XX | +X% | 30% |
| Peter Lynch | €X.XX | +X% | 30% |
| **Weighted Average** | **€X.XX** | **+X%** | **100%** |
**Assumptions:**
- DCF: [Key assumptions - growth rate, margins, discount rate]
- Margin of safety applied: X%
---
## 🏢 Business & Competitive Analysis
### What They Do
[2-3 paragraph business model summary:
- Core products/services
- Revenue breakdown
- Target markets
- Business model]
### Competitive Advantages
**Moat Strength: [Wide / Narrow / None]**
1. **[Advantage 1]**: [Detailed explanation with evidence]
2. **[Advantage 2]**: [Detailed explanation with evidence]
3. **[Advantage 3]**: [Detailed explanation with evidence]
**Moat Durability:** [How sustainable are these advantages? 3-5 years? 10+ years?]
### Management Quality Assessment
**Overall Rating: [Excellent / Good / Adequate / Concerning]**
- **CEO**: [Name] - [Background, tenure]
- Track record: [Achievements/concerns]
- Capital allocation: [Shareholder-friendly? Smart acquisitions?]
- **CFO**: [Name] - [Financial stewardship]
- **Insider Trading**: [Recent buying/selling activity]
- **Key Insight**: [Overall management assessment]
### Competitive Position
**Market Position:**
- Market share: X% (#X in industry)
- Share trend: [Gaining / Stable / Losing]
**Key Competitors:** [List 3-5 direct peers]
**Peer Comparison:**
| Company | Mkt Cap | Revenue Growth | Profit Margin | ROE | P/E | Moat |
|---------|---------|---------------|---------------|-----|-----|------|
| [Target] | €XB | X% | X% | X% | X.X | [Rating] |
| [Peer 1] | €XB | X% | X% | X% | X.X | [Rating] |
| [Peer 2] | €XB | X% | X% | X.X | X.X | [Rating] |
| [Peer 3] | €XB | X% | X% | X% | X.X | [Rating] |
**Competitive Assessment:** [Is this the best company in the sector?]
---
## 📈 Financial Health Analysis
### Quality Metrics vs. Benchmarks
| Metric | Current | 1Y Ago | 3Y Ago | 5Y Ago | Target | Status |
|--------|---------|--------|--------|--------|--------|--------|
| ROE | X% | X% | X% | X% | >15% | [✓/✗] |
| Profit Margin | X% | X% | X% | X% | >15% | [✓/✗] |
| Gross Margin | X% | X% | X% | X% | >30% | [✓/✗] |
| Revenue Growth | X% | X% | X% | X% | >0% | [✓/✗] |
| Debt/Revenue | X.X | X.X | X.X | X.X | <1.0 | [✓/✗] |
| FCF | €XM | €XM | €XM | €XM | Positive | [✓/✗] |
### Advanced Financial Health Scores
**Piotroski F-Score: X/9** [Excellent 8-9 / Good 6-7 / Adequate 4-5 / Weak 0-3]
*Profitability:* X/4
- ROA positive: [✓/✗]
- Operating CF positive: [✓/✗]
- ROA improving: [✓/✗]
- CF > Net Income: [✓/✗]
*Leverage:* X/3
- Debt decreasing: [✓/✗]
- Current ratio improving: [✓/✗]
- No dilution: [✓/✗]
*Efficiency:* X/2
- Margin improving: [✓/✗]
- Turnover improving: [✓/✗]
**Assessment:** [Detailed interpretation of F-Score]
**Altman Z-Score: X.XX** [Safe >2.99 / Grey 1.81-2.99 / Distress <1.81]
- **Bankruptcy Risk:** [Low / Moderate / High]
- **Interpretation:** [Explanation of Z-Score and financial stability]
**Beneish M-Score: X.XX** [Clean <-1.78 / Warning >-1.78]
- **Earnings Quality:** [High / Moderate / Questionable]
- **Red Flags:** [List any concerning indicators or state "None"]
**Max Drawdown (5Y): -X%** [Low <20% / Moderate 20-40% / High 40-60% / Extreme >60%]
- **Volatility Assessment:** [Low/Moderate/High volatility explanation]
- **Peak price:** €X.XX ([Date])
- **Trough price:** €X.XX ([Date])
### Consolidated Scores
**Strength Score: X/100** (Financial power and market position)
**Integrity Score: X/100** (Earnings quality and transparency)
**Predictability Score: X/100** (Business consistency)
**Data Quality Score: X/100** (Information completeness)
**Overall Quality Rating: [Elite / Strong / Good / Adequate / Weak]**
### Financial Trends (5-10 Year View)
**Revenue:**
- [Trend description: growth rate, consistency, drivers]
- [Any concerning patterns?]
**Margins:**
- Gross margin: [Expanding / Stable / Declining]
- Operating margin: [Trend]
- Net margin: [Trend]
- Drivers: [Why are margins moving this way?]
**Cash Flow:**
- Operating cash flow: [Trend and quality]
- Free cash flow: [Consistency, conversion]
- Capital allocation: [Dividends, buybacks, capex, acquisitions]
**Balance Sheet:**
- Debt levels: [Conservative / Moderate / High]
- Liquidity: [Strong / Adequate / Concerning]
- Trend: [Strengthening / Stable / Weakening]
### 🚩 Red Flags
[List any concerning trends or issues, or state "None identified"]
---
## 📉 Technical Analysis & Entry Timing
### Price Action (Last 30-60 Days)
- **Current Price**: €X.XX
- **52-Week Range**: €X.XX - €X.XX
- **30-day Change**: [+/-X%]
- **Trend**: [Uptrend / Downtrend / Range-bound]
- **Volume**: [Increasing / Decreasing / Normal]
### Key Technical Levels
**Support Levels:**
- **Primary Support: €X.XX** - [Significance/reason]
- **Secondary Support: €X.XX** - [Significance/reason]
**Resistance Levels:**
- **Primary Resistance: €X.XX** - [Significance/reason]
- **Secondary Resistance: €X.XX** - [Significance/reason]
### Technical Indicators
**RSI**: X.X [Overbought >70 / Neutral 30-70 / Oversold <30]
**MACD**: [Bullish crossover / Bearish crossover / Neutral]
- Interpretation: [Momentum assessment]
**Moving Averages:**
- 50-day MA: €X.XX - Price is [above/below]
- 200-day MA: €X.XX - Price is [above/below]
- Golden/Death Cross: [Any recent crossovers?]
### Entry Assessment
**Technical Setup: [Bullish / Neutral / Bearish]**
**Optimal Entry Strategy:**
- [Buy now at market / Wait for pullback to €X.XX / Buy on breakout above €X.XX]
- **Ideal Entry Range: €X.XX - €X.XX**
- **Maximum Buy Price: €X.XX** (avoid above this)
**Momentum: [Strong Bullish / Bullish / Neutral / Bearish / Strong Bearish]**
---
## ⚖️ Bull vs. Bear Case
### 🐂 Bull Case
**Potential Upside: €X.XX (+X%)**
1. **[Bull Argument 1]**: [Specific evidence and reasoning]
2. **[Bull Argument 2]**: [Specific evidence and reasoning]
3. **[Bull Argument 3]**: [Specific evidence and reasoning]
**For this to play out:**
- [Required condition 1]
- [Required condition 2]
**Probability: [High / Moderate / Low]**
### 🐻 Bear Case
**Potential Downside: €X.XX (-X%)**
1. **[Bear Argument 1]**: [Specific risk and reasoning]
2. **[Bear Argument 2]**: [Specific risk and reasoning]
3. **[Bear Argument 3]**: [Specific risk and reasoning]
**This happens if:**
- [Risk trigger 1]
- [Risk trigger 2]
**Probability: [High / Moderate / Low]**
### ⚖️ Balance Assessment
**Which case is more probable: [Bull / Bear / Balanced]**
[2-3 paragraph explanation of:
- Weight of evidence for each side
- Historical precedent
- Management track record
- Industry dynamics
- Current valuation
- Risk/reward assessment]
---
## ⚠️ Risk Analysis
**Overall Risk Level: [Low / Moderate / High]**
### Key Risks
**1. [Risk Category - e.g., Competition Risk]**:
[Specific risk and potential impact. Probability: High/Medium/Low]
**2. [Risk Category - e.g., Execution Risk]**:
[Specific risk and potential impact. Probability: High/Medium/Low]
**3. [Risk Category - e.g., Valuation Risk]**:
[Specific risk and potential impact. Probability: High/Medium/Low]
**4. [Risk Category - e.g., Macro Risk]**:
[Specific risk and potential impact. Probability: High/Medium/Low]
### Risk Mitigation
[How does the company/investment address these risks?]
[What reduces the risk in this investment?]
---
## 🎯 Catalysts & Timeline
### Near-Term (0-6 months)
- **[Date]**: [Specific catalyst - earnings, product launch, etc.]
- **[Date]**: [Specific catalyst]
### Medium-Term (6-18 months)
- [Expected development 1]
- [Expected development 2]
### Long-Term (18+ months)
- [Structural trend 1]
- [Structural trend 2]
**Expected Timeline to Target**: [6-12 months / 1-3 years / 3-5+ years]
---
## 💡 Investment Recommendation
### **RECOMMENDATION: [BUY / HOLD / SELL]**
### **Conviction: [Strong Buy / Buy / Hold / Avoid]**
### Rationale
[2-3 paragraph synthesis of entire analysis:
- Why this recommendation?
- What makes it compelling (or not)?
- How does valuation + fundamentals + technicals + catalysts = this conclusion?
- What's the risk/reward?]
---
## 📍 Entry Strategy (if BUY)
**Ideal Entry Price: €X.XX - €X.XX**
- Reasoning: [Why this range?]
**Maximum Acceptable Price: €X.XX**
- Above this: Risk/reward unfavorable
**Approach:**
- [Buy now at market / Wait for pullback to €X.XX / Buy on breakout above €X.XX]
- Reasoning: [Current technical setup justification]
**DO NOT BUY IF:**
- Price exceeds €X.XX without fundamental improvement
- [Other specific condition]
---
## 🎯 Exit Strategy
### Price Targets (12-Month Horizon)
- **Conservative**: €X.XX (+X%)
- **Base Case**: €X.XX (+X%)
- **Optimistic**: €X.XX (+X%)
### Stop Loss
**Stop Loss: €X.XX (-X% maximum loss)**
- Technical: Below €X.XX support
- Fundamental: If [thesis-breaking condition]
### Sell Conditions (Thesis-Breaking)
Exit position if any of these occur:
1. [Specific fundamental deterioration - e.g., "ROE drops below 10% for 2 consecutive quarters"]
2. [Specific competitive threat - e.g., "Loses >5% market share to competitor"]
3. [Specific valuation threshold - e.g., "Reaches €X.XX (>50% above fair value)"]
### Hold Duration
**Expected Timeframe**: [6-12 months / 1-3 years / 3-5+ years]
- Based on: [Investment type - swing trade vs. long-term hold]
---
## 📏 Position Sizing
### Recommended Allocation: X-X% of portfolio
**Specific Recommendation: X%**
**Rationale:**
- Conviction level: [Strong Buy / Buy → drives size]
- Risk level: [Low / Moderate / High → constrains size]
- Diversification: [Sector exposure, correlation with existing holdings]
- Liquidity: [Can exit position easily?]
**Maximum Allocation: X%**
- Risk management limit
- Don't exceed even if highly convicted
### Sizing Guidelines Applied:
- Strong Buy + Low Risk = 5-8% (max 10%)
- Buy + Moderate Risk = 3-5% (max 7%)
- Speculative + High Risk = 1-3% (max 5%)
---
## 🔑 Key Takeaways
### Top 3 Reasons to Invest
1. [Most compelling positive factor]
2. [Second most compelling positive factor]
3. [Third most compelling positive factor]
### Top 3 Concerns
1. [Biggest risk or concern]
2. [Second biggest risk or concern]
3. [Third biggest risk or concern]
### One-Sentence Investment Thesis
[Single sentence capturing the complete investment case - why buy or avoid]
---
## 📚 Research Documentation
**Sources Consulted:**
- 10-K filings: [Fiscal years reviewed - e.g., FY2020-2024]
- 10-Q filings: [Recent quarters - e.g., Q1-Q3 2025]
- Earnings calls: [Dates reviewed]
- Proxy statements: [Years reviewed]
- Management letters: [Years reviewed]
- Competitor analysis: [Companies benchmarked]
**Analysis Depth:**
- Historical period analyzed: [X years]
- Peer companies compared: [Number and names]
- Valuation methods used: [DCF, Relative, Peter Lynch, Asset-based]
**Confidence Level: [High / Medium / Low]**
- **Based on**: [Quality and completeness of available data]
- **Gaps**: [Any areas where information is limited or unavailable]
- **Limitations**: [Any constraints in the analysis]
---
## 🔄 Alternative Candidates (Required if SELL/AVOID)
[If recommending SELL or AVOID, provide 3-5 better investment alternatives with brief rationale for each]
### Alternative 1: [Symbol] - [Company Name]
**Why it's better**: [1-2 paragraph comparison]
**Quick metrics**: [Valuation, growth, margins]
### Alternative 2: [Symbol] - [Company Name]
**Why it's better**: [1-2 paragraph comparison]
**Quick metrics**: [Valuation, growth, margins]
### Alternative 3: [Symbol] - [Company Name]
**Why it's better**: [1-2 paragraph comparison]
**Quick metrics**: [Valuation, growth, margins]
[Continue for 4-5 alternatives if SELL recommendation]
---
**Analysis Date**: [Current Date]
**Next Review**: [Suggested review date based on catalysts or timeline]
**Analyst**: Claude Stock Evaluator
---
## 📊 Quant-Style Dashboard
**FINAL MANDATORY STEP**: Create a React artifact using the standardized quant-style dashboard template with:
**Required Data to Populate:**
- ✅ All 48 metrics across 8 sections (calculated above)
- ✅ Historical price data (5 years, 6-12 points)
- ✅ 1-year price + 6-month forecast (4-6 points)
- ✅ MACD data (3-5 recent points)
- ✅ RSI data (3-5 recent points)
- ✅ Radar chart (12 metrics, normalized 0-100)
- ✅ Bull case (target + 5 points)
- ✅ Bear case (target + 5 points)
- ✅ Entry/exit strategy (5 values)
**Use the EXACT template code provided in the skill instructions above.**
**DO NOT use placeholder values - populate with actual calculated data from this analysis.**
[Create the React artifact here using the quant-style template]
量化风格仪表盘产物
强制性的完成全文分析后,使用标准化的量化风格模板格式创建一个React仪表板制品。
仪表板模板结构
该仪表板采用特定的机构级格式,包含:
1. 页眉部分(橙色背景)
- 格式:
股票代码 - 公司名称
2. 八个指标模块(两列网格布局)
| 左侧列 | 右侧列 |
|---|---|
| 价格与估值(蓝色) | 财务表现(绿色) |
| 增长指标(翠绿色) | 风险指标(红色) |
| 流动性与自由现金流(青色) | 内幕交易与市场情绪(紫色) |
| 质量评分(橙色) | 护城河及其他(灰色) |
每个模块:6个包含数值、标签、基准线和颜色编码的指标框
3. 图表部分(三栏网格)
-
左侧:线性价格图 + MACD
- 价格、内在价值、市场价值线
- 五年历史数据
- 下方为MACD指标
-
中央:雷达图 + 一年期预测
- 12点雷达图(标准化至0-100)
- 综合建议徽章
- 一年期价格 + 六个月预测
-
右侧:对数价格图 + RSI
- 对数刻度价格历史
- 内在价值比较
- 下方为RSI(14)指标
4. 关键说明部分(可展开的手风琴式面板)
- 三栏布局:看涨理由 | 看跌理由 | 入场/出场策略
- 点击展开/折叠
5. 页脚
- 分析日期、数据来源、推荐建议
各板块所需指标
价格与估值(6项指标):
- 价格、市值、历史市盈率、预期市盈率、细分行业典型市盈率、市盈率相对盈利增长比率
财务表现(6项指标):
- 净资产收益率、总资产收益率、净利润率、营业利润率、毛利率、投入资本回报率
增长指标(6项指标):
- 营收增长率(5年)、盈利增长率、每股收益(最近十二个月)、预期每股收益、分析师推荐、目标价格
风险指标(6项指标):
- 负债权益比、综合风险、F值、Z值、M值、最大回撤(5年)
流动性与自由现金流(6项指标):
- 流动比率、现金总额、负债总额、自由现金流增长率(5年)、自由现金流收益率、派息率
内幕交易与市场情绪(6项指标):
- 内幕买入(12个月)、内幕卖出(12个月)、净持股数(12个月)、相对强弱指数(14日)、股票类型、行业板块
质量评分(6项指标):
- CQVS、标签、估值分数、质量分数、实力分数、完整性分数
护城河及其他(6项指标):
- 护城河分数(0-10)、贝塔值、可预测性、数据质量、完整性、股息收益率
雷达图指标(12个指标点,标准化为0-100分)
- 营收增长率(标准化:X%增长率 → 20%以上对应100分)
- 营业利润率(标准化:X% → 30%以上对应100分)
- 毛利率(标准化:X% → 60%以上对应100分)
- 净利润率(标准化:X% → 25%以上对应100分)
- 净资产收益率(标准化:X% → 30%以上对应100分)
- 风险分数(综合风险的逆向指标:100 - 风险值*100)
- 贝塔分数(逆向指标:贝塔值=0.5对应100分,贝塔值=1.5对应50分,贝塔值=2.5以上对应0分)
- 价格/市场折扣(100分=深度低估,50分=估值合理,0分=估值过高)
- 护城河分数(护城河评级 * 10)
- 自由现金流收益率(X% → 8%以上对应100分)
- 总资产收益率(X% → 20%以上对应100分)
- 盈利增长率(X% → 25%以上对应100分)
颜色编码规则
// Green (isGood: true) - Positive indicators
ROE > 20%, ROA > 10%, Margins > 20%, ROIC > 15%
Revenue Growth > 10%, Current Ratio 1-2, Z-Score > 3
M-Score < -1.78, FCF Growth > 0%, Payout < 50%
F-Score >= 7, Quality >= 70, Strength >= 70
// Red (isGood: false) - Warning indicators
Max Drawdown < -50%, Beta > 2, Consolidated Risk > 0.6
Predictability < 50%, F-Score <= 3, Z-Score < 1.81
M-Score > -1.78, Quality < 50
// Yellow (isGood: 'neutral') - Monitor
F-Score 4-6, RSI 30-70, Moat 5-7, Quality 50-70
Beta 1.5-2.0, Predictability 50-70%
完成模板代码
使用以下确切的模板结构:
import React, { useState } from 'react';
import {
LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip,
ResponsiveContainer, RadarChart, PolarGrid, PolarAngleAxis,
PolarRadiusAxis, Radar, ReferenceLine, Area, ComposedChart, Scatter
} from 'recharts';
const QuantDashboard = () => {
const [showKeyNotes, setShowKeyNotes] = useState(false);
// ============================================================
// POPULATE WITH STOCK-SPECIFIC DATA FROM ANALYSIS
// ============================================================
const ticker = "TICKER"; // Replace
const companyName = "Company Name"; // Replace
const recommendation = "BUY"; // BUY, HOLD, SELL, SPECULATIVE BUY
const analysisDate = "December 6, 2025"; // Current date
const metrics = {
// Price & Valuation - from analysis
price: 100.00,
marketCap: '€10B',
trailingPE: 20.0,
forwardPE: 18.0,
subsectorTypicalPE: 25.0,
peg1Y: 1.2, // NEW: 1-Year Forward PEG
peg5Y: 2.5, // NEW: 5-Year PEG
// Financial Performance - from 5-10 year analysis
roe: 25.0,
roa: 12.0,
profitMargin: 20.0,
opMargin: 25.0,
grossMargin: 50.0,
roic: 18.0,
// Growth Metrics - from historical trends (USE REPORTED, not underlying)
revGrowth: 15.0, // REPORTED revenue growth YoY
earnGrowth: 20.0, // REPORTED earnings growth YoY
epsTTM: 5.00,
forwardEPS: 5.50,
growthCapped: 10.0, // NEW: Capped sustainable growth estimate
growthUncapped: 22.0, // NEW: Headline analyst growth estimate
analystTarget: 120.00,
// Risk Indicators - from advanced metrics section
crs: 0.40, // Consolidated Risk Score (0-1 scale)
debtEquity: 0.50,
fScore: 7, // Piotroski F-Score
zScore: 4.0, // Altman Z-Score
mScore: -2.5, // Beneish M-Score
valueTrapScore: 25, // NEW: 0-100, LOWER = genuine, HIGHER = trap
valueTrapLabel: 'Genuine', // NEW: Genuine/Caution/Trap
maxDrawdown: -30.0, // 5-year max drawdown %
// Liquidity & FCF - from cash flow analysis
currentRatio: 1.5,
totalCash: '€2B',
totalDebt: '€1B',
fcfGrowth5Y: 12.0, // 5-year smoothed growth
fcfYield: 5.0,
fcfMargin: 18.5, // NEW: FCF / Revenue %
payoutRatio: 30.0,
// Insider & Sentiment - from SEC Form 4 or use "N/A" if unavailable
insBuys: 0, // From SEC Form 4 - use actual count or "N/A"
insSells: 0, // From SEC Form 4 - use actual count or "N/A"
netShares: 'N/A', // From SEC Form 4 - use actual or "N/A"
shortInterest: 2.5, // From FINRA/exchange - use actual or "N/A"
newsSentiment: 0.25, // -1 to +1 scale
newsArticleCount: 15, // Recent article count
// Beta & Volatility
beta: 1.0, // Stock beta
vol1Y: 25.0, // 1-Year volatility %
// Quality Scores - from consolidated scoring
cqvs: 75.0, // Consolidated Quality & Valuation Score
label: 'Quality Growth', // Elite/Compounder/Quality Growth/etc
valuation: 70.0, // 0-100
quality: 80.0, // 0-100
strength: 75.0, // 0-100
integrity: 85.0, // 0-100
// Moat & Other
buffettMoat: 8, // 0-10 scale (renamed from moat)
greenblattEY: 6.5, // NEW: Earnings Yield %
greenblattROC: 22.0, // NEW: Return on Capital %
earningsPredict: 70, // Earnings Predictability 0-100
completeness: 85, // Data completeness 0-100
dataQuality: 'High', // High/Medium/Low
divYield: 1.5,
stockType: 'Growth', // Growth/Value/Cyclical/Defensive
sector: 'Technology',
industry: 'Software',
// NEW: Investor Persona Scores (0-10 scale each)
buffettScore: 7.5, // Durable competitive advantage seeker
mungerScore: 6.8, // Inversion thinker, risk avoider
dalioScore: 7.2, // All-weather, cycle resilient
lynchScore: 8.0, // GARP - Growth at Reasonable Price
grahamScore: 5.5, // Deep value, margin of safety
greenblattScore: 6.0, // Magic Formula (EY + ROC)
templetonScore: 4.5, // Contrarian, global value
sorosScore: 3.0, // Reflexivity, macro trends
// NEW: Valuation Lines for Charts
marketValueCurrent: 95.00,
intrinsicValueCurrent: 110.00,
marketValueNextYear: 105.00,
intrinsicValueNextYear: 120.00,
unrestrictedMarketValueCurrent: 125.00,
unrestrictedMarketValueNextYear: 140.00,
// Valuation Assessment (for indicator below forecast)
valuationPercent: 15, // Positive = undervalued, negative = overvalued
valuationLabel: 'Undervalued', // Undervalued/Fairly Valued/Overvalued
};
// TOP NEWS Headlines - Format: pipe-separated with dates at END in brackets
const topNews = [
{ headline: 'Company announces Q4 guidance above expectations', date: '05 Dec 2025' },
{ headline: 'New product launch receives positive analyst coverage', date: '28 Nov 2025' },
{ headline: 'Strategic partnership announced with major cloud provider', date: '15 Nov 2025' },
{ headline: 'Q3 earnings beat estimates, revenue up 18% YoY', date: '02 Nov 2025' },
{ headline: 'Management presents at investor conference, reaffirms outlook', date: '20 Oct 2025' },
];
// Format TOP NEWS as pipe-separated string with dates at END
const topNewsString = topNews.map(n => `${n.headline} [${n.date}]`).join(' | ');
// Historical Price Data (10 years with multiple valuation lines)
const priceHistory = [
{ date: '2016', price: 25, totalReturn: 28, marketValueCurrent: 27, intrinsicValueCurrent: 30, marketValueNextYear: 29, intrinsicValueNextYear: 32, analystTarget: 30, unrestrictedCurrent: 28, unrestrictedNextYear: 31 },
{ date: '2017', price: 35, totalReturn: 40, marketValueCurrent: 38, intrinsicValueCurrent: 42, marketValueNextYear: 40, intrinsicValueNextYear: 45, analystTarget: 42, unrestrictedCurrent: 40, unrestrictedNextYear: 44 },
{ date: '2018', price: 45, totalReturn: 52, marketValueCurrent: 48, intrinsicValueCurrent: 55, marketValueNextYear: 52, intrinsicValueNextYear: 60, analystTarget: 55, unrestrictedCurrent: 52, unrestrictedNextYear: 58 },
{ date: '2019', price: 55, totalReturn: 65, marketValueCurrent: 58, intrinsicValueCurrent: 68, marketValueNextYear: 62, intrinsicValueNextYear: 72, analystTarget: 65, unrestrictedCurrent: 65, unrestrictedNextYear: 72 },
{ date: '2020', price: 50, totalReturn: 62, marketValueCurrent: 55, intrinsicValueCurrent: 65, marketValueNextYear: 60, intrinsicValueNextYear: 70, analystTarget: 62, unrestrictedCurrent: 62, unrestrictedNextYear: 70 },
{ date: '2021', price: 75, totalReturn: 95, marketValueCurrent: 80, intrinsicValueCurrent: 90, marketValueNextYear: 85, intrinsicValueNextYear: 98, analystTarget: 90, unrestrictedCurrent: 92, unrestrictedNextYear: 105 },
{ date: '2022', price: 65, totalReturn: 85, marketValueCurrent: 72, intrinsicValueCurrent: 85, marketValueNextYear: 78, intrinsicValueNextYear: 92, analystTarget: 82, unrestrictedCurrent: 85, unrestrictedNextYear: 95 },
{ date: '2023', price: 80, totalReturn: 105, marketValueCurrent: 85, intrinsicValueCurrent: 100, marketValueNextYear: 92, intrinsicValueNextYear: 108, analystTarget: 98, unrestrictedCurrent: 100, unrestrictedNextYear: 115 },
{ date: '2024', price: 95, totalReturn: 125, marketValueCurrent: 100, intrinsicValueCurrent: 115, marketValueNextYear: 108, intrinsicValueNextYear: 125, analystTarget: 115, unrestrictedCurrent: 120, unrestrictedNextYear: 135 },
{ date: '2025', price: 100, totalReturn: 135, marketValueCurrent: 105, intrinsicValueCurrent: 120, marketValueNextYear: 115, intrinsicValueNextYear: 132, analystTarget: 125, unrestrictedCurrent: 130, unrestrictedNextYear: 145 },
];
// 1 Year Price with 6-Month Forecast, MAs, and Bollinger Bands
const oneYearData = [
{ date: "Jan'25", price: 90, ma50: 88, ma200: 85, upperBand: 98, lowerBand: 82, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "Mar'25", price: 88, ma50: 89, ma200: 86, upperBand: 96, lowerBand: 80, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "May'25", price: 95, ma50: 91, ma200: 87, upperBand: 102, lowerBand: 84, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "Jul'25", price: 92, ma50: 92, ma200: 88, upperBand: 100, lowerBand: 84, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "Sep'25", price: 98, ma50: 94, ma200: 90, upperBand: 106, lowerBand: 86, forecast: null, ci95Upper: null, ci95Lower: null },
{ date: "Nov'25", price: 100, ma50: 96, ma200: 92, upperBand: 108, lowerBand: 88, forecast: 100, ci95Upper: 108, ci95Lower: 92 },
{ date: "Jan'26", price: null, ma50: null, ma200: null, upperBand: null, lowerBand: null, forecast: 108, ci95Upper: 120, ci95Lower: 96 },
{ date: "Mar'26", price: null, ma50: null, ma200: null, upperBand: null, lowerBand: null, forecast: 115, ci95Upper: 130, ci95Lower: 100 },
];
// NEW: Ichimoku Cloud Data (6-month view with signal markers)
const ichimokuData = [
{ date: 'Jun', price: 88, tenkan: 87, kijun: 85, senkouA: 84, senkouB: 82, chikou: 85, tkCrossMarker: null, kumoTwistMarker: null },
{ date: 'Jul', price: 92, tenkan: 90, kijun: 87, senkouA: 86, senkouB: 84, chikou: 90, tkCrossMarker: 92, kumoTwistMarker: null }, // TK Bullish Cross
{ date: 'Aug', price: 95, tenkan: 93, kijun: 90, senkouA: 89, senkouB: 86, chikou: 93, tkCrossMarker: null, kumoTwistMarker: null },
{ date: 'Sep', price: 98, tenkan: 96, kijun: 93, senkouA: 92, senkouB: 88, chikou: 96, tkCrossMarker: null, kumoTwistMarker: 92 }, // Kumo Twist Bullish
{ date: 'Oct', price: 96, tenkan: 97, kijun: 95, senkouA: 94, senkouB: 90, chikou: 94, tkCrossMarker: null, kumoTwistMarker: null },
{ date: 'Nov', price: 100, tenkan: 98, kijun: 96, senkouA: 95, senkouB: 92, chikou: 98, tkCrossMarker: null, kumoTwistMarker: null },
];
// NEW: Ichimoku Signals Summary
const ichimokuSignals = {
tkCross: 'TK Bullish Cross',
kumoTwist: 'Kumo Twist Bullish',
priceVsCloud: 'Above Cloud (Bullish)',
};
// MACD Data (recent 6 months)
const macdData = [
{ date: 'Jun', macd: 0.5, signal: 0.3, histogram: 0.2 },
{ date: 'Jul', macd: 1.2, signal: 0.6, histogram: 0.6 },
{ date: 'Aug', macd: 1.5, signal: 1.0, histogram: 0.5 },
{ date: 'Sep', macd: 1.8, signal: 1.3, histogram: 0.5 },
{ date: 'Oct', macd: 1.2, signal: 1.4, histogram: -0.2 },
{ date: 'Nov', macd: 0.8, signal: 1.2, histogram: -0.4 },
];
// RSI Data (recent 6 months)
const rsiData = [
{ date: 'Jun', rsi: 45 },
{ date: 'Jul', rsi: 55 },
{ date: 'Aug', rsi: 62 },
{ date: 'Sep', rsi: 68 },
{ date: 'Oct', rsi: 58 },
{ date: 'Nov', rsi: 55 },
];
// Radar Chart Data (normalize all to 0-100 scale)
const radarData = [
{ metric: 'Rev Growth', value: 70, fullMark: 100 },
{ metric: 'Op Margin', value: 75, fullMark: 100 },
{ metric: 'Gross Margin', value: 65, fullMark: 100 },
{ metric: 'Profit Margin', value: 60, fullMark: 100 },
{ metric: 'ROE', value: 70, fullMark: 100 },
{ metric: 'Risk (CRS)', value: 60, fullMark: 100 },
{ metric: 'Beta Score', value: 70, fullMark: 100 },
{ metric: 'P/Market Disc', value: 50, fullMark: 100 },
{ metric: 'Moat', value: 80, fullMark: 100 },
{ metric: 'FCF Growth', value: 55, fullMark: 100 },
{ metric: 'ROA', value: 65, fullMark: 100 },
{ metric: 'Earn Growth', value: 75, fullMark: 100 },
];
// Key Notes Content - from Bull/Bear case analysis
const bullCase = {
target: "€130-150", // Bull case price target
points: [
"Strong revenue growth momentum",
"Expanding margins",
"Market leadership position",
"Favorable industry tailwinds",
"Strong balance sheet"
]
};
const bearCase = {
target: "€70-80", // Bear case price target
points: [
"Valuation compression risk",
"Competitive pressures",
"Macro sensitivity",
"Execution risks",
"Key person dependency"
]
};
const entryStrategy = {
idealEntry: "€90-95", // From Entry Strategy section
currentEntry: "€100 acceptable",
target: "€120 (+20%)", // 12-month target
stopLoss: "€85 (-15%)", // Stop loss
positionSize: "2-3%" // Recommended allocation
};
// ============================================================
// COMPONENT CODE (Standard - use as-is)
// ============================================================
// Helper: Value Trap color (LOWER = genuine = green, HIGHER = trap = red)
const getValueTrapColor = (score) => {
if (score < 40) return 'bg-green-100 border-green-400 text-green-800';
if (score < 60) return 'bg-yellow-100 border-yellow-400 text-yellow-800';
return 'bg-red-100 border-red-400 text-red-800';
};
// Helper: Get label for Value Trap score
const getValueTrapLabel = (score) => {
if (score < 20) return 'Genuine';
if (score < 40) return 'Probably Genuine';
if (score < 60) return 'Caution';
if (score < 80) return 'Likely Trap';
return 'Strong Trap';
};
// Helper: Persona score color
const getPersonaColor = (score) => {
if (score >= 7) return 'bg-green-500';
if (score >= 4) return 'bg-yellow-500';
return 'bg-red-500';
};
// Helper: News sentiment color
const getSentimentColor = (sentiment) => {
if (sentiment > 0.3) return 'text-green-600';
if (sentiment > 0) return 'text-green-500';
if (sentiment > -0.3) return 'text-yellow-600';
return 'text-red-600';
};
// Persona Badge Component
const PersonaBadge = ({ name, score, position }) => (
<div className={`absolute ${position} flex flex-col items-center`}>
<div className={`w-6 h-6 rounded-full ${getPersonaColor(score)} flex items-center justify-center text-white text-[8px] font-bold`}>
{score.toFixed(1)}
</div>
<div className="text-[7px] text-gray-600 mt-0.5">{name}</div>
</div>
);
const MetricBox = ({ label, value, benchmark, isGood, size = 'normal' }) => {
let bgColor = 'bg-gray-50';
if (isGood === true) bgColor = 'bg-green-50 border-green-200';
if (isGood === false) bgColor = 'bg-red-50 border-red-200';
if (isGood === 'neutral') bgColor = 'bg-yellow-50 border-yellow-200';
return (
<div className={`${bgColor} border p-1.5 flex flex-col justify-center items-center`}>
<div className="text-base font-bold text-gray-900">{value}</div>
<div className="text-[9px] text-gray-600 text-center leading-tight">{label}</div>
{benchmark && <div className="text-[8px] text-gray-400">{benchmark}</div>}
</div>
);
};
const SectionHeader = ({ title, bgColor }) => (
<div className={`${bgColor} px-2 py-1 text-[10px] font-bold text-gray-700`}>
{title}
</div>
);
return (
<div className="w-full max-w-7xl mx-auto p-3 bg-white text-xs">
{/* Header */}
<div className="bg-orange-500 text-white px-3 py-2 mb-1 text-lg font-bold text-center">
{ticker} - {companyName}
</div>
{/* TOP NEWS - Pipe separated with dates at END */}
<div className="border border-gray-300 rounded p-2 mb-3 bg-gray-50">
<span className="font-bold text-[10px]">TOP NEWS:</span>
<div className="text-[9px] mt-1">{topNewsString}</div>
</div>
{/* Top 4 sections */}
<div className="grid grid-cols-2 gap-2 mb-3">
{/* Price & Valuation - Updated with dual PEG */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="PRICE & VALUATION" bgColor="bg-blue-100" />
<div className="grid grid-cols-7 gap-px bg-gray-200">
<MetricBox label="Price:" value={`€${metrics.price}`} />
<MetricBox label="Market Cap:" value={metrics.marketCap} />
<MetricBox label="Trailing P/E:" value={metrics.trailingPE} />
<MetricBox label="Forward P/E:" value={metrics.forwardPE} benchmark={`(${metrics.subsectorTypicalPE})`} isGood={metrics.forwardPE < metrics.subsectorTypicalPE} />
<MetricBox label="Subsector P/E:" value={metrics.subsectorTypicalPE} />
<MetricBox label="PEG (1Y):" value={metrics.peg1Y} benchmark="(<1.5)" isGood={metrics.peg1Y < 1.5 ? true : metrics.peg1Y < 2 ? 'neutral' : false} />
<MetricBox label="PEG (5Y):" value={metrics.peg5Y} benchmark="(<2)" isGood={metrics.peg5Y < 2 ? true : metrics.peg5Y < 3 ? 'neutral' : false} />
</div>
</div>
{/* Financial Performance */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="FINANCIAL PERFORMANCE" bgColor="bg-green-100" />
<div className="grid grid-cols-6 gap-px bg-gray-200">
<MetricBox label="ROE:" value={`${metrics.roe}%`} benchmark="(>20%)" isGood={metrics.roe >= 20 ? true : metrics.roe >= 10 ? 'neutral' : false} />
<MetricBox label="ROA:" value={`${metrics.roa}%`} benchmark="(>10%)" isGood={metrics.roa >= 10} />
<MetricBox label="Profit Margin:" value={`${metrics.profitMargin}%`} benchmark="(>20%)" isGood={metrics.profitMargin >= 20 ? true : metrics.profitMargin >= 10 ? 'neutral' : false} />
<MetricBox label="Operative Margin:" value={`${metrics.opMargin}%`} benchmark="(>20%)" isGood={metrics.opMargin >= 20} />
<MetricBox label="Gross Margin:" value={`${metrics.grossMargin}%`} benchmark="(>40%)" isGood={metrics.grossMargin >= 40} />
<MetricBox label="ROIC:" value={`${metrics.roic}%`} benchmark="(>15%)" isGood={metrics.roic >= 15} />
</div>
</div>
</div>
{/* Next 4 sections */}
<div className="grid grid-cols-2 gap-2 mb-3">
{/* Growth Metrics */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="GROWTH METRICS" bgColor="bg-emerald-100" />
<div className="grid grid-cols-7 gap-px bg-gray-200">
<MetricBox label="Revenue (YoY):" value={`${metrics.revGrowth}%`} benchmark="(>10%)" isGood={metrics.revGrowth >= 10} />
<MetricBox label="Earning (YoY):" value={`${metrics.earnGrowth}%`} benchmark="(>0%)" isGood={metrics.earnGrowth >= 0} />
<MetricBox label="EPS (TTM):" value={`€${metrics.epsTTM}`} />
<MetricBox label="Forward EPS:" value={`€${metrics.forwardEPS}`} isGood={metrics.forwardEPS > metrics.epsTTM} />
<MetricBox label="Growth Rates:" value={`Capped: ${metrics.growthCapped}%`} benchmark={`Uncapped: ${metrics.growthUncapped}%`} />
<MetricBox label="Analyst Target:" value={`€${metrics.analystTarget}`} />
</div>
</div>
{/* Risk Indicators */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="RISK INDICATORS" bgColor="bg-red-100" />
<div className="grid grid-cols-6 gap-px bg-gray-200">
<MetricBox label="CRS (0-1):" value={metrics.crs.toFixed(2)} benchmark="(Medium)" isGood={metrics.crs < 0.4 ? true : metrics.crs < 0.6 ? 'neutral' : false} />
<MetricBox label="Debt/Equity (mrq):" value={metrics.debtEquity} benchmark="(0.5-1)" isGood={metrics.debtEquity < 1 ? true : metrics.debtEquity < 2 ? 'neutral' : false} />
<MetricBox label="Piotroski F:" value={metrics.fScore} benchmark="(≥7)" isGood={metrics.fScore >= 7 ? true : metrics.fScore >= 4 ? 'neutral' : false} />
<MetricBox label="Altman Z:" value={metrics.zScore.toFixed(2)} benchmark="(>3)" isGood={metrics.zScore >= 2.99 ? true : metrics.zScore >= 1.81 ? 'neutral' : false} />
<MetricBox label="Beneish M:" value={metrics.mScore.toFixed(2)} benchmark="(<-1.78)" isGood={metrics.mScore < -1.78} />
<MetricBox label="Value Trap:" value={`${metrics.valueTrapScore} (${metrics.valueTrapLabel})`} isGood={metrics.valueTrapScore < 40 ? true : metrics.valueTrapScore < 60 ? 'neutral' : false} />
</div>
</div>
</div>
{/* Next 4 sections */}
<div className="grid grid-cols-2 gap-2 mb-3">
{/* Liquidity & Free Cash Flow */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="LIQUIDITY & FREE CASH FLOW" bgColor="bg-cyan-100" />
<div className="grid grid-cols-7 gap-px bg-gray-200">
<MetricBox label="Current Ratio:" value={metrics.currentRatio.toFixed(2)} benchmark="(1-2)" isGood={metrics.currentRatio >= 1 && metrics.currentRatio <= 2 ? true : 'neutral'} />
<MetricBox label="Cash:" value={metrics.totalCash} />
<MetricBox label="Debt:" value={metrics.totalDebt} />
<MetricBox label="FCF Growth 5Y:" value={`${metrics.fcfGrowth5Y}%`} benchmark="(>5%)" isGood={metrics.fcfGrowth5Y >= 5} />
<MetricBox label="FCF Yield:" value={`${metrics.fcfYield}%`} benchmark="(>4%)" isGood={metrics.fcfYield >= 4} />
<MetricBox label="FCF Margin:" value={`${metrics.fcfMargin}%`} benchmark="(>15%)" isGood={metrics.fcfMargin >= 15 ? true : metrics.fcfMargin >= 10 ? 'neutral' : false} />
<MetricBox label="Payout Ratio:" value={`${metrics.payoutRatio}%`} benchmark="(<50%)" isGood={metrics.payoutRatio < 50} />
</div>
</div>
{/* Insider & Sentiment & Class */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="INSIDER & SENTIMENT & CLASS" bgColor="bg-purple-100" />
<div className="grid grid-cols-7 gap-px bg-gray-200">
<MetricBox label="Buys (12M):" value={metrics.insBuys} isGood={metrics.insBuys > metrics.insSells} />
<MetricBox label="Sells (12M):" value={metrics.insSells} />
<MetricBox label="Net Shares (12M):" value={metrics.netShares} />
<MetricBox label="Short Int (%):" value={`${metrics.shortInterest}%`} isGood={metrics.shortInterest < 5 ? true : metrics.shortInterest < 10 ? 'neutral' : false} />
<MetricBox label="Sentiment / Articles:" value={`${metrics.newsSentiment > 0 ? '+' : ''}${metrics.newsSentiment.toFixed(3)} / ${metrics.newsArticleCount}`} benchmark={metrics.newsSentiment > 0 ? '(Positive)' : '(Negative)'} isGood={metrics.newsSentiment > 0} />
<MetricBox label={`Stock: ${metrics.stockType}`} value={`Div Yield: ${metrics.divYield}%`} />
<MetricBox label="Sector/Industry:" value={`${metrics.sector} /`} benchmark={metrics.industry} />
</div>
</div>
</div>
{/* Last 2 sections */}
<div className="grid grid-cols-2 gap-2 mb-3">
{/* Quality Scores */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="QUALITY SCORES" bgColor="bg-orange-100" />
<div className="grid grid-cols-6 gap-px bg-gray-200">
<MetricBox label="CQVS:" value={metrics.cqvs.toFixed(1)} benchmark="(>70)" isGood={metrics.cqvs >= 70 ? true : metrics.cqvs >= 50 ? 'neutral' : false} />
<MetricBox label="Label:" value={metrics.label} />
<MetricBox label="Valuation:" value={metrics.valuation} isGood={metrics.valuation >= 70} />
<MetricBox label="Quality:" value={metrics.quality} isGood={metrics.quality >= 70 ? true : metrics.quality >= 50 ? 'neutral' : false} />
<MetricBox label="Strength:" value={metrics.strength} isGood={metrics.strength >= 70} />
<MetricBox label="Integrity:" value={metrics.integrity} isGood={metrics.integrity >= 70 ? true : metrics.integrity >= 50 ? 'neutral' : false} />
</div>
</div>
{/* Moat & Other */}
<div className="border border-gray-300 rounded overflow-hidden">
<SectionHeader title="MOAT & OTHER" bgColor="bg-gray-200" />
<div className="grid grid-cols-6 gap-px bg-gray-200">
<MetricBox label="Buffett Moat:" value={metrics.buffettMoat} benchmark="(4-7)" isGood={metrics.buffettMoat >= 7 ? true : metrics.buffettMoat >= 4 ? 'neutral' : false} />
<MetricBox label="Greenblatt (MF):" value={`EY: ${metrics.greenblattEY}%`} benchmark={metrics.greenblattROC ? `ROC: ${metrics.greenblattROC}%` : 'ROC: N/A'} isGood={metrics.greenblattEY >= 8 ? true : metrics.greenblattEY >= 4 ? 'neutral' : false} />
<MetricBox label={`Beta: ${metrics.beta}`} value={`Vol 1Y: ${metrics.vol1Y}%`} isGood={metrics.beta < 1 ? true : metrics.beta < 1.5 ? 'neutral' : false} />
<MetricBox label="Earnings Predict.:" value={`${metrics.earningsPredict}%`} benchmark="(>80%)" isGood={metrics.earningsPredict >= 80 ? true : metrics.earningsPredict >= 60 ? 'neutral' : false} />
<MetricBox label="Drawdown (5Y):" value={`${metrics.maxDrawdown}%`} benchmark={metrics.maxDrawdown > -30 ? '(Low)' : metrics.maxDrawdown > -50 ? '(Mid)' : '(High)'} isGood={metrics.maxDrawdown > -30 ? true : metrics.maxDrawdown > -50 ? 'neutral' : false} />
<MetricBox label={`Completeness: ${metrics.completeness}%`} value={`Data Quality: ${metrics.dataQuality}`} isGood={metrics.dataQuality === 'High' ? true : metrics.dataQuality === 'Medium' ? 'neutral' : false} />
</div>
</div>
</div>
{/* Charts Section - Enhanced with Legends */}
<div className="grid grid-cols-3 gap-2 mb-3">
{/* Linear Price Chart + MACD */}
<div className="border border-gray-300 rounded p-2">
<div className="text-sm font-bold mb-1 text-center">LINEAR PRICE CHART (10Y)</div>
<div className="text-[7px] text-gray-500 mb-1 pl-1">
— Close Price — Total Return<br/>
- - Market Value (Current): €{metrics.marketValueCurrent}<br/>
- - Intrinsic Value (Current): €{metrics.intrinsicValueCurrent}<br/>
- - Analyst Target: €{metrics.analystTarget}
</div>
<ResponsiveContainer width="100%" height={130}>
<LineChart data={priceHistory}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 7 }} />
<YAxis tick={{ fontSize: 7 }} />
<Tooltip contentStyle={{ fontSize: 8 }} />
<Line type="monotone" dataKey="price" stroke="#1f2937" strokeWidth={1.5} dot={false} name="Close" />
<Line type="monotone" dataKey="totalReturn" stroke="#6b7280" strokeWidth={1} strokeDasharray="2 2" dot={false} name="Total Return" />
<Line type="monotone" dataKey="intrinsicValueCurrent" stroke="#16a34a" strokeWidth={1} strokeDasharray="5 5" dot={false} name="IV Current" />
<Line type="monotone" dataKey="analystTarget" stroke="#3b82f6" strokeWidth={1} strokeDasharray="3 3" dot={false} name="Target" />
</LineChart>
</ResponsiveContainer>
<div className="text-xs font-bold mt-1 mb-1 text-center">MACD</div>
<ResponsiveContainer width="100%" height={55}>
<LineChart data={macdData}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 6 }} />
<YAxis tick={{ fontSize: 6 }} />
<ReferenceLine y={0} stroke="#666" />
<Tooltip contentStyle={{ fontSize: 7 }} />
<Line type="monotone" dataKey="macd" stroke="#2563eb" strokeWidth={1} dot={false} name="MACD" />
<Line type="monotone" dataKey="signal" stroke="#dc2626" strokeWidth={1} dot={false} name="Signal" />
</LineChart>
</ResponsiveContainer>
</div>
{/* Radar + Investor Personas + Forecast */}
<div className="border border-gray-300 rounded p-2">
<div className="relative">
<ResponsiveContainer width="100%" height={140}>
<RadarChart data={radarData}>
<PolarGrid />
<PolarAngleAxis dataKey="metric" tick={{ fontSize: 6 }} />
<PolarRadiusAxis angle={30} domain={[0, 100]} tick={{ fontSize: 6 }} />
<Radar name={ticker} dataKey="value" stroke="#2563eb" fill="#3b82f6" fillOpacity={0.3} />
</RadarChart>
</ResponsiveContainer>
{/* Investor Persona Badges */}
<PersonaBadge name="Buffett" score={metrics.buffettScore} position="top-0 left-1/4" />
<PersonaBadge name="Lynch" score={metrics.lynchScore} position="top-0 right-1/4" />
<PersonaBadge name="Munger" score={metrics.mungerScore} position="top-1/4 -left-2" />
<PersonaBadge name="Greenblatt" score={metrics.greenblattScore} position="top-1/4 -right-2" />
<PersonaBadge name="Dalio" score={metrics.dalioScore} position="bottom-1/4 -left-2" />
<PersonaBadge name="Graham" score={metrics.grahamScore} position="bottom-1/4 -right-2" />
<PersonaBadge name="Templeton" score={metrics.templetonScore} position="bottom-0 left-1/4" />
<PersonaBadge name="Soros" score={metrics.sorosScore} position="bottom-0 right-1/4" />
</div>
<div className="text-center my-1">
<span className="bg-green-200 px-2 py-0.5 text-[10px] font-bold rounded border border-green-400">
Advice: {recommendation} (CQVS: {metrics.cqvs.toFixed(1)})
</span>
</div>
<div className="text-[8px] font-bold mb-0.5 text-center">1Y PRICE + 6-MONTH FORECAST</div>
<div className="text-[6px] text-gray-500 mb-0.5 text-center">— Close — 50-Day MA — 200-Day MA ▒ Bollinger Bands - - Forecast</div>
<ResponsiveContainer width="100%" height={70}>
<ComposedChart data={oneYearData}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 6 }} />
<YAxis tick={{ fontSize: 6 }} />
<Tooltip contentStyle={{ fontSize: 7 }} />
<Area type="monotone" dataKey="upperBand" stroke="none" fill="#e0e0e0" fillOpacity={0.5} />
<Area type="monotone" dataKey="ci95Upper" stroke="none" fill="#dbeafe" fillOpacity={0.5} />
<Line type="monotone" dataKey="price" stroke="#1f2937" strokeWidth={1.5} dot={false} />
<Line type="monotone" dataKey="ma50" stroke="#f59e0b" strokeWidth={1} dot={false} />
<Line type="monotone" dataKey="ma200" stroke="#ef4444" strokeWidth={1} dot={false} />
<Line type="monotone" dataKey="forecast" stroke="#16a34a" strokeWidth={1.5} strokeDasharray="5 5" dot={false} />
</ComposedChart>
</ResponsiveContainer>
{/* Valuation Indicator */}
<div className={`text-center text-[10px] font-bold mt-1 ${metrics.valuationPercent > 10 ? 'text-green-600' : metrics.valuationPercent < -10 ? 'text-red-600' : 'text-yellow-600'}`}>
{metrics.valuationLabel} ({metrics.valuationPercent > 0 ? '+' : ''}{metrics.valuationPercent}%)
</div>
</div>
{/* Log Price + RSI */}
<div className="border border-gray-300 rounded p-2">
<div className="text-sm font-bold mb-1 text-center">LOG PRICE CHART (10Y)</div>
<div className="text-[7px] text-gray-500 mb-1 pl-1">
— Close Price — Total Return<br/>
- - Unrestr. Market Value (Current): €{metrics.unrestrictedMarketValueCurrent}<br/>
- - Unrestr. Market Value (Next Year): €{metrics.unrestrictedMarketValueNextYear}
</div>
<ResponsiveContainer width="100%" height={130}>
<LineChart data={priceHistory}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 7 }} />
<YAxis tick={{ fontSize: 7 }} scale="log" domain={['auto', 'auto']} />
<Tooltip contentStyle={{ fontSize: 8 }} />
<Line type="monotone" dataKey="price" stroke="#1f2937" strokeWidth={1.5} dot={false} name="Close" />
<Line type="monotone" dataKey="totalReturn" stroke="#6b7280" strokeWidth={1} strokeDasharray="2 2" dot={false} name="Total Return" />
<Line type="monotone" dataKey="unrestrictedCurrent" stroke="#dc2626" strokeWidth={1} strokeDasharray="5 5" dot={false} name="Unrestr Current" />
<Line type="monotone" dataKey="unrestrictedNextYear" stroke="#f97316" strokeWidth={1} strokeDasharray="5 5" dot={false} name="Unrestr Next" />
</LineChart>
</ResponsiveContainer>
<div className="text-xs font-bold mt-1 mb-1 text-center">RSI (14) = {rsiData[rsiData.length - 1].rsi}</div>
<ResponsiveContainer width="100%" height={55}>
<LineChart data={rsiData}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 6 }} />
<YAxis tick={{ fontSize: 6 }} domain={[0, 100]} />
<Tooltip contentStyle={{ fontSize: 7 }} />
<ReferenceLine y={70} stroke="#ef4444" strokeDasharray="2 2" />
<ReferenceLine y={30} stroke="#22c55e" strokeDasharray="2 2" />
<Line type="monotone" dataKey="rsi" stroke="#f59e0b" strokeWidth={1.5} dot={false} />
</LineChart>
</ResponsiveContainer>
</div>
</div>
{/* NEW: Ichimoku Cloud Chart */}
<div className="border border-gray-300 rounded p-2 mb-3">
<div className="text-sm font-bold mb-1 text-center">ICHIMOKU CLOUD</div>
<div className="flex gap-4 text-[7px] justify-center mb-1">
<span>— Close Price</span>
<span className="text-blue-500">— Tenkan-sen (9)</span>
<span className="text-red-500">— Kijun-sen (26)</span>
<span className="text-gray-400">— Chikou Span</span>
<span className="text-green-500">▒ Senkou Span A/B (Cloud)</span>
<span className="ml-2 font-bold text-yellow-600">◆ TK Cross</span>
<span className="text-purple-600">◆ Kumo Twist</span>
</div>
<ResponsiveContainer width="100%" height={100}>
<ComposedChart data={ichimokuData}>
<CartesianGrid strokeDasharray="3 3" stroke="#e0e0e0" />
<XAxis dataKey="date" tick={{ fontSize: 7 }} />
<YAxis tick={{ fontSize: 7 }} domain={['auto', 'auto']} />
<Tooltip contentStyle={{ fontSize: 8 }} />
<Area type="monotone" dataKey="senkouA" stroke="none" fill="#86efac" fillOpacity={0.3} />
<Area type="monotone" dataKey="senkouB" stroke="none" fill="#fca5a5" fillOpacity={0.3} />
<Line type="monotone" dataKey="price" stroke="#1f2937" strokeWidth={2} dot={false} name="Price" />
<Line type="monotone" dataKey="tenkan" stroke="#3b82f6" strokeWidth={1} dot={false} name="Tenkan" />
<Line type="monotone" dataKey="kijun" stroke="#dc2626" strokeWidth={1} dot={false} name="Kijun" />
<Line type="monotone" dataKey="chikou" stroke="#9ca3af" strokeWidth={1} strokeDasharray="3 3" dot={false} name="Chikou" />
<Scatter dataKey="tkCrossMarker" fill="#9333ea" shape="diamond" name="TK Cross" />
<Scatter dataKey="kumoTwistMarker" fill="#dc2626" shape="diamond" name="Kumo Twist" />
</ComposedChart>
</ResponsiveContainer>
<div className="flex gap-4 text-[8px] justify-center mt-1">
<span className="bg-green-100 px-2 rounded">{ichimokuSignals.tkCross}</span>
<span className="bg-green-100 px-2 rounded">{ichimokuSignals.kumoTwist}</span>
<span className="bg-green-100 px-2 rounded">{ichimokuSignals.priceVsCloud}</span>
</div>
</div>
{/* Key Notes (Expandable) */}
<div className="border border-gray-300 rounded overflow-hidden">
<button
onClick={() => setShowKeyNotes(!showKeyNotes)}
className="w-full bg-gray-100 px-3 py-2 text-left text-sm font-bold flex items-center hover:bg-gray-200"
>
<span className="mr-2">{showKeyNotes ? '▼' : '▶'}</span> Key Notes (Click to Expand)
</button>
{showKeyNotes && (
<div className="p-3 bg-gray-50">
<div className="grid grid-cols-3 gap-4 text-xs">
{/* Bull Case */}
<div>
<div className="font-bold text-green-700 mb-2 text-sm">BULL CASE ({bullCase.target})</div>
<ul className="list-disc list-inside space-y-1">
{bullCase.points.map((point, i) => <li key={i}>{point}</li>)}
</ul>
</div>
{/* Bear Case */}
<div>
<div className="font-bold text-red-700 mb-2 text-sm">BEAR CASE ({bearCase.target})</div>
<ul className="list-disc list-inside space-y-1">
{bearCase.points.map((point, i) => <li key={i}>{point}</li>)}
</ul>
</div>
{/* Entry/Exit Strategy */}
<div>
<div className="font-bold text-blue-700 mb-2 text-sm">ENTRY/EXIT STRATEGY</div>
<ul className="list-disc list-inside space-y-1">
<li><strong>Ideal Entry:</strong> {entryStrategy.idealEntry}</li>
<li><strong>Current:</strong> {entryStrategy.currentEntry}</li>
<li><strong>Target:</strong> {entryStrategy.target}</li>
<li><strong>Stop Loss:</strong> {entryStrategy.stopLoss}</li>
<li><strong>Position Size:</strong> {entryStrategy.positionSize}</li>
</ul>
</div>
</div>
</div>
)}
</div>
{/* Footer */}
<div className="text-xs text-gray-500 text-center mt-3">
Analysis Date: {analysisDate} | Sources: SEC Filings, Company Reports |
<span className="font-bold text-blue-600 ml-1">{recommendation}</span>
</div>
</div>
);
};
export default QuantDashboard;
实施说明
关键步骤:
-
计算所有指标在全面的文本分析过程中
-
将指标存储在变量中在计算时进行存储
-
完成完整的文本分析后,创建React构件
-
替换所有占位符值在模板中使用实际计算的数据
-
使用确切的模板结构- 不要修改组件代码
-
填充这些特定的数据数组:
指标对象(包含投资者画像评分的60多个值)topNews数组(5条带日期的近期新闻标题)priceHistory数组(包含多条估值线的10年数据)一年期数据数组(含移动平均线、布林带、预测)一目均衡表数据数组(6个月期,含信号标记)一目均衡表信号对象(转换线与基准线交叉、云层扭转、价格与云层关系)MACD数据数组(最近6个数据点,含柱状图)RSI数据数组(最近6个数据点)雷达图数据数组(12项指标,标准化至0-100范围)看涨案例要点(基于看涨分析的5个要点)看跌案例要点(基于看跌分析的5个要点)入场策略(入场/出场策略的5个参数值)
-
标准化雷达图数值规范要求:
- 每项指标均采用0-100标度
- 数值越高始终代表更优(风险/贝塔值等逆向指标需进行反转处理)
- 使用上面提供的缩放公式
-
正确格式化数值:
- 货币:
"€100.00"(欧元为默认货币 - 使用 € 而非 $) - 大额数字:
"€10B","€2.5M" - 百分比:
15.0(数字,而非带 % 的字符串) - 比率:
1.25(数字) - 分数:
7(整数)或75.0(浮点数)
- 货币:
-
增长指标:
- 使用报告的收入增长(而非基础/有机增长)
- 使用报告的盈利增长(而非调整后每股收益增长)
-
不要:
- 保留占位符值
- 修改组件结构
- 跳过任何部分
- 使用估算/猜测的数据
这是唯一被接受的仪表板格式。所有其他仪表板样式均已弃用。
与项目背景的整合
投资组合意识
- 从项目知识中访问投资组合数据
- 检查股票是否已被持有(若是,建议使用投资组合分析师)
- 评估与现有持仓的契合度(行业暴露、相关性)
- 在当前配置背景下考虑头寸规模
投资画像
- 项目说明中用户设定的投资时间线、风险承受能力、偏好
- 根据用户画像定制推荐
- 考虑用户背景下的税务影响
- 根据投资组合规模和风险承受能力调整头寸规模
避免重复
如果股票已在投资组合中:
- 提示确认:“您已持有[股票代码]。如需分析现有持仓,请使用投资组合分析技能。”
- 若用户要求重新评估仍可提供分析
- 将评估框架调整为“是否应增持?”而非首次购买建议
使用场景说明
在以下情况使用股票评估技能:
- 用户询问“我应该买入[股票]吗?”
- 用户需要评估观察清单中的候选股票
- 用户请求股票推荐
- 用户询问“[股票]是否值得投资?”
- 用户需要比较多个潜在投资标的
- 用户询问所考虑股票的替代选项
- 用户需要入场价格和仓位规模指导
- 用户请求“量化风格仪表盘”或“股票可视化分析”
以下情况请勿使用本技能:
- 用户需要检视现有投资组合持仓 → 请使用投资组合分析技能
- 用户需要通用市场评论 → 使用常规知识库
- 用户需要股票筛选/发现 → 不同工作流程
- 用户询问期权、衍生品、加密货币 → 超出范围
输出内容包括:
- 全面的文本分析(以上所有部分)
- 量化风格的React仪表板成果(标准化视觉格式)
最佳实践
研究方法
- 从公司文件入手(10-K,10-Q)- 而非新闻报道
- 回溯5-10年- 理解演变过程,而不仅仅是当前状态
- 与3-5家同行比较- 进行同类比较
- 多种估值方法- 不要依赖单一方法
- 呈现正反两面- 公平陈述看涨与看跌的理由
- 具体化- 使用实际数据,而非泛泛而谈
估值纪律
- 始终要求至少15%的安全边际
- 在DCF中使用保守假设
- 权衡多种估值方法
- 考虑行业特定规范
- 不要为增长支付过高溢价
风险意识
- 明确识别并量化风险
- 考虑概率和影响
- 诚实地承认未知因素
- 不要只关注上行空间
沟通
- 以明确的建议开头
- 用证据支持每一个主张
- 使用具体的数字和日期
- 解释推理过程,而非仅陈述结论
- 使建议清晰无误
需要识别的常见模式
优质公司
- 在整个周期(5-10年)内保持持续盈利能力
- 强劲的资产负债表(低负债、高现金)
- 竞争护城河(宽阔或狭窄)
- 对股东友好的资本配置
- 可预测的商业模式
价值陷阱(需避免)
- 低价有因(业务衰退)
- 高负债且现金流薄弱
- 市场份额持续流失
- 缺乏竞争优势
- 管理层资本配置能力差
以合理价格增长(GARP)
- 强劲的收入增长(15-25%以上)
- 利润率扩张
- 广阔的可及市场
- 具备竞争优势
- 估值合理(市盈增长比率 < 1.5)
转型潜力股
- 拥有成功履历的新管理层
- 关键指标季度环比改善
- 变革催化剂
- 深度价值且具备安全边际
- 债务减少或现金流改善
最终确认前的质量检查
在呈现分析前,请核实:
数据完整性检查(关键 - 优先检查)
- ✅ 每个数字指标是否都有来自网络搜索的引用来源?
- ✅ 是否未捏造内部交易活动?(SEC表格4或N/A)
- ✅ 是否未捏造卖空数据?(FINRA/交易所数据或N/A)
- ✅ 净资产收益率基准是否正确?(>20% = 绿色,10-20% = 黄色,<10% = 红色)
- ✅ 是否使用了标准化指标标签?(例如,使用"营业利润率",而非"经营")
- ✅ 所有不可用数据是否均显示为"N/A"?(切勿使用零或估算值)
- ✅ 头条新闻格式是否正确?(竖线分隔,日期在末尾方括号内)
- ✅ 估值指标是否显示在预测下方?(低估/估值合理/高估 +/- %)
- ✅ Beta值与1年波动率是否合并于同一单元格?
- ✅ 行业板块是否合并于同一单元格?
分析完整性检查
- ✅ 是否完成所有必交项目?
- ✅ 是否采用了多种估值方法?
- ✅ 是否同时呈现了看涨和看跌观点?
- ✅ 是否有明确的买入/持有/卖出建议?
- ✅ 是否有具体的入场价格和头寸规模?
- ✅ 对比了3-5家同行业公司吗?
- ✅ 分析了5-10年的财务趋势吗?
- ✅ 研究基于公司申报文件,而非新闻报道?
- ✅ 计算了安全边际吗?
- ✅ 评估了风险水平吗?
- ✅ 如果建议卖出:是否提供了3-5个替代选择?
- ✅ 识别了技术性入场点吗?
- ✅ 计算了高级指标(皮奥特罗斯基F分数、阿尔特曼Z值、贝尼什M值、最大回撤)吗?
- ✅ 所有货币价值均以欧元(€)计?
- ✅ 收入/收益增长使用的是报告数据(而非基础/调整后数据)?
- ✅ 计算了价值陷阱分数(0-100,分数越低越真实)吗?
- ✅ 计算了全部8项投资者画像分数(0-10)吗?
- ✅ 计算了市盈增长比率吗?
- ✅ 计算了自由现金流利润率吗?
- ✅ 格林布拉特神奇公式指标(收益率、资本回报率)?
- ✅ 研究了新闻情绪和空头头寸情况吗?
- ✅ 收集了一目均衡表数据并带有信号标记吗?
- ✅ 填充了“头条新闻”部分(5条近期标题)吗?
- ✅ 提供10年价格历史及估值线吗?
- ✅ 已创建包含所有60多个指标的增强版仪表板吗?
最终验证问题
- 仪表板中的每个数字都能提供来源引用吗?
- 是否有任何指标仅来自培训知识?(如果是,请重新搜索或使用N/A)
- 内部人士买卖数据是否明确来自SEC表格4?(如果未找到,请使用N/A)
如果任何检查项未完成:停止并收集更多信息。 如果搜索后数据确实无法获取:使用"N/A" - 切勿捏造。
示例评估结构
[详细步骤请参见EVALUATION-WORKFLOWS.md中的完整示例]
持续改进
每次评估后:
- 追踪推荐结果
- 从有效/无效的经验中学习
- 完善估值假设
- 提升模式识别能力
- 更新行业知识
目标是发掘真正具有吸引力的投资机会,这些机会需符合用户的风险承受能力,并具备足够的安全边际和可接受的风险水平。


微信扫一扫,打赏作者吧~