KKKMatthias commited on
Commit
ac6f355
·
verified ·
1 Parent(s): 2731fec

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -5
app.py CHANGED
@@ -25,10 +25,25 @@ def home():
25
  @app.get("/stock/{ticker}")
26
  def get_stock(ticker: str):
27
  try:
28
- # yfinance 在 HF 的环境下表现非常稳定
29
  stock = yf.Ticker(ticker.upper())
30
  info = stock.info
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  if not info or len(info) < 5:
33
  return {"error": "No data found", "ticker": ticker}
34
 
@@ -36,12 +51,13 @@ def get_stock(ticker: str):
36
  "ticker": ticker.upper(),
37
  "pe_static": clean_num(info.get('trailingPE')),
38
  "pe_dynamic": clean_num(info.get('forwardPE')),
39
- "eps_current_year": clean_num(info.get('trailingEps')),
40
- "eps_next_year": clean_num(info.get('forwardEps')),
 
 
 
41
  "source": "hf_space_v1"
42
  }
43
- except Exception as e:
44
- return {"error": str(e)}
45
 
46
  if __name__ == "__main__":
47
  # Hugging Face 会自动分配端口,通常是 7860
 
25
  @app.get("/stock/{ticker}")
26
  def get_stock(ticker: str):
27
  try:
 
28
  stock = yf.Ticker(ticker.upper())
29
  info = stock.info
30
 
31
+ # 获取分析师盈利估计详情
32
+ # earnings_estimate 通常是一个以时间为行,指标(avg, low, high等)为列的 DataFrame
33
+ est = stock.earnings_estimate
34
+
35
+ # 默认初始化为 None
36
+ eps_est_current = None
37
+ eps_est_next = None
38
+
39
+ if est is not None and not est.empty:
40
+ # yfinance 的索引通常是 '0y' 代表 Current Year, '1y' 代表 Next Year
41
+ # 安全地获取 avg 列中的对应值
42
+ if '0y' in est.index:
43
+ eps_est_current = est.loc['0y', 'avg']
44
+ if '1y' in est.index:
45
+ eps_est_next = est.loc['1y', 'avg']
46
+
47
  if not info or len(info) < 5:
48
  return {"error": "No data found", "ticker": ticker}
49
 
 
51
  "ticker": ticker.upper(),
52
  "pe_static": clean_num(info.get('trailingPE')),
53
  "pe_dynamic": clean_num(info.get('forwardPE')),
54
+ # info 里的 trailingEps 是过去一年的实际值
55
+ "eps_trailing": clean_num(info.get('trailingEps')),
56
+ # 从 earnings_estimate 中获取的分析师平均预测值
57
+ "eps_est_avg_current_year": clean_num(eps_est_current),
58
+ "eps_est_avg_next_year": clean_num(eps_est_next),
59
  "source": "hf_space_v1"
60
  }
 
 
61
 
62
  if __name__ == "__main__":
63
  # Hugging Face 会自动分配端口,通常是 7860