airsad commited on
Commit
9e66951
·
verified ·
1 Parent(s): 9b8565c

Create data.py

Browse files
Files changed (1) hide show
  1. data.py +51 -0
data.py ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import yfinance as yf
3
+ from fredapi import Fred
4
+ import feedparser
5
+ from textblob import TextBlob
6
+
7
+ def get_fred_metrics():
8
+ api_key = os.environ.get("FRED_API_KEY", "")
9
+ if not api_key:
10
+ return {"error": "Missing FRED API Key"}
11
+
12
+ try:
13
+ fred = Fred(api_key=api_key)
14
+ fed_funds = fred.get_series("FEDFUNDS").iloc[-1]
15
+ cpi = fred.get_series("CPIAUCSL")
16
+ cpi_yoy = ((cpi.iloc[-1] - cpi.iloc[-13]) / cpi.iloc[-13]) * 100
17
+ unrate = fred.get_series("UNRATE").iloc[-1]
18
+
19
+ return {
20
+ "fed_funds": float(fed_funds),
21
+ "cpi_yoy": float(cpi_yoy),
22
+ "unemployment": float(unrate)
23
+ }
24
+ except Exception as e:
25
+ return {"error": str(e)}
26
+
27
+ def get_dxy_market_data():
28
+ try:
29
+ ticker = yf.Ticker("DX-Y.NYB")
30
+ hist = ticker.history(period="1m")
31
+ spot = hist['Close'].iloc[-1]
32
+ prev = hist['Close'].iloc[0]
33
+ pct_change = ((spot - prev) / prev) * 100
34
+ return {"spot": float(spot), "change_1m": float(pct_change)}
35
+ except Exception as e:
36
+ return {"spot": 0.0, "change_1m": 0.0}
37
+
38
+ def get_macro_news_sentiment():
39
+ try:
40
+ feed = feedparser.parse("https://feeds.finance.yahoo.com/rss/2.0/headline?s=DX-Y.NYB")
41
+ sentiments = []
42
+ titles = []
43
+ for entry in feed.entries[:5]:
44
+ blob = TextBlob(entry.title)
45
+ sentiments.append(blob.sentiment.polarity)
46
+ titles.append(entry.title)
47
+
48
+ avg_sentiment = sum(sentiments) / len(sentiments) if sentiments else 0
49
+ return {"sentiment": avg_sentiment, "headlines": titles}
50
+ except Exception as e:
51
+ return {"sentiment": 0.0, "headlines": []}