Peter Lynch Agent 教程:GARP 成长投资、PEG 估值与十倍股筛选 难度:入门 Peter Lynch 是富达麦哲伦基金的传奇基金经理,以「投资你所了解的」和 GARP(Growth at a Reasonable Price,合理价格买成长)闻名。在本项目中, 将 Lynch 的投资手册编码为五步加权评分 + LLM 叙事生成:看重营收/EPS 持续增长、PEG 是否合理、负债是否可控,并用新闻情绪与内部人交易作辅助验证。如果你想知道系统如何寻找「十倍股」候选,本篇是核心入门读物。 本文你将学到 Lynch 的 GARP 哲学如何在代码中体现为 PEG 评分逻辑 五步分析的权重分配(成长 30%、估值 25%……) Python 层信号阈值(≥7.
难度:入门
Peter Lynch 是富达麦哲伦基金的传奇基金经理,以「投资你所了解的」和 GARP(Growth at a Reasonable Price,合理价格买成长)闻名。在本项目中,peter_lynch_agent 将 Lynch 的投资手册编码为五步加权评分 + LLM 叙事生成:看重营收/EPS 持续增长、PEG 是否合理、负债是否可控,并用新闻情绪与内部人交易作辅助验证。如果你想知道系统如何寻找「十倍股」候选,本篇是核心入门读物。
peter_lynch_agent 五步分析的权重分配(成长 30%、估值 25%……)analyze_lynch_growth、analyze_lynch_valuation 等的评分细则Lynch 的投资哲学可以浓缩为六句话:
在本 Agent 中,人设关注点映射为五个评分维度:
| 维度 | 权重 | 核心指标 |
|---|---|---|
| 成长 Growth | 30% | 营收增长率、EPS 增长率 |
| 估值 Valuation | 25% | P/E、PEG 比率 |
| 基本面 Fundamentals | 20% | D/E、营业利润率、FCF |
| 情绪 Sentiment | 15% | 新闻标题负面关键词占比 |
| 内部人 Insider | 10% | 买入/卖出笔数比 |
Lynch 愿意为中速成长付合理溢价,但绝不为「无成长的高 P/E」买单——这与 Cathie Wood 的颠覆式成长、Druckenmiller 的动量进攻形成微妙差异。对初学者而言,可以把 Lynch 想象成「逛超市挑水果」:先挑新鲜(成长),再看标价是否合理(PEG),最后确认没有烂斑(负债与负面新闻)。
peter_lynch_agent(state, agent_id) 对每个 ticker 执行以下流水线:
第一步:拉数
search_line_items:年度数据 limit=5,字段含 revenue、EPS、net_income、operating_margin、FCF、total_debt、shareholders_equity 等get_market_cap:计算近似 P/E 和 PEGget_insider_trades:limit=50get_company_news:limit=50第二步:五路子分析
growth_analysis = analyze_lynch_growth(financial_line_items) fundamentals_analysis = analyze_lynch_fundamentals(financial_line_items) valuation_analysis = analyze_lynch_valuation(financial_line_items, market_cap) sentiment_analysis = analyze_sentiment(company_news) insider_activity = analyze_insider_activity(insider_trades)
第三步:加权求总分
total_score = ( growth_analysis["score"] * 0.30 + valuation_analysis["score"] * 0.25 + fundamentals_analysis["score"] * 0.20 + sentiment_analysis["score"] * 0.15 + insider_activity["score"] * 0.10 ) # max_possible_score = 10.0
第四步:Python 层信号映射
if total_score >= 7.5: signal = "bullish" elif total_score <= 4.5: signal = "bearish" else: signal = "neutral"
注意:Python 层先给出 signal,但 LLM 在 generate_lynch_output 中会综合全部 analysis_data 重新裁决,可能调整最终信号与置信度。
第五步:LLM 生成 Lynch 风格叙事
LLM 被要求以 Lynch 口吻引用 PEG、提及「十倍股」潜力、使用生活化语言(如「如果我孩子喜欢这个产品……」),输出 PeterLynchSignal。
第六步:写回状态
结果写入 state["data"]["analyst_signals"]["peter_lynch_agent"],并生成 HumanMessage 供 LangGraph 下游节点消费。
analyze_lynch_growth(原始分 0-6,缩放至 0-10)# 营收增长(最新 vs 最旧) rev_growth = (latest_rev - older_rev) / abs(older_rev) if rev_growth > 0.25: raw_score += 3 # 强劲 >25% elif rev_growth > 0.10: raw_score += 2 elif rev_growth > 0.02: raw_score += 1 # EPS 增长(同样逻辑,最高 +3) final_score = min(10, (raw_score / 6) * 10)
analyze_lynch_fundamentals(原始分 0-6,缩放至 0-10)de_ratio = recent_debt / recent_equity if de_ratio < 0.5: raw_score += 2 # 低负债 elif de_ratio < 1.0: raw_score += 1 if operating_margin > 0.20: raw_score += 2 elif operating_margin > 0.10: raw_score += 1 if fcf > 0: raw_score += 2
analyze_lynch_valuation(原始分 0-5,缩放至 0-10)——GARP 核心pe_ratio = market_cap / net_incomes[0] # 近似 P/E # EPS 年化复合增长率 CAGR eps_growth_rate = (latest_eps / older_eps) ** (1/num_years) - 1 # PEG = P/E / (增长率 × 100) peg_ratio = pe_ratio / (eps_growth_rate * 100) # 评分 if pe_ratio < 15: raw_score += 2 elif pe_ratio < 25: raw_score += 1 if peg_ratio < 1: raw_score += 3 # 极具吸引力 elif peg_ratio < 2: raw_score += 2 elif peg_ratio < 3: raw_score += 1
举例:P/E=20,EPS 增长率 25%(0.25)→ PEG = 20/25 = 0.8,加 3 分。
analyze_sentimentnegative_keywords = ["lawsuit", "fraud", "negative", "downturn", ...] if negative_count > 30% of news: score = 3 elif negative_count > 0: score = 6 else: score = 8
analyze_insider_activitybuy_ratio = buys / (buys + sells) if buy_ratio > 0.7: score = 8 # 大量买入 elif buy_ratio > 0.4: score = 6 else: score = 4 # 多数卖出
peter_lynch_agent 是系统中最接地气的成长派分析师:用 PEG 作为估值锚,用营收/EPS 趋势捕捉「十倍股」苗头,再用负债、FCF、新闻、内部人交易过滤明显陷阱。Python 层 ≥7.5 分即倾向 bullish,但最终信号由 LLM 以 Lynch 叙事风格综合裁决。实操建议:优先关注 valuation_analysis 中的 PEG 数值和 growth_analysis 中的增长率——这是 Lynch 的灵魂指标。
下一篇请阅读同目录下的《Phil Fisher Agent 教程:长期成长质量与 Scuttlebutt 基本面研究》。