quantproject-developers Mailing List for QuantProject (Page 50)
Brought to you by:
glauco_1
You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
(103) |
Dec
(67) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(52) |
Feb
(9) |
Mar
(69) |
Apr
(53) |
May
(80) |
Jun
(23) |
Jul
(24) |
Aug
(112) |
Sep
(9) |
Oct
|
Nov
(58) |
Dec
(93) |
| 2005 |
Jan
(90) |
Feb
(93) |
Mar
(61) |
Apr
(56) |
May
(37) |
Jun
(61) |
Jul
(55) |
Aug
(68) |
Sep
(25) |
Oct
(46) |
Nov
(41) |
Dec
(37) |
| 2006 |
Jan
(33) |
Feb
(7) |
Mar
(19) |
Apr
(27) |
May
(73) |
Jun
(49) |
Jul
(83) |
Aug
(66) |
Sep
(45) |
Oct
(16) |
Nov
(15) |
Dec
(7) |
| 2007 |
Jan
(14) |
Feb
(33) |
Mar
|
Apr
(21) |
May
|
Jun
(34) |
Jul
(18) |
Aug
(100) |
Sep
(39) |
Oct
(55) |
Nov
(12) |
Dec
(2) |
| 2008 |
Jan
(120) |
Feb
(133) |
Mar
(129) |
Apr
(104) |
May
(42) |
Jun
(2) |
Jul
(52) |
Aug
(99) |
Sep
(134) |
Oct
|
Nov
(137) |
Dec
(48) |
| 2009 |
Jan
(48) |
Feb
(55) |
Mar
(61) |
Apr
(3) |
May
(2) |
Jun
(1) |
Jul
|
Aug
(51) |
Sep
|
Oct
(7) |
Nov
|
Dec
|
| 2010 |
Jan
(7) |
Feb
(1) |
Mar
(145) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(8) |
Dec
|
| 2011 |
Jan
(78) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(88) |
Sep
(6) |
Oct
(1) |
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
(1) |
Mar
|
Apr
(6) |
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2013 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Glauco S. <gla...@us...> - 2008-03-30 15:11:52
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce/ParametersManagers In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv20956/ParametersManagers Log Message: Directory /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce/ParametersManagers added to the repository |
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WeightedPositionsChoosers/BruteForce In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13502/b7_Scripts/WalkForwardTesting/WalkForwardLag/WeightedPositionsChoosers/BruteForce Modified Files: WFLagBruteForceWeightedPositionsChooserForBalancedFixedPortfolioAndBalancedDriving.cs Log Message: - a new parameter int numberOfTopBestParameters is now passed to the BruteForceOptimizer Index: WFLagBruteForceWeightedPositionsChooserForBalancedFixedPortfolioAndBalancedDriving.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WeightedPositionsChoosers/BruteForce/WFLagBruteForceWeightedPositionsChooserForBalancedFixedPortfolioAndBalancedDriving.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** WFLagBruteForceWeightedPositionsChooserForBalancedFixedPortfolioAndBalancedDriving.cs 28 Oct 2007 18:57:50 -0000 1.2 --- WFLagBruteForceWeightedPositionsChooserForBalancedFixedPortfolioAndBalancedDriving.cs 26 Mar 2008 00:54:54 -0000 1.3 *************** *** 365,369 **** BruteForceOptimizer bruteForceOptimizer = new BruteForceOptimizer( ! wFLagFixedPortfolioBruteForceOptimizableParametersManager ); bruteForceOptimizer.NewProgress += --- 365,369 ---- BruteForceOptimizer bruteForceOptimizer = new BruteForceOptimizer( ! wFLagFixedPortfolioBruteForceOptimizableParametersManager , 1 ); bruteForceOptimizer.NewProgress += |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:54:11
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13425/b7_Scripts Modified Files: Scripts_SD.csproj Log Message: WalkForwardTesting\PairsTrading\InSample\InSampleChoosers\PairsTradingBruteForceChooser.cs has been added Index: Scripts_SD.csproj =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/Scripts_SD.csproj,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** Scripts_SD.csproj 19 Mar 2008 23:31:28 -0000 1.19 --- Scripts_SD.csproj 26 Mar 2008 00:54:08 -0000 1.20 *************** *** 105,108 **** --- 105,109 ---- <Compile Include="WalkForwardTesting\PairsTrading\InSample\InSampleChoosers\Genetic\DecoderForPairsTradingTestingPositionsWithBalancedWeights.cs" /> <Compile Include="WalkForwardTesting\PairsTrading\InSample\InSampleChoosers\Genetic\PairsTradingGeneticChooser.cs" /> + <Compile Include="WalkForwardTesting\PairsTrading\InSample\InSampleChoosers\PairsTradingBruteForceChooser.cs" /> <Compile Include="WalkForwardTesting\PairsTrading\InSample\PairsTradingFitnessEvaluator.cs" /> <Compile Include="WalkForwardTesting\PairsTrading\Logging\PairsTradingLogItem.cs" /> |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:53:45
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/PairsTrading In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13043/b7_Scripts/WalkForwardTesting/PairsTrading Modified Files: PairsTradingMain.cs Log Message: The code has been changed to use a PairsTradingBruteForceChooser (a PairsTradingGeneticChooser was used in the previous revision) Index: PairsTradingMain.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/PairsTrading/PairsTradingMain.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** PairsTradingMain.cs 19 Mar 2008 23:24:02 -0000 1.4 --- PairsTradingMain.cs 26 Mar 2008 00:53:41 -0000 1.5 *************** *** 71,75 **** string tickersGroupId = "SP500"; // uncomment the following line for a faster script ! tickersGroupId = "fastTest"; this.eligiblesSelector = --- 71,75 ---- string tickersGroupId = "SP500"; // uncomment the following line for a faster script ! // tickersGroupId = "fastTest"; this.eligiblesSelector = *************** *** 81,84 **** --- 81,93 ---- protected override void setInSampleChooser() { + int numberOfBestTestingPositionsToBeReturned = 10; + + IDecoderForTestingPositions decoderForWeightedPositions = + new DecoderForPairsTradingTestingPositionsWithBalancedWeights(); + + double maxCorrelationAllowed = 0.96; + IFitnessEvaluator fitnessEvaluator = + new PairsTradingFitnessEvaluator( maxCorrelationAllowed ); + // parameters for the genetic optimizer double crossoverRate = 0.85; *************** *** 89,109 **** 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 , crossoverRate , mutationRate , elitismRate , ! populationSizeForGeneticOptimizer , generationNumberForGeneticOptimizer , seedForRandomGenerator ); } --- 98,118 ---- int seedForRandomGenerator = QuantProject.ADT.ConstantsProvider.SeedForRandomGenerator; this.inSampleChooser = new PairsTradingGeneticChooser( ! numberOfBestTestingPositionsToBeReturned , this.benchmark , decoderForWeightedPositions , fitnessEvaluator , historicalQuoteProvider , crossoverRate , mutationRate , elitismRate , ! populationSizeForGeneticOptimizer , ! generationNumberForGeneticOptimizer , seedForRandomGenerator ); + + this.inSampleChooser = + new PairsTradingBruteForceChooser( + numberOfBestTestingPositionsToBeReturned , + decoderForWeightedPositions , + fitnessEvaluator , + historicalQuoteProvider ); } *************** *** 112,116 **** int inSampleDays = 180; // uncomment the following line for a faster script ! inSampleDays = 5; IIntervalsSelector intervalsSelector = --- 121,125 ---- int inSampleDays = 180; // uncomment the following line for a faster script ! // inSampleDays = 5; IIntervalsSelector intervalsSelector = *************** *** 121,125 **** 7 , inSampleDays , intervalsSelector , eligiblesSelector , inSampleChooser , historicalQuoteProvider , ! 0.007 , 0.99 , 0.007 , 0.99 ); } protected override void setEndOfDayStrategyBackTester() --- 130,134 ---- 7 , inSampleDays , intervalsSelector , eligiblesSelector , inSampleChooser , historicalQuoteProvider , ! 0.005 , 0.99 , 0.005 , 0.99 ); } protected override void setEndOfDayStrategyBackTester() |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:51:41
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting/TestingOTCTypes/BruteForceOptimization In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv11916/b7_Scripts/TickerSelectionTesting/TestingOTCTypes/BruteForceOptimization Modified Files: OTCBruteForceOptimizableParametersManager.cs Log Message: - CombinationBasedBruteForceOptimizableParametersManager is now inherited (several code has been commented out, accordingly) Index: OTCBruteForceOptimizableParametersManager.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting/TestingOTCTypes/BruteForceOptimization/OTCBruteForceOptimizableParametersManager.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** OTCBruteForceOptimizableParametersManager.cs 14 Jan 2008 23:43:47 -0000 1.2 --- OTCBruteForceOptimizableParametersManager.cs 26 Mar 2008 00:51:36 -0000 1.3 *************** *** 37,41 **** /// </summary> public class OTCBruteForceOptimizableParametersManager : ! IBruteForceOptimizableParametersManager { private Combination portfolioCombination; --- 37,41 ---- /// </summary> public class OTCBruteForceOptimizableParametersManager : ! CombinationBasedBruteForceOptimizableParametersManager { private Combination portfolioCombination; *************** *** 48,52 **** DateTime firstOptimizationDate , DateTime lastOptimizationDate , ! int numberOfPortfolioPositions ) { this.eligibleTickersForPortfolioPositions = --- 48,57 ---- DateTime firstOptimizationDate , DateTime lastOptimizationDate , ! int numberOfPortfolioPositions ) : ! base( new Combination( ! eligibleTickersForPortfolioPositions.Rows.Count , ! eligibleTickersForPortfolioPositions.Rows.Count - 1 , ! numberOfPortfolioPositions ) ) ! { this.eligibleTickersForPortfolioPositions = *************** *** 65,98 **** } ! public bool MoveNext() ! { ! return this.portfolioCombination.MoveNext(); ! } ! ! public void Reset() ! { ! this.portfolioCombination.Reset(); ! } ! #region Current ! public object Current ! { ! get ! { ! return this.getCurrent(); ! } ! } ! private object getCurrent() ! { ! int[] currentValues = new int[ this.portfolioCombination.Length ]; ! for ( int i = 0 ; i < this.portfolioCombination.Length ; i ++ ) ! currentValues[ i ] = this.portfolioCombination.GetValue( i ); ! BruteForceOptimizableParameters bruteForceOptimizableParameters = ! new BruteForceOptimizableParameters( currentValues , ! this ); ! return bruteForceOptimizableParameters; ! } ! #endregion ! public object Decode( BruteForceOptimizableParameters bruteForceOptimizableItem ) { --- 70,104 ---- } ! ! // public bool MoveNext() ! // { ! // return this.portfolioCombination.MoveNext(); ! // } ! // ! // public void Reset() ! // { ! // this.portfolioCombination.Reset(); ! // } ! // #region Current ! // public object Current ! // { ! // get ! // { ! // return this.getCurrent(); ! // } ! // } ! // private object getCurrent() ! // { ! // int[] currentValues = new int[ this.portfolioCombination.Length ]; ! // for ( int i = 0 ; i < this.portfolioCombination.Length ; i ++ ) ! // currentValues[ i ] = this.portfolioCombination.GetValue( i ); ! // BruteForceOptimizableParameters bruteForceOptimizableParameters = ! // new BruteForceOptimizableParameters( currentValues , ! // this ); ! // return bruteForceOptimizableParameters; ! // } ! // #endregion ! public override object Decode( BruteForceOptimizableParameters bruteForceOptimizableItem ) { *************** *** 100,104 **** } ! public double GetFitnessValue( BruteForceOptimizableParameters bruteForceOptimizableItem ) { --- 106,110 ---- } ! public override double GetFitnessValue( BruteForceOptimizableParameters bruteForceOptimizableItem ) { |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:50:26
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv11316/b1_ADT/Optimizing/BruteForce Modified Files: IBruteForceOptimizableParametersManager.cs Log Message: The property Index: IBruteForceOptimizableParametersManager.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce/IBruteForceOptimizableParametersManager.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** IBruteForceOptimizableParametersManager.cs 21 Aug 2006 19:40:42 -0000 1.1 --- IBruteForceOptimizableParametersManager.cs 26 Mar 2008 00:50:22 -0000 1.2 *************** *** 34,37 **** --- 34,40 ---- IEnumerator { + // the number of total iterations expected + int TotalIterations { get; } + double GetFitnessValue( BruteForceOptimizableParameters bruteForceOptimizableParameters ); object Decode( BruteForceOptimizableParameters bruteForceOptimizableParameters ); |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:48:33
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting/TestingOTCTypes/BruteForceOptimization In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv10405/b7_Scripts/TickerSelectionTesting/TestingOTCTypes/BruteForceOptimization Modified Files: EndOfDayTimerHandlerOTCTypesBruteForce.cs Log Message: - a new parameter int numberOfTopBestParameters is now passed to the BruteForceOptimizer Index: EndOfDayTimerHandlerOTCTypesBruteForce.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting/TestingOTCTypes/BruteForceOptimization/EndOfDayTimerHandlerOTCTypesBruteForce.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** EndOfDayTimerHandlerOTCTypesBruteForce.cs 29 Aug 2007 09:43:34 -0000 1.3 --- EndOfDayTimerHandlerOTCTypesBruteForce.cs 26 Mar 2008 00:48:26 -0000 1.4 *************** *** 191,195 **** currentDate,this.numberOfTickersToBeChosen); ! BruteForceOptimizer BFO = new BruteForceOptimizer(otcBruteForceParamManager); BFO.Run(); //this.setTickers_getChosenTickers(BFO.BestParameters); --- 191,195 ---- currentDate,this.numberOfTickersToBeChosen); ! BruteForceOptimizer BFO = new BruteForceOptimizer(otcBruteForceParamManager,1); BFO.Run(); //this.setTickers_getChosenTickers(BFO.BestParameters); |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:47:08
|
Update of /cvsroot/quantproject/QuantProject/b4_Business In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv9585/b4_Business Modified Files: Business_SD.csproj Log Message: a2_Strategies\InSample\BruteForceChooser.cs has been added Index: Business_SD.csproj =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b4_Business/Business_SD.csproj,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** Business_SD.csproj 16 Mar 2008 20:14:10 -0000 1.18 --- Business_SD.csproj 26 Mar 2008 00:47:03 -0000 1.19 *************** *** 77,80 **** --- 77,81 ---- <Compile Include="a2_Strategies\IEndOfDayStrategyForBacktester.cs" /> <Compile Include="a2_Strategies\IInSampleChooser.cs" /> + <Compile Include="a2_Strategies\InSample\BruteForceChooser.cs" /> <Compile Include="a2_Strategies\InSample\ConstantWeightedPositionsChooser.cs" /> <Compile Include="a2_Strategies\InSample\DummyInSampleChooser.cs" /> |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:46:42
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv9522/b1_ADT/Optimizing/BruteForce Modified Files: BruteForceOptimizer.cs Log Message: - the read only property public BruteForceOptimizableParameters[] TopBestParameters has been added - a new parameter int numberOfTopBestParameters has been added to the constructor Index: BruteForceOptimizer.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce/BruteForceOptimizer.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** BruteForceOptimizer.cs 7 Oct 2007 13:12:13 -0000 1.3 --- BruteForceOptimizer.cs 26 Mar 2008 00:46:38 -0000 1.4 *************** *** 34,44 **** private IBruteForceOptimizableParametersManager bruteForceOptimizableParametersManager; private int numberOfAnalizedItemsForNewProgess; private int totalNumberOfItemsToBeAnalized; ! private BruteForceOptimizableParameters bestParameters; private int analizedItems; public event NewProgressEventHandler NewProgress; --- 34,47 ---- private IBruteForceOptimizableParametersManager bruteForceOptimizableParametersManager; + private int numberOfTopBestParameters; private int numberOfAnalizedItemsForNewProgess; private int totalNumberOfItemsToBeAnalized; ! // private BruteForceOptimizableParameters bestParameters; ! private BestParametersManager bestParametersManager; private int analizedItems; + private bool runIsComplete; public event NewProgressEventHandler NewProgress; *************** *** 46,59 **** public BruteForceOptimizableParameters BestParameters { ! get { return this.bestParameters; } } public BruteForceOptimizer( ! IBruteForceOptimizableParametersManager bruteForceOptimizableParametersManager ) { this.bruteForceOptimizableParametersManager = bruteForceOptimizableParametersManager; this.numberOfAnalizedItemsForNewProgess = 100000; this.totalNumberOfItemsToBeAnalized = 0; } #region Run --- 49,84 ---- public BruteForceOptimizableParameters BestParameters { ! get { return this.TopBestParameters[ 0 ]; } ! } ! public BruteForceOptimizableParameters[] TopBestParameters ! { ! get ! { ! if ( !this.runIsComplete ) ! throw new Exception( "This property cannot be invoked until " + ! "the Run execution is complete!" ); ! return this.bestParametersManager.TopBestParameters; ! } } + + /// <summary> + /// Optimizer that enumerates all possible parameter values + /// </summary> + /// <param name="bruteForceOptimizableParametersManager"></param> + /// <param name="numberOfTopBestParameters">number of the best + /// optimizable parameters to be returned by the TopBestParameters + /// property</param> public BruteForceOptimizer( ! IBruteForceOptimizableParametersManager bruteForceOptimizableParametersManager , ! int numberOfTopBestParameters ) { this.bruteForceOptimizableParametersManager = bruteForceOptimizableParametersManager; + this.numberOfTopBestParameters = numberOfTopBestParameters; + this.numberOfAnalizedItemsForNewProgess = 100000; this.totalNumberOfItemsToBeAnalized = 0; + this.runIsComplete = false; } #region Run *************** *** 70,91 **** } } ! /// <summary> ! /// executes the optimization ! /// </summary> ! public void Run() { this.analizedItems = 0; this.bruteForceOptimizableParametersManager.Reset(); ! this.bestParameters = ! (BruteForceOptimizableParameters)this.bruteForceOptimizableParametersManager.Current; while( this.bruteForceOptimizableParametersManager.MoveNext() ) { BruteForceOptimizableParameters bruteForceOptimizableParameters = (BruteForceOptimizableParameters)this.bruteForceOptimizableParametersManager.Current; ! if ( this.bestParameters.Fitness < bruteForceOptimizableParameters.Fitness ) ! this.bestParameters = bruteForceOptimizableParameters; this.handleProgress(); } } public void Run( int numberOfAnalizedItemsForNewProgess , int totalNumberOfItemsToBeAnalized ) --- 95,142 ---- } } ! ! #region Run ! // private void handleCurrentOptimizableParameters( ! // BruteForceOptimizableParameters bruteForceOptimizableParameters ) ! // { ! // if ( !this.topBestParameters.IsFull ) ! // // this.topBestParameters still contains less than ! // // this.numberOfTopBestParametersToBeReturned items. It means that we are still in ! // // the initializing phase, when the first this.numberOfTopBestParametersToBeReturned ! // // items are to be added to the topBestParameters ! // this.topBestParameters.Analize( bruteForceOptimizableParameters ) ! // else if ( this.topBestParameters.LowestFitness < bruteForceOptimizableParameters.Fitness ) ! // this.updateTopBestParameters( bruteForceOptimizableParameters ); ! // } ! public void createTopBestParameters() { + this.bestParametersManager = new BestParametersManager( + this.numberOfTopBestParameters ); this.analizedItems = 0; this.bruteForceOptimizableParametersManager.Reset(); ! // this.bestParameters = ! // (BruteForceOptimizableParameters)this.bruteForceOptimizableParametersManager.Current; while( this.bruteForceOptimizableParametersManager.MoveNext() ) { BruteForceOptimizableParameters bruteForceOptimizableParameters = (BruteForceOptimizableParameters)this.bruteForceOptimizableParametersManager.Current; ! this.bestParametersManager.Analize( bruteForceOptimizableParameters ); this.handleProgress(); } } + /// <summary> + /// executes the optimization + /// </summary> + public void Run() + { + this.createTopBestParameters(); + // this.bestParametersManager.TopBestParameters.Sort(); + this.runIsComplete = true; + } + #endregion Run + + /// <summary> + /// executes the optimization + /// </summary> public void Run( int numberOfAnalizedItemsForNewProgess , int totalNumberOfItemsToBeAnalized ) |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:44:49
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv8658/b1_ADT/Optimizing/BruteForce Modified Files: BruteForceOptimizableParameters.cs Log Message: - the IWithFitness interface is now implemented - the read only Meaning property has been added Index: BruteForceOptimizableParameters.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce/BruteForceOptimizableParameters.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** BruteForceOptimizableParameters.cs 21 Aug 2006 19:43:49 -0000 1.1 --- BruteForceOptimizableParameters.cs 26 Mar 2008 00:44:46 -0000 1.2 *************** *** 23,26 **** --- 23,28 ---- using System; + using QuantProject.ADT.Optimizing.Fitness; + namespace QuantProject.ADT.Optimizing.BruteForce { *************** *** 28,41 **** /// Parameters to be optimized by a Brute Force optimizer /// </summary> ! public class BruteForceOptimizableParameters { IBruteForceOptimizableParametersManager bruteForceOptimizableParametersManager; - private bool isFitnessSet; private double fitness; private int[] parameterValues; /// <summary> /// Fitness value for current parameters value --- 30,56 ---- /// Parameters to be optimized by a Brute Force optimizer /// </summary> ! public class BruteForceOptimizableParameters : IWithFitness { IBruteForceOptimizableParametersManager bruteForceOptimizableParametersManager; + private object meaning; private double fitness; + private bool isFitnessSet; + private int[] parameterValues; + public object Meaning + { + get + { + if ( this.meaning == null ) + this.meaning = + this.bruteForceOptimizableParametersManager.Decode( this ); + return this.meaning; + } + } + /// <summary> /// Fitness value for current parameters value |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:43:45
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv8232/b7_Scripts Modified Files: b7_Scripts.csproj Log Message: WalkForwardTesting\PairsTrading\InSample\InSampleChoosers\PairsTradingBruteForceChooser.cs has been added Index: b7_Scripts.csproj =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/b7_Scripts.csproj,v retrieving revision 1.90 retrieving revision 1.91 diff -C2 -d -r1.90 -r1.91 *** b7_Scripts.csproj 19 Mar 2008 23:15:01 -0000 1.90 --- b7_Scripts.csproj 26 Mar 2008 00:43:42 -0000 1.91 *************** *** 895,898 **** --- 895,903 ---- /> <File + RelPath = "WalkForwardTesting\PairsTrading\InSample\InSampleChoosers\PairsTradingBruteForceChooser.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "WalkForwardTesting\PairsTrading\InSample\InSampleChoosers\Genetic\DecoderForPairsTradingTestingPositionsWithBalancedWeights.cs" SubType = "Code" |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:43:11
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/PairsTrading/InSample/InSampleChoosers In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv8183/b7_Scripts/WalkForwardTesting/PairsTrading/InSample/InSampleChoosers Added Files: PairsTradingBruteForceChooser.cs Log Message: brute force IInSampleChooser for the pairs trading strategy --- NEW FILE: PairsTradingBruteForceChooser.cs --- /* QuantProject - Quantitative Finance Library PairsTradingBruteForceChooser.cs Copyright (C) 2008 Glauco Siliprandi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License 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; using QuantProject.ADT.Optimizing.BruteForce; using QuantProject.Business.DataProviders; using QuantProject.Business.Strategies.Eligibles; using QuantProject.Business.Strategies.InSample; using QuantProject.Business.Strategies.Optimizing.BruteForce; using QuantProject.Business.Strategies.Optimizing.Decoding; using QuantProject.Business.Strategies.Optimizing.FitnessEvaluation; using QuantProject.Business.Strategies.ReturnsManagement; namespace QuantProject.Scripts.WalkForwardTesting.PairsTrading { /// <summary> /// brute force IInSampleChooser for the pairs trading strategy /// </summary> public class PairsTradingBruteForceChooser : BruteForceChooser { public PairsTradingBruteForceChooser( int numberOfBestTestingPositionsToBeReturned , IDecoderForTestingPositions decoderForTestingPositions , IFitnessEvaluator fitnessEvaluator , IHistoricalQuoteProvider historicalQuoteProvider ) : base ( numberOfBestTestingPositionsToBeReturned , decoderForTestingPositions , fitnessEvaluator , historicalQuoteProvider ) { } protected override IBruteForceOptimizableParametersManager getBruteForceOptimizableParametersManager( EligibleTickers eligibleTickers , ReturnsManager returnsManager ) { BruteForceOptimizableParametersManagerForBalancedVolatility bruteForceOptimizableParametersManager = new BruteForceOptimizableParametersManagerForBalancedVolatility( eligibleTickers , 2 , this.decoderForTestingPositions , this.fitnessEvaluator , returnsManager ); return bruteForceOptimizableParametersManager; } } } |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:42:20
|
Update of /cvsroot/quantproject/QuantProject/b4_Business In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv7775/b4_Business Modified Files: b4_Business.csproj Log Message: - Microsoft.Office.Core is not referenced anymore (not clear to me what's happened) - a2_Strategies\InSample\BruteForceChooser.cs has been added - a2_Strategies\Optimizing\BruteForce\BruteForceOptimizableParametersManagerForBalancedVolatility.cs has been added Index: b4_Business.csproj =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b4_Business/b4_Business.csproj,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -d -r1.60 -r1.61 *** b4_Business.csproj 13 Mar 2008 19:32:04 -0000 1.60 --- b4_Business.csproj 26 Mar 2008 00:42:16 -0000 1.61 *************** *** 130,141 **** Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" /> - <Reference - Name = "Microsoft.Office.Core" - Guid = "{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}" - VersionMajor = "2" - VersionMinor = "3" - Lcid = "0" - WrapperTool = "primary" - /> </References> </Build> --- 130,133 ---- *************** *** 758,761 **** --- 750,758 ---- /> <File + RelPath = "a2_Strategies\InSample\BruteForceChooser.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "a2_Strategies\InSample\ConstantWeightedPositionsChooser.cs" SubType = "Code" *************** *** 793,796 **** --- 790,798 ---- /> <File + RelPath = "a2_Strategies\Optimizing\BruteForce\BruteForceOptimizableParametersManagerForBalancedVolatility.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "a2_Strategies\Optimizing\Decoding\BasicDecoderForTestingPositions.cs" SubType = "Code" |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:41:16
|
Update of /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies/Optimizing/BruteForce In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv7339 Added Files: BruteForceOptimizableParametersManagerForBalancedVolatility.cs Log Message: Implements IBruteForceOptimizableParametersManager for a single portfolio (i.e. a single WeightedPositions) Weights are balanced with respect to volatility --- NEW FILE: BruteForceOptimizableParametersManagerForBalancedVolatility.cs --- /* QuantProject - Quantitative Finance Library BruteForceOptimizableParametersManagerForBalancedPortfolio.cs Copyright (C) 2008 Glauco Siliprandi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License 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; //using System.Collections; //using System.Data; using QuantProject.ADT.Optimizing.BruteForce; using QuantProject.ADT.Statistics.Combinatorial; using QuantProject.Business.Strategies.Eligibles; using QuantProject.Business.Strategies.Optimizing.Decoding; using QuantProject.Business.Strategies.Optimizing.FitnessEvaluation; using QuantProject.Business.Strategies.ReturnsManagement; //using QuantProject.ADT.Statistics; //using QuantProject.Business.Strategies; //using QuantProject.Business.Strategies.EquityEvaluation; //using QuantProject.Business.Strategies.ReturnsManagement; namespace QuantProject.Business.Strategies.Optimizing.BruteForce { /// <summary> /// Implements IBruteForceOptimizableParametersManager /// for a single portfolio (i.e. a single WeightedPositions) /// Weights are balanced with respect to volatility /// </summary> public class BruteForceOptimizableParametersManagerForBalancedVolatility : CombinationBasedBruteForceOptimizableParametersManager { // private double[] weightsForDrivingPositions; private EligibleTickers eligibleTickers; private int numberOfPositions; private IDecoderForTestingPositions decoderForTestingPositions; private IFitnessEvaluator fitnessEvaluator; private ReturnsManager returnsManager; // private Combination combination; // private double[] standardDeviationForDrivingPositions; // private float[][] drivingPositionsCloseToCloseReturns; // public object Current // { // get // { // int[] currentValues = new int[ this.combination.Length ]; // for ( int i = 0 ; i < this.combination.Length ; i ++ ) // currentValues[ i ] = this.combination.GetValue( i ); // BruteForceOptimizableParameters bruteForceOptimizableParameters = // new BruteForceOptimizableParameters( currentValues , // this ); // return bruteForceOptimizableParameters; // } // } // public int TotalIterations // { // get // { // return Convert.ToInt32( this.combination.TotalNumberOfCombinations ); // } // } public BruteForceOptimizableParametersManagerForBalancedVolatility( EligibleTickers eligibleTickers , // string portfolioLongTicker , // string portfolioShortTicker , // DateTime firstOptimizationDate , // DateTime lastOptimizationDate , int numberOfPositions , IDecoderForTestingPositions decoderForTestingPositions , IFitnessEvaluator fitnessEvaluator , ReturnsManager returnsManager ) : base( new Combination( - eligibleTickers.Count , eligibleTickers.Count - 1 , numberOfPositions ) ) { this.eligibleTickers = eligibleTickers; this.numberOfPositions = numberOfPositions; this.decoderForTestingPositions = decoderForTestingPositions; this.fitnessEvaluator = fitnessEvaluator; this.returnsManager = returnsManager; // this.combination = new Combination( // - this.eligibleTickers.Count , // this.eligibleTickers.Count - 1 , // numberOfPositions ); } // protected override Combination getCombination() // { // return new Combination( // - this.eligibleTickers.Count , // this.eligibleTickers.Count - 1 , // this.numberOfPositions ); // } // public bool MoveNext() // { // return this.combination.MoveNext(); // } // public void Reset() // { // this.combination.Reset(); // } // protected override getCurrent( int[] currentValues ) // { // BruteForceOptimizableParameters bruteForceOptimizableParameters = // new BruteForceOptimizableParameters( currentValues , // this ); // return bruteForceOptimizableParameters; // } public override object Decode( BruteForceOptimizableParameters bruteForceOptimizableParameters ) { return this.decoderForTestingPositions.Decode( bruteForceOptimizableParameters.GetValues() , this.eligibleTickers , this.returnsManager ); } public override double GetFitnessValue( BruteForceOptimizableParameters bruteForceOptimizableParameters ) { object meaning = this.Decode( bruteForceOptimizableParameters ); double fitnessValue = this.fitnessEvaluator.GetFitnessValue( meaning , this.returnsManager ); return fitnessValue; } } } |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:40:41
|
Update of /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies/Optimizing/BruteForce In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv6909/BruteForce Log Message: Directory /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies/Optimizing/BruteForce added to the repository |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:39:55
|
Update of /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies/InSample In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv6427/b4_Business/a2_Strategies/InSample Added Files: BruteForceChooser.cs Log Message: Abstract brute force in sample chooser to be used for in sample optimization --- NEW FILE: BruteForceChooser.cs --- /* QuantProject - Quantitative Finance Library BruteForceChooser.cs Copyright (C) 2008 Glauco Siliprandi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License 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; using QuantProject.ADT; using QuantProject.ADT.Messaging; using QuantProject.ADT.Optimizing.BruteForce; using QuantProject.Business.DataProviders; using QuantProject.Business.Strategies.Eligibles; using QuantProject.Business.Strategies.Optimizing; using QuantProject.Business.Strategies.Optimizing.BruteForce; using QuantProject.Business.Strategies.OutOfSample; using QuantProject.Business.Strategies.Optimizing.Decoding; using QuantProject.Business.Strategies.Optimizing.FitnessEvaluation; using QuantProject.Business.Strategies.ReturnsManagement; namespace QuantProject.Business.Strategies.InSample { /// <summary> /// Abstract brute force in sample chooser to be used for /// in sample optimization /// </summary> public abstract class BruteForceChooser : IInSampleChooser { public event NewProgressEventHandler NewProgress; public event NewMessageEventHandler NewMessage; protected int numberOfBestTestingPositionsToBeReturned; protected IDecoderForTestingPositions decoderForTestingPositions; protected IFitnessEvaluator fitnessEvaluator; protected IHistoricalQuoteProvider historicalQuoteProvider; public string Description { get { string description = "BruteForce" + "_FitnEval_" + this.fitnessEvaluator.Description + "_DecoderForTestingPositions_" + this.decoderForTestingPositions; return description; } } public BruteForceChooser( int numberOfBestTestingPositionsToBeReturned , IDecoderForTestingPositions decoderForTestingPositions , IFitnessEvaluator fitnessEvaluator , IHistoricalQuoteProvider historicalQuoteProvider ) { this.numberOfBestTestingPositionsToBeReturned = numberOfBestTestingPositionsToBeReturned; this.decoderForTestingPositions = decoderForTestingPositions; this.fitnessEvaluator = fitnessEvaluator; this.historicalQuoteProvider = historicalQuoteProvider; } protected abstract IBruteForceOptimizableParametersManager getBruteForceOptimizableParametersManager( EligibleTickers eligibleTickers , ReturnsManager returnsManager ); #region AnalyzeInSample private void analyzeInSample_checkParameters( EligibleTickers eligibleTickers , ReturnsManager returnsManager ) { if ( eligibleTickers.Count <= 0 ) throw new Exception( "Eligible tickers for driving positions is empty!" ); } #region getBestTestingPositionsInSample #region newBruteForceOptimizerProgressEventHandler #region sendNewMessage private string getProgressMessage( NewProgressEventArgs eventArgs ) { // string progressMessage = // this.ToString() + " / " + // generationNumber.ToString() + // " - " + // DateTime.Now.ToString(); string progressMessage = eventArgs.CurrentProgress.ToString() + " / " + eventArgs.Goal.ToString() + " - " + DateTime.Now.ToString(); return progressMessage; } private void sendNewMessage( NewProgressEventArgs eventArgs ) { string message = this.getProgressMessage( eventArgs ); NewMessageEventArgs newMessageEventArgs = new NewMessageEventArgs( message ); if( this.NewMessage != null ) this.NewMessage( this , newMessageEventArgs ); } #endregion sendNewMessage private void newBruteForceOptimizerProgressEventHandler( Object sender , NewProgressEventArgs eventArgs ) { if ( this.NewProgress != null ) this.NewProgress( sender , eventArgs ); this.sendNewMessage( eventArgs ); } #endregion newBruteForceOptimizerProgressEventHandler private void getBestTestingPositionsInSample_getTestingPositionsActually_checkParameter( BruteForceOptimizer bruteForceOptimizer ) { if ( bruteForceOptimizer.TopBestParameters.Length < this.numberOfBestTestingPositionsToBeReturned ) throw new Exception( "The brute force optimizer has not examined enough " + "candidates!" ); } private TestingPositions[] getBestTestingPositionsInSample_getTestingPositionsActually( BruteForceOptimizer bruteForceOptimizer ) { this.getBestTestingPositionsInSample_getTestingPositionsActually_checkParameter( bruteForceOptimizer ); TestingPositions[] bestTestingPositions = new TestingPositions[ this.numberOfBestTestingPositionsToBeReturned ]; for ( int i = 0 ; i < bruteForceOptimizer.TopBestParameters.Length ; i++ ) { BruteForceOptimizableParameters bruteForceOptimizableParameters = bruteForceOptimizer.TopBestParameters[ i ]; bestTestingPositions[ i ] = (TestingPositions)bruteForceOptimizableParameters.Meaning; } return bestTestingPositions; } private TestingPositions[] getBestTestingPositionsInSample( EligibleTickers eligibleTickers , ReturnsManager returnsManager ) { IBruteForceOptimizableParametersManager bruteForceOptimizableParametersManager = this.getBruteForceOptimizableParametersManager( eligibleTickers , returnsManager ); BruteForceOptimizer bruteForceOptimizer = new BruteForceOptimizer( bruteForceOptimizableParametersManager , this.numberOfBestTestingPositionsToBeReturned ); bruteForceOptimizer.NewProgress += new NewProgressEventHandler( this.newBruteForceOptimizerProgressEventHandler ); bruteForceOptimizer.Run( 10000 , bruteForceOptimizableParametersManager.TotalIterations ); return this.getBestTestingPositionsInSample_getTestingPositionsActually( bruteForceOptimizer ); } #endregion getBestTestingPositionsInSample public object AnalyzeInSample( EligibleTickers eligibleTickers , ReturnsManager returnsManager ) { this.analyzeInSample_checkParameters( eligibleTickers , returnsManager ); TestingPositions[] bestTestingPositionsInSample = this.getBestTestingPositionsInSample( eligibleTickers , returnsManager ); return bestTestingPositionsInSample; } #endregion AnalyzeInSample } } |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:38:47
|
Update of /cvsroot/quantproject/QuantProject/b3_Data In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv5985/b3_Data Modified Files: b3_Data.csproj Log Message: Microsoft.Office.Core is not referenced anymore (not clear to me what's happened) Index: b3_Data.csproj =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b3_Data/b3_Data.csproj,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** b3_Data.csproj 10 Feb 2008 15:27:21 -0000 1.53 --- b3_Data.csproj 26 Mar 2008 00:38:37 -0000 1.54 *************** *** 121,132 **** /> <Reference - Name = "Microsoft.Office.Core" - Guid = "{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}" - VersionMajor = "2" - VersionMinor = "3" - Lcid = "0" - WrapperTool = "primary" - /> - <Reference Name = "b1_ADT" Project = "{B8A01161-3698-4591-B1EF-90F5FC7D8DBA}" --- 121,124 ---- |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:37:22
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv5545/b1_ADT Modified Files: b1_ADT.csproj Log Message: - Optimizing\BruteForce\BestParametersManager.cs has been added - Optimizing\BruteForce\CombinationBasedBruteForceOptimizableParametersManager.cs has been added - Optimizing\Fitness\FitnessComparer.cs has been added - Optimizing\Fitness\IWithFitness.cs has been added Index: b1_ADT.csproj =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b1_ADT/b1_ADT.csproj,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** b1_ADT.csproj 12 Mar 2008 21:51:35 -0000 1.28 --- b1_ADT.csproj 26 Mar 2008 00:37:17 -0000 1.29 *************** *** 228,231 **** --- 228,236 ---- /> <File + RelPath = "Optimizing\BruteForce\BestParametersManager.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "Optimizing\BruteForce\BruteForceOptimizableParameters.cs" SubType = "Code" *************** *** 238,241 **** --- 243,251 ---- /> <File + RelPath = "Optimizing\BruteForce\CombinationBasedBruteForceOptimizableParametersManager.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "Optimizing\BruteForce\IBruteForceOptimizableParametersManager.cs" SubType = "Code" *************** *** 253,256 **** --- 263,276 ---- /> <File + RelPath = "Optimizing\Fitness\FitnessComparer.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File + RelPath = "Optimizing\Fitness\IWithFitness.cs" + SubType = "Code" + BuildAction = "Compile" + /> + <File RelPath = "Optimizing\Genetic\GeneticOptimizer.cs" SubType = "Code" |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:36:22
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/Fitness In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv4698 Added Files: FitnessComparer.cs Log Message: Compares BruteForceOptimizableParameters by fitness --- NEW FILE: FitnessComparer.cs --- /* QuantProject - Quantitative Finance Library FitnessComparer.cs Copyright (C) 2008 Glauco Siliprandi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License 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; using System.Collections; namespace QuantProject.ADT.Optimizing.Fitness { /// <summary> /// Compares BruteForceOptimizableParameters by fitness /// </summary> [Serializable] public sealed class FitnessComparer : IComparer { public FitnessComparer() { } public int Compare( object x, object y) { int returnValue = 0; if( ( x is IWithFitness ) && ( y is IWithFitness ) ) { if ( ((IWithFitness)x).Fitness > ((IWithFitness)y).Fitness ) returnValue = 1; else if ( ((IWithFitness) x).Fitness < ((IWithFitness) y).Fitness ) returnValue = -1; } else throw new ArgumentException( "Both objects to compare must be IWithFitness!" ); return returnValue; } } } |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:35:44
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/Fitness In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv4671 Added Files: IWithFitness.cs Log Message: Interface to be implemented by any object that exposes a Fitness --- NEW FILE: IWithFitness.cs --- /* QuantProject - Quantitative Finance Library IWithFitness.cs Copyright (C) 2006 Glauco Siliprandi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License 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; using System.Collections; namespace QuantProject.ADT.Optimizing.Fitness { /// <summary> /// Interface to be implemented by any object that exposes a Fitness /// </summary> public interface IWithFitness { double Fitness { get; } } } |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:35:09
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/Fitness In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv4248/Fitness Log Message: Directory /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/Fitness added to the repository |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:34:54
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv4212/b1_ADT/Optimizing/BruteForce Added Files: CombinationBasedBruteForceOptimizableParametersManager.cs Log Message: Abstract class to be inherited by those IBruteForceOptimizableParametersManager who are based on a single Combination to be scan through --- NEW FILE: CombinationBasedBruteForceOptimizableParametersManager.cs --- /* QuantProject - Quantitative Finance Library BruteForceOptimizer.cs Copyright (C) 2008 Glauco Siliprandi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License 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; using QuantProject.ADT.Statistics.Combinatorial; namespace QuantProject.ADT.Optimizing.BruteForce { /// <summary> /// Abstract class to be inherited by those IBruteForceOptimizableParametersManager /// who are based on a single Combination to be scan through /// </summary> public abstract class CombinationBasedBruteForceOptimizableParametersManager : IBruteForceOptimizableParametersManager { protected Combination combination; public int TotalIterations { get { return Convert.ToInt32( this.combination.TotalNumberOfCombinations ); } } public object Current { get { int[] currentValues = new int[ this.combination.Length ]; for ( int i = 0 ; i < this.combination.Length ; i ++ ) currentValues[ i ] = this.combination.GetValue( i ); BruteForceOptimizableParameters bruteForceOptimizableParameters = new BruteForceOptimizableParameters( currentValues , this ); return bruteForceOptimizableParameters; } } public CombinationBasedBruteForceOptimizableParametersManager( Combination combination ) { this.combination = combination; } public abstract object Decode( BruteForceOptimizableParameters bruteForceOptimizableParameters ); public abstract double GetFitnessValue( BruteForceOptimizableParameters bruteForceOptimizableParameters ); public bool MoveNext() { return this.combination.MoveNext(); } public void Reset() { this.combination.Reset(); } } } |
|
From: Glauco S. <gla...@us...> - 2008-03-26 00:34:06
|
Update of /cvsroot/quantproject/QuantProject/b1_ADT/Optimizing/BruteForce In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv3387/b1_ADT/Optimizing/BruteForce Added Files: BestParametersManager.cs Log Message: Keeps and manages the array of BruteForceOptimizableParameters that have the highest fitness --- NEW FILE: BestParametersManager.cs --- /* QuantProject - Quantitative Finance Library BestParametersManager.cs Copyright (C) 2006 Glauco Siliprandi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License 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; using QuantProject.ADT.Optimizing.Fitness; namespace QuantProject.ADT.Optimizing.BruteForce { /// <summary> /// Keeps and manages the array of BruteForceOptimizableParameters that /// have the highest fitness /// </summary> public class BestParametersManager { private int numberOfTopBestParametersToBeReturned; private int numberOfNonNullItemsInTopBestParameters; private int indexForTheCurrentCandidateToBeSwappedOut; private BruteForceOptimizableParameters[] topBestParameters; public BruteForceOptimizableParameters[] TopBestParameters { get { this.sortTopBestParameters(); return this.topBestParameters; } } /// <summary> /// Keeps and manages the array of BruteForceOptimizableParameters that /// have the highest fitness /// </summary> /// <param name="numberOfTopBestParametersToBeReturned">number of /// BruteForceOptimizableParameters that are going to be returned, as /// the ones with the highest fitness</param> public BestParametersManager( int numberOfTopBestParametersToBeReturned ) { this.numberOfTopBestParametersToBeReturned = numberOfTopBestParametersToBeReturned; this.topBestParameters = new BruteForceOptimizableParameters[ numberOfTopBestParametersToBeReturned ]; this.numberOfNonNullItemsInTopBestParameters = 0; this.indexForTheCurrentCandidateToBeSwappedOut = 0; } private void sortTopBestParameters() { // comment out the following three lines if you have an exception // in the Sort method and you want to break to the proper line // double fitness; // for ( int i = 0 ; i < this.topBestParameters.Length ; i++ ) // fitness = ((BruteForceOptimizableParameters) this.topBestParameters[ i ]).Fitness; FitnessComparer fitnessComparer = new FitnessComparer(); Array.Sort( this.topBestParameters , fitnessComparer ); } #region Analize private bool isBetterThanTheCurrentCandidateToBeSwappedOut( BruteForceOptimizableParameters bruteForceOptimizableParameters ) { bool isBetter = true; BruteForceOptimizableParameters currentCandidateToBeSwappedOut = this.topBestParameters[ this.indexForTheCurrentCandidateToBeSwappedOut ]; if ( currentCandidateToBeSwappedOut != null ) // the initialization phase has been complete: the first // this.numberOfTopBestParametersToBeKept items has been added to // this.topBestParameters isBetter = ( bruteForceOptimizableParameters.Fitness > currentCandidateToBeSwappedOut.Fitness ); return isBetter; } // true iif we are still in the initialization phase, when the // first this.numberOfTopBestParametersToBeReturned items have already // been added to this.topBestParameters private bool isStillTheInitializationPhase() { bool isStillInitialization = ( this.numberOfNonNullItemsInTopBestParameters < this.numberOfTopBestParametersToBeReturned ); return isStillInitialization; } private void update_numberOfNonNullItemsInTopBestParameters() { if ( this.isStillTheInitializationPhase() ) this.numberOfNonNullItemsInTopBestParameters++; } #region updateIndexForTheCurrentCandidateToBeSwappedOut private void updateIndexForTheCurrentCandidateToBeSwappedOut_ifTheCase( int indexForCurrentItemInTopBestParameters ) { BruteForceOptimizableParameters currentItemInTopBestParametes = this.topBestParameters[ indexForCurrentItemInTopBestParameters ]; if ( !this.isBetterThanTheCurrentCandidateToBeSwappedOut( currentItemInTopBestParametes ) ) // the current candidate to be swapped out is better (or equally good) // than the current item in this.topBestParameters // the current item becomes the candidate to be swapped out this.indexForTheCurrentCandidateToBeSwappedOut = indexForCurrentItemInTopBestParameters; } private int getIndexForTheWorstAmongTheBestParameters() { int indexForTheWorstAmongTheBestParameters = 0; for ( int indexForTheCurrentItemInTopBestParameters = 1 ; indexForTheCurrentItemInTopBestParameters < this.topBestParameters.Length ; indexForTheCurrentItemInTopBestParameters++ ) { BruteForceOptimizableParameters currentWorstAmongTheBestParameters = this.topBestParameters[ indexForTheWorstAmongTheBestParameters ]; BruteForceOptimizableParameters currentItemInTopBestParametes = this.topBestParameters[ indexForTheCurrentItemInTopBestParameters ]; if ( currentItemInTopBestParametes.Fitness < currentWorstAmongTheBestParameters.Fitness ) indexForTheWorstAmongTheBestParameters = indexForTheCurrentItemInTopBestParameters; } return indexForTheWorstAmongTheBestParameters; } private void updateIndexForTheCurrentCandidateToBeSwappedOut_afterTheInitializationPhase() { this.indexForTheCurrentCandidateToBeSwappedOut = this.getIndexForTheWorstAmongTheBestParameters(); } private void updateIndexForTheCurrentCandidateToBeSwappedOut() { // this.indexForTheCurrentCandidateToBeSwappedOut = 0; // int indexForCurrentItemInTopBestParameters = 1; // int indexForTheFirstNullItemInTopBestParameters = -1; if ( this.isStillTheInitializationPhase() ) this.indexForTheCurrentCandidateToBeSwappedOut = this.numberOfNonNullItemsInTopBestParameters; else // the initialization phase is complete: the first // this.numberOfTopBestParametersToBeReturned items have already // been added to this.topBestParameters this.updateIndexForTheCurrentCandidateToBeSwappedOut_afterTheInitializationPhase(); } #endregion updateIndexForTheCurrentCandidateToBeSwappedOut /// <summary> /// replaces the current candidate to be swapped out with the given /// bruteForceOptimizableParameters /// </summary> /// <param name="bruteForceOptimizableParameters"></param> private void replaceTheCurrentCandidateToBeSwappedOut( BruteForceOptimizableParameters bruteForceOptimizableParameters ) { this.topBestParameters[ this.indexForTheCurrentCandidateToBeSwappedOut ] = bruteForceOptimizableParameters; // this.topBestParameters[ 0 ] = // bruteForceOptimizableParameters; this.update_numberOfNonNullItemsInTopBestParameters(); this.updateIndexForTheCurrentCandidateToBeSwappedOut(); } /// <summary> /// Checks if bruteForceOptimizableParameters needs to be added to /// this.topBestParameters /// If it has to be added, then this.topBestParameters is managed /// accordingly /// </summary> /// <param name="bruteForceOptimizableParameters"></param> public void Analize( BruteForceOptimizableParameters bruteForceOptimizableParameters ) { if ( this.isBetterThanTheCurrentCandidateToBeSwappedOut( bruteForceOptimizableParameters ) ) this.replaceTheCurrentCandidateToBeSwappedOut( bruteForceOptimizableParameters ); // if ( this.numberOfMeaningfulItemsInTheArray < this.numberOfTopBestParametersToBeKept ) // // this.topBestParameters still contains less than // // this.numberOfTopBestParametersToBeReturned items. It means that we are still in // // the initializing phase, when the first this.numberOfTopBestParametersToBeReturned // // items are to be added to the topBestParameters // this.addWithoutSwappingOut( bruteForceOptimizableParameters ); // else // // the initializing phase is complete, that is the first // // this.numberOfTopBestParametersToBeReturned has already been added to // // this.topBestParameters // if ( this.lowestFitness() < bruteForceOptimizableParameters.Fitness ) // this.addSwappingOutTheLastOne( bruteForceOptimizableParameters ); } #endregion Handle } } |
|
From: Glauco S. <gla...@us...> - 2008-03-19 23:31:33
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv17528/b7_Scripts Modified Files: Scripts_SD.csproj Log Message: General\BasicScriptForBacktesting.cs has been added Index: Scripts_SD.csproj =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/Scripts_SD.csproj,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** Scripts_SD.csproj 16 Mar 2008 20:15:00 -0000 1.18 --- Scripts_SD.csproj 19 Mar 2008 23:31:28 -0000 1.19 *************** *** 50,53 **** --- 50,54 ---- <Compile Include="AssemblyInfo.cs" /> <Compile Include="EvaluatingOptimizationTechnique\TechnicalAnalysis\RunTestingOptimizationExtremeCounterTrend.cs" /> + <Compile Include="General\BasicScriptForBacktesting.cs" /> <Compile Include="General\Logging\LogArchiver.cs" /> <Compile Include="General\Logging\LogViewer.cs" /> |
|
From: Glauco S. <gla...@us...> - 2008-03-19 23:31:06
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/PairsTrading/Logging In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv17050/b7_Scripts/WalkForwardTesting/PairsTrading/Logging Modified Files: TesterForPairsTradingTestingPositions.cs Log Message: - first bug fixed: now each of the two positions' weight is given the proper sign - second bug fixed: the cash to start the second position is always positive, now (sometimes it happened to be negative, in the previous revision) Index: TesterForPairsTradingTestingPositions.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/PairsTrading/Logging/TesterForPairsTradingTestingPositions.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TesterForPairsTradingTestingPositions.cs 13 Mar 2008 19:33:14 -0000 1.1 --- TesterForPairsTradingTestingPositions.cs 19 Mar 2008 23:31:02 -0000 1.2 *************** *** 112,124 **** benchmark , cashToStart , maxRunningHours ); ! simpleStrategy.Account = endOfDayStrategyBackTester.Account; endOfDayStrategyBackTester.Run(); return endOfDayStrategyBackTester.AccountReport; } private WeightedPositions getWeightedPositions( WeightedPosition weightedPosition ) { ! double[] weights = { 1 }; string[] tickers = { weightedPosition.Ticker }; WeightedPositions weightedPositions = --- 112,134 ---- benchmark , cashToStart , maxRunningHours ); ! // simpleStrategy.Account = endOfDayStrategyBackTester.Account; endOfDayStrategyBackTester.Run(); return endOfDayStrategyBackTester.AccountReport; } + private double getWeightedPositions_getWeight( + WeightedPosition weightedPosition ) + { + double weight = 1; + if ( weightedPosition.IsShort ) + // the current WeightedPosition is short in the couple correlation + weight = -1; + return weight; + } private WeightedPositions getWeightedPositions( WeightedPosition weightedPosition ) { ! // double[] weights = { 1 }; ! double[] weights = { this.getWeightedPositions_getWeight( weightedPosition ) }; string[] tickers = { weightedPosition.Ticker }; WeightedPositions weightedPositions = *************** *** 159,164 **** historicalQuoteProvider , benchmark , ! 30000 * weightedPositions[ 1 ].Weight / ! weightedPositions[ 0 ].Weight ); Report report = --- 169,174 ---- historicalQuoteProvider , benchmark , ! Math.Abs( 30000 * weightedPositions[ 1 ].Weight / ! weightedPositions[ 0 ].Weight ) ); Report report = |