inalpha์(๋) ๋ฌด์์ ํ๋์?
๐ฆ ์คํ์์ค ์ ๋ฌธ ํํธ ์์ด์ ํธ ํ๋ ์์ํฌ. ์์ด์ ํธ๊ฐ ํ์ฌ ์๋ ์ค์ธ ์์๋ฅผ ์ ํํด ์ง์ ์์ ์ ํ์ ํ๊ณ , ์ ์ฒด ์ ๋ต์ ์์ฑํ๋ฉฐ, ์๋๋ฐ์ค์์ ์งํ์ํต๋๋ค. ๋ชจ๋ ์ฃผ๋ฌธ์ ๊ธฐ๊ณ ์น์ธ์ ๊ฑฐ์ณ ์คํ๋๋ฉฐ LLM์ ์ฃผ๋ฌธ ๊ฒฝ๋ก์ ๊ด์ฌํ์ง ์์ต๋๋ค. ๋ฉํฐ ๋ง์ผ, ๊ฐ์ฌ ์์ค.
๊ฐ์
mirror29/inalpha๋ ํํธ ํธ๋ ์ด๋ฉ ์์ด์ ํธ๋ฅผ ๊ตฌ์ถํ๊ณ ์คํํ๊ธฐ ์ํ ์คํ์์ค ํ๋ ์์ํฌ์
๋๋ค. ์ด ์คํฌ์ LLM(๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ)์ด ์ ๋ต ์ค๊ณ์ ์ ํ์๋ ๊ด์ฌํ์ง๋ง, ์ค์ ์ฃผ๋ฌธ ์คํ ํ์ดํ๋ผ์ธ์์๋ ์์ ํ ๋ถ๋ฆฌ๋ ์์ ํ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ํฉํฐ ๊ธฐ๋ฐ ํ์ด๋ฐ: ํ์ฌ ์์ฅ์์ ๊ฐ์ฅ ์ ํจํ ๊ธฐ์ ์ /ํ๋๋ฉํธ ํฉํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ํํฉ๋๋ค.
- ์๋ ์ ๋ต ์์ฑ: ์์ฐ์ด ์ค๋ช ๋ง์ผ๋ก ์์ ํ ํธ๋ ์ด๋ฉ ์ ๋ต์ ์์ฑํฉ๋๋ค.
- ์๋๋ฐ์ค ์งํ: ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์ ๋ต์ ํ ์คํธํ๊ณ ์งํ์ํต๋๋ค.
- ๊ธฐ๊ณ ์น์ธ ์์คํ : ๋ชจ๋ ์ฃผ๋ฌธ์ ์ฌ์ ์ ์๋ ๊ท์น ๊ธฐ๋ฐ ์น์ธ ์์คํ ์ ํต๊ณผํด์ผ ํฉ๋๋ค.
- LLM ๋น์ ์ด ์ค๋ ๊ฒฝ๋ก: LLM์ ์ฃผ๋ฌธ ์คํ์ ์ง์ ๊ด์ฌํ์ง ์์ ๋ณด์๊ณผ ๊ฐ์ฌ์ฑ์ ๋์ ๋๋ค.
- ๋ฉํฐ ๋ง์ผ ์ง์: ์ฃผ์, ์ํธํํ, ์ ๋ฌผ, ์ธํ ๋ฑ ๋ค์ํ ์์ฅ์ ์ง์ํฉ๋๋ค.
- ๊ฐ์ฌ ๋ฑ๊ธ ๋ก๊น : ๋ชจ๋ ๊ฒฐ์ ๊ณผ ์ฃผ๋ฌธ ๋ด์ญ์ด ๋ถ๋ณ ๋ก๊ทธ์ ๊ธฐ๋ก๋ฉ๋๋ค.
์์ํ๊ธฐ
์ค์น
pip install inalpha
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
from inalpha import Agent, Market
# ์์ด์ ํธ ์์ฑ
agent = Agent(
name="my-quant-agent",
description="๋ณ๋์ฑ ๋ํ ์ ๋ต์ ์ถ๊ตฌํ๋ ์์ด์ ํธ",
markets=[Market.STOCK, Market.CRYPTO]
)
# ์ ๋ต ์์ฑ
agent.create_strategy(
"""
RSI๊ฐ 30 ์ดํ์ด๊ณ ๊ฑฐ๋๋์ด 20์ผ ํ๊ท ๋ณด๋ค 2๋ฐฐ ์ด์์ผ ๋ ๋งค์.
RSI๊ฐ 70 ์ด์์ด๊ฑฐ๋ ์ต์ 5% ๋๋ฌ ์ ๋งค๋.
"""
)
# ์๋๋ฐ์ค์์ ์ ๋ต ๊ฒ์ฆ
agent.backtest(start_date="2024-01-01", end_date="2024-12-31")
# ์์ด์ ํธ ์คํ (๊ธฐ๊ณ ์น์ธ ํ์ฑํ)
agent.run(paper_trading=True)
์ํคํ ์ฒ
์ฌ์ฉ์ ์ค๋ช
/์ ๋ต
|
v
+-----------------+
| LLM ์์ด์ ํธ | (์ ๋ต ์์ฑ, ํฉํฐ ์ ํ)
+-----------------+
|
v
+-----------------+
| ์ ๋ต ์๋๋ฐ์ค | (๋ฐฑํ
์คํธ, ์งํ)
+-----------------+
|
v
+-----------------+
| ๊ธฐ๊ณ ์น์ธ ์์คํ
| (์ํ ๊ด๋ฆฌ, ๊ท์น ๊ฒ์ฆ)
+-----------------+
|
v
+-----------------+
| ๋ธ๋ก์ปค/๊ฑฐ๋์ | (์ค์ ์ฃผ๋ฌธ ์คํ)
+-----------------+
์ค์
ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ์ค์ ํ ์ ์์ต๋๋ค:
INALPHA_API_KEY: API ํค (ํ์)INALPHA_MODEL: ์ฌ์ฉํ LLM ๋ชจ๋ธ (๊ธฐ๋ณธ๊ฐ:gpt-4)INALPHA_RISK_LIMIT: ์ฃผ๋ฌธ๋น ์ต๋ ์ํ ๊ธ์ก (๊ธฐ๋ณธ๊ฐ:1000.0)INALPHA_LOG_LEVEL: ๋ก๊น ์์ค (๊ธฐ๋ณธ๊ฐ:INFO)
์์
๋ง์ถคํ ๋ฆฌ์คํฌ ๊ท์น ์ถ๊ฐํ๊ธฐ
from inalpha import RiskRule
# ์ต๋ ํฌ์ง์
ํฌ๊ธฐ ๊ท์น
risk_rule = RiskRule(
name="max_position_size",
condition="order.amount <= portfolio.value * 0.01",
action="block"
)
agent.add_risk_rule(risk_rule)
๋ผ์ด์ ์ค
MIT License
์ปค๋ฎค๋ํฐ
์ด ํ๋ ์์ํฌ๋ ๊ต์ก ๋ฐ ์ฐ๊ตฌ ๋ชฉ์ ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค. ์ค์ ํธ๋ ์ด๋ฉ์ ์ฌ์ฉํ๊ธฐ ์ ์ ์ถฉ๋ถํ ํ ์คํธ์ ๋ฆฌ์คํฌ ๊ด๋ฆฌ๋ฅผ ์ํํ์ธ์.