볡μ‘ν κΈ°μ μ λΆμμ AIκ° λμ μ²λ¦¬ν΄μ£Όλ λΆμ μ μ© μλΉμ€μ λλ€.
μ΄λνκ· , 골λ /λ°λ ν¬λ‘μ€, MACD, RSI, λ³Όλ¦°μ λ°΄λ, DMI β μ¬λ¬ 보쑰μ§νλ₯Ό λμμ μ½κ³ , νμνλ μλ§λ€ μ€μ μ λ°κΎΈκ³ , μ°¨νΈ ν¨ν΄(ν€λμ€μλ, μκΈ°, μ΄μ€μ²μ₯ λ±)κΉμ§ μλ³ν΄μΌ νλ κΈ°μ μ λΆμμ μ§μ μ₯λ²½μ΄ λκ³ μκ°λ λ§μ΄ λλλ€.
κΈ°μ‘΄ λ°©μ 보쑰μ§ν μλ μΆκ° β κ±°λλ λΆμ β ν¨ν΄ ν΄μ β μ’
ν© νλ¨
Siglens β ν°μ»€λ§ μ
λ ₯ β μ°¨νΈ + μΈλμΌμ΄ν° μλ λ λ β AI μ’
ν© λΆμ 리ν¬νΈ
π μ£Όλ¬Έ κΈ°λ₯ μμ. λΆμ μ λ³΄λ§ μ 곡ν©λλ€. ν¬μ κ²°μ μ λ³ΈμΈμ μ± μμ λλ€.
- π μ°¨νΈ β Lightweight Charts v5 κΈ°λ° μΊλ€/κ±°λλ/μΈλμΌμ΄ν° λ λλ§, 5λΆλ΄~μΌλ΄ λ©ν° νμνλ μ
- π μΈλμΌμ΄ν° 25μ’ β RSI, MACD, λ³Όλ¦°μ λ°΄λ, ADX, DMI, Stochastic, StochRSI, CCI, VWAP, MA, EMA, Volume Profile, Ichimoku Cloud, ATR, Donchian/Keltner Channel, SuperTrend, OBV, CMF, MFI, Parabolic SAR, Williams %R, Squeeze Momentum, Smart Money Concepts μλ κ³μ°
- π―οΈ μΊλ€ ν¨ν΄ β λ¨μΌ μΊλ€ 15μ’ + λ©ν° μΊλ€ 30μ’ μλ κ°μ§
- π μ°¨νΈ ν¨ν΄ β ν€λμ€μλ, μκΈ°, μ΄μ€μ²μ₯/λ°λ₯, μΌκ°μλ ΄, νλκ·Έ, μ»΅μ€νΈλ€ λ± Skills κΈ°λ° κ°μ§
- π€ AI μ’ ν© λΆμ β νΈλ λ λ°©ν₯, 리μ€ν¬ λ 벨, μ§μ§/μ ν, κ°κ²© λͺ©ν, μ§μ μΆμ² 리ν¬νΈ
- π¬ AI μ±λ΄ β λΆμ κ²°κ³Ό κΈ°λ° μμ°μ΄ νμ μ§λ¬Έ (Gemini 2.5 Flash, IPλΉ 5ν/μΌ)
- π μμ₯ νν© λμ보λ β 11κ° μΉν° 200+ μ’ λͺ© μ νΈ μ€μΊλ (골λ ν¬λ‘μ€, RSI λ€μ΄λ²μ μ€, λ³Όλ¦°μ μ€ν΄μ¦)
- π§ͺ AI λ°±ν μ€ν β 2λ κ° 100건 λΆμ κ²°κ³Όμ μ€μ μμ΅λ₯ κ²μ¦ (/backtesting)
- β»οΈ μ¨λ맨λ μ¬λΆμ β μ¬μ©μ μμ² μ μ¦μ μ¬λΆμ
μ’ λͺ© νλνλλ₯Ό μ°Ύμλ€λμ§ μμλ, μ§κΈ μ΄λ€ μΉν°μμ μ νΈκ° λμ€κ³ μλμ§ νλμ νμ ν μ μμ΅λλ€. μ€λ μ£Όλͺ©ν μ£Όμ 보기 >, μ€λ μ 체 μμ₯ νν© λ³΄κΈ° >
/market μ μ β 11κ° μΉν° ν β κ° μ’
λͺ©μ νμ¬ μ νΈ νμΈ β μν΄λ¦μΌλ‘ AI λΆμ νμ΄μ§ μ΄λ
μ€μΊ λμ μ νΈ:
- 골λ ν¬λ‘μ€ β λ¨κΈ° μ΄λνκ· μ μ΄ μ₯κΈ°μ μ μν₯ λνν μ’ λͺ©
- RSI λ€μ΄λ²μ μ€ β κ°κ²©κ³Ό RSI λ°©ν₯μ΄ μκ°λ¦¬λ μ μ¬μ λ°μ μ νΈ
- λ³Όλ¦°μ μ€ν΄μ¦ β λ³λμ± μμΆ μ΄ν κΈλ±/κΈλ½ κ°λ₯μ±μ΄ λμ ꡬκ°
μ€μΊ λ²μ: λ©κ°μΊ‘, AI/λ°λ체, μννΈμ¨μ΄, νν ν¬/ν¬λ¦½ν , EV, λ λ²λ¦¬μ§ ETF, κΈμ΅, μλΉμ¬, μλμ§, ν¬μ€μΌμ΄, μ€κ΅ ADR λ± 11κ° μΉν° 200+ μ’ λͺ©
λΆμ 리ν¬νΈλ₯Ό λ°μ λ€ κΆκΈν μ μ μμ°μ΄λ‘ λ°λ‘ λ¬Όμ΄λ³Ό μ μμ΅λλ€.
AI λΆμ 리ν¬νΈ μμ β μ±λ΄ ν¨λμμ νμ μ§λ¬Έ β λΆμ 컨ν
μ€νΈλ₯Ό κ·Έλλ‘ μ΄μ΄μ λ΅λ³
- μμ§: Gemini 2.5 Flash β λΆμ μλ¬Έ μ μ²΄κ° μ»¨ν μ€νΈλ‘ μ£Όμ λ¨
- λν κΈ°λ‘: localStorageμ μΈμ λ¨μλ‘ μ μ₯
- μ¬μ© μ ν: IPλΉ 5ν/μΌ (λ¬΄λ£ μλΉμ€ μ μ§λ₯Ό μν μ ν)
μμ μ§λ¬Έ: "μ§κΈ RSIκ° κ³Όλ§€λλΌκ³ νλλ°, μ΄λ λ 벨μμ λ°λ±μ κΈ°λν μ μμ΄?"
AI λΆμμ μ€μ μ νλλ₯Ό κ²μ¦νκΈ° μν΄ 2λ κ°(2024.04 ~ 2026.04) 100건μ λΆμ κ²°κ³Όλ₯Ό λ°±ν μ€ν νμ΅λλ€.
- μΉλ₯ 70% β μ νΈ λ°μ ν μ€μ κ°κ²© μμ§μ κΈ°μ€
- AI λ°©ν₯ μμΈ‘ μ μ€λ₯ 61.5% β AI 리ν¬νΈμ μμΉ/νλ½/μ€λ¦½ μμΈ‘ vs μ€μ κ²°κ³Ό
- 10κ° λν μ’ λͺ©, 100건 μΌμ΄μ€, μ€μ AI λΆμ μλ¬Έ ν¬ν¨
κ²°κ³Όλ λ°±ν
μ€ν
κ²°κ³Ό νμ΄μ§μμ νμΈν μ μμΌλ©°, μλ³Έ λ°μ΄ν°λ src/app/backtesting/data.jsonμ μ μ₯λμ΄ μμ΅λλ€.
| νλͺ© | κ° |
|---|---|
| Exchange | λ―Έκ΅ μ 체 μμ₯ |
| Timeframe | 5λΆλ΄, 15λΆλ΄, 30λΆλ΄, 4μκ°λ΄, 1μκ°λ΄, μΌλ΄ |
| Delay | μ΅λ 15λΆ μ§μ° |
| History | λ€λ κ° |
- π¬ Discord β μ€μκ° λν
- νμ¬λ MVP μ΄μ μ€μΌλ‘ μ΄λλ°μ μ μ μκ²λ§ μ΄λν΄λλ¦¬κ³ μμ΄μ.
Siglensλ λΆμ μ λ³΄λ§ μ 곡νλ©° ν¬μ μ‘°μΈμ΄ μλλλ€.
- μ μλ λΆμ κ²°κ³Όλ₯Ό κΈ°λ°μΌλ‘ ν λͺ¨λ ν¬μ κ²°μ μ λ³ΈμΈμ μ± μμ λλ€.
- μ΄μμλ λΆμ μ λ³΄λ‘ μΈν κΈμ μ μμ€μ λν΄ λ²μ μ± μμ μ§μ§ μμ΅λλ€.
- ν¬μ κ²°μ μ μ μΆ©λΆν μ‘°μ¬μ μ체 νλ¨μ κΆμ₯ν©λλ€.
| μμ | κΈ°μ |
|---|---|
| Framework | Next.js 16.2 (App Router + Turbopack + React Compiler) |
| UI | React 19.2, Tailwind CSS 4 |
| Chart | Lightweight Charts v5 |
| Data | FMP API |
| Cache | Upstash Redis |
| AI | Claude (Anthropic), Gemini 2.5 β λΆμ 리ν¬νΈ / Gemini 2.5 Flash β μ±λ΄ |
| State | TanStack Query v5 |
| Testing | Jest (domain / infrastructure) |
| Language | TypeScript 5 |
| Package Manager | yarn 4.12.0 |
| Runtime | Node.js 25.2.1 |
| Deploy | Vercel (Edge Functions), Cloud Run (Worker) |
Node.js 25.2.1
yarn 4.12.0git clone https://github.com/y0ngha/siglens.git
cd siglens
yarn installcp .env.example .env.localνμ νκ²½λ³μ:
ALPACA_API_KEY/ALPACA_SECRET_KEYβ Alpaca Marketsμμ λ°κΈ (μμΈ λ°μ΄ν°)FMP_API_KEYβ Financial Modeling Prepμμ λ°κΈ (μ’ λͺ© μ 보)ANTHROPIC_API_KEYβ Anthropic Consoleμμ λ°κΈ (AI λΆμ 리ν¬νΈ)GEMINI_API_KEYβ Google AI Studioμμ λ°κΈ (AI μ±λ΄)UPSTASH_REDIS_REST_URL/UPSTASH_REDIS_REST_TOKENβ Upstashμμ λ°κΈ (μΊμ)
yarn devhttp://localhost:4200 μ μ
siglens/
βββ src/
β βββ app/ # Next.js App Router (RSC, Route Handler)
β β βββ market/ # μμ₯ νν© λμ보λ (μΉν°λ³ μ νΈ μ€μΊλ)
β β βββ backtesting/ # AI λ°±ν
μ€ν
κ²°κ³Ό νμ΄μ§ + data.json
β β βββ [symbol]/ # μ’
λͺ©λ³ AI λΆμ νμ΄μ§
β βββ domain/ # μμ TS β μΈλμΌμ΄ν°, ν¨ν΄, ν둬ννΈ λΉλ
β βββ infrastructure/ # μΈλΆ μμ‘΄μ± β Alpaca, FMP, AI Provider, Skills Loader
β βββ components/ # React Client Components
β βββ lib/ # UI μ νΈ, React Query ν€ ν©ν 리
βββ skills/ # λΆμ κΈ°λ² μ μ (.md, μ½λ μλ)
β βββ patterns/ # μ°¨νΈ ν¨ν΄ (ν€λμ€μλ, μκΈ°, μ΄μ€μ²μ₯/λ°λ₯ λ±)
β βββ indicators/ # 보쑰μ§ν μκ·Έλ ν΄μ
β βββ strategies/ # μ리μ΄νΈ νλ, μμ΄μ½ν, λμν λ± μ λ΅
β βββ support-resistance/ # νΌλ³΄λμΉ, νΌλ΄ν¬μΈνΈ
β βββ candlesticks/ # μΊλ€ ν¨ν΄ κ΅μ‘
βββ docs/ # μν€ν
μ²/λλ©μΈ/컨벀μ
λ¬Έμ
βββ refs/ # 보쑰μ§νΒ·ν¬μ μ΄λ‘ λ νΌλ°μ€
λ μ΄μ΄ μμ‘΄μ± λ°©ν₯
domain β μΈλΆ import κΈμ§. μμ ν¨μλ§.
infrastructure β domainλ§ import κ°λ₯. νμΌ I/Oμ API νΈμΆ λ΄λΉ.
lib β UI μ νΈ λνΌ. μμ ν¨μ.
app β infrastructure, domain, lib import κ°λ₯.
components β domain, lib import κ°λ₯. infrastructure μ§μ import κΈμ§.
μμΈν λ΄μ©μ π ARCHITECTURE.md μ°Έκ³ .
μ½λμ 99%λ₯Ό AIκ° μμ±ν©λλ€.
μ¬λμ΄ νλ κ² λ¬΄μμ λ§λ€μ§ κ²°μ (μ΄μ μμ±, μ€κ³, 리뷰, λ¨Έμ§)
AIκ° νλ κ² μ΄λ»κ² λ§λ€μ§ μ€ν (ꡬν, ν
μ€νΈ, PR μ€ν, μ½λ 리뷰)
Claude Codeκ° μ΄μλ₯Ό λ°μ λΈλμΉ μμ± β μ½λ μμ± β ν μ€νΈ β PR μ€νκΉμ§ μλμΌλ‘ μ§νν©λλ€. μ¬λμ κ²°κ³Όλ₯Ό κ²ν νκ³ λ¨Έμ§ μ¬λΆλ§ κ²°μ ν©λλ€.
μ΄ κ΅¬μ‘° λλΆμ νΌμμλ λΉ λ₯΄κ² μ νμ λ§λ€ μ μμΌλ©°, AI μλμ κ°λ° λ°©μμ μ§μ μ€ννκ³ κ²μ¦νλ νλ‘μ νΈμ΄κΈ°λ ν©λλ€.
λΆμ κΈ°λ²μ μ½λκ° μλ μμ°μ΄(.md)λ‘ μ μν©λλ€.
/skills/<category>/my-strategy.md νμΌ νλ μΆκ° β μλ‘μ΄ λΆμ κΈ°λ² μ¦μ μ μ©
infrastructure/skills/loader.tsκ° skills/ λλ ν 리λ₯Ό μ¬κ·μ μΌλ‘ μ€μΊν΄μ frontmatterμ
λ³Έλ¬Έμ νμ±νκ³ , domain/analysis/prompt.tsκ° μ΄λ₯Ό AI ν둬ννΈμ μ£Όμ
ν©λλ€.
λλ©μΈ μ½λλ₯Ό 건λλ¦¬μ§ μκ³ λΆμ κΈ°λ²μ μΆκ°/μμ ν μ μλ€λ μλ―Έμ
λλ€.
νμ¬ λ±λ‘λ μΉ΄ν κ³ λ¦¬ (μ΄ 61κ° Skills):
skills/patterns/β μ°¨νΈ ν¨ν΄ (ν€λμ€μλ, μκΈ°, μ΄μ€μ²μ₯/λ°λ₯, μΌκ°μλ ΄, νλκ·Έ λ±)skills/indicators/β 보쑰μ§ν μκ·Έλ ν΄μ (RSI, MACD, λ³Όλ¦°μ λ°΄λ, μΌλͺ©κ· νν λ±)skills/strategies/β μ리μ΄νΈ νλ, μμ΄μ½ν, λμν λΆμ, λ€μ΄λ²μ μ€, λΈλ μ΄ν¬μμ λ±skills/support-resistance/β νΌλ³΄λμΉ λλλ¦Ό/νμ₯, νΌλ΄ν¬μΈνΈskills/candlesticks/β λμ§, μ₯μ ν, λ§μΉν, λ§λ£¨λ³΄μ£Ό, νλΌλ―Έ, μ΄λΈλ/λͺ¨λμ€ν λ±
| λ¬Έμ | λ΄μ© |
|---|---|
| SERVICE.md | μλΉμ€ κ°μ, λμ μ¬μ©μ, κΈ°μ μ€ν, Skills μμ€ν |
| ARCHITECTURE.md | λ μ΄μ΄ ꡬ쑰, μμ‘΄μ± κ·μΉ, λ°μ΄ν° νλ¦ |
| DOMAIN.md | μΈλμΌμ΄ν° κ³μ° λͺ μΈ, μΊλ€ ν¨ν΄, Skills μμ€ν |
| API.md | Alpaca, FMP API, Claude, Gemini API λͺ μΈ |
| CONVENTIONS.md | μ½λ© 컨벀μ , λ€μ΄λ°, ν¨λ¬λ€μ |
| FF.md | FF 4μμΉ (Readability, Predictability, Cohesion, Coupling) |
| DESIGN.md | μ»¬λ¬ μμ€ν , Tailwind μ€μ , μ°¨νΈ μ»¬λ¬ μμ |
| GIT_CONVENTIONS.md | λΈλμΉ, μ»€λ° λ©μμ§, PR κ·μΉ |
| MISTAKES.md | μμ£Ό νλ μ€μ λͺ¨μ |
yarn test # μ 체 ν
μ€νΈ
yarn test-watch # watch
yarn test-coverage # 컀λ²λ¦¬μ§ ν¬ν¨
yarn test-coverage-report # 컀λ²λ¦¬μ§ 리ν¬νΈμ»€λ²λ¦¬μ§ λͺ©ν: domain/, infrastructure/ 100% (UIλ ν
μ€νΈ λμ μλ)
yarn dev # κ°λ° μλ² (ν¬νΈ 4200)
yarn build # νλ‘λμ
λΉλ
yarn lint # ESLint
yarn lint:fix
yarn lint:style # Stylelint
yarn lint:style-fix
yarn format # Prettierν¨ν€μ§ μ€μΉλ νμ yarn. npm/pnpmμ μ¬μ©νμ§ μμ΅λλ€.
μμ§ μΈλΆ μ½λ κΈ°μ¬ νλ‘μΈμ€κ° μ ν΄μ§μ§ μμ, μ§κΈμ λ°μ μ μμ΅λλ€. λ²κ·Έ 리ν¬νΈλ μ μμ Issuesλ‘ λ¨κ²¨μ£ΌμΈμ.
skills/ λλ ν 리μ .md νμΌ νλλ§ μΆκ°νλ©΄ μλ‘μ΄ λΆμ κΈ°λ²μ μ μ©ν μ μλλ‘ μ€κ³λμ΄ μμ΅λλ€.
νμ§λ§ μμ§ λ€μμ΄ μ ν΄μ§μ§ μμμ΅λλ€:
- Skill
.mdνμΌμ frontmatter νμ€ μ€ν κ³΅κ° - μ λ’°λ(
confidence_weight) κ²μ¦ μ μ°¨ - 리뷰/λ¨Έμ§ μν¬νλ‘
- κΈ°μ¬μ κ°μ΄λ
λ°λΌμ νμ¬λ μΈλΆμμ Skillsλ₯Ό κΈ°μ¬νκΈ° μ΄λ ΅μ΅λλ€. νμ΄ μ‘νλ λλ‘ μ΄ μΉμ μ μ λ°μ΄νΈν μμ μ λλ€. κ΄μ¬ μμΌμ λΆμ Discordμμ 미리 μ견μ λ¨κ²¨μ£ΌμΈμ.