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;
}
|