[Quantproject-developers] QuantProject/b7_Scripts/ArbitrageTesting/PairTrading/SimplePairTrading/In
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2008-09-29 21:17:17
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/ArbitrageTesting/PairTrading/SimplePairTrading/InSample In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv15453/PairTrading/SimplePairTrading/InSample Modified Files: EndOfDayTimerHandlerSimplePTIS.cs RunSimplePairTradingIS.cs Log Message: The new revision moves toward an intraday enabled framework. EndOfDayDate time has been removed, DateTime is used now. The code has been changed accordingly. Index: EndOfDayTimerHandlerSimplePTIS.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/ArbitrageTesting/PairTrading/SimplePairTrading/InSample/EndOfDayTimerHandlerSimplePTIS.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EndOfDayTimerHandlerSimplePTIS.cs 14 May 2006 15:25:30 -0000 1.1 --- EndOfDayTimerHandlerSimplePTIS.cs 29 Sep 2008 21:16:41 -0000 1.2 *************** *** 94,105 **** /// <param name="sender"></param> /// <param name="eventArgs"></param> ! public override void MarketCloseEventHandler( ! Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) { if(((IndexBasedEndOfDayTimer)sender).GetPreviousDateTime() != ! endOfDayTimingEventArgs.EndOfDayDateTime.DateTime) //it is not the first date fired by the timer, so the // gap can be computed ! base.MarketCloseEventHandler(sender, endOfDayTimingEventArgs); } --- 94,105 ---- /// <param name="sender"></param> /// <param name="eventArgs"></param> ! protected override void marketCloseEventHandler( ! Object sender , DateTime dateTime ) { if(((IndexBasedEndOfDayTimer)sender).GetPreviousDateTime() != ! dateTime) //it is not the first date fired by the timer, so the // gap can be computed ! base.marketCloseEventHandler(sender, dateTime); } *************** *** 109,114 **** /// <param name="sender"></param> /// <param name="eventArgs"></param> ! public override void OneHourAfterMarketCloseEventHandler( ! Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) { --- 109,114 ---- /// <param name="sender"></param> /// <param name="eventArgs"></param> ! protected override void oneHourAfterMarketCloseEventHandler( ! Object sender , DateTime dateTime ) { Index: RunSimplePairTradingIS.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/ArbitrageTesting/PairTrading/SimplePairTrading/InSample/RunSimplePairTradingIS.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** RunSimplePairTradingIS.cs 14 May 2006 15:25:30 -0000 1.1 --- RunSimplePairTradingIS.cs 29 Sep 2008 21:16:41 -0000 1.2 *************** *** 3,7 **** RunSimplePairTradingIS.cs ! Copyright (C) 2003 Marco Milletti --- 3,7 ---- RunSimplePairTradingIS.cs ! Copyright (C) 2003 Marco Milletti *************** *** 19,23 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! */ using System; --- 19,23 ---- along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! */ using System; *************** *** 39,180 **** { ! /// <summary> /// Script to test the pair trading strategy for /// two tickers for a given time period /// </summary> ! [Serializable] ! public class RunSimplePairTradingIS ! { ! private double maxNumOfStdDevForNormalGap; ! private int numDaysForGap; ! private double averageGap; ! private double stdDevGap; ! private EndOfDayTimerHandlerSimplePT endOfDayTimerHandler; ! private string firstTicker; ! private string secondTicker; ! private DateTime startDateTime; ! private DateTime endDateTime; ! private IHistoricalQuoteProvider historicalQuoteProvider; ! private Account account; ! private IEndOfDayTimer endOfDayTimer; ! private string benchmark; ! private string scriptName; ! public RunSimplePairTradingIS(double maxNumOfStdDevForNormalGap, ! int numDaysForGap, ! double averageGap, ! double stdDevGap, ! string firstTicker, string secondTicker, ! DateTime startDate, DateTime endDate) ! ! { ! this.maxNumOfStdDevForNormalGap = maxNumOfStdDevForNormalGap; ! this.numDaysForGap = numDaysForGap; ! this.averageGap = averageGap; ! this.stdDevGap = stdDevGap; ! this.firstTicker = firstTicker; ! this.secondTicker = secondTicker; ! this.startDateTime = startDate; ! this.endDateTime = endDate; ! this.benchmark = "^GSPC"; ! this.scriptName = "SimplePairTradingForGivenTickers"; ! } ! ! #region Run ! ! private void run_initializeEndOfDayTimer() ! { ! //default endOfDayTimer ! this.endOfDayTimer = ! new IndexBasedEndOfDayTimer( new EndOfDayDateTime(this.startDateTime, ! EndOfDaySpecificTime.MarketOpen), ! this.benchmark ); ! ! } ! ! protected void run_initializeAccount() ! { ! //default account with no commissions and no slippage calculation ! this.account = new Account( this.scriptName , this.endOfDayTimer , ! new HistoricalEndOfDayDataStreamer( this.endOfDayTimer , ! this.historicalQuoteProvider ) , ! new HistoricalEndOfDayOrderExecutor( this.endOfDayTimer , ! this.historicalQuoteProvider )); ! ! } ! ! private void run_initializeHistoricalQuoteProvider() ! { ! this.historicalQuoteProvider = new HistoricalAdjustedQuoteProvider(); ! } ! ! ! private void checkDateForReport(Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs) ! { ! if(endOfDayTimingEventArgs.EndOfDayDateTime.DateTime>=this.endDateTime) ! //last date is reached by the timer ! this.showReport(); ! } ! ! private void showReport() ! { ! AccountReport accountReport = this.account.CreateReport(this.scriptName, 1, ! this.endOfDayTimer.GetCurrentTime(), ! this.benchmark, ! new HistoricalAdjustedQuoteProvider()); ! Report report = new Report(accountReport); ! report.Show(); ! this.endOfDayTimer.Stop(); ! ! } ! ! private void run_initialize() ! { ! run_initializeHistoricalQuoteProvider(); ! run_initializeEndOfDayTimer(); ! run_initializeAccount(); ! run_initializeEndOfDayTimerHandler(); ! } ! ! ! public void Run() ! { ! this.run_initialize(); ! this.run_addEventHandlers(); ! this.endOfDayTimer.Start(); ! } ! ! private void run_initializeEndOfDayTimerHandler() ! { ! this.endOfDayTimerHandler = new EndOfDayTimerHandlerSimplePTIS(this.maxNumOfStdDevForNormalGap, ! this.numDaysForGap, ! this.averageGap, ! this.stdDevGap, ! this.firstTicker, this.secondTicker, ! this.startDateTime, this.endDateTime, ! this.account); ! } ! ! ! private void run_addEventHandlers() ! { ! this.endOfDayTimer.MarketOpen += ! new MarketOpenEventHandler( ! this.endOfDayTimerHandler.MarketOpenEventHandler); ! ! this.endOfDayTimer.MarketClose += ! new MarketCloseEventHandler( ! this.endOfDayTimerHandler.MarketCloseEventHandler); ! ! this.endOfDayTimer.MarketClose += ! new MarketCloseEventHandler( ! this.checkDateForReport); ! ! this.endOfDayTimer.OneHourAfterMarketClose += ! new OneHourAfterMarketCloseEventHandler( ! this.endOfDayTimerHandler.OneHourAfterMarketCloseEventHandler ); ! } ! #endregion ! } } --- 39,187 ---- { ! /// <summary> /// Script to test the pair trading strategy for /// two tickers for a given time period /// </summary> ! [Serializable] ! public class RunSimplePairTradingIS ! { ! private double maxNumOfStdDevForNormalGap; ! private int numDaysForGap; ! private double averageGap; ! private double stdDevGap; ! private EndOfDayTimerHandlerSimplePT endOfDayTimerHandler; ! private string firstTicker; ! private string secondTicker; ! private DateTime startDateTime; ! private DateTime endDateTime; ! private HistoricalMarketValueProvider historicalMarketValueProvider; ! private Account account; ! private Timer timer; ! private string benchmark; ! private string scriptName; ! public RunSimplePairTradingIS(double maxNumOfStdDevForNormalGap, ! int numDaysForGap, ! double averageGap, ! double stdDevGap, ! string firstTicker, string secondTicker, ! DateTime startDate, DateTime endDate) ! ! { ! this.maxNumOfStdDevForNormalGap = maxNumOfStdDevForNormalGap; ! this.numDaysForGap = numDaysForGap; ! this.averageGap = averageGap; ! this.stdDevGap = stdDevGap; ! this.firstTicker = firstTicker; ! this.secondTicker = secondTicker; ! this.startDateTime = startDate; ! this.endDateTime = endDate; ! this.benchmark = "^GSPC"; ! this.scriptName = "SimplePairTradingForGivenTickers"; ! } ! ! #region Run ! ! private void run_initializeEndOfDayTimer() ! { ! //default endOfDayTimer ! this.timer = ! new IndexBasedEndOfDayTimer( ! HistoricalEndOfDayTimer.GetMarketOpen( this.startDateTime ) , ! // new EndOfDayDateTime(this.startDateTime, ! // EndOfDaySpecificTime.MarketOpen), ! this.benchmark ); ! ! } ! ! protected void run_initializeAccount() ! { ! //default account with no commissions and no slippage calculation ! this.account = new Account( this.scriptName , this.timer , ! new HistoricalEndOfDayDataStreamer( this.timer , ! this.historicalMarketValueProvider ) , ! new HistoricalEndOfDayOrderExecutor( this.timer , ! this.historicalMarketValueProvider )); ! ! } ! ! private void run_initializeHistoricalQuoteProvider() ! { ! this.historicalMarketValueProvider = new HistoricalAdjustedQuoteProvider(); ! } ! ! ! private void checkDateForReport( Object sender , DateTime dateTime ) ! { ! if(dateTime>=this.endDateTime) ! //last date is reached by the timer ! this.showReport(); ! } ! ! private void showReport() ! { ! AccountReport accountReport = this.account.CreateReport(this.scriptName, 1, ! this.timer.GetCurrentDateTime(), ! this.benchmark, ! new HistoricalAdjustedQuoteProvider()); ! Report report = new Report(accountReport); ! report.Show(); ! this.timer.Stop(); ! ! } ! ! private void run_initialize() ! { ! run_initializeHistoricalQuoteProvider(); ! run_initializeEndOfDayTimer(); ! run_initializeAccount(); ! run_initializeEndOfDayTimerHandler(); ! } ! ! ! public void Run() ! { ! this.run_initialize(); ! this.run_addEventHandlers(); ! this.timer.Start(); ! } ! ! private void run_initializeEndOfDayTimerHandler() ! { ! this.endOfDayTimerHandler = new EndOfDayTimerHandlerSimplePTIS(this.maxNumOfStdDevForNormalGap, ! this.numDaysForGap, ! this.averageGap, ! this.stdDevGap, ! this.firstTicker, this.secondTicker, ! this.startDateTime, this.endDateTime, ! this.account); ! } ! ! ! private void run_addEventHandlers() ! { ! this.timer.NewDateTime += ! new NewDateTimeEventHandler( this.endOfDayTimerHandler.NewDateTimeEventHandler ); ! this.timer.NewDateTime += ! new NewDateTimeEventHandler( this.checkDateForReport ); ! ! // this.timer.MarketOpen += ! // new MarketOpenEventHandler( ! // this.endOfDayTimerHandler.MarketOpenEventHandler); ! // ! // this.timer.MarketClose += ! // new MarketCloseEventHandler( ! // this.endOfDayTimerHandler.MarketCloseEventHandler); ! // ! // this.timer.MarketClose += ! // new MarketCloseEventHandler( ! // this.checkDateForReport); ! // ! // this.timer.OneHourAfterMarketClose += ! // new OneHourAfterMarketCloseEventHandler( ! // this.endOfDayTimerHandler.OneHourAfterMarketCloseEventHandler ); ! } ! #endregion ! } } |