마케팅 주장이 아닌 측정된 결과. 상세 벤치마크는 v1.0 출시와 함께 공개됩니다.
핵심 백테스트 연산에 대한 직접 비교.
| 메트릭 | Python | StratForge | 개선 |
|---|---|---|---|
| 단일 지표 (바당) | TBD | TBD | TBD |
| 전략 스텝 | TBD | TBD | TBD |
| 전체 백테스트 (100만 바) | TBD | TBD | TBD |
| 처리량 | TBD | TBD | TBD |
| 메모리 사용량 | TBD | TBD | TBD |
StratForge가 백테스트 파이프라인 전반에 걸쳐 최적화를 복합적으로 적용하는 방법.
바가 캐시 친화적 컬럼형 버퍼에 저장됩니다. 지표 계산이 포인터를 추적하는 대신 연속 메모리를 통해 스트리밍됩니다.
각 지표가 내부 상태를 유지하고 바당 O(1)로 업데이트합니다. 슬라이딩 윈도우 재계산 없음.
전략 진입/청산 로직이 가능한 경우 분기 없는 산술로 재작성되어 가격 조건 코드의 파이프라인 지연을 방지합니다.
컴파일 타임에 알려진 지표 파라미터가 consteval이 됩니다. 특화된 템플릿이 런타임 디스패치를 제거합니다.
핫 패스에서 백테스트 패스 실행.
| 연산 | Python 백테스터 | StratForge |
|---|---|---|
| 힙 할당 | 다수 (바별 Python 객체) | 0 |
| 바 스토리지 | pandas DataFrame 복사 | 컬럼형 버퍼에 대한 std::span 뷰 |
| 지표 상태 | 호출별 배열 할당 | 사전 할당된 롤링 상태 |
| 메모리 사용량 | 동적, GC 기반 | 정적, 사전 할당 |
| 결정론 | 실행 간 부동소수점 드리프트 | 비트 단위 정확한 재현 |
결정론적 저지연 백테스팅을 위해 복합적으로 작용하는 설계 결정.
| 기법 | Python 백테스터 | StratForge |
|---|---|---|
| 메모리 레이아웃 | 행 지향 (DataFrame) | 컬럼형 (캐시 친화적) |
| 지표 업데이트 | 호출마다 윈도우 재계산 | 바당 증분 O(1) |
| 루프 디스패치 | 인터프리터 Python 루프 | 인라인 C++ 템플릿 루프 |
| 수치 결정론 | NumPy / pandas 버전 의존 | 실행 간 비트 정확 |
| 전략 조합 | 클래스 계층 + 동적 디스패치 | Concepts + 정적 다형성 |
| 오류 처리 | 예외 | std::expected (예외 없음) |
StratForge 설계 과정에서 연구한 업계 선도 라이브러리와 프레임워크.
| 라이브러리 | 우리가 배운 것 | 우리가 구축한 것 | 결과 |
|---|---|---|---|
| TA-Lib | 표준 지표 정의 및 경계 사례 처리 | C++23 헤더 전용 지표 라이브러리 | 138개 지표 |
| vectorbt | 벡터화 백테스트 API 및 파라미터 스윕 | 컴파일 타임 템플릿 파라미터 확장 | TBD |
| backtrader | 전략 생명주기 및 이벤트 훅 | Concept 기반 전략 인터페이스 | 타입 안전 생명주기 |
| QuantLib | 모듈형 가격 및 분석 아키텍처 | 플러그형 분석 모듈 | TBD |
| Eigen | 제로 오버헤드 수학을 위한 표현식 템플릿 | 지연 지표 조합 | 임시 버퍼 없음 |
| Arrow | 컬럼형 메모리 레이아웃 표준 | 네이티브 컬럼형 바 스토리지 | 캐시 라인 친화적 |
| Folly | 락프리 프리미티브 및 small_vector | 사전 할당된 거래 저널 | TBD |
| Highway | 이식 가능한 SIMD 추상화 | SIMD 친화적 지표 내부 루프 | TBD |
| fmt | 컴파일 타임 형식 문자열 | 제로 비용 보고서 포맷팅 | TBD |
| Boost.PMR | 아레나 할당을 위한 단조 버퍼 | std::pmr::monotonic_buffer_resource 풀 | 제로 힙 할당 |
| Catch2 | BDD 스타일 지표 단위 테스트 | 비트 정확 회귀 스위트 | 재현 가능한 CI |
세 명령으로 클론하고 백테스팅을 시작하세요.
git clone https://github.com/StratCraftsAI/StratForge.git
cd StratForge
./start.sh build