[Quantproject-developers] QuantProject/b4_Business/a2_Strategies SignedTicker.cs, 1.4, 1.5
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2006-07-22 20:50:19
|
Update of /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv7429/b4_Business/a2_Strategies Modified Files: SignedTicker.cs Log Message: - the GetCloseToClosePortfolioReturn method has been added, to compute the close to close portfolio return using a given a SortedList commonMarketDays to select the dates to be used for the calculation - the same method above has been overloaded to use weights also Index: SignedTicker.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies/SignedTicker.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SignedTicker.cs 2 Jul 2006 19:04:49 -0000 1.4 --- SignedTicker.cs 22 Jul 2006 20:50:16 -0000 1.5 *************** *** 197,213 **** /// <param name="startDate">Start date for the period for which return has to be computed</param> /// <param name="endDate">End date for the period for which return has to be computed</param> ! public static double GetCloseToClosePortfolioReturn(string[] signedTickers, ! DateTime startDate, ! DateTime endDate ) ! { ! double[] tickersWeights = new double[signedTickers.Length]; ! for(int i = 0; i<signedTickers.Length; i++) ! tickersWeights[i] = 1.0/signedTickers.Length; ! return GetCloseToClosePortfolioReturn( signedTickers,tickersWeights, startDate, endDate); } private static string[] getSignedTickersArray( ICollection signedTickers ) { --- 197,260 ---- /// <param name="startDate">Start date for the period for which return has to be computed</param> /// <param name="endDate">End date for the period for which return has to be computed</param> ! public static double GetCloseToClosePortfolioReturn(string[] signedTickers, ! DateTime startDate, ! DateTime endDate ) ! { ! double[] tickersWeights = new double[signedTickers.Length]; ! for(int i = 0; i<signedTickers.Length; i++) ! tickersWeights[i] = 1.0/signedTickers.Length; ! return GetCloseToClosePortfolioReturn( signedTickers,tickersWeights, startDate, endDate); } + /// <summary> + /// Gets portfolio's return for a given period, for given tickers + /// </summary> + /// <param name="signedTickers">Array of signed tickers that compose the portfolio</param> + /// <param name="tickersWeights">Array of weights for tickers - the same order has to be provided!</param> + /// <param name="startDate">Start date for the period for which return has to be computed</param> + /// <param name="endDate">End date for the period for which return has to be computed</param> + public static double GetCloseToClosePortfolioReturn( string[] signedTickers , + double[] tickersWeights , + SortedList commonMarketDays ) + { + double returnValue = 0.0; + Quotes[] tickersQuotes = new Quotes[ signedTickers.Length ]; + for( int i = 0 ; i < signedTickers.Length ; i++ ) + { + tickersQuotes[ i ] = + new Quotes( SignedTicker.GetTicker( (string)signedTickers[ i ] ) , + commonMarketDays ); + } + double[] returns = new double[ tickersQuotes[0].Rows.Count ]; + getCloseToClosePortfolioReturn_setReturns( returns , signedTickers , + tickersWeights , tickersQuotes); + for( int i = 0 ; i < returns.Length ; i++ ) + returnValue = (1.0+returnValue) * returns[i]; + + return returnValue; + } + + /// <summary> + /// Gets portfolio's return, for the given tickers, considering only + /// the market days contained in commonMarketDays + /// </summary> + /// <param name="signedTickers"></param> + /// <param name="commonMarketDays"></param> + /// <returns></returns> + public static double GetCloseToClosePortfolioReturn( + string[] signedTickers, + SortedList commonMarketDays ) + { + double[] tickersWeights = new double[signedTickers.Length]; + for(int i = 0; i<signedTickers.Length; i++) + tickersWeights[i] = 1.0/signedTickers.Length; + + return GetCloseToClosePortfolioReturn( + signedTickers , tickersWeights , commonMarketDays ); + } + private static string[] getSignedTickersArray( ICollection signedTickers ) { *************** *** 234,241 **** #region GetCloseToClosePortfolioReturns private static double getCloseToCloseReturn( string ticker , ! DateTime[] datesForReturnComputation , int i ) { ! DateTime previousDate = datesForReturnComputation[ i ]; ! DateTime currentDate = datesForReturnComputation[ i + 1 ]; HistoricalAdjustedQuoteProvider historicalQuoteProvider = new HistoricalAdjustedQuoteProvider(); --- 281,289 ---- #region GetCloseToClosePortfolioReturns private static double getCloseToCloseReturn( string ticker , ! SortedList datesForReturnComputation , int i ) { ! DateTime previousDate = (DateTime)datesForReturnComputation.GetByIndex( i ); ! DateTime currentDate = ! (DateTime)datesForReturnComputation.GetByIndex( i + 1 ); HistoricalAdjustedQuoteProvider historicalQuoteProvider = new HistoricalAdjustedQuoteProvider(); *************** *** 255,259 **** } private static double getCloseToClosePortfolioReturn( ! string[] signedTickers , DateTime[] datesForReturnComputation , int i ) { double dailyReturn = 0.0; --- 303,307 ---- } private static double getCloseToClosePortfolioReturn( ! string[] signedTickers , SortedList datesForReturnComputation , int i ) { double dailyReturn = 0.0; *************** *** 266,275 **** } private static double[] getCloseToClosePortfolioReturns( ! string[] signedTickers , DateTime[] datesForReturnComputation ) { // the return for first DateTime cannot be computed so the returned // array will have one element less the datesForReturnComputation double[] closeToClosePortfolioReturns = ! new double[ datesForReturnComputation.Length - 1 ]; for ( int i=0 ; i < closeToClosePortfolioReturns.Length ; i++ ) closeToClosePortfolioReturns[ i ] = getCloseToClosePortfolioReturn( --- 314,323 ---- } private static double[] getCloseToClosePortfolioReturns( ! string[] signedTickers , SortedList datesForReturnComputation ) { // the return for first DateTime cannot be computed so the returned // array will have one element less the datesForReturnComputation double[] closeToClosePortfolioReturns = ! new double[ datesForReturnComputation.Count - 1 ]; for ( int i=0 ; i < closeToClosePortfolioReturns.Length ; i++ ) closeToClosePortfolioReturns[ i ] = getCloseToClosePortfolioReturn( *************** *** 277,280 **** --- 325,336 ---- return closeToClosePortfolioReturns; } + private static double[] getCloseToClosePortfolioReturns( + ICollection signedTickers, SortedList datesForReturnComputation ) + { + string[] signedTickerArray = + getSignedTickerArray( signedTickers ); + return getCloseToClosePortfolioReturns( signedTickerArray , + datesForReturnComputation ); + } /// <summary> /// Gets portfolio's return for a given period, for given tickers *************** *** 286,295 **** ICollection signedTickers, DateTime firstDate, DateTime lastDate ) { ! string[] signedTickerArray = ! getSignedTickerArray( signedTickers ); ! DateTime[] datesForReturnComputation = Quotes.GetMarketDays( ! GetTicker( signedTickerArray[ 0 ] ), firstDate , lastDate ); ! return getCloseToClosePortfolioReturns( signedTickerArray , ! datesForReturnComputation ); } #endregion --- 342,362 ---- ICollection signedTickers, DateTime firstDate, DateTime lastDate ) { ! SortedList datesForReturnComputation = Quotes.GetCommonMarketDays( ! signedTickers , firstDate , lastDate ); ! return GetCloseToClosePortfolioReturns( ! signedTickers , datesForReturnComputation ); ! } ! /// <summary> ! /// Gets portfolio's return (for given signed tickers) computed on the ! /// market days contained in commonMarketDays ! /// </summary> ! /// <param name="signedTickers"></param> ! /// <param name="commonMarketDays">SortedList of DateTime objects</param> ! /// <returns></returns> ! public static double[] GetCloseToClosePortfolioReturns( ! ICollection signedTickers, SortedList commonMarketDays ) ! { ! return ! getCloseToClosePortfolioReturns( signedTickers , commonMarketDays ); } #endregion |