본 포스팅은 C++ 기반의 QuantLib 라이브러리를 설치하고,
QuantLib 라이브러리를 활용한 예제를
visual studio를 통해 링크 및 실행하는 절차에 대해 설명합니다.
들어가기에 앞서
본 포스팅은 아래의 환경 및 버전으로 진행됩니다.
OS: Windows 11
IDE: Visual Studio 2022
QuantLib: version 1.37
Boost: version 1.87
QuantLib
- QuantLib은 금융 공학 분야에서 사용되는 오픈 소스 라이브러리이다.
- 금융 시장의 정량적 분석, 금융 상품의 가격 책정, 위험 관리, 투자 포트폴리오의 최적화 기능을 지원한다.
- QuantLib을 사용하는 경우 복잡한 상품 산출 산식에 대한 코드를 극단적으로 줄일 수 있다.
사실 그런건 모르겠고 회사에서 사용해서 매뉴얼 작성 겸 블로그에도 가이드 작성하고 있다.
QuantLib의 주요 기능
- 금융 상품 가격 책정: 옵션, 채권, 스왑 등 다양한 금융 상품의 가격 책정 함수 제공
- 수익률 곡선 구축: 시장 데이터로부터 수익률 곡선 구축, interpolation 등 지원
- 리스크 관리: 시장 리스크, 신용 리스크 등 다양한 유형의 금융 리스크 산출 기능 제공
- 날짜 및 시간 계산, 스케줄 생성: 마켓 컨벤션에서 중요한 날짜 계산, 스케줄 생성 및 만기일 계산 함수 제공
설치 가이드
아래의 순서대로 진행합니다.
Visual Studio 2022 다운 및 세팅
아래 포스팅을 참고해 설치를 진행한다.
2025.04.27 - [DEV/C, C++] - [C, C++, CMake] 개발 환경을 위한 Visual Studio 2022 설치 가이드
[C, C++, CMake] 개발 환경을 위한 Visual Studio 2022 설치 가이드
본 메뉴얼은 Cmake, C, C++ 개발 환경 설정을 위한Windows x64와 Linux OS 호환Visual Studio 2022 설치 가이드입니다. Visual Studio 2022 설치 파일 다운 온라인 다운 링크https://visualstudio.microsoft.com/ko/vs/ Visual Studio
doinitright.tistory.com
Boost 다운 및 세팅
C++ 표준 라이브러리에서 제공하지 않는 알고리즘, 메타프로그래밍 툴셋을 모아둔 라이브러리이다.
QuantLib은 Boost 라이브러리에 대한 의존성을 가지고 있으므로 선수로 설치한다.
https://sourceforge.net/projects/boost/files/boost-binaries/1.87.0/
Boost C++ Libraries - Browse /boost-binaries/1.87.0 at SourceForge.net
Boost Binaries For Windows Starting with 1.54.0 binaries are available packaged in the installers available here (pervious versions listed are packages of individual libraries for use with the deprecated boost-pro installer). These installers provide the l
sourceforge.net
1. 위 사이트에서 boost_1_87_0-msvc-14.x-"bit".exe 중 아무거나 다운로드 받는다.
64비트면 64비트, 32비트면 32비트로 다운 받는다.
2. 다운로드 받은 exe 파일을 관리자 권한으로 실행한다.
* 설치 경로: C:\Program Files
3. 설치 후 bootstrap.bat을 관리자 권한으로 실행한다.
* 실행이 안될 시 cmd에서 실행한다.

4. 실행 이후 b2.exe가 폴더 내에 탑재되었으면 설치가 완료된 것이다.

QuantLib 다운 및 세팅
https://github.com/lballabio/QuantLib/releases/tag/v1.37
Release 1.37 · lballabio/QuantLib
Downloads: QuantLib-1.37.tar.gz QuantLib-1.37.zip Changes for QuantLib 1.37: QuantLib 1.37 includes 27 pull requests from several contributors. Some of the most notable changes are included below...
github.com
1. 위 링크로 들어가 .zip파일을 다운로드 받는다.
2. C:\Program Files에 압축을 푼다.
3. 이후 "QuantLib-버전명"으로 되어 있는 디렉토리 명을 QuantLib으로 변경한다.
* 변경하지 않아도 되지만, 이후 Visual Studio에서 별도 설정이 필요하다.
* 본 포스팅은 디렉토리명을 변경한 상태로 진행하므로 참고
4. 아래의 경로에 아래와 같은 파일이 보인다면 세팅이 완료된 것이다.

QuantLib 라이브러리 파일 생성
현 단계부터 진행 간 '파일을 읽을 수 없음' 오류가 발생하는 경우, Visual Studio를 관리자 권한으로 실행하여 시도해볼 것
1. Visual Studio 2022 실행 > 프로젝트 / 솔루션으로 열기
다운받은 QuantLib 디렉토리의 ‘QuantLib.sln’으로 프로젝트 열기

2. 좌측의 솔루션 탐색기에서 QuantLib 우클릭 > 속성 진입

3. 구성 속성 > VC++ 디렉터리 >> 구성을 ‘모든 플랫폼’, 플랫폼 : ‘모든 플랫폼’으로 변경
VC++ 디렉터리에 진입해 포함 디렉터리, 라이브러리 디렉터리를 편집

4. 라이브러리 디렉터리 추가
포함 디렉터리 : ‘C:\Program Files\boost_1_87_0’ 추가
라이브러리 디렉터리 : ‘C:\Program Files\boost_1_87_0\lib64-msvc-14.3’ 추가
5. 적용 후 확인 클릭

6. 구성 환경 변경 확인 후 솔루션 QuantLib 우클릭 > 빌드 실행

구성 환경 설명
- ‘release x64’ : 배포용 환경, 디버그 불가, 동적 컴파일
- ‘release x64(static)’ : 배포용 환경, 디버그 불가, 정적 컴파일 (QuantLib 소스 포함)
- ‘debug x64’ : 디버그 가능, 동적 컴파일, dll 생성, 디버그용 심볼 포함, 다소 용량 큼
- ‘debug x64(static)’ : 디버그 가능, 정적 컴파일(QuantLib 소스 포함), 디버그용 심볼 포함, 다소 용량 큼
debug 로 빌드된 라이브러리의 경우 테스팅 간 디버깅이 가능하지만,
디버그 심볼을 포함하고 있기에 라이브러리의 용량이 커진다는 단점이 있다.
반면 release는 디버깅 심볼이 제거되어 라이브러리 용량이 가벼워진다.
용도에 맞게 라이브러리를 사용하면 된다. (일단 4개 다 빌드하고 갈아끼우면서 사용하면 된다)
본 예제에서는 release x64로 빌드를 진행한다.
빌드 실행 후 아래와 같은 콘솔 내용이 출력되면 정상적으로 실행된 것이다.

7. 빌드 결과 확인 : 기존 QuantLib의 "루트 디렉토리/lib" 폴더에서 확인
‘QuantLib-x64-mt.lib’ 파일이 만들어졌을 시 정상

빌드 환경별 생성되는 lib 파일명
- ‘release x64’ : QuantLib-x64-mt.lib
- ‘release x64(static)’ : QuantLib-x64-mt-s.lib
- ‘debug x64’ : QuantLib-x64-mt-dg.lib
- ‘debug x64(static)’ : QuantLib-x64-mt-sdg.lib
설치 후 테스트
1. Visual Studio 실행 > CMake로 프로젝트 생성
2. CMake 솔루션 test 프로젝트 구조
test
ㄴ CmakeLists.txt
ㄴ CmakePresets.json
ㄴ main.cpp
3. CMakeLists.txt 파일 작성
cmake_minimum_required(VERSION 3.16)
project(TestQuantLib)
set(CMAKE_CXX_STANDARD 17)
# Boost 라이브러리 찾기
set(BOOST_ROOT "C:/Program Files/boost_1_87_0")
set(Boost_INCLUDE_DIR ${BOOST_ROOT})
set(Boost_LIBRARY_DIR "${BOOST_ROOT}/lib")
find_package(Boost REQUIRED)
include_directories(${Boost_INCLUDE_DIR})
# QuantLib 포함 및 링크 설정
set(QUANTLIB_ROOT "C:/Program Files/QuantLib")
include_directories(${QUANTLIB_ROOT})
link_directories("${QUANTLIB_ROOT}/lib")
# 테스트 실행파일 생성
add_executable(test main.cpp)
# 동적 라이브러리 링크
target_link_libraries(test QuantLib-x64-mt)
4. main.cpp 작성
#include <ql/quantlib.hpp>
#include <iostream>
int main()
{
QuantLib::Calendar myCal = QuantLib::UnitedKingdom();
QuantLib::Date newYearsEve(31, QuantLib::Dec, 2008);
std::cout << "Name: " << myCal.name() << std::endl;
std::cout << "New Year is Holiday: " << myCal.isHoliday(newYearsEve) << std::endl;
std::cout << "New Year is Business Day: " << myCal.isBusinessDay(newYearsEve) << std::endl;
std::cout << "--------------- Date Counter --------------------" << std::endl;
QuantLib::Date date1(28, QuantLib::Dec, 2008);
QuantLib::Date date2(04, QuantLib::Jan, 2009);
std::cout << "First Date: " << date1 << std::endl;
std::cout << "Second Date: " << date2 << std::endl;
std::cout << "Business Days Betweeen: " << myCal.businessDaysBetween(date1, date2) << std::endl;
std::cout << "End of Month 1. Date: " << myCal.endOfMonth(date1) << std::endl;
std::cout << "End of Month 2. Date: " << myCal.endOfMonth(date2) << std::endl;
double tmp;
std::cin >> tmp;
return 0;
}
quantlib.org의 예제를 그대로 참고한 것임
5. x64 Release로 구성환경 변경 후 빌드 > 모두 빌드 실행
* 오류 발생 시 모두 다시 빌드로 캐시 삭제 후 재생성

6. 생성된 test.exe 실행

7. 실행 결과 확인

QuantLib 숙련도가 올라가면 QuantLib을 현명하게 활용하는 방안에 대해
소개하는 포스팅을 작성해보도록 노력하겠습니다.
감사합니다.
REFERENCE
https://www.quantlib.org/install/vc10.shtml
QuantLib Installation in Visual C++
QuantLib installation in VC++ Based on the initial instructions by Dominik Holenstein and Dimitri Reiswich These are step-by-step instructions to install QuantLib and Boost on the Microsoft Visual C++ IDE. These instructions work on recent versions (you ca
www.quantlib.org
'DEV > C, C++' 카테고리의 다른 글
| [C, C++, CMake] 개발 환경을 위한 Visual Studio 2022 설치 가이드 (0) | 2025.04.27 |
|---|---|
| [Cmake, JNA] CMake 활용 Windows, Linux 호환 동적 라이브러리(.dll, .so) 생성 및 JNA 인터페이스 구현 (0) | 2025.03.14 |