[Quantproject-developers] QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagDebugger/WF
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2006-05-14 21:23:59
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagDebugger/WFLagDebugPositions In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv26352/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagDebugger/WFLagDebugPositions Modified Files: WFLagDebugPositions.cs Log Message: Equity line for driving positions is computed, now. Index: WFLagDebugPositions.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagDebugger/WFLagDebugPositions/WFLagDebugPositions.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** WFLagDebugPositions.cs 8 Apr 2006 18:15:38 -0000 1.1 --- WFLagDebugPositions.cs 14 May 2006 21:23:56 -0000 1.2 *************** *** 22,29 **** --- 22,32 ---- using System; + using System.Collections; using QuantProject.Business.DataProviders; using QuantProject.Business.Financial.Accounting; using QuantProject.Business.Financial.Ordering; + using QuantProject.Business.Financial.Accounting.Reporting; + using QuantProject.Business.Strategies; using QuantProject.Business.Timing; using QuantProject.Presentation.Reporting.WindowsForm; *************** *** 110,113 **** --- 113,179 ---- this.account.AddCash( 30000 ); } + #region getEquityLineForDrivingPositions + + /// <summary> + /// Returns a virtual amount of quantities for each virtual ticker. + /// Non integer values can be returned also, that's why we call + /// them virtual quantities + /// </summary> + /// <returns></returns> + private Hashtable getDrivingTickersVirtualQuantities( + DateTime dateTime ) + { + Hashtable drivingTickersVirtualQuantities = new Hashtable(); + double valueForEachPosition = 30000 / + this.wFLagChosenPositions.DrivingPositions.Count; + foreach( string signedTicker in + this.wFLagChosenPositions.DrivingPositions.Keys ) + { + string ticker = SignedTicker.GetTicker( signedTicker ); + EndOfDayDateTime endOfDayDateTime = + new EndOfDayDateTime( dateTime , EndOfDaySpecificTime.MarketClose ); + double tickerQuote = + this.historicalQuoteProvider.GetMarketValue( + ticker , endOfDayDateTime ); + double virtualQuantity = valueForEachPosition / tickerQuote; + drivingTickersVirtualQuantities.Add( ticker , virtualQuantity ); + } + return drivingTickersVirtualQuantities; + } + private double getEquityLineForDrivingPositions( DateTime dateTime , + Hashtable tickerVirtualQuantities ) + { + double equityValueForDrivingPositions = 30000; + foreach( string ticker in tickerVirtualQuantities ) + { + EndOfDayDateTime endOfDayDateTime = new EndOfDayDateTime( + dateTime , EndOfDaySpecificTime.MarketClose ); + double tickerQuote = this.historicalQuoteProvider.GetMarketValue( + ticker , endOfDayDateTime ); + double virtualQuantity = (double)tickerVirtualQuantities[ ticker ]; + equityValueForDrivingPositions += virtualQuantity * tickerQuote; + } + return equityValueForDrivingPositions; + } + private EquityLine getEquityLineForDrivingPositions( + Report report ) + { + EquityLine equityLineForPortfolioPositions = + report.AccountReport.EquityLine; + EquityLine equityLineForDrivingPositions = + new EquityLine(); + Hashtable drivingTickerQuantities = + this.getDrivingTickersVirtualQuantities( + (DateTime)equityLineForPortfolioPositions.GetKey( 0 ) ); + foreach( DateTime dateTime in equityLineForPortfolioPositions ) + equityLineForDrivingPositions.Add( dateTime , + this.getEquityLineForDrivingPositions( dateTime , + drivingTickerQuantities ) ); + // double normalizingFactor = + // ( double )equityLineForPortfolioPositions.GetByIndex( 0 ) / + // ( double )equityLineForDrivingPositions.GetByIndex( 0 ); + return equityLineForDrivingPositions; + } + #endregion public void oneHourAfterMarketCloseEventHandler( Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) *************** *** 123,126 **** --- 189,195 ---- EndOfDaySpecificTime.OneHourAfterMarketClose ) , this.benchmark ); + EquityLine equityLineForDrivingPositions = + this.getEquityLineForDrivingPositions( report ); + // report.AddEquityLine( equityLineForDrivingPositions ); report.Show(); } |