Portfolio · 2026

함로운

Full-stack Developer · 직접 만든 제품 2

01$SONAR
LIVE

Personal Project · 기획 · 설계 · 개발 단독

Sonar

체결 내역만 보여주는 증권 앱 위에, '어떻게·왜 거래했는지'를 복원하는 매매 습관 분석기를 만들었다

TypeScript/Next.js/Drizzle/PostgreSQL/Claude SDK/Turbo

THE PROBLEM

증권 앱은 '무엇을 샀는지'는 잘 보여주지만, '어떻게·왜 그렇게 거래했는지'까지 돌아보긴 어렵다. 물타기·추격매수 같은 습관은 손실을 만들면서도 기록 어디에도 잘 드러나지 않는다. 그래서 토스증권 거래 내역을 바탕으로, 내 계좌의 매매 습관부터 눈에 보이게 만들고 싶어 시작했다.

HOW IT WORKS

  1. 01

    연동

    토스증권 Open API를 BYOK OAuth 어댑터로 연동해 체결 내역을 가져온다

  2. 02

    복원

    FIFO로 체결을 페어링해 라운드트립 단위의 매매를 복원한다 — buildup 추적, 가중평균 진입가

  3. 03

    탐지

    물타기·비중과다·단타·추격매수·손절지연·익절놓침 6종 습관을 규칙 기반으로 판정하고 신뢰도·근거를 남긴다

  4. 04

    분석

    반사실·패턴·기간·규칙준수·거래·what-if 6개 모듈로 매매를 여러 각도에서 해석한다

  5. 05

    코칭

    LLM이 판정 결과를 설명하고, 코칭 노트를 누적해 맥락이 쌓이는 코칭을 만든다

UI 미리보기 · 데모

sonar — portfolio monitor
총 평가자산
₩48,250,000
방금 전 기준
평가손익 · 미실현
+₩3,184,000
+7.1%
예수금
₩5,120,000
10% 비중
종목비중평단 대비평가손익
NVDA
엔비디아
+9.6%+₩1,250,184
TSLA물타기 ×2
테슬라
-8.1%-₩612,400
AAPL
애플
+1.3%+₩96,200
PLTR추격 매수
팔란티어
-12.4%-₩884,050
✦ AI 코치

최근 4건 중 2건에서 물타기·추격매수가 반복됐어요. 하락 시 추가 매수 전, 손절 기준을 먼저 정하는 습관을 권장합니다.

Sonar 포트폴리오 모니터 · 데모 목업(실제 거래 데이터 아님) · HTML/CSS 재현

UNDER THE HOOD

데이터 흐름 · 외부 → 코어 → 출력

L1EXTERNAL
토스증권 Open API
L2CORE
worker · sync→analysis
@sonar/engine · 탐지 + 분석 6모듈
@sonar/db · Drizzle + RLS
L3SURFACE
대시보드 · 분석 결과
AI Coach · 코칭 노트

HIGHLIGHTS

01

판정은 규칙, 설명은 LLM

습관 판정까지 LLM에 맡기면 숫자를 지어낼 수 있다. 그래서 판정은 규칙 기반으로 신뢰도와 근거를 저장하고, LLM은 그 결과를 설명하는 역할로만 한정했다. 이 역할 분리가 프로젝트에서 가장 중요한 설계 판단이었다.

02

맥락이 쌓이는 코칭

Claude SDK의 prompt caching(ephemeral)을 써서 코칭 노트를 merge·resynthesize 방식으로 누적했다. 매 분석이 독립적으로 끝나지 않고, 과거 코칭 맥락 위에서 다음 코칭이 나온다.

03

멀티통화 손익 정합성

KRW·USD·환율을 분리 계산해 '종목으로 번 돈'과 '환차익'이 섞이지 않게 했다. FIFO 라운드트립 복원과 합쳐, 모든 수치가 근거까지 추적 가능한 상태를 유지한다.

CORE · 핵심 역량

6종
규칙 기반 습관 탐지
6모듈
반사실·패턴·what-if 분석
15
Drizzle 테이블 + RLS
50+
유닛·통합 테스트

직접 실행해보세요.

$SONAR · 로그인 화면의 체험 계정(추격러·존버러·규율러)으로 둘러볼 수 있다

02$HNDS
LIVE

Personal Project · 1인 풀스택 (기획·설계·개발)

Hindsight

감으로 매매하기 전에 전략을 과거 데이터로 먼저 검증하는 백테스트·자동매매 플랫폼을 4개월간 혼자 만들었다

Next.js 16/TypeScript/Supabase/OpenAI · MCP/Zustand/TanStack Query/Lightweight Charts/WebSocket

THE PROBLEM

'Hindsight is 20/20' — 지나고 나면 다 보인다. 좋아 보이는 전략도 과거 데이터로 돌려보기 전엔 통했는지 알 수 없다. 감으로 사고팔다 잃기 전에 전략을 검증할 수 있는 도구를 만들고 싶었고, 2025.12부터 4개월간 1인 풀스택으로 설계·구현·리팩토링까지 진행했다.

HOW IT WORKS

  1. 01

    대화

    자연어로 전략을 설명하면 AI가 대화 맥락을 파악한다

  2. 02

    설계

    Function Calling으로 시장분석→지표추천→백테스트를 자동 실행하고, SSE로 tool_start→result→text를 실시간 스트리밍한다

  3. 03

    검증

    19개 지표와 2-Pass Grid Search(Coarse 100조합→Fine 80조합)로 파라미터를 최적화한다

  4. 04

    실행

    페이퍼 트레이딩으로 돌리다 검증되면 실전으로 전환하고, 포지션을 모니터링하며 손절·익절을 자동 실행한다

UI 미리보기 · 데모

hindsight — AI 전략 빌더
BTC · 1h · 9년
AI시장 국면을 분석해 추천 전략을 설계했어요
추세추종 + 변동성 돌파신뢰도 82%
Supertrend
기간10배수3.0
Bollinger
기간20σ2.0
CMF
기간21임계0.05
손절 -5%익절 +12%1h 봉 · 신뢰도 가중
백테스트 결과142회 체결
BTC/USDT1h2017 ~ 현재슬리피지 반영
+37.4%누적 수익률
전략 HODL +9.1%
+40%+20%0%
2017202020232026

CAGR

+18.4%

MDD

-12.0%

Sharpe

1.84

승률

61%

↻ 재실행상세보기 ↗

Hindsight AI 전략 빌더 · 데모 목업(실제 거래 데이터 아님) · HTML/CSS 재현

UNDER THE HOOD

데이터 흐름 · 시장 → 코어 → 실행

L1DATA
Upbit / Binance WebSocket
L2CORE
AI 전략 빌더 · MCP 11도구
백테스트 엔진 · 19지표
Supabase · PostgreSQL
L3EXECUTION
전략 빌더 UI
자동매매 · 페이퍼→실전

HIGHLIGHTS

01

도구 정의는 한 곳에만

AI가 쓰는 11개 도구를 단일 MCP Tool Registry로 모으고, Zod v4 스키마를 JSON Schema로 자동 변환했다. 검증 로직과 도구 정의가 흩어지지 않아 도구를 추가할 때 손댈 곳이 한 곳뿐이다.

02

과최적화를 피하는 2-Pass 탐색

파라미터 전수 탐색은 비싸고, 좁게 탐색하면 과최적화된다. Coarse 100조합으로 넓게 훑고 Fine 80조합으로 좁히는 2단계 Grid Search로 절충했다.

03

만들고 나서 다시 깎았다

기능이 쌓이며 늘어난 코드베이스를 60,653줄에서 51,562줄로 15% 줄였다. 19개 지표를 canonical indicator module로 통합해 중복 0, 프론트 직접 fetch 0(중앙 API 클라이언트), POST 라우트 17/18 Zod 검증, Security 미들웨어 5종.

CORE · 핵심 역량

19
기술 지표 · 중복 구현 0
100→80
2-Pass Grid Search 조합
-15%
60,653→51,562줄 리팩토링
24/7
페이퍼→실전 자동매매

직접 실행해보세요.

$HNDS · 브라우저에서 바로 체험