PaperBroker와 모의 거래
PaperBroker는 다음을 위한 AQE의 주문 실행 시뮬레이터입니다.
- 백테스트
- 모의 거래
- 인사이트 수명 주기 동작 검증
다음 작업을 처리합니다.
- 주문 제출
- 체결
- 취소
- 청산 요청
- 브래킷 레그
- 트레일링 스톱 실행
- 거래 이벤트 발생
- 계좌 상태 및 계좌 평가액
또한 주문 금액이 매수 가능 금액을 초과하는 등 모의 계좌가 유효하지 않은 상태가 되지 않도록 방지합니다.
YahooFinanceDataFeed
섹션 제목: “YahooFinanceDataFeed”YahooFinanceDataFeed는 다음을 제공합니다.
- 종목 메타데이터
- 과거 봉
- 최신 호가
- 최신 봉
- 실시간 봉 스트림 구독
이는 과거 데이터 리서치와 모의 거래 중심 런타임 워크플로에서 사용하는 기본 시장 데이터 경로입니다.
자산 수수료 모델
섹션 제목: “자산 수수료 모델”AQE는 비용 차감 전 거래 손익과 자산별 수수료를 별도로 모델링합니다. Asset.fees에는 다음이 포함됩니다.
- 롱 및 숏 포지션 진입을 위한
commission.entry.long과commission.entry.short - 롱 및 숏 포지션 청산을 위한
commission.exit.long과commission.exit.short - 롱 및 숏 포지션의 오버나이트 금융 비용 또는 수익을 위한
swap.long과swap.short
롱과 숏은 개별 주문의 매수·매도 여부가 아니라 포지션 방향을 뜻합니다. 새 포지션을 여는 매수 주문에는 롱 진입 수수료가, 매도 주문에는 숏 진입 수수료가 적용됩니다. 포지션을 청산할 때 AQE는 원래 포지션 방향의 청산 수수료와 스왑을 적용합니다. 따라서 청산 주문이 매수이더라도 commission.exit.short는 숏 포지션의 청산 수수료입니다.
수수료와 스왑은 동일한 공개 수수료 종류 열거형인 AssetFee를 사용합니다. 사용 가능한 수수료 종류는 다음과 같습니다.
AssetFee::NoneAssetFee::Points(points): 포인트 기반 스왑 계산에 사용AssetFee::PercentageFee(rate):0.001은 거래 명목 금액의 0.1%를 의미AssetFee::FixedFee(amount): 체결당 고정 금액AssetFee::PerContractFee(amount): 거래 수량을 곱한 금액AssetFee::PercentagePerContractFee(rate):price * contract_size * quantity * rate로 적용
수수료 계산은 양수인 PercentageFee, FixedFee, PerContractFee, PercentagePerContractFee 값을 허용합니다. Points는 스왑에 필요하므로 공유 열거형에 포함되어 있습니다. 수수료 필드에서 사용하면 AQE는 0으로 처리합니다.
스왑 값은 양수 또는 음수일 수 있습니다. 양수 스왑은 손익을 늘리고 음수 스왑은 손익을 줄입니다. 모의 거래에서 AQE는 비용을 반영한 청산 순손익을 다음과 같이 계산합니다.
gross PnL + swap - entry commission - exit commissionPaperBroker 수수료 구성하기
섹션 제목: “PaperBroker 수수료 구성하기”모의 주문 실행 브로커를 만들 때 with_asset_fees(...)를 사용하세요. AQS에서 생성한 백테스트도 같은 경로를 사용합니다.
use aq_engine::core::broker::paper_broker::PaperBroker;use aq_engine::core::broker::types::{ AccountType, AssetCommissionFees, AssetFee, AssetFees, AssetSideFees, AssetSwapFees,};
let fees = AssetFees { commission: AssetCommissionFees { entry: AssetSideFees { long: AssetFee::PercentageFee(0.0005), short: AssetFee::PercentageFee(0.0007), }, exit: AssetSideFees { long: AssetFee::FixedFee(1.0), short: AssetFee::FixedFee(1.0), }, }, swap: AssetSwapFees { long: AssetFee::PerContractFee(-3.25), short: AssetFee::PercentagePerContractFee(0.000041), }, ..AssetFees::default()};
let execution = PaperBroker::new(AccountType::Paper, 100_000.0, 1).with_asset_fees(fees);AssetFees의 기존 entry 및 exit 필드는 방향별 수수료 객체가 비어 있을 때 호환성 대체값으로 여전히 허용됩니다. 새 구성에서는 commission 및 swap 객체를 사용해야 합니다.
관련 소스
섹션 제목: “관련 소스”aq-engine/src/core/broker/paper_broker.rsaq-engine/src/core/broker/types/mod.rsaq-engine/src/core/broker/data_feeds/yahoo.rs
로그인, 계정 보안, 색상 테마 설정, 이 알림 표시와 PostHog의 필수 내부 이용 현황·세션 품질·안정성 지표 수집을 위해 필수 쿠키와 저장소를 사용합니다. 광고 쿠키는 사용하지 않습니다.
