[Quantproject-developers] QuantProject/b7_Scripts/TickerSelectionTesting/DrivenBySharpeRatio/InSamp
Brought to you by:
glauco_1
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/TickerSelectionTesting/DrivenBySharpeRatio/InSampleChoosers/BruteForce
In directory vz-cvs-3.sog:/tmp/cvs-serv21790/InSampleChoosers/BruteForce
Added Files:
DrivenBySharpeRatioBruteForceChooser.cs
DrivenBySharpeROptimizableParametersManager.cs
Log Message:
Added script files for BruteForce optimization
--- NEW FILE: DrivenBySharpeRatioBruteForceChooser.cs ---
/*
QuantProject - Quantitative Finance Library
DrivenBySharpeRatioBruteForceChooser.cs
Copyright (C) 2011
Marco Milletti
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.Genetic;
using QuantProject.ADT.Optimizing.BruteForce;
using QuantProject.Business.Strategies;
using QuantProject.Business.DataProviders;
using QuantProject.Business.Strategies.Optimizing.FitnessEvaluation;
using QuantProject.Business.Strategies.Optimizing.Decoding;
using QuantProject.Business.Strategies.Eligibles;
using QuantProject.Business.Strategies.InSample;
using QuantProject.Business.Strategies.ReturnsManagement;
using QuantProject.Business.Strategies.OutOfSample;
using QuantProject.Business.Strategies.Optimizing.GenomeManagers;
using QuantProject.Scripts.TickerSelectionTesting.EfficientPortfolios;
namespace QuantProject.Scripts.TickerSelectionTesting.DrivenBySharpeRatio.InSampleChoosers.BruteForce
{
/// <summary>
/// brute force IInSampleChooser with End Of Day data for the strategy
/// driven by SharpeRatio
/// </summary>
[Serializable]
public class DrivenBySharpeRatioBruteForceChooser : BruteForceChooser
{
private int numberOfPortfolioPositions;
private PortfolioType portfolioType;
public DrivenBySharpeRatioBruteForceChooser( PortfolioType portfolioType,
int numberOfPortfolioPositions , int numberOfBestTestingPositionsToBeReturned ,
Benchmark benchmark ,
IDecoderForTestingPositions decoderForTestingPositions ,
IFitnessEvaluator fitnessEvaluator ,
HistoricalMarketValueProvider historicalMarketValueProvider) :
base (
numberOfBestTestingPositionsToBeReturned ,
decoderForTestingPositions ,
fitnessEvaluator )
{
this.portfolioType = portfolioType;
this.numberOfPortfolioPositions = numberOfPortfolioPositions;
}
protected override IBruteForceOptimizableParametersManager
getBruteForceOptimizableParametersManager(
EligibleTickers eligibleTickers ,
ReturnsManager returnsManager )
{
IBruteForceOptimizableParametersManager parametersManager;
parametersManager = new DrivenBySharpeROptimizableParametersManager(
eligibleTickers ,
this.numberOfPortfolioPositions ,
this.decoderForTestingPositions ,
this.fitnessEvaluator ,
returnsManager );
return parametersManager;
}
}
}
--- NEW FILE: DrivenBySharpeROptimizableParametersManager.cs ---
/*
QuantProject - Quantitative Finance Library
DrivenBySharpeROptimizableParametersManager.cs
Copyright (C) 2011
Marco Milletti
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.ADT.Statistics.Combinatorial;
using QuantProject.Business.Strategies.Eligibles;
using QuantProject.Business.Strategies.Optimizing.BruteForce;
using QuantProject.Business.Strategies.Optimizing.Decoding;
using QuantProject.Business.Strategies.Optimizing.FitnessEvaluation;
using QuantProject.Business.Strategies.OutOfSample;
using QuantProject.Business.Strategies.ReturnsManagement;
using QuantProject.Scripts.TickerSelectionTesting.EfficientPortfolios;
namespace QuantProject.Scripts.TickerSelectionTesting.DrivenBySharpeRatio.InSampleChoosers.BruteForce
{
/// <summary>
/// BruteForceOptimizableParametersManager to be used by the
/// driven by sharpe ratio strategy.
/// </summary>
[Serializable]
public class DrivenBySharpeROptimizableParametersManager :
CombinationBasedBruteForceOptimizableParametersManager
{
private EligibleTickers eligibleTickers;
private int numberOfPositions;
private IDecoderForTestingPositions decoderForTestingPositions;
private IFitnessEvaluator fitnessEvaluator;
private ReturnsManager returnsManager;
public DrivenBySharpeROptimizableParametersManager(
EligibleTickers eligibleTickers ,
int numberOfPositions ,
IDecoderForTestingPositions decoderForTestingPositions ,
IFitnessEvaluator fitnessEvaluator ,
ReturnsManager returnsManager ) :
base( new Combination(
0 , eligibleTickers.Count - 1 ,
numberOfPositions ) )
{
this.eligibleTickers = eligibleTickers;
this.numberOfPositions = numberOfPositions;
this.decoderForTestingPositions = decoderForTestingPositions;
this.fitnessEvaluator = fitnessEvaluator;
this.returnsManager = returnsManager;
}
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;
}
#region AreEquivalentAsTopBestParameters
private void areEquivalentAsTopBestParameters_checkParameters(
BruteForceOptimizableParameters bruteForceOptimizableParameters1 ,
BruteForceOptimizableParameters bruteForceOptimizableParameters2 )
{
if ( !(bruteForceOptimizableParameters1.Meaning is TestingPositions) )
throw new Exception( "The first parameter is expected " +
"to represent a TestingPositions!" );
if ( !(bruteForceOptimizableParameters2.Meaning is TestingPositions) )
throw new Exception( "The second parameter is expected " +
"to represent a TestingPositions!" );
}
public override bool AreEquivalentAsTopBestParameters(
BruteForceOptimizableParameters bruteForceOptimizableParameters1 ,
BruteForceOptimizableParameters bruteForceOptimizableParameters2 )
{
this.areEquivalentAsTopBestParameters_checkParameters(
bruteForceOptimizableParameters1 , bruteForceOptimizableParameters2 );
bool areEquivalentAsTopBestParameters =
((TestingPositions)bruteForceOptimizableParameters1.Meaning ).HashCode ==
((TestingPositions)bruteForceOptimizableParameters2.Meaning ).HashCode;
return areEquivalentAsTopBestParameters;
}
#endregion AreEquivalentAsTopBestParameters
}
}
|