[Quantproject-developers] QuantProject/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOs
Brought to you by:
glauco_1
|
From: Marco M. <mi...@us...> - 2008-04-08 21:53:10
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOscillators/PortfolioValueOscillator/InSampleChoosers In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv8692/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOscillators/PortfolioValueOscillator/InSampleChoosers Modified Files: PVO_CTCCorrelationChooser.cs PVO_OTCCorrelationChooser.cs PVOCorrelationChooser.cs Log Message: Minor changes for IInSampleChoosers based on Correlation (for the PVO strategy) Index: PVO_OTCCorrelationChooser.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOscillators/PortfolioValueOscillator/InSampleChoosers/PVO_OTCCorrelationChooser.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** PVO_OTCCorrelationChooser.cs 12 Mar 2008 22:04:43 -0000 1.1 --- PVO_OTCCorrelationChooser.cs 8 Apr 2008 21:53:03 -0000 1.2 *************** *** 43,46 **** --- 43,51 ---- public class PVO_OTCCorrelationChooser : PVOCorrelationChooser { + private float minimumAbsoluteReturnValue; + private float maximumAbsoluteReturnValue; + //correlation is computed only for returns + //between minimum and maximum + /// <summary> /// PVO_OTCCorrelationChooser to be used for *************** *** 51,58 **** /// AnalyzeInSample method will return /// </param> ! public PVO_OTCCorrelationChooser(int numberOfBestTestingPositionsToBeReturned) : ! base(numberOfBestTestingPositionsToBeReturned,1) { ! } --- 56,71 ---- /// AnalyzeInSample method will return /// </param> ! public PVO_OTCCorrelationChooser(int numberOfBestTestingPositionsToBeReturned, ! double maxCorrelationValue, ! bool balancedWeightsOnVolatilityBase, ! float minimumAbsoluteReturnValue, ! float maximumAbsoluteReturnValue) : ! base(numberOfBestTestingPositionsToBeReturned, ! 1, ! maxCorrelationValue, ! balancedWeightsOnVolatilityBase) { ! this.minimumAbsoluteReturnValue = minimumAbsoluteReturnValue; ! this.maximumAbsoluteReturnValue = maximumAbsoluteReturnValue; } *************** *** 62,66 **** this.correlationProvider = new OpenToCloseCorrelationProvider(eligibleTickers.Tickers, returnsManager, ! 0.0001f, 0.5f); } } --- 75,80 ---- this.correlationProvider = new OpenToCloseCorrelationProvider(eligibleTickers.Tickers, returnsManager, ! this.minimumAbsoluteReturnValue , ! this.maximumAbsoluteReturnValue); } } Index: PVOCorrelationChooser.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOscillators/PortfolioValueOscillator/InSampleChoosers/PVOCorrelationChooser.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PVOCorrelationChooser.cs 1 Apr 2008 21:34:52 -0000 1.3 --- PVOCorrelationChooser.cs 8 Apr 2008 21:53:06 -0000 1.4 *************** *** 49,52 **** --- 49,55 ---- protected int numberOfBestTestingPositionsToBeReturned; protected int numDaysForOscillatingPeriod; + protected double maxCorrelationValue; + //correlations greater than this value are discarded + protected bool balancedWeightsOnVolatilityBase; public virtual string Description *************** *** 57,61 **** this.correlationProvider.GetType().ToString() + "\n" + "NumOfTickersReturned:\n" + ! this.numberOfBestTestingPositionsToBeReturned.ToString(); return description; } --- 60,67 ---- this.correlationProvider.GetType().ToString() + "\n" + "NumOfTickersReturned:\n" + ! this.numberOfBestTestingPositionsToBeReturned.ToString() + ! "MaxCorrelationValue: " + ! this.maxCorrelationValue.ToString(); ! return description; } *************** *** 70,83 **** /// AnalyzeInSample method will return /// </param> ! /// /// <param name="numDaysForOscillatingPeriod"> /// Interval's length of the return for the PVOPosition /// to be checked out of sample, in order to update the /// status for the PVOPosition itself /// </param> public PVOCorrelationChooser(int numberOfBestTestingPositionsToBeReturned, ! int numDaysForOscillatingPeriod) { this.numberOfBestTestingPositionsToBeReturned = numberOfBestTestingPositionsToBeReturned; this.numDaysForOscillatingPeriod = numDaysForOscillatingPeriod; } --- 76,97 ---- /// AnalyzeInSample method will return /// </param> ! /// <param name="numDaysForOscillatingPeriod"> /// Interval's length of the return for the PVOPosition /// to be checked out of sample, in order to update the /// status for the PVOPosition itself /// </param> + /// <param name="maxCorrelationValue"> + /// Correlations higher than given maxCorrelationValue are discarded + /// (for avoiding analyzing tickers corresponding to the same stock) + /// </param> public PVOCorrelationChooser(int numberOfBestTestingPositionsToBeReturned, ! int numDaysForOscillatingPeriod, ! double maxCorrelationValue, ! bool balancedWeightsOnVolatilityBase) { this.numberOfBestTestingPositionsToBeReturned = numberOfBestTestingPositionsToBeReturned; this.numDaysForOscillatingPeriod = numDaysForOscillatingPeriod; + this.maxCorrelationValue = maxCorrelationValue; + this.balancedWeightsOnVolatilityBase = balancedWeightsOnVolatilityBase; } *************** *** 91,94 **** --- 105,110 ---- "only " + eligibleTickers.Count + " elements, while NumberOfDrivingPositions is 2"); + if (this.maxCorrelationValue < 0.50 || this.maxCorrelationValue > 1.0 ) + throw new OutOfRangeException( "maxCorrelationValue", 0.5, 1.0); } *************** *** 96,101 **** ReturnsManager returnsManager); ! protected PVOPositions getTestingPositions(WeightedPositions weightedPositions) { return new PVOPositions(weightedPositions, 0.0, 0.0, this.numDaysForOscillatingPeriod ); --- 112,126 ---- ReturnsManager returnsManager); ! protected PVOPositions getTestingPositions(SignedTickers signedTickers, ! ReturnsManager returnsManager) { + WeightedPositions weightedPositions; + if(this.balancedWeightsOnVolatilityBase == true) + weightedPositions = + new WeightedPositions(WeightedPositions.GetBalancedWeights(signedTickers, returnsManager), + signedTickers.Tickers); + else//just equal weights + weightedPositions = new WeightedPositions(signedTickers); + return new PVOPositions(weightedPositions, 0.0, 0.0, this.numDaysForOscillatingPeriod ); *************** *** 111,123 **** TickersPearsonCorrelation[] correlations = this.correlationProvider.GetOrderedTickersPearsonCorrelations(); ! for(int i = 0; i<this.numberOfBestTestingPositionsToBeReturned; i++) { ! SignedTickers signedTickers = ! new SignedTickers("-"+correlations[correlations.Length - 1 -i].FirstTicker + ";" + ! correlations[correlations.Length - 1 -i].SecondTicker); ! WeightedPositions weightedPositions = new WeightedPositions(signedTickers); ! bestTestingPositions[i] = this.getTestingPositions(weightedPositions); ! ((PVOPositions)bestTestingPositions[i]).FitnessInSample = ! correlations[correlations.Length - 1 -i].CorrelationValue; } return bestTestingPositions; --- 136,155 ---- TickersPearsonCorrelation[] correlations = this.correlationProvider.GetOrderedTickersPearsonCorrelations(); ! int addedTestingPositions = 0; ! int counter = 0; ! while(addedTestingPositions < this.numberOfBestTestingPositionsToBeReturned && ! counter < correlations.Length) { ! if(correlations[correlations.Length - 1 - counter].CorrelationValue < this.maxCorrelationValue) ! { ! SignedTickers signedTickers = ! new SignedTickers("-"+correlations[correlations.Length - 1 - counter].FirstTicker + ";" + ! correlations[correlations.Length - 1 - counter].SecondTicker); ! bestTestingPositions[addedTestingPositions] = this.getTestingPositions(signedTickers, returnsManager); ! ((PVOPositions)bestTestingPositions[addedTestingPositions]).FitnessInSample = ! correlations[correlations.Length - 1 - counter].CorrelationValue; ! addedTestingPositions++; ! } ! counter++; } return bestTestingPositions; Index: PVO_CTCCorrelationChooser.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/TechnicalAnalysisTesting/Oscillators/FixedLevelOscillators/PortfolioValueOscillator/InSampleChoosers/PVO_CTCCorrelationChooser.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** PVO_CTCCorrelationChooser.cs 12 Mar 2008 22:04:42 -0000 1.1 --- PVO_CTCCorrelationChooser.cs 8 Apr 2008 21:53:03 -0000 1.2 *************** *** 52,58 **** /// </param> public PVO_CTCCorrelationChooser(int numberOfBestTestingPositionsToBeReturned, ! int closeToCloseReturnIntervalLength) : base(numberOfBestTestingPositionsToBeReturned, ! closeToCloseReturnIntervalLength) { --- 52,62 ---- /// </param> public PVO_CTCCorrelationChooser(int numberOfBestTestingPositionsToBeReturned, ! int closeToCloseReturnIntervalLength, ! double maxCorrelationValue, ! bool balancedWeightsOnVolatilityBase) : base(numberOfBestTestingPositionsToBeReturned, ! closeToCloseReturnIntervalLength, ! maxCorrelationValue, ! balancedWeightsOnVolatilityBase) { |