[Quantproject-developers] QuantProject/b7_Scripts/EvaluatingOptimizationTechnique/EfficientPortfolio
Brought to you by:
glauco_1
|
From: Marco M. <mi...@us...> - 2005-08-28 10:03:00
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/EvaluatingOptimizationTechnique/EfficientPortfolio In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16908/b7_Scripts/EvaluatingOptimizationTechnique/EfficientPortfolio Modified Files: RunTestingOptimizationOpenToClose.cs Log Message: RunTestingOptimizationOpenToClose now saves a log file to disk at the end of the test. Index: RunTestingOptimizationOpenToClose.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/EvaluatingOptimizationTechnique/EfficientPortfolio/RunTestingOptimizationOpenToClose.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** RunTestingOptimizationOpenToClose.cs 20 Aug 2005 16:08:48 -0000 1.1 --- RunTestingOptimizationOpenToClose.cs 28 Aug 2005 10:02:52 -0000 1.2 *************** *** 23,26 **** --- 23,27 ---- using System; using System.Data; + using System.IO; using QuantProject.ADT; *************** *** 46,49 **** --- 47,51 ---- private int numDaysForLiquidity; private int populationSizeForGeneticOptimizer; + private int generationNumberForGeneticOptimizer; private string benchmark; private DateTime marketDate; *************** *** 52,64 **** private int numDaysAfterLastOptimizationDay; private int numberOfSubsets; public RunTestingOptimizationOpenToClose(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, int numDaysForLiquidity, ! int populationSizeForGeneticOptimizer, string benchmark, DateTime marketDate, double targetReturn, ! PortfolioType portfolioType, int numDaysAfterLastOptimizationDay) { ! this.fitnessesInSample = new double[populationSizeForGeneticOptimizer]; ! this.fitnessesOutOfSample = new double[populationSizeForGeneticOptimizer]; this.tickerGroupID = tickerGroupID; this.numberOfEligibleTickers = numberOfEligibleTickers; --- 54,72 ---- private int numDaysAfterLastOptimizationDay; private int numberOfSubsets; + private Genome[] genomesToTestOutOfSample; + private int numberOfGenomesToTest; public RunTestingOptimizationOpenToClose(string tickerGroupID, int numberOfEligibleTickers, ! int numberOfTickersToBeChosen, int numDaysForLiquidity, ! int generationNumberForGeneticOptimizer, int populationSizeForGeneticOptimizer, ! string benchmark, DateTime marketDate, double targetReturn, ! PortfolioType portfolioType, int numDaysAfterLastOptimizationDay, ! int numberOfSubsets, int numberOfGenomesToTest) { ! this.numberOfGenomesToTest = numberOfGenomesToTest; ! this.genomesToTestOutOfSample = new Genome[numberOfGenomesToTest]; ! this.fitnessesInSample = new double[numberOfGenomesToTest]; ! this.fitnessesOutOfSample = new double[numberOfGenomesToTest]; this.tickerGroupID = tickerGroupID; this.numberOfEligibleTickers = numberOfEligibleTickers; *************** *** 66,69 **** --- 74,78 ---- this.numDaysForLiquidity = numDaysForLiquidity; this.populationSizeForGeneticOptimizer = populationSizeForGeneticOptimizer; + this.generationNumberForGeneticOptimizer = generationNumberForGeneticOptimizer; this.benchmark = benchmark; this.marketDate = marketDate; *************** *** 71,76 **** this.portfolioType = portfolioType; this.numDaysAfterLastOptimizationDay = numDaysAfterLastOptimizationDay; ! this.numberOfSubsets = 5; ! } private DataTable getSetOfTickersToBeOptimized(DateTime date) --- 80,86 ---- this.portfolioType = portfolioType; this.numDaysAfterLastOptimizationDay = numDaysAfterLastOptimizationDay; ! this.numberOfSubsets = numberOfSubsets; ! ! } private DataTable getSetOfTickersToBeOptimized(DateTime date) *************** *** 138,150 **** } ! private void setFitnesses_setFitnessesActually(GeneticOptimizer GO) { ! for(int i = 0; i<GO.CurrentGeneration.Count; i++) { ! this.fitnessesInSample[i]=((Genome)GO.CurrentGeneration[i]).Fitness; this.fitnessesOutOfSample[i]= ! this.setFitnesses_setFitnessesActually_getFitnessOutOfSample((Genome)GO.CurrentGeneration[i]); } --- 148,171 ---- } ! private void setFitnesses_setFitnessesActually_setGenomesToTestOutOfSample(GeneticOptimizer GO) { + Random random = new Random(10); + for(int i = 0; i<this.numberOfGenomesToTest; i++) + { + this.genomesToTestOutOfSample[i]= + (Genome)GO.CurrentGeneration[random.Next(this.populationSizeForGeneticOptimizer)]; + } + Array.Sort(this.genomesToTestOutOfSample); + } + private void setFitnesses_setFitnessesActually(GeneticOptimizer GO) ! { ! this.setFitnesses_setFitnessesActually_setGenomesToTestOutOfSample(GO); ! for(int i = 0; i<this.numberOfGenomesToTest; i++) { ! this.fitnessesInSample[i]=(this.genomesToTestOutOfSample[i]).Fitness; this.fitnessesOutOfSample[i]= ! this.setFitnesses_setFitnessesActually_getFitnessOutOfSample(this.genomesToTestOutOfSample[i]); } *************** *** 167,171 **** GeneticOptimizer GO = new GeneticOptimizer(genManEfficientCTOPortfolio, this.populationSizeForGeneticOptimizer, ! 0, ConstantsProvider.SeedForRandomGenerator); --- 188,192 ---- GeneticOptimizer GO = new GeneticOptimizer(genManEfficientCTOPortfolio, this.populationSizeForGeneticOptimizer, ! this.generationNumberForGeneticOptimizer, ConstantsProvider.SeedForRandomGenerator); *************** *** 181,184 **** --- 202,210 ---- new OptimizationTechniqueEvaluator(this.fitnessesInSample, this.fitnessesOutOfSample); + this.run_writeToLogFile(evaluator); + } + + private void run_writeToLogFile(OptimizationTechniqueEvaluator evaluator) + { double[] averagesInSample = evaluator.GetAveragesOfSubsetsInSample(this.numberOfSubsets); *************** *** 186,190 **** evaluator.GetAveragesOfSubsetsOutOfSample(this.numberOfSubsets); double r = evaluator.GetCorrelationBetweenFitnesses(); ! } } } --- 212,245 ---- evaluator.GetAveragesOfSubsetsOutOfSample(this.numberOfSubsets); double r = evaluator.GetCorrelationBetweenFitnesses(); ! GenomeCounter genomeCounter = new GenomeCounter(this.genomesToTestOutOfSample); ! int differentEvaluatedGenomes = genomeCounter.TotalEvaluatedGenomes; ! string pathFile = System.Configuration.ConfigurationSettings.AppSettings["GenericArchive"] + ! "\\OpenToCloseOptimizationEvaluation.txt"; ! StreamWriter w = File.AppendText(pathFile); ! w.WriteLine ("\n----------------------------------------------\r\n"); ! w.Write("\r\nNew Test for Evaluation of Open To Close Optimization {0}\r", DateTime.Now.Date.ToLongDateString()); ! w.WriteLine ("\n----------------------------------------------"); ! w.Write("\r\nFitnesses compared: {0}\r", this.fitnessesInSample.Length.ToString()); ! w.Write("\r\nDifferent evaluated genomes: {0}\r", differentEvaluatedGenomes.ToString()); ! w.Write("\r\nAverages of the {0} sub sets of fitnesses In Sample:\r", ! this.numberOfSubsets); ! // ! for(int i = 0; i<averagesInSample.Length; i++) ! w.WriteLine("\n{0}-->{1}", i.ToString(), averagesInSample[i].ToString()); ! ! w.WriteLine ("\n\n----------------------------------------------"); ! w.Write("\r\nAverages of the {0} sub sets of fitnesses Out of Sample:\r", ! this.numberOfSubsets); ! // ! for(int i = 0; i<averagesOutOfSample.Length; i++) ! w.WriteLine("\n{0}-->{1}", i.ToString(), averagesOutOfSample[i].ToString()); ! w.WriteLine ("\n\n----------------------------------------------"); ! // ! w.Write("\r\nCorrelation coefficient between fitnesses: {0}\r", r.ToString()); ! w.WriteLine ("\n-----------------End of Test------------------\r\n"); ! // Update the underlying file. ! w.Flush(); ! w.Close(); ! } } } |