Files
quant-trader-service/src/main/java/com/quantai/trader/execution/ExecutionQualityGate.java
T

32 lines
1.2 KiB
Java
Raw Normal View History

2026-06-23 22:09:06 +08:00
package com.quantai.trader.execution;
import com.quantai.trader.domain.ExecutionDecision;
import com.quantai.trader.domain.TraderEntryPlan;
import com.quantai.trader.domain.TraderMarketSnapshot;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.Map;
@Component
public class ExecutionQualityGate {
public ExecutionDecision evaluate(TraderMarketSnapshot snapshot, TraderEntryPlan entryPlan) {
BigDecimal score = entryPlan.executionQualityScore() == null
? new BigDecimal("0.50")
: entryPlan.executionQualityScore();
if (!entryPlan.completeForEntry()) {
return new ExecutionDecision(false, score, "ENTRY_PLAN_INCOMPLETE", "TRADER_ENTRY_PLAN_INCOMPLETE", Map.of());
}
if (score.compareTo(new BigDecimal("0.20")) < 0) {
return new ExecutionDecision(false, score, "EXECUTION_QUALITY_TOO_LOW", "TRADER_RISK_BLOCKED", Map.of(
"executionQualityScore", score
));
}
return new ExecutionDecision(true, score, "EXECUTION_PROXY_PASS", null, Map.of(
"executionQualityScore", score,
"proxyOnly", true
));
}
}