[Quantproject-developers] QuantProject/b4_Business/a2_Strategies SignedTicker.cs, 1.2, 1.3
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2006-06-29 17:51:35
|
Update of /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv20407/b4_Business/a2_Strategies Modified Files: SignedTicker.cs Log Message: - the GetCloseToClosePortfolioReturns static method has been added - the GetCloseToClosePortfolioReturn static method has been overloaded (to say the truth I don't remember if I ever tested this new method...) Index: SignedTicker.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b4_Business/a2_Strategies/SignedTicker.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SignedTicker.cs 14 May 2006 18:40:24 -0000 1.2 --- SignedTicker.cs 29 Jun 2006 17:51:31 -0000 1.3 *************** *** 22,25 **** --- 22,26 ---- using System; + using System.Collections; using QuantProject.Business.DataProviders; *************** *** 190,213 **** } ! /// <summary> ! /// Gets portfolio's return for a given period, for given tickers ! /// </summary> ! /// <param name="signedTickers">Array of signed tickers that compose the portfolio (each ticker has the same weight)</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, ! 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> /// Changes sign of each ticker contained in the given /// array of signed tickers --- 191,299 ---- } ! /// <summary> ! /// Gets portfolio's return for a given period, for given tickers ! /// </summary> ! /// <param name="signedTickers">Array of signed tickers that compose the portfolio (each ticker has the same weight)</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, ! 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 ) ! { ! string[] signedTickersArray = new string[ signedTickers.Count ]; ! int i = 0; ! foreach( string signedTicker in signedTickers ) ! { ! signedTickersArray[ i ] = signedTicker; ! i++; ! } ! return signedTickersArray; ! } ! private static string[] getSignedTickerArray ( ICollection signedTickers ) ! { ! string[] signedTickerArray = new string[ signedTickers.Count ]; ! int i = 0; ! foreach( string signedTicker in signedTickers ) ! { ! signedTickerArray[ i ] = signedTicker; ! i++; ! } ! return signedTickerArray; ! } ! #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(); ! double previousQuote = historicalQuoteProvider.GetMarketValue( ticker , ! new EndOfDayDateTime( previousDate , EndOfDaySpecificTime.MarketClose ) ); ! double currentQuote = historicalQuoteProvider.GetMarketValue( ticker , ! new EndOfDayDateTime( currentDate , EndOfDaySpecificTime.MarketClose ) ); ! double closeToCloseReturn = currentQuote / previousQuote - 1.0; ! return closeToCloseReturn; ! } ! private static double getMultiplier( string signedTicker ) ! { ! double multiplier = 1.0; ! if ( IsShort( signedTicker ) ) ! multiplier = -multiplier; ! return multiplier; ! } ! private static double getCloseToClosePortfolioReturn( ! string[] signedTickers , DateTime[] datesForReturnComputation , int i ) ! { ! double dailyReturn = 0.0; ! foreach ( String signedTicker in signedTickers ) ! dailyReturn += getMultiplier( signedTicker ) * ! getCloseToCloseReturn( GetTicker( signedTicker ) , ! datesForReturnComputation , i ) / ! signedTickers.Length; // every position is considered with same weight ! return dailyReturn; ! } ! 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( ! signedTickers , datesForReturnComputation , i ); ! return closeToClosePortfolioReturns; ! } ! /// <summary> ! /// Gets portfolio's return for a given period, for given tickers ! /// </summary> ! /// <param name="signedTickers">ICollection of signed tickers that compose the portfolio (each ticker has the same weight)</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[] GetCloseToClosePortfolioReturns( ! ICollection signedTickers, DateTime firstDate, DateTime lastDate ) ! { ! string[] signedTickerArray = ! getSignedTickerArray( signedTickers ); ! DateTime[] datesForReturnComputation = Quotes.GetMarketDays( ! GetTicker( signedTickerArray[ 0 ] ), firstDate , lastDate ); ! return getCloseToClosePortfolioReturns( signedTickerArray , ! datesForReturnComputation ); ! } ! #endregion ! ! /// <summary> /// Changes sign of each ticker contained in the given /// array of signed tickers |