160 lines
4.2 KiB
C#
160 lines
4.2 KiB
C#
using Orleans;
|
|
using static Managing.Common.Enums;
|
|
|
|
namespace Managing.Application.Abstractions.Models;
|
|
|
|
/// <summary>
|
|
/// Platform-wide statistics without individual agent details
|
|
/// </summary>
|
|
[GenerateSerializer]
|
|
public class PlatformSummaryViewModel
|
|
{
|
|
/// <summary>
|
|
/// Total number of agents on the platform
|
|
/// </summary>
|
|
[Id(0)]
|
|
public required int TotalAgents { get; set; }
|
|
|
|
/// <summary>
|
|
/// Total number of active strategies across all agents
|
|
/// </summary>
|
|
[Id(1)]
|
|
public required int TotalActiveStrategies { get; set; }
|
|
|
|
/// <summary>
|
|
/// Total platform-wide profit and loss in USD
|
|
/// </summary>
|
|
[Id(2)]
|
|
public required decimal TotalPlatformPnL { get; set; }
|
|
|
|
/// <summary>
|
|
/// Total volume traded across all agents in USD
|
|
/// </summary>
|
|
[Id(3)]
|
|
public required decimal TotalPlatformVolume { get; set; }
|
|
|
|
/// <summary>
|
|
/// Total volume traded across all agents in the last 24 hours in USD
|
|
/// </summary>
|
|
[Id(4)]
|
|
public required decimal TotalPlatformVolumeLast24h { get; set; }
|
|
|
|
/// <summary>
|
|
/// Total open interest across all positions in USD
|
|
/// </summary>
|
|
[Id(5)]
|
|
public required decimal TotalOpenInterest { get; set; }
|
|
|
|
/// <summary>
|
|
/// Total number of open positions across all strategies
|
|
/// </summary>
|
|
[Id(6)]
|
|
public required int TotalPositionCount { get; set; }
|
|
|
|
/// <summary>
|
|
/// Total platform-wide fees paid in USD
|
|
/// </summary>
|
|
[Id(19)]
|
|
public required decimal TotalPlatformFees { get; set; }
|
|
|
|
// 24-hour changes
|
|
/// <summary>
|
|
/// Change in agent count over the last 24 hours
|
|
/// </summary>
|
|
[Id(7)]
|
|
public required int AgentsChange24h { get; set; }
|
|
|
|
/// <summary>
|
|
/// Change in strategy count over the last 24 hours
|
|
/// </summary>
|
|
[Id(8)]
|
|
public required int StrategiesChange24h { get; set; }
|
|
|
|
/// <summary>
|
|
/// Change in PnL over the last 24 hours
|
|
/// </summary>
|
|
[Id(9)]
|
|
public required decimal PnLChange24h { get; set; }
|
|
|
|
/// <summary>
|
|
/// Change in volume over the last 24 hours
|
|
/// </summary>
|
|
[Id(10)]
|
|
public required decimal VolumeChange24h { get; set; }
|
|
|
|
/// <summary>
|
|
/// Change in open interest over the last 24 hours
|
|
/// </summary>
|
|
[Id(11)]
|
|
public required decimal OpenInterestChange24h { get; set; }
|
|
|
|
/// <summary>
|
|
/// Change in position count over the last 24 hours
|
|
/// </summary>
|
|
[Id(12)]
|
|
public required int PositionCountChange24h { get; set; }
|
|
|
|
/// <summary>
|
|
/// Change in fees over the last 24 hours
|
|
/// </summary>
|
|
[Id(20)]
|
|
public required decimal FeesChange24h { get; set; }
|
|
|
|
// Breakdowns
|
|
/// <summary>
|
|
/// Volume breakdown by asset/ticker
|
|
/// </summary>
|
|
[Id(13)]
|
|
public required Dictionary<Ticker, decimal> VolumeByAsset { get; set; }
|
|
|
|
/// <summary>
|
|
/// Position count breakdown by asset/ticker
|
|
/// </summary>
|
|
[Id(14)]
|
|
public required Dictionary<Ticker, int> PositionCountByAsset { get; set; }
|
|
|
|
/// <summary>
|
|
/// Position count breakdown by direction (Long/Short)
|
|
/// </summary>
|
|
[Id(15)]
|
|
public required Dictionary<TradeDirection, int> PositionCountByDirection { get; set; }
|
|
|
|
// Metadata
|
|
/// <summary>
|
|
/// When the data was last updated
|
|
/// </summary>
|
|
[Id(16)]
|
|
public required DateTime LastUpdated { get; set; }
|
|
|
|
/// <summary>
|
|
/// When the last 24-hour snapshot was taken
|
|
/// </summary>
|
|
[Id(17)]
|
|
public required DateTime Last24HourSnapshot { get; set; }
|
|
|
|
/// <summary>
|
|
/// Daily volume history for the last 30 days for chart visualization
|
|
/// </summary>
|
|
[Id(18)]
|
|
public required List<VolumeHistoryPoint> VolumeHistory { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Represents a volume data point for historical charting
|
|
/// </summary>
|
|
[GenerateSerializer]
|
|
public class VolumeHistoryPoint
|
|
{
|
|
/// <summary>
|
|
/// Date of the volume measurement
|
|
/// </summary>
|
|
[Id(0)]
|
|
public required DateTime Date { get; set; }
|
|
|
|
/// <summary>
|
|
/// Total volume for that date in USD
|
|
/// </summary>
|
|
[Id(1)]
|
|
public required decimal Volume { get; set; }
|
|
}
|