[Quantproject-developers] QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagDebugger/WF
Brought to you by:
glauco_1
|
From: Glauco S. <gla...@us...> - 2006-05-31 14:19:57
|
Update of /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagDebugger/WFLagDebugPositions In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv6293/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagDebugger/WFLagDebugPositions Modified Files: WFLagDebugPositions.cs Log Message: Now, equity line for both driving positions (green line) and portfolio positions (brown line) are added to the report chart. Index: WFLagDebugPositions.cs =================================================================== RCS file: /cvsroot/quantproject/QuantProject/b7_Scripts/WalkForwardTesting/WalkForwardLag/WFLagDebugger/WFLagDebugPositions/WFLagDebugPositions.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** WFLagDebugPositions.cs 14 May 2006 21:23:56 -0000 1.2 --- WFLagDebugPositions.cs 31 May 2006 14:19:43 -0000 1.3 *************** *** 23,27 **** --- 23,29 ---- using System; using System.Collections; + using System.Drawing; + using QuantProject.ADT.Collections; using QuantProject.Business.DataProviders; using QuantProject.Business.Financial.Accounting; *************** *** 113,118 **** this.account.AddCash( 30000 ); } ! #region getEquityLineForDrivingPositions ! /// <summary> /// Returns a virtual amount of quantities for each virtual ticker. --- 115,120 ---- this.account.AddCash( 30000 ); } ! #region oneHourAfterMarketCloseEventHandler ! #region getEquityLineForSignedTickers /// <summary> /// Returns a virtual amount of quantities for each virtual ticker. *************** *** 121,132 **** /// </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 ); --- 123,133 ---- /// </summary> /// <returns></returns> ! private Hashtable getVirtualQuantities( ICollection positions , DateTime dateTime ) { ! Hashtable virtualQuantities = new Hashtable(); double valueForEachPosition = 30000 / ! positions.Count; ! foreach( string signedTicker in positions ) { string ticker = SignedTicker.GetTicker( signedTicker ); *************** *** 137,149 **** 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( --- 138,169 ---- ticker , endOfDayDateTime ); double virtualQuantity = valueForEachPosition / tickerQuote; ! if ( SignedTicker.IsShort( signedTicker ) ) ! virtualQuantity = -virtualQuantity; ! virtualQuantities.Add( ticker , virtualQuantity ); } ! return virtualQuantities; } ! private double getCash( Hashtable drivingTickerVirtualQuantities ) ! { ! double cash = 30000; ! double valueForEachPosition = ! cash / drivingTickerVirtualQuantities.Count; ! foreach ( double virtualQuantity in ! drivingTickerVirtualQuantities.Values ) ! { ! if ( virtualQuantity > 0 ) ! // long position ! cash -= valueForEachPosition; ! else ! // virtualQuantity > 0 i.e. short position ! cash += valueForEachPosition; ! } ! return cash; ! } ! private double getPortfolioValueForSignedTickers( DateTime dateTime , Hashtable tickerVirtualQuantities ) { ! double portfolioValueForDrivingPositions = 0; ! foreach( string ticker in tickerVirtualQuantities.Keys ) { EndOfDayDateTime endOfDayDateTime = new EndOfDayDateTime( *************** *** 152,179 **** 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 ) --- 172,207 ---- ticker , endOfDayDateTime ); double virtualQuantity = (double)tickerVirtualQuantities[ ticker ]; ! portfolioValueForDrivingPositions += virtualQuantity * tickerQuote; } ! return portfolioValueForDrivingPositions; } ! private EquityLine getEquityLineForSignedTickers( ! ICollection signedTickers , Report report ) { EquityLine equityLineForPortfolioPositions = report.AccountReport.EquityLine; ! EquityLine equityLineForSignedTickers = new EquityLine(); ! Hashtable virtualQuantities = ! this.getVirtualQuantities( signedTickers , (DateTime)equityLineForPortfolioPositions.GetKey( 0 ) ); ! double cash = this.getCash( virtualQuantities ); ! foreach( DateTime dateTime in ! equityLineForPortfolioPositions.Keys ) ! equityLineForSignedTickers.Add( dateTime , ! cash + this.getPortfolioValueForSignedTickers( dateTime , ! virtualQuantities ) ); ! return equityLineForSignedTickers; } #endregion + private void addEquityLineForSignedTickers( + ICollection signedTickers , Color color , Report report ) + { + EquityLine equityLineSignedTickers = + this.getEquityLineForSignedTickers( + signedTickers , report ); + report.AddEquityLine( equityLineSignedTickers , + color ); + } public void oneHourAfterMarketCloseEventHandler( Object sender , EndOfDayTimingEventArgs endOfDayTimingEventArgs ) *************** *** 188,198 **** new EndOfDayDateTime( this.postSampleLastDateTime , EndOfDaySpecificTime.OneHourAfterMarketClose ) , ! this.benchmark ); ! EquityLine equityLineForDrivingPositions = ! this.getEquityLineForDrivingPositions( report ); ! // report.AddEquityLine( equityLineForDrivingPositions ); report.Show(); } } public void Run() { --- 216,232 ---- new EndOfDayDateTime( this.postSampleLastDateTime , EndOfDaySpecificTime.OneHourAfterMarketClose ) , ! this.benchmark , false ); ! // EquityLine equityLineForDrivingPositions = ! // this.getEquityLineForPositions( report ); ! this.addEquityLineForSignedTickers( ! this.wFLagChosenPositions.DrivingPositions.Keys , ! Color.YellowGreen , report ); ! this.addEquityLineForSignedTickers( ! this.wFLagChosenPositions.PortfolioPositions.Keys , ! Color.Brown , report ); report.Show(); } } + #endregion public void Run() { |