Implement Trader V4 training artifact pipeline

This commit is contained in:
Codex
2026-06-27 16:15:23 +08:00
parent dad6b831b4
commit e58e4a5572
113 changed files with 7959 additions and 477 deletions
@@ -17,7 +17,7 @@ public class TraderRiskGate {
if (input.riskLimits().killSwitchActive() && input.pmDecision().candidateAction().increasesExposure()) {
decision = block(input, "KILL_SWITCH_ACTIVE");
} else if (input.riskLimits().executionBlocked()) {
decision = block(input, "EXECUTION_BLOCKED");
decision = block(input, input.riskLimits().executionBlocker());
} else if (input.accountState().dailyDrawdownBps().compareTo(input.riskLimits().maxDailyLossBps()) >= 0) {
decision = block(input, "MAX_DAILY_LOSS");
} else if (input.accountState().portfolioExposureRatio().compareTo(input.riskLimits().maxTotalExposureRatio()) >= 0
@@ -46,6 +46,9 @@ public class TraderRiskGate {
}
private TraderRiskDecision block(RiskGateInput input, String blocker) {
if (blocker == null || blocker.isBlank()) {
blocker = "EXECUTION_BLOCKED";
}
TraderActionType finalAction = input.pmDecision().candidateAction().increasesExposure() ? TraderActionType.WAIT : input.pmDecision().candidateAction();
return new TraderRiskDecision("risk_" + input.pmDecision().cycleId(), input.pmDecision().runId(), input.pmDecision().cycleId(),
input.pmDecision().pmDecisionId(), false, input.pmDecision().candidateAction(), finalAction, blocker,