Getting the most out of your FIS Protegent Personal Trading Assistant (PTA) subscription

An asset management firm wanted notifications anytime a member of their investment team precleared a trade for a security that one of their internal analyst recommended. The solution to this problem turned out to be straight forward and, in this post, I will outline the steps that I followed. The firm subscribes to FIS Protegent Personal Trading Assistant (PTA) to handle their personal trading compliance you can get more information here. PTA can create custom queries that are used to create reports. The first step is to create a custom query for all preclearance requests made by investment team group members. Below shows the definition in PTA for the custom query called Pre-Clear Export:


Next, I contacted FIS Support to see if the custom query could be executed hourly and send the encrypted csv results to the asset manager through ftp. FIS Support set-up the batch request and said soon the batch request can be set-up on-line through PTA. Now that FIS is sending csv files hourly containing preclearance requests for anyone in investment group, we now need a program to process each file. In our case we created a C# console program and a job scheduler for the processing. Below is a class that describes the layout of preclearance csv file:


        public class PreclearanceRequest
        {
                public string PortfolioCode { get; set; }
                public string User { get; set; }
	        public string AccessLevel { get; set; }
	        public string Department { get; set; }
	        public string DepartmentCode { get; set; }
	        public string Manager { get; set; }
	        public string CorporateEntity { get; set; }
	        public string TransactionId { get; set; }
	        public string EventType { get; set; }
	        public string Symbol { get; set; }
	        public string TransactionType { get; set; }
	        public string EntryDate { get; set; }
	        public string TradeDate { get; set; }
	        public string SettleDate { get; set; }
	        public string Quantity { get; set; }
	        public string PrincipalAmount { get; set; }
	        public string Price { get; set; }
	        public string Status { get; set; }
	        public string BrokerId { get; set; }
	        public string BrokerName { get; set; }
	        public string BrokerAccountId { get; set; }
	        public string AccountNumber { get; set; }
	        public string PTAId { get; set; }
	        public string CorporateId { get; set; }
	        public string Cusip { get; set; }
	        public string Sedol { get; set; }
	        public string Isin { get; set; }
	        public string RicCd { get; set; }
	        public string CorporateSecurityId { get; set; }
	        public string SecurityType { get; set; }
	        public string IndustryCd { get; set; }
	        public string TransCurrency { get; set; }
	        public string PriceCurrency { get; set; }
	        public string IssuerCountry { get; set; }
	        public string EstimatedValue { get; set; }
	        public string OrderType { get; set; }
	        public string ActivityType { get; set; }
	        public string Ipo { get; set; }
	        public string PrivateOffering { get; set; }
	        public string SecondaryOffering { get; set; }
	        public string Option { get; set; }
	        public string OptionType { get; set; }
	        public string OptionSymbol { get; set; }
	        public string SecurityName { get; set; }
	        public string Comments { get; set; }
	        public string ComplianceComments { get; set; }
	        public string CreatedBy { get; set; }
	        public string CreatedDateTime { get; set; }
	        public string UpdatedBy { get; set; }
	        public string UpdatedDateTime { get; set; }
	        public string LimitOrderPrice { get; set; }
	        public string SecondaryCE { get; set; }
	        public string UnderlyingSymbol { get; set; }
	        public string IssuerCode { get; set; }
	        public string IssuerName { get; set; }
	        public string UltimateIssuerCode { get; set; }
	        public string UltimateIssuerName { get; set; }
	        public string CreatedDateTimeinUserTimeZone { get; set; }
	        public string UpdatedDateTimeinUserTimeZone { get; set; }
	        public string ActualDateTimeinUserTimeZone { get; set; }
	        public string ActualTimeZone { get; set; }
	        public string Title { get; set; }
	        public string Location { get; set; }
	        public string HireDate { get; set; }
	        public string UserType { get; set; }
	        public string Country { get; set; }
	        public string AccountMonitored { get; set; }
	        public string NetAmount { get; set; }
	        public string LevelName { get; set; }
	        public string LevelSequence { get; set; }
	        public string AssignmentType { get; set; }
	        public string AssignedTo { get; set; }
	        public string AlternateApprover { get; set; }
         }
                                   
                    

The steps in processing in our case include:

  • Parse preclearance csv file
  • Compare the security of the preclearance with securities recommended by their analysts
  • Insert matched preclearance into a database to be shown in their dashboard
  • Email matched preclearance to the firm’s portfolio managers

As you can see with a little exploration of the available features of the personal trading compliance software (PTA) and a C# console program, a simple solution was created for the requirement. I hope you found this helpful.

Let's discuss your project .... Give us a call or drop us a line