QuantFolio는 전설적인 투자 멘토의 철학을 정량화하여, 하나의 종목을 다각도로 분석하고 합의(Consensus) 결과까지 제시하는 투자 분석 서비스입니다.
이 저장소는 해커톤 제출 가능한 베타 버전을 목표로, 아래 3가지를 빠르게 검증할 수 있도록 설계되어 있습니다.
- 멘토 전략 기반의 멀티팩터 분석
- 사용자 커스텀 페르소나 생성/비교
- 프론트-백 통합 배포 및 공개 도메인 운영
면책: QuantFolio는 교육/연구 목적의 분석 도구이며, 투자 자문이나 매수/매도 권유가 아닙니다.
일반적인 종목 분석은 단일 지표 또는 단일 관점에 치우치기 쉽습니다. QuantFolio는 다음 접근으로 이를 보완합니다.
- 가치/성장/퀄리티 등 서로 다른 철학의 멘토 전략을 동시에 적용
- 전략 간 결과를 합의 엔진으로 통합
- 사용자 성향을 반영한 커스텀 페르소나로 개인화
- 티커 입력 후 분석 실행
- Graham/Lynch/Munger/Buffett/Custom 결과 비교
- Radar + Price 차트로 시각화 확인
- 멘토 프로필에서 철학/공식/핵심지표 이해
- 커스텀 페르소나 생성 후 즉시 분석 반영
- 전략 패턴(
IInvestmentStrategy) 기반 멘토 전략 모듈화 - 기본 전략 4종 + 사용자 정의
Custom전략 - 5개 공통 팩터 점수화
SafetyMargin,Growth,Profitability,Management,PricingAttractiveness
- 전략별 가중치 기반 총점 계산 및 Verdict 산출(
Buy/Hold/Sell)
- 다수결 우세 의견(
DominantVerdict) - 전략 평균 점수(
AverageScore) - 일치도가 가장 높은 지표 / 괴리가 가장 큰 지표 계산
- 투표 분포(
VoteDistribution) 제공
IMarketDataProvider추상화 + 복합 Provider- 1순위 Yahoo Provider 실패 시 Alpha Provider 폴백
- Redis 연결 시 분산 캐시, 미연결 시 메모리 캐시 폴백
- PostgreSQL 연결 시 EF Core DB 사용, 미연결 시 InMemory 폴백
- JWT Access Token + Refresh Token
- Demo 계정 로그인/토큰 재발급 API 제공
- API Rate Limiting(Fixed Window)
- CORS 허용 오리진 정책 적용
- Hangfire 기반 백그라운드 분석 큐
- 작업 등록/상태 조회 API
/hangfire대시보드 노출
- 다크+골드 테마, 글래스모피즘 스타일
- 랜딩/대시보드/멘토/비교 페이지
- 커스텀 페르소나 생성/삭제 흐름
- 멘토 상세 설명 화면
- 차트 시각화(Recharts)
- Radar 차트
- Price Trend 차트
1D,1W,1M,3M,6M,1Y,LIVE
참고: 현재 LIVE 차트와 마켓 데이터는 베타용 시뮬레이션 데이터 생성 로직(
StockDataGenerator)을 사용합니다.
- .NET 9 Web API
- Entity Framework Core (PostgreSQL / InMemory)
- Hangfire + MemoryStorage
- JWT Bearer Authentication
- Redis Distributed Cache (선택)
- React + Vite
- Tailwind CSS
- Recharts
- Axios + React Query
- i18next (ko/en)
- Docker (
backend/QuantFolio.Api/Dockerfile) - 베타 오픈 런북:
deploy/BETA_OPEN_60MIN_KR.md - 스모크 테스트 스크립트:
scripts/smoke-beta.sh
[React Frontend]
└─ API 호출 (/analysis, /strategies, /auth)
↓
[ASP.NET Core API]
├─ AuthService (JWT/Refresh)
├─ StockAnalysisService
│ ├─ MarketDataProvider (Yahoo -> Alpha fallback)
│ ├─ StrategyFactory (Reflection 등록)
│ ├─ InvestmentStrategies (Graham/Lynch/Munger/Buffett/Custom)
│ └─ ConsensusEngine
├─ Cache (Redis or Memory)
├─ DbContext (PostgreSQL or InMemory)
└─ Hangfire (Background jobs)
.
├─ backend/QuantFolio.Api
│ ├─ Abstractions/ # 핵심 인터페이스
│ ├─ Auth/ # 인증 모델/서비스 계약
│ ├─ Contracts/ # API 요청/응답 DTO
│ ├─ Controllers/ # HTTP 엔드포인트
│ ├─ Domain/ # 엔터티/도메인 모델
│ ├─ Infrastructure/ # 전략/데이터/보안/캐시/잡
│ ├─ Services/ # 분석/합의/인증 서비스
│ ├─ Dockerfile
│ └─ Program.cs
├─ frontend
│ ├─ src/components # 공통 UI/차트
│ ├─ src/pages # 페이지 단위 화면
│ ├─ src/context # 전역 상태
│ ├─ src/features # API 훅/비즈니스 로직
│ └─ src/data # 멘토/프로필 데이터
├─ deploy/BETA_OPEN_60MIN_KR.md
└─ scripts/smoke-beta.sh
Base URL 예: http://localhost:5078
POST /api/auth/loginPOST /api/auth/refresh
GET /api/strategiesPOST /api/analysis/run(익명 허용)POST /api/analysis/background(인증 필요)GET /api/analysis/background/{jobId}(인증 필요)
GET /api/health(익명 허용)GET /api/rankings(인증 필요, 현재 스캐폴드)
{
"ticker": "AAPL",
"strategyIds": ["graham", "lynch", "munger"],
"customWeights": {
"safetyMargin": 35,
"growth": 20,
"profitability": 15,
"management": 20,
"pricingAttractiveness": 10
}
}- .NET SDK 9.x
- Node.js 20+
- (선택) PostgreSQL, Redis
cd backend/QuantFolio.Api
dotnet restore
dotnet run기본 URL(launch profile 기준)
http://localhost:5078https://localhost:7119(--launch-profile https)
cd frontend
npm install
npm run dev기본 URL
http://localhost:5173
환경변수 예시 (frontend/.env)
VITE_API_BASE_URL=http://localhost:5078Jwt__IssuerJwt__AudienceJwt__SigningKey(필수, 32자 이상)Jwt__AccessTokenMinutesJwt__RefreshTokenDaysConnectionStrings__PostgreSql(없으면 InMemory)ConnectionStrings__Redis(없으면 Memory Cache)MarketData__YahooFinanceApiKeyMarketData__AlphaVantageApiKeyCors__AllowedOrigins__0
VITE_API_BASE_URL
권장 절차는 deploy/BETA_OPEN_60MIN_KR.md 문서를 따릅니다.
배포 후 최소 점검:
chmod +x scripts/smoke-beta.sh
./scripts/smoke-beta.sh https://<your-api-domain>- Email:
demo@quantfolio.ai - Password:
P@ssw0rd!
dotnet build QuantFolio.slnnpm run lint(frontend)npm run build(frontend)
- 현재 마켓 데이터는 시뮬레이션 생성값 기반
Rankings/백테스팅은 스캐폴드 단계- Hangfire 대시보드 접근 제어 강화 필요
- 실서비스 수준 모니터링/APM/알림은 미적용
- 실제 시세 API 연동 및 장애 폴백 고도화
- 백테스팅/소셜 랭킹 실구현
- Refresh Token 회전/폐기 정책 강화
- CI/CD + 무중단 배포 체계 구축
- 실시간 데이터 파이프라인(WebSocket/SSE) 도입