DragonQuant νλ«νΌμ λ°μ΄ν° μΈν 리μ μ€ κ³μΈ΅μ λλ€. 20+ μμ€μμ μμ₯ λ°μ΄ν°λ₯Ό μλ μμ§νκ³ , ꡬ쑰ννμ¬ ννΈ νΈλ μ΄λ© μμ§(crypto)μ μκ·Έλ μμ² λ°μ΄ν°λ₯Ό 곡κΈν©λλ€.
DragonQuant Platform
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β investing (μ΄ μ μ₯μ) β β crypto β β
β β Data Intelligence βββββββΆβ Quant Trading Engine β β
β β β β β β
β β 20+ μμ€ μλ μμ§ β β 14-Component MI Signal β β
β β 11 Collectors β β 6 Technical Indicators β β
β β μ€λ³΅ μ κ±° + κ°μ± λΆμ β β Kelly + CVaR 리μ€ν¬ μ μ΄ β β
β β Jekyll μ¬μ΄νΈ λ°ν β β Upbit/Bithumb μλλ§€λ§€ β β
β βββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ β
β β
β μ°λ: _posts/*.md β StructuredPostParser β Market Intelligence β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
μ 체 νλ«νΌ μν€ν μ²: docs/platform-architecture.md
| μμ§κΈ° | μ£ΌκΈ° | μ£Όμ μμ€ | μΉ΄ν κ³ λ¦¬ |
|---|---|---|---|
collect_crypto_news |
6h | CryptoPanic, Google News, κ±°λμ 곡μ§, Rekt News | crypto-news |
collect_stock_news |
6h | Google News, Yahoo Finance, yfinance, KRX, Alpha Vantage | stock-news |
collect_coinmarketcap |
6h | CoinMarketCap API, CoinGecko API (fallback) | crypto-news |
collect_defi_llama |
6h | DeFi Llama API (νλ‘ν μ½/μ²΄μΈ TVL) | crypto-news |
collect_social_media |
12h | Telegram μ±λ, Twitter/X API v2 | social-media |
collect_regulatory |
12h | SEC, CFTC, Fed, FSC, FSA, MAS, ESMA, FCA (RSS) | regulation |
collect_political_trades |
μΌκ° | μν κ±°λ곡μ, SEC EDGAR, νκ΅ μ μΉμΈ μμ° | political-trades |
collect_worldmonitor_news |
μΌκ° | WorldMonitor RSS (μ§μ ν, μλμ§) | world-monitor |
collect_fmp_calendar |
12h | FMP κ²½μ μΊλ¦°λ/μ€μ μΌμ , μΉν° νΌν¬λ¨Όμ€ | market-analysis |
collect_market_indicators |
νμΌ 2ν | CNN Fear & Greed, VIX/DXY/μμμ¬, μμ₯ ν/λ§μ§ λ΄μ€ | market-analysis |
collect_geopolitical |
12h | Polymarket μ§μ ν 리μ€ν¬ μμ₯ λ°μ΄ν° | geopolitical-risk |
| μμ±κΈ° | μ€μΌμ€ | μΆλ ₯ |
|---|---|---|
generate_market_summary |
λ§€μΌ | μμ₯ λΆμ + μκ°ν μ΄λ―Έμ§ (ννΈλ§΅, κ²μ΄μ§, μΉ΄λ) |
generate_daily_summary |
λ§€μΌ | μ°μ μμλ³ μ’ ν© λ΄μ€ μμ½ (P0/P1/P2) |
generate_weekly_digest |
λ§€μ£Ό μΌ | μ£Όκ° λ€μ΄μ μ€νΈ (μΉ΄ν κ³ λ¦¬λ³ λΆμ) |
μ΄ μ μ₯μμ _posts/*.mdλ crypto μ μ₯μμ StructuredPostParserκ° νμ±νμ¬ λ§€λ§€ μκ·Έλμ λ°μν©λλ€:
| μΆμΆ λ°μ΄ν° | μκ·Έλ κ°μ€μΉ | νμ± μμ€ |
|---|---|---|
| Fear & Greed Index | 0.17 | market-analysis ν¬μ€νΈ |
| μμ κ°μ± | 0.12 | social-media ν¬μ€νΈ (VADER + νκ΅μ΄ ν€μλ) |
| μ μΉ λ¦¬μ€ν¬ | 0.08 | political-trades ν¬μ€νΈ |
| VIX λ³λμ± | 0.08 | stock-news ν¬μ€νΈ |
| 보μ μ΄λ²€νΈ | 0.07 | crypto-news (ν΄νΉ κΈμ‘ μΆμΆ) |
| νκ΅ μμ₯ | 0.07 | stock-news (KOSPI/KOSDAQ/USD-KRW) |
| BTC λλ―Έλμ€ | 0.06 | crypto-news ν¬μ€νΈ |
| κ·μ μκ·Έλ | 0.04 | regulatory ν¬μ€νΈ |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β GitHub Actions (25 Workflows) β
β Concurrency Group: collect-data β Cron Schedule β Deploy β
ββββββββββ¬βββββββββββββββββββββ¬βββββββββββββββββββββββ¬βββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ ββββββββββββββββββββ
β Collection β β Processing β β Presentation β
β β β β β β
β 11 Collectors βββΆβ 3 Generators βββΆβ Jekyll Site β
β 20+ Sources β β Image Gen β β GitHub Pages β
β Dedup Engine β β Summarizer β β OG/SNS μ΅μ ν β
β Enrichment β β OG Image Gen β β 9 Categories β
ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ ββββββββββββββββββββ
β β
βΌ βΌ
βββββββββββββββββββββββββββββββββββββββββββ
β _state/*.json β _posts/*.md β
β SHA256 + Fuzzy β β crypto repo μλΉ β
βββββββββββββββββββββββββββββββββββββββββββ
git clone https://github.com/Twodragon0/investing.git
cd investing
bundle install
bundle exec jekyll serve # http://localhost:4000pip install -r scripts/requirements.txt
# μμ§κΈ° (API ν€ μμ΄λ λμ, Graceful degradation)
python scripts/collect_crypto_news.py
python scripts/collect_stock_news.py
# μμ±κΈ°
python scripts/generate_market_summary.py
python scripts/generate_daily_summary.pyμ μ₯μλ gitleaks(μν¬λ¦Ώ νμ§)μ scripts/common/ μλ μν¬νΈ κ°μ (#773 νκ· λ°©μ§) ν
μ .pre-commit-config.yaml μ λ±λ‘ν΄ λμμ΅λλ€. λ‘컬μμ μ€μ λμνλ €λ©΄ μ΅μ΄ 1ν μ€μΉκ° νμν©λλ€.
pip install pre-commit # λλ brew install pre-commit
pre-commit install # .git/hooks/pre-commit μ μλ μ°κ²°
# (μ ν) μ 체 νμΌμ ν λ² λλ € μν νμΈ
pre-commit run --all-filesμ€μΉνμ§ μμΌλ©΄ CIμμλ§ κ²μ¦λκ³ λ‘컬 μ»€λ° μμλ μ°¨λ¨λμ§ μμΌλ―λ‘, ν΄λ‘ μ§ν λ°λ‘ μ€νν΄ λλ κ²μ κΆμ₯ν©λλ€.
GitHub Actionsλ λΆμ° μμ§/κ²μ¦μ μ μ§νκ³ , μμ μΌμ§ μλ²λ μ€μ 9μ 10λΆ(KST) μλ ν¬μ€ν /νμ§ λ³΄μ μ λ΄λΉνλλ‘ κ΅¬μ±ν μ μμ΅λλ€.
# 09:10 KST μλ ν¬μ€ν
+ λ΄μ©/μ΄λ―Έμ§ νμ§ λ³΄μ ν¬λ‘ μ€μΉ
bash scripts/install_server_morning_cron.sh
# μλ 1ν μ€ν ν
μ€νΈ
bash scripts/server_morning_autopost.sh- μλν μ€ν¬λ¦½νΈ:
scripts/server_morning_autopost.sh - λ‘κ·Έ νμΌ:
_state/server-morning-autopost.log - ν¬λ‘ μ€μΉ/κ°±μ :
scripts/install_server_morning_cron.sh - μν λΆλ¦¬:
- μλ² ν¬λ‘ (09:10 KST):
generate_daily_summary,generate_market_summary, ν¬μ€νΈ/μ΄λ―Έμ§ νμ§ λ³΄μ - GitHub Actions: μμ§κΈ° μ€ν, 보μ/νμ§ κ²μ¬, μλ μμ½ μ¬μμ±(
workflow_dispatch)
- μλ² ν¬λ‘ (09:10 KST):
| νκ²½λ³μ | μλΉμ€ | μ©λ |
|---|---|---|
CRYPTOPANIC_API_KEY |
CryptoPanic | μνΈνν λ΄μ€ ν« νΌλ |
ALPHA_VANTAGE_API_KEY |
Alpha Vantage | λ―Έκ΅ μμ₯ λ°μ΄ν° |
FRED_API_KEY |
FRED | λ§€ν¬λ‘ κ²½μ μ§ν |
TWITTER_BEARER_TOKEN |
Twitter API v2 | μνΈνν νΈμ κ²μ |
COINGECKO_API_KEY |
CoinGecko | μ½μΈ κ°κ²©/νΈλ λ© |
CMC_API_KEY |
CoinMarketCap | μκ°μ΄μ‘ μμ |
ν€κ° μμΌλ©΄ ν΄λΉ μμ€λ₯Ό 건λλ°κ³ λλ¨Έμ§λ‘ μμ§ν©λλ€.
ν¬μ€νΈ μ€λ³΅ λ°©μ§ 3λ¨κ³:
- SHA256 ν΄μ:
normalize(title) + source + date[:10]ν΄μ± - Fuzzy λ§€μΉ:
difflib.SequenceMatcherμ μ¬λ 80% μ΄κ³Ό μ μ€λ³΅ νμ - μν νμΌ:
_state/*.jsonμ ν΄μ μ μ₯ (30μΌ λ³΄κ΄)
| μν¬νλ‘μ° | μ€μΌμ€ (UTC) | μ€λͺ |
|---|---|---|
collect-crypto-news |
λ§€ 6h :00 |
μνΈνν λ΄μ€ |
collect-coinmarketcap |
λ§€ 6h :15 |
CoinMarketCap/CoinGecko |
collect-stock-news |
λ§€ 6h :30 |
μ£Όμ λ΄μ€ |
collect-defi-llama |
λ§€ 6h :45 |
DeFi TVL |
collect-social-media |
λ§€ 12h | μμ λ―Έλμ΄ |
collect-regulatory |
λ§€ 12h | κΈλ‘λ² κ·μ |
collect-political-trades |
λ§€μΌ | μ μΉμΈ κ±°λ |
collect-worldmonitor-news |
λ§€μΌ | κΈλ‘λ² λ΄μ€ |
collect-fmp-calendar |
λ§€ 12h :00 |
FMP κ²½μ μΊλ¦°λ/μ€μ |
collect-market-indicators |
νμΌ 14:00/22:00 UTC | μμ₯ μ¬λ¦¬Β·λ¦¬μ€ν¬ μ§ν |
| μν¬νλ‘μ° | μ€μΌμ€ | μ€λͺ |
|---|---|---|
generate-market-summary |
λ§€μΌ | μμ₯ λΆμ + μκ°ν |
generate-daily-summary |
λ§€μΌ | μΌμΌ μ’ ν© μμ½ |
backfill-post-summaries |
λ§€μΌ | ν¬μ€νΈ μμ½ λ³΄κ° |
weekly-digest |
λ§€μ£Ό μΌ | μ£Όκ° λ€μ΄μ μ€νΈ |
| μν¬νλ‘μ° | νΈλ¦¬κ±° | μ€λͺ |
|---|---|---|
deploy-pages |
Push to main | Jekyll λΉλ, GitHub Pages λ°°ν¬ |
code-quality |
Push, PR, μ£Όκ° | ruff, basedpyright, actionlint |
dependency-check |
λ§€μ£Ό μ | pip-audit 보μ μμ‘΄μ± |
site-health-check |
λ§€μΌ | μ¬μ΄νΈ κ°μ©μ± νμΈ |
cleanup-old-images |
λ§€μ£Ό μΌ | 30μΌ μ΄μ μ΄λ―Έμ§ μ 리 |
respond-ai-mentions |
λ§€μκ° | Slack AI λ΄ μλ΅ |
push-folder-info-to-slack |
λ§€μΌ | λ ν¬ μν Slack μλ¦Ό |
ops-10am-digest |
λ§€μΌ | μ΄μ λ€μ΄μ μ€νΈ |
classify-workflow-failures |
μ€ν¨ μ | CI μ€ν¨ μλ λΆλ₯ |
continuous-improvement-loop |
λ§€μκ° | OpenClaw κ°μ 루ν + 리ν¬νΈ μμ± |
investing/
βββ _config.yml # Jekyll μ€μ
βββ _layouts/ # HTML λ μ΄μμ (OG/Twitter meta ν¬ν¨)
βββ _includes/ # μ¬μ¬μ© μ»΄ν¬λνΈ
βββ _sass/ # SCSS μ€νμΌ (λ€ν¬ νμ΄λΈμ€ ν
λ§)
βββ _data/ # Jekyll λ°μ΄ν° νμΌ
βββ _posts/ # μλ μμ± ν¬μ€νΈ β crypto repoκ° μλΉ
βββ _state/ # μ€λ³΅ λ°©μ§ μν νμΌ (μλ μμ κΈμ§)
βββ assets/images/generated/ # OG μ΄λ―Έμ§ + μκ°ν (30μΌ λ³΄κ΄)
βββ pages/ # μΉ΄ν
κ³ λ¦¬ νμ΄μ§ (9κ°)
βββ scripts/
β βββ common/ # κ³΅ν΅ λͺ¨λ (13κ°)
β β βββ config.py # νκ²½λ³μ, λ‘κΉ
β β βββ dedup.py # SHA256 + fuzzy μ€λ³΅ λ°©μ§
β β βββ enrichment.py # URL ν΄μ, μ€λͺ
μμ±
β β βββ summarizer.py # ν€μλ κΈ°λ° μμ½
β β βββ image_generator.py # matplotlib/Pillow μκ°ν
β β βββ ... # utils, rss_fetcher, crypto_api λ±
β βββ collect_*.py # μμ§κΈ° 10κ°
β βββ generate_*.py # μμ±κΈ° 5κ° + OG μ΄λ―Έμ§
β βββ enrich_existing_posts.py # ν¬μ€νΈ νμ§ λ³΄κ°
βββ docs/
β βββ platform-architecture.md # DragonQuant ν΅ν© μν€ν
μ²
β βββ architecture.md # μ΄ μ μ₯μ μμΈ μν€ν
μ²
β βββ data-sources.md # λ°μ΄ν° μμ€ μΉ΄νλ‘κ·Έ
βββ .github/
β βββ workflows/ # 25κ° μλν μν¬νλ‘μ°
β βββ actions/ # μ¬μ¬μ© μ‘μ
(python-collect, resolve-slack-config)
βββ Gemfile # Ruby μμ‘΄μ±
βββ README.md
| λ¬Έμ | λ΄μ© |
|---|---|
| Platform Architecture | DragonQuant μ 체 νλ«νΌ μ€κ³, PSST λ§€ν, λ°±ν μ€νΈ κ²°κ³Ό |
| Architecture | μ΄ μ μ₯μ μμΈ μν€ν μ², λ°μ΄ν° νλ¦, λͺ¨λ μμ‘΄μ± |
| Data Sources | μ 체 λ°μ΄ν° μμ€ μΉ΄νλ‘κ·Έ, API ν€ μ€μ κ°μ΄λ |
| μ μ₯μ | μν | λ§ν¬ |
|---|---|---|
| crypto | ννΈ νΈλ μ΄λ© μμ§ (ATS 3.0) | Twodragon0/crypto |
| 14-Component μκ·Έλ ν©μ±, Upbit/Bithumb μλλ§€λ§€ | ||
| 보μ λͺ¨λν°λ§, FastAPI λμ보λ |
MIT