PhD in Mechanical Engineering — Mathematical Optimization · ML & Perception Engineer @ Doosan Robotics
Mathematical optimization is the through-line — numerical optimization, surrogate modeling & state estimation, carried from theory into 3D perception, sensor fusion, and production systems.
한국어 · English
Three stacks that share a shape — collect → store → research. One Airflow deployment feeds both equity markets; the standalone services sit outside the pipeline.
flowchart TB
subgraph KR ["🇰🇷 Korean equities"]
direction LR
K["kiwoom-client"] --> AF["quant-airflow<br/>DART · KRX · Naver · Toss"] --> DB[("TimescaleDB<br/>delisted included")] --> Q["kr-quant"]
NW["krx-news-client"] --> AF
F["krx-fundamentals-client"] --> AF
DB -- "news_judgments<br/>LLM judgment" --> SC["scalp-it"]
DB -- "prices, read-only" --> KSIG["krx-signal-engine<br/>risk gate"]
K --> KSIG
end
subgraph US ["🇺🇸 US equities"]
direction LR
SH["Sharadar"] --> AFU["quant-airflow<br/>bulk snapshot rebuild"] --> DD[("DuckDB<br/>point-in-time")] --> O["portfolio-research"]
SH --> MS["macro-sector-agent<br/>own PIT DuckDB"]
YF["yfinance"] --> AT["automated-stock-trading-systems"]
end
subgraph CX ["🪙 Crypto"]
direction LR
EX["Exchange APIs"] --> CR["quantbox-engine"]
end
subgraph SVC ["Standalone services & tools"]
direction TB
FC["fin-checkup"]
end
%% 세로 정렬용 — `~~~` 는 그 자체로 보이지 않는 링크다(linkStyle 불필요).
KR ~~~ US ~~~ CX ~~~ SVC
classDef source fill:#2563EB,stroke:#1E40AF,color:#FFFFFF
classDef move fill:#B45309,stroke:#78350F,color:#FFFFFF
classDef out fill:#059669,stroke:#065F46,color:#FFFFFF
class K,SH,YF,EX,F,NW,FC source
class AF,AFU,DB,DD move
class Q,O,AT,CR,SC,MS,KSIG out
style KR fill:#0F172A08,stroke:#64748B
style US fill:#0F172A08,stroke:#64748B
style CX fill:#0F172A08,stroke:#64748B
style SVC fill:#0F172A08,stroke:#64748B,stroke-dasharray:4 3
Blue — data sources & standalone services · amber — collection & storage · green — research & engines. Dashed — outside the pipeline.
| Project | What it is |
|---|---|
| kiwoom-client |
Kiwoom Securities REST API wrapper — full domestic-equity endpoint coverage & real-time WebSocket feeds · sync + async, auto token refresh · ships an MCP server exposing all 182 REST endpoints plus condition_search as AI-agent tools, real-order calls opt-in only · pip install kiwoom-client |
| quant-airflow |
The one pipeline behind both equity stacks — 16 DAGs. Korea: prices, supply/demand, earnings, consensus, shares outstanding & news/disclosures (via krx-fundamentals-client & krx-news-client) into TimescaleDB over DART · Kiwoom · KRX · Naver · Toss, with delisted-stock backfill so downstream backtests aren't survivorship-biased. Structured LLM judgments over that news/disclosure stream (event type, sentiment, staleness) feed scalp-it's intraday filtering. US: a daily Sharadar bulk snapshot rebuilt into a DuckDB store and published atomically |
| krx-fundamentals-client |
Korean corporate fundamentals Python client library — financial statements (batched up to 100 tickers/call), valuation metrics, dividends & stock screening (DART + KRX + Naver), no standing server · feeds quant-airflow's earnings/shares/consensus DAGs |
| krx-news-client |
Korean market news & disclosure Python client library — DART filings + Toss Securities, one schema over sources that word the same event differently · feeds quant-airflow's daily_news DAG · pip install krx-news-client |
| fin-checkup |
Risk-disclosure alerts + a financial health checkup over DART & SEC EDGAR — rights offerings, CB issues, audit opinions and delistings pushed to Telegram; 17 statement metrics read as a traffic-light chart against last year, the sector median and the peer percentile. Reports measurements and facts only — never a recommendation |
| kr-quant |
KOSPI/KOSDAQ alpha research at the trade-distribution level — walk-forward, random null controls, purged CV, Deflated Sharpe & survivorship-corrected universes, all enforced as CI guardrails. The rejections are the product — pure noise clears “5 of 6 folds positive” 46% of the time, so the test is whether a strategy beats its own randomized version. A daily sector money-flow observation axis lives alongside it |
| portfolio-research |
US equity factor engine — point-in-time & survivorship-bias-free, walk-forward optimization gated by Deflated Sharpe & PBO · plus tactical ETF allocation. Ships the rejections too: all 9 pre-registered TAA configs failed the PBO gate, and one headline number was retracted · writeup |
| macro-sector-agent |
Top-down US sector-cycle research pipeline over its own Sharadar-fed point-in-time DuckDB — it asks which industry has been forgotten, not what to buy. The market is cut at a resolution standard sector labels can't show, and an LLM judge argues from evidence over whether a theme is a cycle trough or a structural death, sitting only at that narrow waist — everything above and below is deterministic. The machine never picks — it only excludes; strategy parameters stay out of the repo |
| quantbox-engine |
Crypto futures backtest & execution engine — zero lookahead, backtest↔live parity. Exits are placed as exchange-side algo orders |
| automated-stock-trading-systems |
Backtester for Bensdorp's seven non-correlated trading systems (educational reimplementation) |
Strategies and parameters stay closed. Only structure and discipline are written down. Happy to walk through any of these on request.



