월 24,000달러짜리 금융 단말기를 무료로 대체하겠다는 19.4k 스타 프로젝트. C++20 네이티브 코어 + Qt6 UI + 임베디드 Python + 37개 AI 에이전트 + 100개 데이터 커넥터를 단일 바이너리에 우겨넣은 풀스택 데스크탑 앱이다.
무엇을 하는 프로젝트인가.
실시간 시세 차트, 펀더멘털 분석(DCF), 포트폴리오 최적화, 채권·파생상품 가격 책정, 16개 증권사 직접 주문, 워런 버핏·벤저민 그레이엄 같은 투자 거장 페르소나의 AI 에이전트, MCP 도구 연결, 노드 에디터 기반 자동 매매 파이프라인까지 — 월 24,000달러짜리 Bloomberg Terminal의 핵심 기능을 단일 네이티브 바이너리 하나에 다 우겨넣은 데스크탑 앱이다.
v4부터는 Electron이나 PyQt 같은 래퍼를 다 버리고 순수 C++20 + Qt6로 다시 짰다. Python은 분석 엔진으로 임베드된다 — 별도 프로세스가 아니라 같은 프로세스 안에서 직접 호출된다.
트렌딩 8위로 올라온 이유.
같은 도메인의 경쟁자는 두 종류가 있다. 상용 단말기(Bloomberg, Refinitiv, Capital IQ — 비싸고 폐쇄적), 그리고 오픈소스 분석 라이브러리(pandas, yfinance, QuantLib — 단편적, 통합 UI 없음). Fincept Terminal은 그 사이에 있다. "통합된 데스크탑 GUI 경험"을 무료로 주는 게 핵심이다.
최근 데스크탑 앱의 90%는 Electron(VS Code, Discord, Slack 식)이다. 크롬 브라우저를 통째로 번들링해서 200MB+, 메모리 1GB+ 먹는다. Fincept v4는 크롬·JavaScript·Node 없이 Qt6로만 그린다. 19.4k 스타 중 상당수가 "드디어 빠른 금융 단말기"에 끌린 사용자다.
버핏(Buffett), 그레이엄(Graham), 린치(Lynch), 멍거(Munger), 클라먼(Klarman), 마크스(Marks) 등 가치투자 거장의 사고 프레임을 각각 별도 에이전트로 만들었다. 거시경제 분석 에이전트, 지정학 분석 에이전트도 있다. 한 종목을 8명이 다른 관점으로 동시 평가하게 시킬 수 있다.
Zerodha·Angel One·Upstox(인도), Alpaca·IBKR(미국), Saxo(유럽), Kraken·HyperLiquid(크립토) 등이 직접 연결된다. WebSocket으로 실시간 호가 수신, 같은 앱 안에서 주문까지. 별도 HTS·MTS를 띄울 필요가 없다.
코드는 AGPL-3.0으로 풀려 있어 개인·학습·연구는 무료다. 회사·SaaS·자산운용사가 쓰려면 별도 상용 라이선스(연간 USD 50,000 위약금까지 명시)를 사야 한다. "공부는 무료, 돈 벌면 우리도 나눠 갖자"는 모델 — MongoDB·Elastic·Redis가 갔던 길과 같다.
백엔드 · 프론트엔드 · 인프라 — 각 층을 자세히.
C++ 55.3% + Python 43.1%. 바이트 기준으로는 C++가 더 많지만, "무거운 일은 C++, 분석은 Python"이라는 명확한 분업이 있다. UI 렌더링·실시간 WebSocket·차트 그리기는 전부 C++. DCF 모델·통계 계산·머신러닝은 임베디드 Python이 처리한다.
Py_Initialize()로 인터프리터를 띄우고 C++ 함수에서 Python 객체를 주고받는다. 별도 프로세스로 띄우는 것(IPC 비용)과 달리 함수 호출 한 번이라 굉장히 빠르다. 게임 엔진(Blender), 3D 툴(Maya)에서 자주 쓰는 패턴.Qt 모듈 중 qtcharts, qtwebsockets, qtmultimedia 세 개를 추가로 쓴다. qtcharts로 캔들·라인 차트를, qtwebsockets로 Kraken·HyperLiquid의 실시간 호가를, qtmultimedia로 알람음·뉴스 영상을 처리한다.
Qt6는 "Windows·Mac·Linux의 통역사 + 그림 도구 박스"라고 보면 된다. 같은 C++ 코드 하나로 세 OS에서 일관된 모양을 그릴 수 있게 해준다. 카카오톡 PC가 OS별로 따로 만들어지는 것과 달리, Fincept은 코드 한 벌로 세 OS 인스톨러를 뽑는다.
지원하는 LLM 프로바이더가 의도적으로 많다: OpenAI · Anthropic · Gemini · Groq · DeepSeek · MiniMax · OpenRouter · Ollama(로컬). 클라우드 차단 환경에서는 Ollama로 로컬 LLM만 쓰는 것도 가능.
다음 카테고리로 묶인다: 시세 API(Yahoo Finance, Polygon, Alpha Vantage), 매크로 데이터(FRED — 미 연준, IMF, World Bank, DBnomics), 중국·아시아(AkShare), 정부 API(US Treasury, SEC EDGAR), 크립토(Kraken WebSocket, HyperLiquid), 대체 데이터(Adanos 시장 심리 — Reddit·X·뉴스·Polymarket 통합).
CMake는 빌드 설계도를 작성하는 메타 빌드 시스템(Makefile/Visual Studio/Ninja로 변환된다). Ninja는 그 결과로 빌드를 실제 실행하는 빠른 빌드 엔진. Make 대비 2~3배 빠르다. Fincept은 두 도구 모두 정확한 버전에 핀.그 외 핀: Qt Online Installer 또는 aqtinstall로 Qt 6.8.3 설치, MSVC 17.10+ / GCC 12.3+ / Apple Clang 15.0+ 강제 체크, macOS는 deployment target 13.0(Ventura), Windows는 SDK 10.0.22621.0(11 22H2). 버전이 어긋나면 빌드 자체를 거부한다.
CMakeLists.txt 주석에 명시된 사례 — MSVC 19.40 미만으로 빌드한 바이너리가 Windows 11 26H2에서 STATUS_STACK_BUFFER_OVERRUN으로 즉사하는 버그(이슈 #215). 그래서 메인테이너가 빌드 자체를 거부하게 만들었다.
오픈소스 데스크탑 앱이 흔히 망하는 지점이 "사용자마다 빌드 환경이 달라서 어떤 사람만 크래시"다. Fincept은 컴파일러·SDK·Qt·CMake 모든 버전을 정확히 못 박고, 어긋나면 친절한 에러 메시지와 함께 빌드를 정지시킨다. 이게 "오픈소스 프로페셔널리즘"의 신호.
단일 바이너리 안에서 모든 게 어떻게 협력하는가.
Fincept Terminal의 핵심 설계 결정은 "한 프로세스, 두 언어, 다층 데이터"다. UI와 분석을 같은 메모리 공간에서 돌리되, 데이터 소스는 100여 개를 추상화한 커넥터 레이어 뒤에 숨긴다.
CMakeLists.txt 안에 if(MSVC_VERSION LESS 1940) message(FATAL_ERROR ...) 식의 가드가 박혀 있다. C++ 빌드 시스템은 일반적으로 사용자 환경에 관대한데, Fincept은 반대로 엄격하다. 데스크탑 앱 메인테이너가 "내 컴퓨터에선 되던데"의 디버그 지옥에서 탈출하는 정공법.
금융 분석 코드는 학계·논문 생태계가 전부 Python인데, GUI를 Python으로 만들면 (PyQt 식) 부팅도 느리고 메모리도 많이 쓴다. Fincept은 GUI는 C++로 그리고, 분석 함수만 Python을 호출하는 절충안. 게임 엔진의 스크립팅 패턴과 같다.
FRED와 Yahoo와 Kraken은 인증 방식·응답 포맷이 다 다르다. Fincept은 추상화된 DataConnector 인터페이스 뒤에 어댑터를 두고, 사용자는 "심볼·기간"만 던지면 된다. 새 데이터 소스 추가는 어댑터 하나 작성으로 끝.
"가격 받기 → 이동평균 → 신호 생성 → 알파카 주문" 같은 흐름을 노드를 끌어 연결하는 식으로 만든다. Blender의 셰이더 노드, Unreal의 Blueprint, n8n과 같은 발상. MCP 도구를 노드 하나로 끼울 수 있어 외부 LLM 분석도 파이프에 들어간다.
Dockerfile을 보면 빌더 스테이지에서 aqtinstall로 Qt 6.8.3을 받고, 런타임 스테이지에서 그 Qt 라이브러리를 /opt/Qt 통째로 복사한다. 사용자 PC에 Qt가 없어도 Fincept 바이너리에 묶여 있어 바로 실행. 인스톨러는 그냥 압축 풀기 수준이다.
CMakeLists.txt를 보면 ccache.conf를 자동으로 생성하고 ccache용 launcher 스크립트(ccache_launcher.cmd / .sh)를 만든다. PCH(Precompiled Header)가 있는 MSVC 환경에서 ccache가 99% 거부하는 이슈를 우회하기 위한 코드다. 보통 이런 디테일은 사내 빌드 엔지니어가 만들지 오픈소스에 박지 않는다.
레포 최상위에 무엇이 있는가.
fincept-qt/가 사실상 모든 코드의 집이다. 거기 아래 src/(C++ Qt 화면들), scripts/(분석·에이전트·커넥터 Python 허브), resources/(아이콘·테마)로 다시 갈라진다. 레포 최상위는 그 위에 얹은 "멀티 플랫폼 배포 인프라"다.
대형 앱 레포는 "건물 + 부지" 구조라고 보면 된다. fincept-qt/가 건물 본체, 그 외(Docker, GitHub Actions, setup.sh, docs)는 부지·진입로·전기·수도. 본체만 보면 C++ 앱인데, 부지를 다 합치면 "세 OS 인스톨러를 자동 생산하는 공장"이 된다.
이 레포에서 무엇을 가져갈 수 있는가.
최근 Electron이 너무 흔해져서 C++ 데스크탑 앱 코드 자체가 흔하지 않다. Fincept은 "2026년에도 C++ 네이티브로 앱 만드는 게 정상이다"를 보여주는 살아있는 샘플이다.
CMakeLists.txt 한 파일이 1,900줄+이지만 그 안에 CMakePresets.json, FetchContent로 외부 의존성 자동 다운로드, Unity Build, LTO 옵션, ccache 자동 검출이 깔끔히 모듈화돼 있다. 작은 C++ 프로젝트의 CMake와 차원이 다른 디테일.
Qt Charts로 캔들·라인 차트 그리는 법, QWebSockets로 실시간 데이터 받기, QML 없이 순수 C++ 위젯만으로 복잡한 화면 구성하기. qmake가 아닌 CMake 기반 Qt6 프로젝트의 전형이라 Qt6 입문자에게 좋은 레퍼런스.
Python을 C++ 앱 안에 끼우는 작업은 문서가 부족한 영역이다. Fincept의 fincept-qt/scripts/ 디렉토리(분석·에이전트·커넥터 Python 허브)는 이 패턴을 실전 규모로 보여준다.
C++ 쪽에서 Python 함수를 호출하고 결과를 받는 패턴. GIL(Global Interpreter Lock) 관리, 객체 참조 카운트 관리, 멀티 스레드 환경에서의 안전성 같은 까다로운 부분을 실제 어떻게 다루는지 볼 수 있다.
PyGILState_Ensure / PyGILState_Release로 안전 구간을 명시해야 한다.한 종목을 8명의 가치투자 거장이 동시에 평가하는 발상이 흥미롭다. 각 에이전트는 다음 3가지로 구성된다고 추론할 수 있다:
OpenAI · Anthropic · Gemini · Ollama 같은 LLM들을 같은 인터페이스 뒤에 둬서, 사용자가 키 하나만 바꿔도 다른 모델로 평가가 돌아간다. 전략 패턴의 교과서적 예. LangChain·LiteLLM이 한 방향, Fincept은 자체 어댑터로 한 방향.
.github/workflows/release.yml은 Windows runner에서 .exe를, macOS runner에서 .dmg를, Linux runner에서 .run/.deb/.rpm을 동시에 빌드한다. Tag 하나 푸시하면 Windows(.exe) + Linux(.run/.deb/.rpm) + macOS(.dmg) 형태로 6~7개 인스톨러 아티팩트가 자동 생산된다. Dockerfile은 Linux 컨테이너용 추가 옵션.
CMake의 CPack + Qt Installer Framework(IFW)로 사용자가 "다음 다음 동의 설치" 식으로 클릭하는 GUI 인스톨러를 자동 생성한다. NSIS(Windows)·DMG(macOS)·AppImage(Linux) 같은 형식을 코드 한 번에 다 뽑는다.
설치·빌드에 필요한 것.
릴리스 페이지에서 본인 OS에 맞는 인스톨러를 받아 더블클릭하면 끝이다. CPU·RAM 요구는 README에 명시되지 않았지만 Qt6 + 임베디드 Python 앱이라 다음 정도가 합리적 추측:
OS: Windows 10/11 x64, macOS 11.0+(Apple Silicon 권장), Linux glibc 2.31+(Ubuntu 22.04 / Debian 12 이상)
RAM: 8GB 최소, 16GB 권장 — 실시간 차트 + 임베디드 Python + 멀티 데이터 스트림 운영
디스크: 500MB(앱) + 데이터 캐시(자유)
네트워크: 시세 WebSocket + API 호출용 안정적 인터넷
맥북에서 처음 빌드 시 기준:
"Could not find Qt6 6.8.3"가 발생하며 빌드 중단. Qt Online Installer는 기본적으로 "최신" 버전만 보여주고, 6.8.3 같은 옛 버전은 "Archive" 체크박스를 켜야 보인다.
pip install aqtinstall 후 aqt install-qt linux desktop 6.8.3 linux_gcc_64 --modules qtcharts qtwebsockets qtmultimedia 한 줄이면 깔끔하다. Dockerfile이 정확히 이 방법을 쓴다.
난이도별로 다섯 개.
Windows·macOS 인스톨러로 깔고, Apple(AAPL)·Microsoft(MSFT)·Tesla(TSLA)·삼성전자(005930.KS)·SK하이닉스(000660.KS) 5개를 입력해 DCF 결과를 비교한다. DCF Fair Value가 현재 주가보다 높으면 저평가(매수 후보), 낮으면 고평가(매도 후보) — 가치투자의 가장 기본 도구를 손에 익히는 단계.
FRED·Yahoo가 아닌 한국은행 ECOS API나 KRX 일자별 시세 API를 어댑터로 추가해본다. 기존 fincept-qt/scripts/ 안의 어댑터 하나(예: fred.py)를 베껴 새로 만들고, 등록 후 UI에서 호출되는지 확인한다. "100+ 커넥터 추상화"가 실제로 어떻게 동작하는지 손으로 만지며 익힌다.
존 리(메리츠자산운용)·박영옥(스마트인컴) 같은 페르소나의 시스템 프롬프트를 작성하고, 기존 37개 에이전트 구조를 그대로 따라 1개를 더 추가한다. 같은 종목을 8개 에이전트가 평가하던 화면에 9번째 의견이 추가된다.
"매일 오전 9시 → Kraken에서 BTC 가격 가져오기 → 200일 이동평균과 비교 → 골든크로스면 0.001 BTC 매수 알림"을 노드를 끌어 만든다. 종이 매매(paper trading) 엔진을 켜서 실제 돈은 안 쓰고 가상 손익만 추적. 시각적 프로그래밍이 자동매매에 어떻게 적용되는지 체험하는 단계.
레포를 fork해서 (a) UI를 한글화, (b) 기본 데이터 소스를 KRX·DART로 교체, (c) 한국 증권사 키움·미래에셋 어댑터 추가, (d) 한국세제(양도세·배당세) 계산기를 한 화면 추가 — 한국형 Fincept Terminal로 재포지셔닝. 상용 라이선스 조건 때문에 공개 배포는 못 하지만, 개인 학습용으로는 굉장한 풀스택 학습이 된다.
8주 코스로 풀어쓰기.
Fincept Terminal을 "그냥 쓸 수 있는" 단계에서 "이 레포에 기여할 수 있는" 단계까지 도달하는 8주 커리큘럼:
Bjarne Stroustrup의 "A Tour of C++ (3rd Edition)" 또는 cppreference.com의 C++20 섹션. 특히 std::ranges, std::format, concepts, coroutines. RAII 패턴 손에 익히기. 작은 콘솔 앱 하나(예: 파일 wc 클론) C++20으로 작성.
"Modern CMake" 가이드(gitlab.kitware.com), Craig Scott의 "Professional CMake". target_* 명령, FetchContent, CMakePresets.json까지. Fincept의 CMakeLists.txt를 켜놓고 한 줄씩 의미 추적해보기.
Qt 공식 튜토리얼 → QWidget 계층 → QCharts → QWebSockets. 토이 프로젝트: 간단한 시세 워처(yfinance 한 종목 가격을 실시간 차트로 그리는 작은 앱). Qt Creator IDE보다 CLion·VSCode + CMake가 Fincept 스타일.
CPython C API 공식 문서의 "Embedding Python in Another Application" 챕터. 그 후 pybind11로 같은 작업을 더 편하게 하기. 토이 프로젝트: C++ 메인이 Python에게 "이 숫자 리스트의 통계 내줘"라고 호출해서 결과 받는 미니 앱.
QuantLib Python 튜토리얼 → 채권 가격 책정, Black-Scholes 옵션 가격, 이자율 곡선. Aswath Damodaran의 NYU Stern "Valuation" 유튜브 강의(무료)로 DCF 모델 직접 만들기. VaR은 historical / parametric / Monte Carlo 세 방법 다 한 번씩 구현.
Anthropic의 Building Effective Agents 블로그 → 12-Factor Agents 원칙 → MCP 스펙(modelcontextprotocol.io). Fincept의 에이전트 코드를 읽으며 "프롬프트·툴·출력 포맷"이 어떻게 분리됐는지 파악. 본인의 페르소나 1개 추가가 졸업 과제.
이 레포에서 자주 마주칠 용어를 한 번에.
원문과 학습 자원.
GitHub 레포: github.com/Fincept-Corporation/FinceptTerminal
공식 사이트: fincept.in
TrendShift 페이지: trendshift.io/repositories/17028
최신 릴리스: v4.0.2 (2026-04-24)
Qt6 공식 문서: doc.qt.io/qt-6
CMake 공식 가이드: cmake.org/cmake/help/latest
aqtinstall: github.com/miurahr/aqtinstall
QuantLib: quantlib.org
MCP 스펙: modelcontextprotocol.io
Aswath Damodaran (NYU Stern): pages.stern.nyu.edu/~adamodar — DCF·가치평가의 세계적 권위자, 강의 전체 무료 공개
Investopedia: investopedia.com — 금융 용어 사전
docker buildx build --platform linux/amd64,linux/arm64 한 줄로 멀티아치 빌드되는 걸 체험.