namespace KArtSell.Modules.ModelOperations.ShadowRun;

/// <summary>
/// Command to initiate a 252+ trading-day shadow run for model validation.
/// </summary>
public sealed record ShadowRunCommand(
    Guid ModelId,
    Guid CorrelationId,
    Guid IdempotencyKey,
    DateOnly WindowStartDate,
    DateOnly WindowEndDate,
    MarketPhaseFilter PhaseFilter = MarketPhaseFilter.All)
{
    public Guid RunId { get; } = Guid.NewGuid();
}

/// <summary>
/// Market phases for segmented analysis during shadow run.
/// </summary>
public enum MarketPhaseFilter
{
    All = 0,
    BullMarket = 1,
    BearMarket = 2,
    Sideways = 3,
    HighVolatility = 4
}
