[Quantproject-developers] QuantProject/b7_Scripts/TickerSelectionTesting EndOfDayTimerHandler.cs,
Brought to you by:
glauco_1
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv19721/b7_Scripts/TickerSelectionTesting Modified Files: EndOfDayTimerHandler.cs EndOfDayTimerHandlerOTC.cs EndOfDayTimerHandlerOTCTest.cs RunEfficientOTCPortfolio.cs Log Message: Minor changes for the old files implementing the OTC strategy Index: EndOfDayTimerHandlerOTCTest.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting/EndOfDayTimerHandlerOTCTest.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EndOfDayTimerHandlerOTCTest.cs 7 Jan 2006 10:35:39 -0000 1.1 --- EndOfDayTimerHandlerOTCTest.cs 14 Aug 2008 23:29:40 -0000 1.2 *************** *** 53,57 **** PortfolioType portfolioType, int numDaysBetweenEachOptimization): base(tickerGroupID, numberOfEligibleTickers, ! numberOfTickersToBeChosen, numDaysForLiquidity, account, generationNumberForGeneticOptimizer, populationSizeForGeneticOptimizer, --- 53,57 ---- PortfolioType portfolioType, int numDaysBetweenEachOptimization): base(tickerGroupID, numberOfEligibleTickers, ! numberOfTickersToBeChosen, 10, numDaysForLiquidity, account, generationNumberForGeneticOptimizer, populationSizeForGeneticOptimizer, Index: EndOfDayTimerHandler.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting/EndOfDayTimerHandler.cs,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** EndOfDayTimerHandler.cs 12 Mar 2008 22:09:05 -0000 1.27 --- EndOfDayTimerHandler.cs 14 Aug 2008 23:29:40 -0000 1.28 *************** *** 91,95 **** } private void endOfDayTimerHandler_initializeBasic(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, int numDaysForOptimizationPeriod, int generationNumberForGeneticOptimizer, int populationSizeForGeneticOptimizer, --- 91,96 ---- } private void endOfDayTimerHandler_initializeBasic(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, ! int numDaysForOptimizationPeriod, int generationNumberForGeneticOptimizer, int populationSizeForGeneticOptimizer, *************** *** 108,112 **** } public EndOfDayTimerHandler(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, int numDaysForOptimizationPeriod, Account account, int generationNumberForGeneticOptimizer, int populationSizeForGeneticOptimizer, --- 109,114 ---- } public EndOfDayTimerHandler(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, ! int numDaysForOptimizationPeriod, Account account, int generationNumberForGeneticOptimizer, int populationSizeForGeneticOptimizer, *************** *** 115,119 **** { this.endOfDayTimerHandler_initializeBasic(tickerGroupID, numberOfEligibleTickers, ! numberOfTickersToBeChosen, numDaysForOptimizationPeriod, generationNumberForGeneticOptimizer, populationSizeForGeneticOptimizer, --- 117,122 ---- { this.endOfDayTimerHandler_initializeBasic(tickerGroupID, numberOfEligibleTickers, ! numberOfTickersToBeChosen, ! numDaysForOptimizationPeriod, generationNumberForGeneticOptimizer, populationSizeForGeneticOptimizer, *************** *** 124,128 **** } public EndOfDayTimerHandler(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, int numDaysForOptimizationPeriod, int generationNumberForGeneticOptimizer, int populationSizeForGeneticOptimizer, --- 127,132 ---- } public EndOfDayTimerHandler(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, ! int numDaysForOptimizationPeriod, int generationNumberForGeneticOptimizer, int populationSizeForGeneticOptimizer, *************** *** 131,135 **** { this.endOfDayTimerHandler_initializeBasic(tickerGroupID, numberOfEligibleTickers, ! numberOfTickersToBeChosen, numDaysForOptimizationPeriod, generationNumberForGeneticOptimizer, populationSizeForGeneticOptimizer, --- 135,140 ---- { this.endOfDayTimerHandler_initializeBasic(tickerGroupID, numberOfEligibleTickers, ! numberOfTickersToBeChosen, ! numDaysForOptimizationPeriod, generationNumberForGeneticOptimizer, populationSizeForGeneticOptimizer, *************** *** 211,214 **** --- 216,237 ---- halfPeriodDays, portfolioType)); } + + protected void addGenomesToBestGenomes( Genome[] genomes, + DateTime firstOptimizationDate, + DateTime secondOptimizationDate, + int eligibleTickers, int halfPeriodDays, + PortfolioType portfolioType, + int createdGenerations) + { + foreach(Genome genome in genomes) + if(genome != null) + this.addGenomeToBestGenomes(genome, + firstOptimizationDate, + secondOptimizationDate, + eligibleTickers, halfPeriodDays, + portfolioType, + createdGenerations); + } + protected void addGenomeToBestGenomes(Genome genome, DateTime firstOptimizationDate, Index: EndOfDayTimerHandlerOTC.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting/EndOfDayTimerHandlerOTC.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** EndOfDayTimerHandlerOTC.cs 14 Jan 2008 23:32:31 -0000 1.7 --- EndOfDayTimerHandlerOTC.cs 14 Aug 2008 23:29:40 -0000 1.8 *************** *** 46,52 **** { protected int seedForRandomGenerator; ! public EndOfDayTimerHandlerOTC(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, int numDaysForOptimizationPeriod, Account account, int generationNumberForGeneticOptimizer, int populationSizeForGeneticOptimizer, --- 46,55 ---- { protected int seedForRandomGenerator; ! private int numberOfGenomesToSaveForEachOptimization; ! public EndOfDayTimerHandlerOTC(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, ! int numberOfGenomesToSaveForEachOptimization, ! int numDaysForOptimizationPeriod, Account account, int generationNumberForGeneticOptimizer, int populationSizeForGeneticOptimizer, *************** *** 61,64 **** --- 64,68 ---- { this.numDaysBetweenEachOptimization = numDaysBetweenEachOptimization; + this.numberOfGenomesToSaveForEachOptimization = numberOfGenomesToSaveForEachOptimization; this.numDaysElapsedSinceLastOptimization = 0; this.seedForRandomGenerator = ConstantsProvider.SeedForRandomGenerator; *************** *** 106,122 **** currentDate, this.numberOfEligibleTickers, ! 35); DataTable tickersByPrice = byPrice.GetTableOfSelectedTickers(); ! SelectorByOpenCloseCorrelationToBenchmark tickersLessCorrelatedToBenchmark = ! new SelectorByOpenCloseCorrelationToBenchmark(tickersByPrice, ! "^GSPC",true, ! currentDate.AddDays(-this.numDaysForOptimizationPeriod), currentDate, ! tickersByPrice.Rows.Count/2); ! return tickersLessCorrelatedToBenchmark.GetTableOfSelectedTickers(); } ! protected virtual void setTickers(DateTime currentDate, bool setGenomeCounter) --- 110,134 ---- currentDate, this.numberOfEligibleTickers, ! 25); DataTable tickersByPrice = byPrice.GetTableOfSelectedTickers(); ! SelectorByAverageOpenToClosePerformance tickersByOTCPerformance = ! new SelectorByAverageOpenToClosePerformance(tickersByPrice, ! false, currentDate.AddDays(-15), ! currentDate, 0.05, ! this.numberOfEligibleTickers); ! ! return tickersByOTCPerformance.GetTableOfSelectedTickers(); ! // SelectorByOpenCloseCorrelationToBenchmark tickersLessCorrelatedToBenchmark = ! // new SelectorByOpenCloseCorrelationToBenchmark(tickersByOTCPerformance.GetTableOfSelectedTickers(), ! // "^GSPC",true, ! // currentDate.AddDays(-this.numDaysForOptimizationPeriod), currentDate, ! // tickersByPrice.Rows.Count/2); ! // ! // return tickersLessCorrelatedToBenchmark.GetTableOfSelectedTickers(); } ! protected virtual void setTickers(DateTime currentDate, bool setGenomeCounter) *************** *** 153,164 **** GO.MutationRate = 0.10; GO.Run(false); ! this.addGenomeToBestGenomes( ! GO.BestGenome, ! currentDate.AddDays(-this.numDaysForOptimizationPeriod), ! currentDate, ! setOfTickersToBeOptimized.Rows.Count, ! -1, ! this.portfolioType, ! GO.GenerationCounter); this.chosenWeightedPositions = new WeightedPositions( ((GenomeMeaning)GO.BestGenome.Meaning).TickersPortfolioWeights, new SignedTickers( ((GenomeMeaning)GO.BestGenome.Meaning).Tickers) ); --- 165,199 ---- GO.MutationRate = 0.10; GO.Run(false); ! int populationSize = GO.PopulationSize; ! Genome[] genomesForLog = ! new Genome[this.numberOfGenomesToSaveForEachOptimization]; ! int numOfGenomesAdded = 0; ! double fitnessOfPreviousCombination = 0.0; ! for(int i = 0; ! numOfGenomesAdded < this.numberOfGenomesToSaveForEachOptimization && ! i < populationSize - 1; ! i++) ! { ! if( i == 0 || ! ( ((Genome)GO.CurrentGeneration[populationSize - i - 1]).Fitness < ! fitnessOfPreviousCombination ) ) ! //it is the best genome or the current genome is different from - and ! //so it has to be strictly less of - the previous scanned genome ! { ! fitnessOfPreviousCombination = ! ((Genome)GO.CurrentGeneration[populationSize - i - 1]).Fitness; ! genomesForLog[numOfGenomesAdded] = ! (Genome)GO.CurrentGeneration[populationSize - i - 1]; ! numOfGenomesAdded++; ! } ! } ! this.addGenomesToBestGenomes( ! genomesForLog, ! currentDate.AddDays(-this.numDaysForOptimizationPeriod), ! currentDate, ! setOfTickersToBeOptimized.Rows.Count, ! -1, ! this.portfolioType, ! GO.GenerationCounter); this.chosenWeightedPositions = new WeightedPositions( ((GenomeMeaning)GO.BestGenome.Meaning).TickersPortfolioWeights, new SignedTickers( ((GenomeMeaning)GO.BestGenome.Meaning).Tickers) ); Index: RunEfficientOTCPortfolio.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting/RunEfficientOTCPortfolio.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** RunEfficientOTCPortfolio.cs 29 Aug 2007 10:04:27 -0000 1.3 --- RunEfficientOTCPortfolio.cs 14 Aug 2008 23:29:40 -0000 1.4 *************** *** 102,105 **** --- 102,106 ---- this.numberOfEligibleTickers, this.numberOfTickersToBeChosen, + 10, this.numDaysForOptimizationPeriod, this.account, |