[Quantproject-developers] QuantProject/b4_Business/a2_Strategies WeightedPositions.cs, 1.9, 1.10
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2007-10-07 13:20:43
|
Update of /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv2682/b4_Business/a2_Strategies Modified Files: WeightedPositions.cs Log Message: The GetReturns( ReturnsManager returnsManager ) method has been speed up (about 6 times faster now): several nested method calls have been replaced by a longer method, performing direct fast operations on arrays. Index: WeightedPositions.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies/WeightedPositions.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** WeightedPositions.cs 23 Sep 2007 21:54:57 -0000 1.9 --- WeightedPositions.cs 7 Oct 2007 13:20:37 -0000 1.10 *************** *** 394,414 **** #endregion #region GetBalancedWeights ! private static float[][] getTickerCloseToCloseReturnsForSignedTickers( ! string[] signedTickers , DateTime firstDate , DateTime lastDate ) ! { ! float[][] tickerReturns = new float[ signedTickers.Length ][]; ! for ( int i = 0 ; i < signedTickers.Length ; i++ ) ! { ! string ticker = SignedTicker.GetTicker( signedTickers[ i ] ); ! tickerReturns[ i ] = Quotes.GetArrayOfCloseToCloseRatios( ! ticker , firstDate , lastDate ); ! } ! return tickerReturns; ! } private static float getTickerReturnsStandardDeviations( int tickerIndex , SignedTickers signedTickers , ReturnsManager returnsManager ) { string ticker = signedTickers[ tickerIndex ].Ticker; ! return returnsManager.GetReturnsStandardDeviation( ticker ); } private static float[] getTickersReturnsStandardDeviations( --- 394,416 ---- #endregion #region GetBalancedWeights ! // private static float[][] getTickerCloseToCloseReturnsForSignedTickers( ! // string[] signedTickers , DateTime firstDate , DateTime lastDate ) ! // { ! // float[][] tickerReturns = new float[ signedTickers.Length ][]; ! // for ( int i = 0 ; i < signedTickers.Length ; i++ ) ! // { ! // string ticker = SignedTicker.GetTicker( signedTickers[ i ] ); ! // tickerReturns[ i ] = Quotes.GetArrayOfCloseToCloseRatios( ! // ticker , firstDate , lastDate ); ! // } ! // return tickerReturns; ! // } private static float getTickerReturnsStandardDeviations( int tickerIndex , SignedTickers signedTickers , ReturnsManager returnsManager ) { string ticker = signedTickers[ tickerIndex ].Ticker; ! float returnsStandardDeviation = ! returnsManager.GetReturnsStandardDeviation( ticker ); ! return returnsStandardDeviation; } private static float[] getTickersReturnsStandardDeviations( *************** *** 519,544 **** return tickerReturn * Convert.ToSingle( weightedPosition.Weight ); - - // 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 ); - // Aggiungi!!! weightedPositions.GetReturns( this.closeToCloseReturnsManager ) - // 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 float getReturnActually( int i , ReturnsManager returnsManager ) --- 521,524 ---- *************** *** 560,564 **** { this.getReturnCheckParameters( i , returnsManager ); ! return getReturnActually( i , returnsManager ); } #endregion GetReturn --- 540,545 ---- { this.getReturnCheckParameters( i , returnsManager ); ! float currentReturn = this.getReturnActually( i , returnsManager ); ! return currentReturn; } #endregion GetReturn *************** *** 573,578 **** float[] returns = new float[ returnsManager.ReturnIntervals.Count ]; ! for ( int i = 0 ; i < returnsManager.NumberOfReturns ; i++ ) ! returns[ i ] = this.GetReturn( i , returnsManager ); return returns; } --- 554,580 ---- float[] returns = new float[ returnsManager.ReturnIntervals.Count ]; ! ! ! // weights[] is set to avoid several double to float conversions ! float[] weights = new float[ this.Count ]; ! float[][] tickersReturns = new float[ this.Count ][]; ! for ( int positionIndex = 0 ; positionIndex < this.Count ; positionIndex++ ) ! { ! weights[ positionIndex ] = ! Convert.ToSingle( ((WeightedPosition)(this[ positionIndex ])).Weight ); ! tickersReturns[ positionIndex ] = returnsManager.GetReturns( ! ((WeightedPosition)(this[ positionIndex ])).Ticker ); ! } ! ! for ( int intervalIndex = 0 ; ! intervalIndex < returnsManager.NumberOfReturns ; intervalIndex++ ) ! { ! returns[ intervalIndex ] = 0; ! for ( int positionIndex = 0 ; positionIndex < this.Count ; ! positionIndex++ ) ! returns[ intervalIndex ] += ! tickersReturns[ positionIndex ][ intervalIndex ] * ! weights[ positionIndex ]; ! } return returns; } |