Beispiel #1
0
 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));
 }
Beispiel #2
0
        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();
        }