Initial quant trader service baseline
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package com.quantai.trader.util;
|
||||
|
||||
import com.quantai.trader.domain.TraderDecisionCycle;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
|
||||
public final class Ids {
|
||||
|
||||
private static final DateTimeFormatter RUN_FORMATTER =
|
||||
DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss").withZone(ZoneOffset.UTC);
|
||||
|
||||
private Ids() {
|
||||
}
|
||||
|
||||
public static String runId(Instant now) {
|
||||
return "trader_run_" + RUN_FORMATTER.format(now) + "_" + suffix();
|
||||
}
|
||||
|
||||
public static String cycleId(String runId, String symbol, Instant eventTime) {
|
||||
return "trader_cycle_" + runId + "_" + symbol + "_" + eventTime.toEpochMilli();
|
||||
}
|
||||
|
||||
public static String snapshotId(String cycleId) {
|
||||
return "trader_snapshot_" + cycleId;
|
||||
}
|
||||
|
||||
public static String candidateId(TraderDecisionCycle cycle, String playbookId) {
|
||||
return "trader_candidate_" + cycle.cycleId() + "_" + playbookId;
|
||||
}
|
||||
|
||||
public static String actionId(TraderDecisionCycle cycle, int sequence) {
|
||||
return "trader_action_" + cycle.cycleId() + "_" + sequence;
|
||||
}
|
||||
|
||||
public static String entryLegId(TraderDecisionCycle cycle, int index) {
|
||||
return "trader_leg_" + actionId(cycle, index + 1) + "_" + index;
|
||||
}
|
||||
|
||||
public static String positionId(String runId, String symbol, String side, int sequence) {
|
||||
return "trader_position_" + runId + "_" + symbol + "_" + side + "_" + sequence;
|
||||
}
|
||||
|
||||
public static String evidenceId(TraderDecisionCycle cycle, String stage) {
|
||||
return "trader_evidence_" + cycle.cycleId() + "_" + slug(stage) + "_" + suffix();
|
||||
}
|
||||
|
||||
public static String sampleId(TraderDecisionCycle cycle, String labelVersion) {
|
||||
return "trader_sample_" + cycle.cycleId() + "_" + slug(labelVersion);
|
||||
}
|
||||
|
||||
public static String reportId(String runId) {
|
||||
return "trader_report_" + runId;
|
||||
}
|
||||
|
||||
private static String slug(String value) {
|
||||
return value.toLowerCase(Locale.ROOT).replaceAll("[^a-z0-9]+", "_");
|
||||
}
|
||||
|
||||
private static String suffix() {
|
||||
return UUID.randomUUID().toString().replace("-", "").substring(0, 8);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user