Files
KArtSell.Aegis/src/KArtSell.Modules.ModelOperations/Domain/EvaluationWindowPlanner.cs
T
kjh2064 dcd1322d41
ci / backend (push) Failing after 12s
ci / frontend (push) Failing after 19s
ci / static (push) Failing after 45s
Initial commit: Add project files
2026-08-02 05:15:36 +09:00

29 lines
960 B
C#

namespace KArtSell.Modules.ModelOperations.Domain;
public interface ITradingSessionCalendar
{
DateOnly AddTradingSessions(string calendarId, DateOnly startSession, int sessionCount);
}
public sealed record EvaluationWindowDue(int WindowTradingDays, DateOnly DueSession, string WindowCode);
public sealed class EvaluationWindowPlanner
{
public static readonly int[] ApprovedWindows = [1, 5, 20, 63, 126, 252];
public IReadOnlyList<EvaluationWindowDue> Plan(
string calendarId,
DateOnly predictionSession,
ITradingSessionCalendar calendar)
{
ArgumentException.ThrowIfNullOrWhiteSpace(calendarId);
ArgumentNullException.ThrowIfNull(calendar);
return ApprovedWindows
.Select(window => new EvaluationWindowDue(
window,
calendar.AddTradingSessions(calendarId, predictionSession, window),
$"W{window:D3}"))
.ToArray();
}
}