알파 모델
알파 모델의 역할
섹션 제목: “알파 모델의 역할”알파 모델은 시장 상태를 인사이트 후보로 변환하는 역할을 합니다. 전체 주문 수명 주기를 관리하는 곳은 아닙니다. 기회가 존재하는 시점을 판단하고 Insight를 반환하는 것이 알파 모델의 역할입니다.
AQE는 전용 수명 주기를 통해 알파 모델을 호출합니다.
start()init(asset)generate_insights(symbol)
알파 모델 트레이트
섹션 제목: “알파 모델 트레이트”pub trait AlphaModel { fn version(&self) -> &str; fn start(&mut self, ctx: &mut dyn StrategyContext); fn init(&mut self, ctx: &mut dyn StrategyContext, asset: &Asset); fn generate_insights(&mut self, ctx: &mut dyn StrategyContext, symbol: &str) -> AlphaResult;}각 단계에 배치할 로직
섹션 제목: “각 단계에 배치할 로직”start()
섹션 제목: “start()”런타임 전체에 적용되는 설정에는 start()를 사용하세요.
- 지표 등록
- 워밍업 봉 설정
- 심볼별 초기화 전에 필요한 상태 구성
init(asset)
섹션 제목: “init(asset)”자산별 설정에는 init()을 사용하세요.
- 심볼별 변수 초기화
- 자산 메타데이터 읽기
- 심볼별 런타임 상태 준비
generate_insights(symbol)
섹션 제목: “generate_insights(symbol)”다음 작업에는 generate_insights()를 사용하세요.
- 최신 이력 읽기
- 지표나 변수 검사
- 자산 메타데이터 확인
- 새
Insight생성 및 반환
실제 예제
섹션 제목: “실제 예제”EmaPriceCrossover는 AQE에 구현된 알파입니다. 다음 작업을 수행합니다.
- ATR 및 EMA 등록
- 이력 읽기
- 최신 봉과 이전 봉 확인
- 자산 메타데이터로 숏 포지션 진입 신호의 허용 여부 판단
- 진입, TP, SL, TTL 설정이 포함된 인사이트 반환
fn generate_insights(&mut self, ctx: &mut dyn StrategyContext, symbol: &str) -> AlphaResult { let Some(asset) = self.get_asset(ctx, symbol) else { return AlphaResult::new(None, false, Some(format!("Asset {} not found", symbol)), self.name().to_string()); };
let history = match self.get_history(ctx, symbol) { Some(history) if history.height() >= 2 => history, _ => return AlphaResult::new(None, true, Some("Not enough history".to_string()), self.name().to_string()), };
// derive signal, tp, sl, entry ...
let mut insight = Insight::new( side, symbol.to_string(), StrategyType::Custom(self.name().to_string()), ctx.timeframe().clone(), confidence, None, );
insight .set_limit_price(Some(entry)) .set_take_profit_levels(Some(vec![tp])) .set_stop_loss(Some(sl)) .set_period_unfilled(Some(ttluf as u32)) .set_period_till_tp(Some(ttlf as u32));
AlphaResult::new(Some(insight), true, None, self.name().to_string())}또 다른 간단한 패턴
섹션 제목: “또 다른 간단한 패턴”TestEntry는 더 단순한 알파 구조를 보여줍니다.
- 최근 가격 상태 읽기
- 심볼별 활성 인사이트 수 계산
- 조건이 충족되면 새 매수 또는 매도 인사이트 생성
따라서 간단한 구현부터 시작하려는 경우 전략 코드 작성에 참고하기 좋습니다.
알파 모델에서 하지 않아야 할 일
섹션 제목: “알파 모델에서 하지 않아야 할 일”알파 모델에 런타임 전체의 관리 책임을 맡겨서는 안 됩니다. 일반적으로 다음 로직은 알파 내부에 두지 마세요.
- 최종 수량 산정
- 거래 주문 제출
- 청산 로직
- 손절 발동 조건 검사
- 거래 시간대 필터링
이러한 작업은 인사이트 파이프에 두는 것이 더 적합합니다.
관련 소스
섹션 제목: “관련 소스”aq-engine/src/core/alpha/mod.rsaq-engine/src/core/alpha/ema_price_crossover.rsaq-engine/src/core/alpha/test_entry.rs
필수 쿠키 및 저장소
로그인, 계정 보안, 색상 테마 설정, 이 알림 표시와 PostHog의 필수 내부 이용 현황·세션 품질·안정성 지표 수집을 위해 필수 쿠키와 저장소를 사용합니다. 광고 쿠키는 사용하지 않습니다.
