Skip to content
@capstone-design-quantimizer

capstone-design-quantimizer


๐ŸŒ QuantiMizer โ€“ ML ๊ธฐ๋ฐ˜ DB ์ตœ์ ํ™” ํ€€ํŠธ ๋ฐฑํ…Œ์ŠคํŒ… ์‹œ์Šคํ…œ

25-2 KHU Capstone Design Project โ€“ ML-driven Database Optimization for Quantitative Backtesting


๐Ÿ“Œ Overview

QuantiMizer๋Š” ๋ณต์žกํ•œ ํ€€ํŠธ ํˆฌ์ž ์ „๋žต์„ ๋ˆ„๊ตฌ๋‚˜ ์†์‰ฝ๊ฒŒ ์ƒ์„ฑํ•˜๊ณ , ๋จธ์‹ ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ DB ํŠœ๋‹์„ ํ†ตํ•ด ์ดˆ๊ณ ์† ๋ฐฑํ…Œ์ŠคํŒ…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ํ†ตํ•ฉ ํ”Œ๋žซํผ์ด๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋ธ”๋ก์ฝ”๋”ฉ(Blockly) ๊ธฐ๋ฐ˜ ๋…ธ์ฝ”๋“œ ์ „๋žต ๋นŒ๋”๋กœ ์ „๋žต์„ ๋งŒ๋“ค๊ณ , ๋ฐฑ์—”๋“œ๋Š” ์ด๋ฅผ ๊ณ ์„ฑ๋Šฅ SQL๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•˜์—ฌ PostgreSQL์—์„œ ์‹คํ–‰ํ•œ๋‹ค. ๋˜ํ•œ PilotScope ๊ธฐ๋ฐ˜ ML ํŠœ๋‹ ์—”์ง„์ด ์ฟผ๋ฆฌ ์›Œํฌ๋กœ๋“œ๋ฅผ ํ•™์Šตํ•ด DB ์„ฑ๋Šฅ์„ ์ž๋™ ์ตœ์ ํ™”ํ•œ๋‹ค.

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” DB ํŠœ๋‹ ์—ฐ๊ตฌ์™€ ์‹ค์ œ ๊ธˆ์œต ๋„๋ฉ”์ธ์„ ๊ฒฐํ•ฉํ•œ ์‹ค์ฆ์  ์‹œ์Šคํ…œ์œผ๋กœ, ํŠนํžˆ ๊ณ ํšŒ์ „์œจ(High-turnover) ์ „๋žต์˜ ๋ฐฑํ…Œ์ŠคํŒ… ์†๋„๋ฅผ 24.8s โ†’ 1.8s (13.5๋ฐฐ ํ–ฅ์ƒ) ์‹œ์ผฐ๋‹ค.


๐Ÿงฑ Key Features

โœ”๏ธ 1) ๋…ธ์ฝ”๋“œ ์ „๋žต ๋นŒ๋” (React + Blockly)

  • ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ์œผ๋กœ ๊ฐ€์น˜/๋ชจ๋ฉ˜ํ…€/๊ธฐ์ˆ ์  ์ง€ํ‘œ ๊ธฐ๋ฐ˜ ์ „๋žต ์ƒ์„ฑ
  • ์œ ๋‹ˆ๋ฒ„์Šค ์„ค์ •, ํŒฉํ„ฐ ์กฐํ•ฉ(๊ฐ€์ค‘์น˜ ์ ์šฉ), ํฌํŠธํด๋ฆฌ์˜ค ๊ทœ์น™์„ ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ์„ฑ
  • ์ „๋žต์€ JSON ํ˜•ํƒœ๋กœ ์ €์žฅ โ†’ ๋ฐฑ์—”๋“œ๊ฐ€ SQL๋กœ ์ž๋™ ๋ณ€ํ™˜

โœ”๏ธ 2) ๊ณ ์„ฑ๋Šฅ SQL ์ž๋™ ๋ณ€ํ™˜ ์—”์ง„ (FastAPI)

  • ์ „๋žต JSON โ†’ Dynamic SQL Compiler
  • ์™„์ „ํ•œ PIT(Look-ahead bias-free) ๋ฐฑํ…Œ์ŠคํŒ… ๋ณด์žฅ
  • Window Functions, LATERAL JOIN, Z-score ์ •๊ทœํ™”, Weighted Score ํ•ฉ์„ฑ ์ž๋™ ์ƒ์„ฑ
  • ๋ฐฑํ…Œ์ŠคํŒ… ๊ฒฐ๊ณผ๋ฅผ Equity Curve / MDD / CAGR ํ˜•ํƒœ๋กœ ์ œ๊ณต

โœ”๏ธ 3) ML ๊ธฐ๋ฐ˜ DB ์ž์œจ ํŠœ๋‹ (PilotScope)

  • ์‹ค์ œ ๊ธˆ์œต ์ „๋žต ์›Œํฌ๋กœ๋“œ 3์ข…(Fundamental / Momentum / High-turnover)์„ ์ž๋™ ์ƒ์„ฑ
  • PilotScope๊ฐ€ ์›Œํฌ๋กœ๋“œ ์‹คํ–‰ ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•ด ์ตœ์  Knob์„ ์ถ”์ฒœ
  • work_mem ์ฆ๊ฐ€, JIT ์ตœ์ ํ™”, random_page_cost ์กฐ์ • ๋“ฑ ์ž๋™ ์ ์šฉ
  • ๊ฒฐ๊ณผ: High-turnover ์ „๋žต์—์„œ 13.5ร— ์„ฑ๋Šฅ ํ–ฅ์ƒ

โœ”๏ธ 4) ์‹œ๊ณ„์—ด ์ฃผ๊ฐ€ ์˜ˆ์ธก TFT ๋ชจ๋ธ ์—ฐ๋™

  • 300๊ฐœ+ ์žฌ๋ฌด/๊ธฐ์ˆ ์ /๊ฑฐ์‹œ ์ง€ํ‘œ ๊ธฐ๋ฐ˜
  • ์‚ฌ์šฉ์ž๊ฐ€ Feature / Hyperparameter ์„ค์ • ํ›„ ์ง์ ‘ ํ•™์Šต ๊ฐ€๋Šฅ
  • shap ๊ธฐ๋ฐ˜ Feature Importance ์‹œ๊ฐํ™”
  • MAPE 6.82%, Rยฒ 0.94 ์„ฑ๋Šฅ ํ™•๋ณด

โœ”๏ธ 5) ์ปค๋ฎค๋‹ˆํ‹ฐ & ์ „๋žต ๊ณต์œ  ๊ธฐ๋Šฅ

  • ๋ฐฑํ…Œ์ŠคํŠธํ•œ ์ „๋žต์„ ๊ฒŒ์‹œ๊ธ€๋กœ ๊ณต์œ 
  • ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” Forkํ•˜์—ฌ ์ „๋žต์„ ์žฌ์‚ฌ์šฉ ๋ฐ ํ™•์žฅ
  • ์ง‘๋‹จ์ง€์„ฑ์„ ํ†ตํ•œ ์ „๋žต ๊ฐœ์„  ํ๋ฆ„ ์ œ๊ณต

๐Ÿ› System Architecture

  • Frontend: React + Blockly
  • Backend API: FastAPI
  • DB: PostgreSQL + PilotScope ํŠœ๋‹ ๋ฃจํ”„
  • Strategy Engine: JSON โ†’ SQL ๋ณ€ํ™˜ ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜
  • ML Optimization Loop: Workload Generator + PilotScope + Admin Service

๐Ÿ—„ Database Design

Market Data (OLAP ์ตœ์ ํ™”)

  • stocks_daily_info: ์•ฝ 850๋งŒ ๊ฑด OHLCV + ๊ธฐ์ˆ ์  ์ง€ํ‘œ
  • financials_quarterly: LATERAL JOIN ๊ธฐ๋ฐ˜ ์‹œ์  ๋งค์นญ
  • fundamentals_daily: PER/PBR ๋“ฑ ์ผ๋ณ„ ๋ฐธ๋ฅ˜์—์ด์…˜

Core Domain (JSONB ๊ธฐ๋ฐ˜)

  • strategies: ๋ธ”๋ก์ฝ”๋”ฉ ์ „๋žต ํŠธ๋ฆฌ(JSONB)
  • backtest_settings: ๋™์ผ ์ „๋žต์œผ๋กœ ๊ธฐ๊ฐ„/์ž๋ณธ ์กฐ๊ฑด์„ ๋‹ค๋ฅด๊ฒŒ ์‹คํ—˜
  • backtest_results: Equity Curve, Metrics ์ €์žฅ(JSONB)

System Logs (ML ํ•™์Šต์šฉ ๋ฐ์ดํ„ฐ)

  • ์›Œํฌ๋กœ๋“œ ์‹คํ–‰ ๊ธฐ๋ก
  • DB ์„ค์ • ์Šค๋ƒ…์ƒท
  • PilotScope ํŠœ๋‹ ๋กœ๊ทธ

๐Ÿš€ Performance & Experiment Result

๐Ÿ“Œ High-turnover ์ „๋žต ์„ฑ๋Šฅ (์†Œํ˜•์ฃผ + ๊ณ ํšŒ์ „)

Type Before After Improvement
High-turnover 24,841 ms 1,844 ms +1,247% (13.5ร—)

ํ•ต์‹ฌ ์›์ธ:

  • work_mem ์ฆ๊ฐ€ โ†’ Disk Sort ์ œ๊ฑฐ
  • ๋น„์šฉ ์ƒ์ˆ˜ ์กฐ์ • โ†’ ์ธ๋ฑ์Šค ํ™œ์šฉ ํ–ฅ์ƒ
  • JIT ํ™œ์„ฑํ™”

Momentum / Fundamental์€ 18~40ms ์ •๋„์˜ ์ž‘์€ ์ง€์—ฐ ๋ฐœ์ƒํ–ˆ์œผ๋‚˜ UX ์˜ํ–ฅ ์—†์Œ. ML ํŠœ๋‹์˜ ๋ชฉ์  ํ•จ์ˆ˜๊ฐ€ โ€œ์ „์ฒด ์ง€์—ฐ ์ตœ์†Œํ™”โ€์ด๋ฏ€๋กœ High-turnover์˜ ๊ฐœ์„ ์ด ์ตœ์  ์ „๋žต.


๐Ÿ™‹โ€โ™‚๏ธ Team

Name Role Work
์ด์ข…๊ทœ ํŒ€์žฅ ํ”„๋ก ํŠธ/๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ, ์ „๋žต ์—”์ง„, ๋ฐฑ์˜คํ”ผ์Šค ๊ตฌ์ถ•
์ „ํ˜„์ค€ ํŒ€์› PilotScope ๊ธฐ๋ฐ˜ DB ํŠœ๋‹, ML4DB ์‹คํ—˜
์ •ํ•˜๊ทœ ํŒ€์› Selenium ํฌ๋กค๋ง, TFT ์ฃผ๊ฐ€ ์˜ˆ์ธก ๋ชจ๋ธ ๊ฐœ๋ฐœ

๐Ÿงช Tech Stack

Frontend: React, TypeScript, Tailwind, Blockly Backend: FastAPI, SQLAlchemy DB: PostgreSQL 17, Parquet Staging ML/Optimization: PilotScope, MLflow, TFT, LlamaTune/SMAC/Lero Infra: Azure VM, Docker Compose


๐ŸŽฏ Contribution & Impact

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ค‘์š”ํ•œ ๊ธฐ์—ฌ๋ฅผ ๋‹ฌ์„ฑํ•˜์˜€๋‹ค:

1) ๋„๋ฉ”์ธ ํŠนํ™” ML ๊ธฐ๋ฐ˜ DB ํŠœ๋‹ ์‹ค์ฆ

๊ธˆ์œต ์‹œ๊ณ„์—ดยท๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑยท๋Œ€๊ทœ๋ชจ ์œˆ๋„์šฐ ์—ฐ์‚ฐ ํ™˜๊ฒฝ์—์„œ ML ํŠœ๋‹์˜ ํšจ๊ณผ ๊ฒ€์ฆ

2) ๋ฐฑํ…Œ์ŠคํŒ… ์†๋„ ํ˜์‹ 

24์ดˆ ์ˆ˜์ค€์˜ ๊ณ ๋ณต์žก๋„ ์ฟผ๋ฆฌ๋ฅผ 1์ดˆ ๋‚ด์™ธ๋กœ ๋‹จ์ถ•ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ „๋žต ์‹คํ—˜ ๊ฐ€๋Šฅ

3) ์ „๋žต ์‹คํ—˜ Coverage ํ™•๋Œ€

๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ œ์•ฝ ์—†์ด ๊ณ ํšŒ์ „ยท๋Œ€ํ˜• ์—ฐ์‚ฐ ์ „๋žต๊นŒ์ง€ ๊ฒ€์ฆ ๊ฐ€๋Šฅ


๐Ÿ“ฌ Contact

(jklee3409@khu.ac.kr)

Popular repositories Loading

  1. quantimizer quantimizer Public

    ํ€€ํŠธ ํˆฌ์ž ์‹œ์Šคํ…œ

    TypeScript

  2. pilotscope pilotscope Public

    Forked from alibaba/pilotscope

    PilotScope is a middleware to bridge the gaps of deploying AI4DB (Artificial Intelligence for Databases) algorithms into actual database systems.

    Python 1

  3. .github .github Public

Repositories

Showing 3 of 3 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ