[Quantproject-developers] QuantProject/b7_Scripts/WalkForwardTesting/PairsTrading PairsTradingMain
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2008-03-19 23:24:09
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/PairsTrading In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13715/b7_Scripts/WalkForwardTesting/PairsTrading Modified Files: PairsTradingMain.cs Log Message: BasicScriptForBacktesting is inherited (and all abstract methods are implemented) Index: PairsTradingMain.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/PairsTrading/PairsTradingMain.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PairsTradingMain.cs 13 Mar 2008 19:42:11 -0000 1.3 --- PairsTradingMain.cs 19 Mar 2008 23:24:02 -0000 1.4 *************** *** 37,40 **** --- 37,41 ---- using QuantProject.Business.Timing; using QuantProject.Presentation; + using QuantProject.Scripts.General; using QuantProject.Scripts.General.Logging; using QuantProject.Scripts.General.Reporting; *************** *** 48,119 **** /// be done /// </summary> ! public class PairsTradingMain { public PairsTradingMain() { ! } ! #region Run ! private MessageManager setMessageManager( ! IEligiblesSelector eligiblesSelector , ! IInSampleChooser inSampleChooser , ! IEndOfDayStrategyForBacktester endOfDayStrategy , ! EndOfDayStrategyBackTester endOfDayStrategyBackTester ) ! { ! string dateStamp = ! ExtendedDateTime.GetCompleteShortDescriptionForFileName( DateTime.Now ); ! MessageManager messageManager = ! new MessageManager( "NotificationMessagesForCurrentStrategy_" + ! dateStamp + ".Txt" ); ! messageManager.Monitor( eligiblesSelector ); ! messageManager.Monitor( inSampleChooser ); ! messageManager.Monitor( endOfDayStrategy ); ! messageManager.Monitor( endOfDayStrategyBackTester ); ! return messageManager; ! } ! ! private void saveLog( BackTestLog backTestLog , ! string suggestedLogFileName ) ! { ! string defaultFolderPath = ! "C:\\qpReports\\pairsTrading\\"; ! // this.wFLagLog.TransactionHistory = this.account.Transactions; ! LogArchiver.Save( backTestLog , ! suggestedLogFileName , defaultFolderPath ); ! } ! ! public void Run1() ! { ! BackTestLog backTestLog = LogArchiver.Load( "C:\\qpReports\\pairsTrading\\" ); ! LogViewer logViewer = ! new LogViewer( backTestLog ); ! logViewer.Show(); } ! public void Run() { - string backTestId = "PairsTrading"; - double cashToStart = 30000; - - int inSampleDays = 180; - string tickersGroupId = "SP500"; - - // uncomment the following two lines for faster scripts - // int inSampleDays = 5; - // string tickersGroupId = "fastTest"; - - Benchmark benchmark = new Benchmark( "BMC" ); int maxNumberOfEligiblesToBeChosen = 100; ! IDecoderForTestingPositions decoderForWeightedPositions ! = new DecoderForPairsTradingTestingPositionsWithBalancedWeights(); ! IHistoricalQuoteProvider historicalQuoteProvider = ! new HistoricalAdjustedQuoteProvider(); ! // definition for the Fitness Evaluator ! // IEquityEvaluator equityEvaluator = new SharpeRatio(); ! IFitnessEvaluator fitnessEvaluator = ! new PairsTradingFitnessEvaluator( 0.96 ); // parameters for the genetic optimizer double crossoverRate = 0.85; --- 49,84 ---- /// be done /// </summary> ! public class PairsTradingMain : BasicScriptForBacktesting { + private Benchmark benchmark; + private IHistoricalQuoteProvider historicalQuoteProvider; + public PairsTradingMain() { ! this.benchmark = new Benchmark( "BMC" ); + this.historicalQuoteProvider = + new HistoricalAdjustedQuoteProvider(); ! // definition for the Fitness Evaluator ! // IEquityEvaluator equityEvaluator = new SharpeRatio(); } ! protected override void setEligiblesSelector() { int maxNumberOfEligiblesToBeChosen = 100; ! ! string tickersGroupId = "SP500"; ! // uncomment the following line for a faster script ! tickersGroupId = "fastTest"; ! this.eligiblesSelector = ! new MostLiquidAndLessVolatile( ! tickersGroupId , ! maxNumberOfEligiblesToBeChosen ); ! } + protected override void setInSampleChooser() + { // parameters for the genetic optimizer double crossoverRate = 0.85; *************** *** 124,131 **** int seedForRandomGenerator = QuantProject.ADT.ConstantsProvider.SeedForRandomGenerator; ! IInSampleChooser inSampleChooser = new PairsTradingGeneticChooser( 10 , ! benchmark , decoderForWeightedPositions , fitnessEvaluator , historicalQuoteProvider , --- 89,104 ---- int seedForRandomGenerator = QuantProject.ADT.ConstantsProvider.SeedForRandomGenerator; ! ! IDecoderForTestingPositions decoderForWeightedPositions = ! new DecoderForPairsTradingTestingPositionsWithBalancedWeights(); ! ! double maxCorrelationAllowed = 0.96; ! IFitnessEvaluator fitnessEvaluator = ! new PairsTradingFitnessEvaluator( maxCorrelationAllowed ); ! ! this.inSampleChooser = new PairsTradingGeneticChooser( 10 , ! this.benchmark , decoderForWeightedPositions , fitnessEvaluator , historicalQuoteProvider , *************** *** 133,179 **** populationSizeForGeneticOptimizer , generationNumberForGeneticOptimizer , seedForRandomGenerator ); ! // IIntervalsSelector intervalsSelector = ! // new FixedLengthTwoPhasesIntervalsSelector( ! // 1 , 1 , benchmark ); IIntervalsSelector intervalsSelector = ! new OddIntervalsSelector( 1 , 1 , benchmark ); ! IEligiblesSelector eligiblesSelector = ! new MostLiquidAndLessVolatile( ! tickersGroupId , maxNumberOfEligiblesToBeChosen ); ! PairsTradingStrategy pairsTradingStrategy = new PairsTradingStrategy( 7 , inSampleDays , intervalsSelector , eligiblesSelector , inSampleChooser , historicalQuoteProvider , 0.007 , 0.99 , 0.007 , 0.99 ); ! IAccountProvider accountProvider = new SimpleAccountProvider(); DateTime firstDateTime = new DateTime( 2001 , 1 , 1 ); ! DateTime lastDateTime = new DateTime( 2001 , 1 , 12 ); double maxRunningHours = 6; ! EndOfDayStrategyBackTester endOfDayStrategyBackTester = new EndOfDayStrategyBackTester( ! backTestId , pairsTradingStrategy , historicalQuoteProvider , accountProvider , ! firstDateTime , lastDateTime , benchmark , cashToStart , maxRunningHours ); ! // TO DO check if you can do this assign in the EndOfDayStrategyBackTester ! // constructor ! pairsTradingStrategy.Account = endOfDayStrategyBackTester.Account; ! MessageManager messageManager = this.setMessageManager( ! eligiblesSelector , inSampleChooser , ! pairsTradingStrategy , endOfDayStrategyBackTester ); ! endOfDayStrategyBackTester.Run(); ! BackTesterReportViewer.ShowReport( lastDateTime , ! endOfDayStrategyBackTester ); ! this.saveLog( ! endOfDayStrategyBackTester.Log , ! endOfDayStrategyBackTester.Description ); } ! #endregion Run } } --- 106,162 ---- populationSizeForGeneticOptimizer , generationNumberForGeneticOptimizer , seedForRandomGenerator ); + } ! protected override void setEndOfDayStrategy() ! { ! int inSampleDays = 180; ! // uncomment the following line for a faster script ! inSampleDays = 5; ! IIntervalsSelector intervalsSelector = ! new OddIntervalsSelector( 1 , 1 , this.benchmark ); ! this.endOfDayStrategy = new PairsTradingStrategy( 7 , inSampleDays , intervalsSelector , eligiblesSelector , inSampleChooser , historicalQuoteProvider , 0.007 , 0.99 , 0.007 , 0.99 ); ! } ! protected override void setEndOfDayStrategyBackTester() ! { ! string backTestId = "PairsTrading"; IAccountProvider accountProvider = new SimpleAccountProvider(); + double cashToStart = 30000; DateTime firstDateTime = new DateTime( 2001 , 1 , 1 ); ! DateTime lastDateTime = new DateTime( 2001 , 1 , 6 ); double maxRunningHours = 6; ! ! this.endOfDayStrategyBackTester = new EndOfDayStrategyBackTester( ! backTestId , this.endOfDayStrategy , historicalQuoteProvider , accountProvider , ! firstDateTime , lastDateTime , ! this.benchmark , cashToStart , maxRunningHours ); ! } ! protected override string getPathForTheMainFolderWhereScriptsResultsAreToBeSaved() ! { ! string pathForTheMainFolderWhereScriptsResultsAreToBeSaved = ! "C:\\qpReports\\pairsTrading\\"; ! return pathForTheMainFolderWhereScriptsResultsAreToBeSaved; ! } ! protected override string getCustomSmallTextForFolderName() ! { ! return "pairsTrdng"; } ! protected override string getFullPathFileNameForMain() ! { ! string fullPathFileNameForMain = ! @"C:\QuantProject\QuantProject\b7_Scripts\WalkForwardTesting\PairsTrading\PairsTradingMain.cs"; ! return fullPathFileNameForMain; ! } } } |