[Quantproject-developers] QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WeightedPositio
Brought to you by:
glauco_1
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WeightedPositionsChoosers/WFLagGeneticFixedPortfolioWithNormalDrivingAndPortfolio In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv31039/b7_Scripts/WalkForwardTesting/WalkForwardLag/WeightedPositionsChoosers/WFLagGeneticFixedPortfolioWithNormalDrivingAndPortfolio Modified Files: WFLagGenomeManagerForFixedPortfolioWithNormalDrivingAndPortfolio.cs Log Message: GetFitnessValue returns a float now (it returned a double in the previous version) Index: WFLagGenomeManagerForFixedPortfolioWithNormalDrivingAndPortfolio.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WeightedPositionsChoosers/WFLagGeneticFixedPortfolioWithNormalDrivingAndPortfolio/WFLagGenomeManagerForFixedPortfolioWithNormalDrivingAndPortfolio.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** WFLagGenomeManagerForFixedPortfolioWithNormalDrivingAndPortfolio.cs 24 Jun 2007 21:34:55 -0000 1.2 --- WFLagGenomeManagerForFixedPortfolioWithNormalDrivingAndPortfolio.cs 13 Jul 2007 10:16:59 -0000 1.3 *************** *** 25,31 **** --- 25,33 ---- using System.Data; + using QuantProject.ADT.Histories; using QuantProject.ADT.Optimizing.Genetic; using QuantProject.ADT.Statistics; using QuantProject.Business.Strategies; + using QuantProject.Business.Strategies.ReturnsManagement; using QuantProject.Business.Strategies.EquityEvaluation; *************** *** 45,57 **** private int numberOfDrivingPositions; private string[] portfolioSignedTickers; // private int numberOfEligibleTickersForDrivingWeightedPositions; protected DataTable eligibleTickersForDrivingWeightedPositions; protected DataTable eligibleTickersForPortfolioWeightedPositions; ! private DateTime firstOptimizationDateForDrivingPositions; ! private DateTime lastOptimizationDate; private double minimumPositionWeight; ! protected WFLagCandidates wFLagCandidates; private IEquityEvaluator equityEvaluator; --- 47,66 ---- private int numberOfDrivingPositions; private string[] portfolioSignedTickers; + private History timeLineForOptimization; // this time line goes from + // the first optimization date for driving positions to the + // last optimization date; this optimization is meant to be + // launched one hour after the last market close + + // private DateTime firstOptimizationDateForDrivingPositions; + // private DateTime lastOptimizationDate; // private int numberOfEligibleTickersForDrivingWeightedPositions; protected DataTable eligibleTickersForDrivingWeightedPositions; protected DataTable eligibleTickersForPortfolioWeightedPositions; ! // private DateTime firstOptimizationDateForDrivingPositions; ! // private DateTime lastOptimizationDate; private double minimumPositionWeight; ! // protected WFLagCandidates wFLagCandidates; private IEquityEvaluator equityEvaluator; *************** *** 59,62 **** --- 68,72 ---- private WFLagMeaningForUndecodableGenomes wFLagMeaningForUndecodableGenomes; private string[] tickersForPortfolioPositions; + private CloseToCloseReturnsManager closeToCloseReturnsManager; *************** *** 89,94 **** DataTable eligibleTickersForDrivingWeightedPositions , string[] portfolioSignedTickers , ! DateTime firstOptimizationDateForDrivingPositions , ! DateTime lastOptimizationDate , IEquityEvaluator equityEvaluator , int seedForRandomGenerator ) --- 99,103 ---- DataTable eligibleTickersForDrivingWeightedPositions , string[] portfolioSignedTickers , ! History timeLineForOptimization , IEquityEvaluator equityEvaluator , int seedForRandomGenerator ) *************** *** 103,109 **** // eligibleTickersForPortfolioWeightedPositions; this.portfolioSignedTickers = portfolioSignedTickers; ! this.firstOptimizationDateForDrivingPositions = ! firstOptimizationDateForDrivingPositions; ! this.lastOptimizationDate = lastOptimizationDate; this.minimumPositionWeight = 0.2; // TO DO this value should become a constructor parameter --- 112,116 ---- // eligibleTickersForPortfolioWeightedPositions; this.portfolioSignedTickers = portfolioSignedTickers; ! this.timeLineForOptimization = timeLineForOptimization; this.minimumPositionWeight = 0.2; // TO DO this value should become a constructor parameter *************** *** 118,124 **** GenomeManagement.SetRandomGenerator( seedForRandomGenerator ); ! this.wFLagCandidates = new WFLagCandidates( ! this.eligibleTickersForDrivingWeightedPositions , ! this.firstOptimizationDateForDrivingPositions , this.lastOptimizationDate ); this.wFLagMeaningForUndecodableGenomes = --- 125,133 ---- GenomeManagement.SetRandomGenerator( seedForRandomGenerator ); ! // this.wFLagCandidates = new WFLagCandidates( ! // this.eligibleTickersForDrivingWeightedPositions , ! // this.firstOptimizationDateForDrivingPositions , this.lastOptimizationDate ); ! this.closeToCloseReturnsManager = ! new CloseToCloseReturnsManager( this.timeLineForOptimization ); this.wFLagMeaningForUndecodableGenomes = *************** *** 158,194 **** } ! private double[] getFitnessValue_getLinearCombinationReturns( WeightedPositions weightedPositions ) { ! // ArrayList enumeratedweightedPositions = ! // this.getEnumeratedWeightedPositions( weightedPositions ); ! int numberOfWeightedPositions = weightedPositions.Count; ! string[] tickers = this.getTickers( weightedPositions ); ! float[] multipliers = this.getMultipliers( weightedPositions ); ! // arrays of close to close returns, one for each signed ticker ! float[][] tickersReturns = ! this.wFLagCandidates.GetTickersReturns( tickers ); ! double[] linearCombinationReturns = ! new double[ tickersReturns[ 0 ].Length ]; ! for( int i = 0; i < linearCombinationReturns.Length ; i++ ) ! // computes linearCombinationReturns[ i ] ! { ! linearCombinationReturns[ i ] = 0; ! for ( int j=0 ; j < weightedPositions.Count ; j++ ) ! { ! double weightedPositionReturn = ! tickersReturns[ j ][ i ] * multipliers[ j ]; ! linearCombinationReturns[ i ] += weightedPositionReturn; ! } ! } ! return linearCombinationReturns; } ! private double[] getFitnessValue_getStrategyReturn( ! double[] drivingPositionsReturns , double[] portfolioPositionsReturns ) { // strategyReturns contains one element less than drivingPositionsReturns, // because there is no strategy for the very first period (at least // one day signal is needed) ! double[] strategyReturns = new double[ portfolioPositionsReturns.Length - 1 ]; for ( int i = 0 ; i < portfolioPositionsReturns.Length - 1 ; i++ ) if ( drivingPositionsReturns[ i ] < 0 ) --- 167,183 ---- } ! private float[] getFitnessValue_getLinearCombinationReturns( WeightedPositions weightedPositions ) { ! return weightedPositions.GetReturns( ! this.closeToCloseReturnsManager ); } ! private float[] getFitnessValue_getStrategyReturn( ! float[] drivingPositionsReturns , float[] portfolioPositionsReturns ) { // strategyReturns contains one element less than drivingPositionsReturns, // because there is no strategy for the very first period (at least // one day signal is needed) ! float[] strategyReturns = new float[ portfolioPositionsReturns.Length - 1 ]; for ( int i = 0 ; i < portfolioPositionsReturns.Length - 1 ; i++ ) if ( drivingPositionsReturns[ i ] < 0 ) *************** *** 207,211 **** } ! private double getFitnessValue( double[] strategyReturns ) { // double fitnessValue = --- 196,200 ---- } ! private float getFitnessValue( float[] strategyReturns ) { // double fitnessValue = *************** *** 215,219 **** // AdvancedFunctions.GetExpectancyScore( // strategyReturns ); ! double fitnessValue = this.equityEvaluator.GetReturnsEvaluation( strategyReturns ); --- 204,208 ---- // AdvancedFunctions.GetExpectancyScore( // strategyReturns ); ! float fitnessValue = this.equityEvaluator.GetReturnsEvaluation( strategyReturns ); *************** *** 227,243 **** } ! public double GetFitnessValue( WFLagWeightedPositions wFLagWeightedPositions ) { ! double[] drivingPositionsReturns = this.getFitnessValue_getLinearCombinationReturns( wFLagWeightedPositions.DrivingWeightedPositions ); ! double[] portfolioPositionsReturns = this.getFitnessValue_getLinearCombinationReturns( wFLagWeightedPositions.PortfolioWeightedPositions ); ! double[] strategyReturns = this.getFitnessValue_getStrategyReturn( drivingPositionsReturns , portfolioPositionsReturns ); ! double fitnessValue = this.getFitnessValue( strategyReturns ); return fitnessValue; } --- 216,232 ---- } ! public float GetFitnessValue( WFLagWeightedPositions wFLagWeightedPositions ) { ! float[] drivingPositionsReturns = this.getFitnessValue_getLinearCombinationReturns( wFLagWeightedPositions.DrivingWeightedPositions ); ! float[] portfolioPositionsReturns = this.getFitnessValue_getLinearCombinationReturns( wFLagWeightedPositions.PortfolioWeightedPositions ); ! float[] strategyReturns = this.getFitnessValue_getStrategyReturn( drivingPositionsReturns , portfolioPositionsReturns ); ! float fitnessValue = this.getFitnessValue( strategyReturns ); return fitnessValue; } *************** *** 496,501 **** Genome genome ) { - double[] weightsForDrivingPositions = this.getWeightsForDrivingPositions( genome ); string[] tickersForDrivingPositions = this.getTickersForDrivingPositions( genome ); return decodeWeightedPositions( weightsForDrivingPositions , --- 485,490 ---- Genome genome ) { string[] tickersForDrivingPositions = this.getTickersForDrivingPositions( genome ); + double[] weightsForDrivingPositions = this.getWeightsForDrivingPositions( genome ); return decodeWeightedPositions( weightsForDrivingPositions , *************** *** 506,511 **** { return WeightedPositions.GetBalancedWeights( this.portfolioSignedTickers , ! this.firstOptimizationDateForDrivingPositions.AddDays( 1 ) , ! this.lastOptimizationDate ); } private WeightedPositions decodePortfolioWeightedPositions( --- 495,499 ---- { return WeightedPositions.GetBalancedWeights( this.portfolioSignedTickers , ! this.closeToCloseReturnsManager ); } private WeightedPositions decodePortfolioWeightedPositions( |