AI κΈ°λ° S&P 500 μΉν° λΆμ λ° ν¬μ μΆμ² μμ€ν
FinAgent Phase2: Market Agentλ λ―Έκ΅ μ°λ°©μ€λΉμ λ(Fed)μ κ±°μκ²½μ μ§νλ₯Ό μ’ ν©μ μΌλ‘ λΆμνμ¬ S&P 500 μΉν°λ³ ν¬μ μ λ΅μ μ μνλ AI μμ΄μ νΈμ λλ€. LangChainκ³Ό LangGraphλ₯Ό νμ©ν 체κ³μ μΈ μν¬νλ‘μ°λ₯Ό ν΅ν΄ λ°μ΄ν° μμ§, λ€μ€ μ§ν λΆμ, λ°±ν μ€νΈ, νΌλλ°±μ μ κ³Όμ μ μλνν©λλ€.
- π¦ FRED API μ°λ: 5κ°μ§ μ£Όμ κ±°μκ²½μ μ§ν μ€μκ° μμ§
- κΈ°μ€κΈλ¦¬ (Federal Funds Rate)
- GDP (κ΅λ΄μ΄μμ°)
- μ€μ λ₯ (Unemployment Rate)
- λΉλμ κ³ μ©μ μ (Non-Farm Payrolls)
- CPI (μλΉμλ¬Όκ°μ§μ)
- π S&P 500 μΉν° λΆμ: yfinanceλ₯Ό νμ©ν 11κ° μ£Όμ μΉν° λ°μ΄ν° λΆμ
- π€ λ€μ€ μ§ν κΈ°λ° AI μΆμ²: κ° κ±°μκ²½μ μ§νλ³ μΉν° μΆμ² ν μ’ ν© λΆμ
- π μλ λ°±ν μ€νΈ: κ³Όκ±° λ°μ΄ν° κΈ°λ° μΆμ² μ±κ³Ό κ²μ¦ (μ΅λ 5ν λ°λ³΅)
- π‘ νΌλλ°± 루ν: λ°±ν μ€νΈ μ€ν¨ μ μλμΌλ‘ μ λ΅ κ°μ λ° μ¬μΆμ²
- π― LangGraph μν¬νλ‘μ°: 체κ³μ μΈ λΆμ νμ΄νλΌμΈ ꡬμΆ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LangGraph Workflow β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β [START] β
β β β
β [Initialize Data] β FRED API (5κ° κ±°μκ²½μ μ§ν + μΉν° λ°μ΄ν°) β
β β β
β [Recommend Sectors] β κ° μ§νλ³ μΉν° μΆμ² (5κ° λΆμ) β
β β β
β [Summarize] β 5κ° μΆμ² κ²°κ³Ό μ’
ν© λΆμ β
β β β
β [Backtest] β νμ¬ μμ λ°μ΄ν°λ‘ κ²μ¦ β
β β β
β Success? ββYesβββ [Final Summary] β [END] β
β β β
β Failed? β
β β β
β [Feedback Analysis] (μ΅λ 5ν λ°λ³΅) β
β β β
β [Backtest] β κ°μ λ μ λ΅μΌλ‘ μ¬κ²μ¦ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- FRED API: 5κ°μ§ κ±°μκ²½μ μ§ν (κΈ°μ€κΈλ¦¬, GDP, μ€μ λ₯ , λΉλμ κ³ μ©, CPI)
- Yahoo Finance API: S&P 500 μΉν°λ³ ETF λ°μ΄ν° (11κ° μΉν°)
Phase2-MarketAgent/
βββ Agent/ # AI μμ΄μ νΈ ν΅μ¬ λ‘μ§
β βββ Chain/ # LangChain μ²΄μΈ κ΅¬ν
β β βββ Chains.py # ν΅ν© μ²΄μΈ λͺ¨λ (μΆμ²/μμ½/λ°±ν
μ€νΈ/νΌλλ°±)
β βββ Graph/ # LangGraph μν¬νλ‘μ°
β β βββ MacroGraph.py # κ±°μκ²½μ λΆμ κ·Έλν (λ©μΈ μ€ν νμΌ)
β βββ MacroData/ # κ±°μκ²½μ λ°μ΄ν° μμ§ λͺ¨λ
β β βββ FundsRate.py # κΈ°μ€κΈλ¦¬ λ°μ΄ν°
β β βββ GDP.py # GDP λ°μ΄ν°
β β βββ UmEmployMent.py # μ€μ
λ₯ λ°μ΄ν°
β β βββ NonFarmPayrolls.py # λΉλμ
κ³ μ©μ μ λ°μ΄ν°
β β βββ CPI.py # μλΉμλ¬Όκ°μ§μ λ°μ΄ν°
β βββ Prompt/ # LLM ν둬ννΈ ν
νλ¦Ώ
β β βββ Prompts.py # ν΅ν© ν둬ννΈ λͺ¨λ
β βββ Util/ # μ νΈλ¦¬ν° ν¨μ
β βββ LLM.py # LLM μμ± λ° μ€μ
β βββ Yfinace3moData.py # μΉν° λ°μ΄ν° μ²λ¦¬
βββ Apis/ # μΈλΆ API μ°λ
β βββ FredApi.py # FRED API λνΌ
β βββ YFinace.py # Yahoo Finance API λνΌ
βββ requirements.txt # νλ‘μ νΈ μμ‘΄μ±
βββ LICENSE # MIT λΌμ΄μ μ€
βββ README.md # νλ‘μ νΈ λ¬Έμ
- LangGraphλ₯Ό νμ©ν μ 체 λΆμ νμ΄νλΌμΈ μ μ
- λ°μ΄ν° μ΄κΈ°ν β μΉν° μΆμ² β μμ½ β λ°±ν μ€νΈ β νΌλλ°± 루ν ꡬν
uv run Agent/Graph/MacroGraph.py
λ‘ μ§μ μ€ν κ°λ₯
recommend_sectors_chain
: κ±°μκ²½μ μ§ν κΈ°λ° μΉν° μΆμ²summarize_data_chain
: 5κ° μ§ν λΆμ κ²°κ³Ό μ’ ν©backtest_chain
: μΆμ² κ²°κ³Ό λ°±ν μ€νΈfeedback_analysis_chain
: μ€ν¨ μμΈ λΆμ λ° κ°μ μ μ μfinal_summary_chain
: μ΅μ’ κ²°κ³Ό μμ½
κ° κ±°μκ²½μ μ§νλ³ FRED API λ°μ΄ν° μμ§ λ° μ μ²λ¦¬
- FundsRate: μ°λ°©κΈ°μ€κΈλ¦¬ λͺ©ν λ²μ (μν/νν)
- GDP: λ―Έκ΅ GDP μ±μ₯λ₯
- UmEmployMent: μ€μ λ₯ λ°μ΄ν°
- NonFarmPayrolls: λΉλμ κ³ μ©μ μ λ³ν
- CPI: μλΉμλ¬Όκ°μ§μ λ° μ μλλΉ μ¦κ°μ¨
- Python 3.12
- uv (Python ν¨ν€μ§ κ΄λ¦¬ λꡬ)
- FRED API Key (λ¬΄λ£ λ°κΈ)
- OpenRouter API Key
Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# μ μ₯μ ν΄λ‘
git clone https://github.com/Pseudo-Lab/FinAgent-Phase2-MarketAgent.git
cd Phase2-MarketAgent
# Python 3.12 νκ²½ μμ± λ° μμ‘΄μ± μ€μΉ
uv venv --python 3.12
uv pip install -r requirements.txt
# .env νμΌ μμ±
cp .env.example .env
.env
νμΌμ API ν€λ₯Ό μ
λ ₯νμΈμ:
# FRED API Key (https://fred.stlouisfed.org/docs/api/api_key.html)
FRED_API_KEY=your_fred_api_key_here
# OpenRouter API Key
OPENROUTER_API_KEY=your_openrouter_api_key_here
uv run Agent/Graph/MacroGraph.py
Note:
uv
λ Rust κΈ°λ° κ³ μ Python ν¨ν€μ§ κ΄λ¦¬ λꡬλ‘, μλμΌλ‘ κ°μνκ²½κ³Ό μμ‘΄μ±μ κ΄λ¦¬ν©λλ€.
νλ‘κ·Έλ¨ μ€ν μ λ€μ λ¨κ³κ° μλμΌλ‘ μ§νλ©λλ€:
-
λ°μ΄ν° μμ§
- FRED APIμμ 5κ°μ§ κ±°μκ²½μ μ§ν μμ§
- yfinanceμμ S&P 500 μΉν° λ°μ΄ν° μμ§
-
μΉν° μΆμ²
- κ° κ±°μκ²½μ μ§νλ³ μΉν° λΆμ λ° μΆμ²
-
μ’ ν© λΆμ
- 5κ° μ§ν κ²°κ³Όλ₯Ό μ’ ν©νμ¬ μ΅μ’ 3κ° μΉν° μ μ
-
λ°±ν μ€νΈ
- νμ¬ μμ κΉμ§ λ°μ΄ν°λ‘ μΆμ² μ±κ³Ό κ²μ¦
-
νΌλλ°± 루ν (νμμ)
- λ°±ν μ€νΈ μ€ν¨ μ μ΅λ 5νκΉμ§ μ λ΅ κ°μ λ° μ¬μΆμ²
-
μ΅μ’ μμ½
- λΆμ κ²°κ³Ό λ° ν¬μ μ λ΅ μΆλ ₯
- μ΄κΈ° λ°μ΄ν° μμ§: μ½ 2-3λΆ
- μ 체 λΆμ μλ£: μ½ 5-10λΆ (LLM μλ΅ μλμ λ°λΌ λ³λ)
- FRED APIμμ 5κ°μ§ κ±°μκ²½μ μ§ν μμ§ (2008λ ~νμ¬)
- yfinanceμμ S&P 500 μΉν° λ°μ΄ν° μμ§
- 3κ°μ μ μμ λ°μ΄ν° λΆλ¦¬ (λΆμμ©)
κ° κ±°μκ²½μ μ§νλ³λ‘ λ 립μ μΈ μΉν° μΆμ² μν:
- κΈ°μ€κΈλ¦¬ λΆμ β μΆμ² μΉν°
- GDP λΆμ β μΆμ² μΉν°
- μ€μ λ₯ λΆμ β μΆμ² μΉν°
- λΉλμ κ³ μ© λΆμ β μΆμ² μΉν°
- CPI λΆμ β μΆμ² μΉν°
- 5κ° μ§νμ μΆμ² κ²°κ³Όλ₯Ό μ’ ν©
- κ°μ₯ μ λ§ν 3κ° μΉν° μ΅μ’ μ μ
- μ μ μ΄μ λ° μ λ΅ μ μ
- νμ¬ μμ κΉμ§μ μ€μ λ°μ΄ν°λ‘ κ²μ¦
- μΆμ² μΉν°μ μ€μ μ±κ³Ό νκ°
- Success / Failed νμ
λ°±ν μ€νΈ Failed μ:
- μ€ν¨ μμΈ λΆμ
- νμ¬ μμ₯ μν© μ¬νκ°
- κ°μ λ μΆμ² μΉν° μ μ
- λ°±ν μ€νΈ μ¬μ€ν (μ΅λ 5ν λ°λ³΅)
λ°±ν μ€νΈ Success μ:
- μ΅μ’ μμ½ μμ± ν μ’ λ£
νλ‘μ νΈμ κΈ°μ¬λ₯Ό νμν©λλ€! λ€μ μ μ°¨λ₯Ό λ°λΌμ£ΌμΈμ:
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
μ΄ νλ‘μ νΈλ MIT λΌμ΄μ μ€ νμ λ°°ν¬λ©λλ€. μμΈν λ΄μ©μ LICENSE νμΌμ μ°Έμ‘°νμΈμ.
Pseudo Lab - FinAgent Team
νλ‘μ νΈ νμ₯: μλ΄κ·