protected static void PrintMarginCollateral(MarginCollateralDTO marginCollateral) { Console.WriteLine(string.Format(" Firm={0} Collateral={1} PendingCollateral={2} PriorIM={3} IMToday={4} IM Req.={5} VM Req.={6} Status={7}", marginCollateral.Firm, marginCollateral.Collateral.ToString("0.##"), marginCollateral.PendingCollateral.HasValue ? marginCollateral.PendingCollateral.Value.ToString("0.##") : "-", marginCollateral.PriorIM.ToString("0.##"), marginCollateral.IMToday.HasValue ? marginCollateral.IMToday.Value.ToString("0.##") : "-", marginCollateral.IMRequirement.HasValue ? marginCollateral.IMRequirement.Value.ToString("0.##") : "-", marginCollateral.VMRequirement.HasValue ? marginCollateral.VMRequirement.Value.ToString("0.##") : "-", marginCollateral.MarginCall)); }
static void Main(string[] args) { string positionsCSV = ConfigurationManager.AppSettings["PositionsFile"]; string tradesCSV = ConfigurationManager.AppSettings["TodayTrades"]; PositionsCSVDTO positionsDTO = PositionsLoader.GetPositions(positionsCSV); List <TradeDTO> todayTrades = ExecutionsLoader.GetTrades(tradesCSV); ILogSource Logger = new PerDayFileLogSource(Directory.GetCurrentDirectory() + "\\Log", Directory.GetCurrentDirectory() + "\\Log\\Backup") { FilePattern = "Log.{0:yyyy-MM-dd}.log", DeleteDays = 20 }; MarginCollateralCalculator calc = new MarginCollateralCalculator(pSecurities: positionsDTO.GetSecurityMasterRecords(), pTodayDSPs: positionsDTO.GetTodayDailySettlementPrice(), pPrevDSPs: positionsDTO.GetYesterdayDailySettlementPrice(), pConfig: GetConfig(), pLogger: Logger); Console.WriteLine("===================== MARGIN/COLLATERAL grid ===================== "); foreach (string firm in positionsDTO.FirmPositions.Keys) { List <TradeDTO> firmTrades = todayTrades.Where(x => x.FirmId == firm).ToList(); MarginCollateralDTO marginCollateral = calc.CalculateMargin(firmId: firm, todayCollateral: 0, todayPositions: positionsDTO.FirmPositions[firm], todayTrades: firmTrades); PrintMarginCollateral(marginCollateral); } Console.ReadKey(); }