diff --git a/PortfolioManager/ViewModels/MGSHMomentumViewModel.cs b/PortfolioManager/ViewModels/MGSHMomentumViewModel.cs index f52ca58..76b6c8d 100644 --- a/PortfolioManager/ViewModels/MGSHMomentumViewModel.cs +++ b/PortfolioManager/ViewModels/MGSHMomentumViewModel.cs @@ -401,6 +401,13 @@ namespace PortfolioManager.ViewModels { base.OnPropertyChanged("ExpectationDescription"); base.OnPropertyChanged("CompanyDescriptionSelectedPosition"); + base.OnPropertyChanged("ToolTipSold"); + base.OnPropertyChanged("ToolTipExposure"); + base.OnPropertyChanged("ToolTipInitialStop"); + base.OnPropertyChanged("ToolTipTrailingStop"); + base.OnPropertyChanged("ToolTipR"); + base.OnPropertyChanged("ToolTipTotalRiskExposure"); + base.OnPropertyChanged("ToolTipRMultiple"); } private void UpdatePositionPrices(bool change = true) @@ -685,6 +692,46 @@ namespace PortfolioManager.ViewModels // ************************************************** T O O L T I P S ************************************************* + public String ToolTipExposure + { + get + { + if (null == selectedPosition) return "No row selected."; + StringBuilder sb = new StringBuilder(); + if (selectedPosition.IsActivePosition) + { + sb.Append("Exposure = PurchasePrice * Shares\n"); + sb.Append($"{Utility.FormatCurrency(selectedPosition.Exposure)} = {Utility.FormatCurrency(selectedPosition.PurchasePrice)} * {Utility.FormatNumber(selectedPosition.Shares, 3)}"); + } + else + { + sb.Append("Original Exposure = PurchasePrice * Shares\n"); + sb.Append($"{Utility.FormatCurrency(selectedPosition.PurchasePrice * selectedPosition.Shares)} = {Utility.FormatCurrency(selectedPosition.PurchasePrice)} * {Utility.FormatNumber(selectedPosition.Shares, 3)}"); + } + + return sb.ToString(); + } + } + + public String ToolTipSold + { + get + { + if (null == selectedPosition) return "No row selected."; + StringBuilder sb = new StringBuilder(); + if (selectedPosition.IsActivePosition) + { + sb.Append($"{selectedPosition.Symbol} is currently active."); + } + else + { + sb.Append($"{selectedPosition.Symbol} {selectedPosition.Comment}."); + } + + return sb.ToString(); + } + } + public String ExpectationDescription { get @@ -706,20 +753,127 @@ namespace PortfolioManager.ViewModels sb.Append("The calculations are based on closed positions."); return sb.ToString(); } - } - + } + public String CompanyDescriptionSelectedPosition { get { - if(null== selectedPosition || null==selectedPosition.Symbol)return "No row selected."; - CompanyProfile companyProfile=CompanyProfileDA.GetCompanyProfile(selectedPosition.Symbol); - if(null==companyProfile || null==companyProfile.Description || "".Equals(companyProfile.Description))return "No description found."; + if (null == selectedPosition || null == selectedPosition.Symbol) return "No row selected."; + CompanyProfile companyProfile = CompanyProfileDA.GetCompanyProfile(selectedPosition.Symbol); + if (null == companyProfile || null == companyProfile.Description || "".Equals(companyProfile.Description)) return "No description found."; StringBuilder sb = new StringBuilder(); sb.Append(companyProfile.Symbol).Append(" - ").Append(companyProfile.CompanyName).Append("\n"); sb.Append(companyProfile.Sector).Append("/").Append(companyProfile.Industry).Append("\n").Append(companyProfile.Description); return sb.ToString(); } } + + public String ToolTipInitialStop + { + get + { + if (null == selectedPosition) return "No row selected."; + StringBuilder sb = new StringBuilder(); + sb.Append("[InitialStop]=([InitialStopLimit])").Append("\n"); + sb.Append(Utility.FormatCurrency(selectedPosition.InitialStopLimit)).Append("=").Append(Utility.FormatCurrency(selectedPosition.InitialStopLimit)); + return sb.ToString(); + } + } + + public String ToolTipTrailingStop + { + get + { + if (null == selectedPosition) return "No row selected."; + StringBuilder sb = new StringBuilder(); + sb.Append("[TrailingStop]=([TrailingStopLimit])").Append("\n"); + sb.Append(Utility.FormatCurrency(selectedPosition.TrailingStopLimit)).Append("=").Append(Utility.FormatCurrency(selectedPosition.TrailingStopLimit)).Append("\n"); + List stopLimits = GetHistoricalStopLimits(); + if (selectedPosition.TrailingStopLimit > selectedPosition.PurchasePrice) + { + sb.Append("Riskless Gain").Append(" = "); + sb.Append(String.Format("(Trailing Stop - Purchase Price) * Shares")); + sb.Append("\n"); + sb.Append(String.Format("{0}", Utility.FormatCurrency((selectedPosition.TrailingStopLimit - selectedPosition.PurchasePrice) * selectedPosition.Shares))); + sb.Append(String.Format("=({0}-{1})*{2}", Utility.FormatCurrency(selectedPosition.TrailingStopLimit), Utility.FormatCurrency(selectedPosition.PurchasePrice), Utility.FormatNumber(selectedPosition.Shares, 3))); + sb.Append("\n"); + } + if (null != stopLimits && 0 != stopLimits.Count) + { + sb.Append("Stop History").Append("\n"); + foreach (MarketData.Generator.Model.StopLimit stopLimit in stopLimits) + { + sb.Append(String.Format("Analysis Date:{0} New Stop:{1} Previous Stop:{2}", Utility.DateTimeToStringMMSDDSYYYY(stopLimit.AnalysisDate), Utility.FormatCurrency(stopLimit.NewStop), Utility.FormatCurrency(stopLimit.PreviousStop))); + sb.Append("\n"); + } + } + return sb.ToString(); + } + } + + public String ToolTipR + { + get + { + if(null==selectedPosition)return "No row selected."; + StringBuilder sb=new StringBuilder(); + sb.Append("Current R/Share. See RMultiple for initial risk assumptions.").Append("\n"); + sb.Append("R/Share=TrailingStop>PurchasePrice?0.00:PurchasePrice-TrailingStop").Append("\n"); + if(selectedPosition.TrailingStopLimit>selectedPosition.PurchasePrice) + { + sb.Append(Utility.FormatCurrency(0)).Append("=").Append(Utility.FormatCurrency(0)); + } + else + { + sb.Append(Utility.FormatCurrency(selectedPosition.TrailingStopLimit>selectedPosition.PurchasePrice?0.00:selectedPosition.PurchasePrice-selectedPosition.TrailingStopLimit)); + sb.Append("=").Append(Utility.FormatCurrency(selectedPosition.PurchasePrice)).Append("-").Append(Utility.FormatCurrency(selectedPosition.TrailingStopLimit)); + } + return sb.ToString(); + } + } + + public String ToolTipTotalRiskExposure + { + get + { + if(null==selectedPosition)return "No row selected."; + StringBuilder sb=new StringBuilder(); + sb.Append("Current Risk. See RMultiple for initial risk assumptions.").Append("\n"); + sb.Append("[TotalRiskExposure]=([R/Share]*[Shares])").Append("\n"); + if(null==selectedPosition) return sb.ToString(); + sb.Append(Utility.FormatCurrency(selectedPosition.TotalRiskExposure)).Append("=(").Append(Utility.FormatCurrency(selectedPosition.R)).Append("*").Append(Utility.FormatNumber(selectedPosition.Shares,0)).Append(")"); + return sb.ToString(); + } + } + + public String ToolTipRMultiple + { + get + { + if(null==selectedPosition)return "Please select a position by clicking on a row."; + StringBuilder sb=new StringBuilder(); + sb.Append("RMultiple is based on original position setup.").Append("\n"); + sb.Append("Original Exposure=").Append(Utility.FormatCurrency(selectedPosition.PurchasePrice*selectedPosition.Shares)).Append("\n"); + sb.Append("Original R/Share=PurchasePrice-InitialStop").Append("\n"); + sb.Append(Utility.FormatCurrency(selectedPosition.PurchasePrice-selectedPosition.InitialStopLimit)).Append("=").Append(Utility.FormatCurrency(selectedPosition.PurchasePrice)).Append("-").Append(Utility.FormatCurrency(selectedPosition.InitialStopLimit)).Append("\n"); + sb.Append("Original Risk=Original R/Share*Shares").Append("\n"); + sb.Append(Utility.FormatCurrency((selectedPosition.PurchasePrice-selectedPosition.InitialStopLimit)*selectedPosition.Shares)).Append("=").Append(Utility.FormatCurrency(selectedPosition.PurchasePrice-selectedPosition.InitialStopLimit)).Append("*").Append(selectedPosition.Shares).Append("\n"); + sb.Append("RMultiple=(CurrentPrice-PurchasePrice)/(PurchasePrice-InitialStop)").Append("\n"); + sb.Append(selectedPosition.RMultipleAsString).Append("=").Append("(").Append(Utility.FormatCurrency(selectedPosition.CurrentPrice)).Append("-").Append(Utility.FormatCurrency(selectedPosition.PurchasePrice)).Append(")"); + sb.Append("/").Append("(").Append(Utility.FormatCurrency(selectedPosition.PurchasePrice)).Append("-").Append(Utility.FormatCurrency(selectedPosition.InitialStopLimit)).Append(")"); + return sb.ToString(); + } + } + +// ************************************************************** T O O L T I P H E L P E R S ************************************************************** + public MarketData.Generator.Model.StopLimits GetHistoricalStopLimits() + { + if (null == sessionParams || null == selectedPosition) return null; + MarketData.Generator.Model.StopLimits stopLimits = new MarketData.Generator.Model.StopLimits( + (from MarketData.Generator.Model.StopLimit stopLimit in sessionParams.StopLimits where stopLimit.StopLimitId.Equals(selectedPosition.Symbol + Utility.DateTimeToStringYYYYMMDDMMSSTT(selectedPosition.PurchaseDate)) select stopLimit) + .OrderByDescending(x => x.AnalysisDate).ToList()); + return stopLimits; + } } } diff --git a/PortfolioManager/Views/MGSHMomentumView.axaml b/PortfolioManager/Views/MGSHMomentumView.axaml index 99ce9b2..8f298e8 100644 --- a/PortfolioManager/Views/MGSHMomentumView.axaml +++ b/PortfolioManager/Views/MGSHMomentumView.axaml @@ -160,17 +160,24 @@ - + + - - + + + + + + + 125 + @@ -181,7 +188,14 @@ - + + + + + + + 125 + @@ -241,7 +255,14 @@ - + + + + + + + 125 + @@ -250,7 +271,14 @@ - + + + + + + + 125 + @@ -259,7 +287,14 @@ - + + + + + + + 125 + @@ -268,7 +303,14 @@ - + + + + + + + 125 + @@ -277,7 +319,14 @@ - + + + + + + + 125 + diff --git a/PortfolioManager/portfolio_manager.log b/PortfolioManager/portfolio_manager.log index 2b553c3..154a939 100644 --- a/PortfolioManager/portfolio_manager.log +++ b/PortfolioManager/portfolio_manager.log @@ -40136,3 +40136,609 @@ PortfolioManager Error: 0 : Unable to connect to any of the specified MySQL host [Thread=6][TRACE.VERBOSE][6/10/2025 11:27:10 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. [Thread=1][TRACE.VERBOSE][6/10/2025 11:27:10 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'Running'. Joining main thread... [Thread=1][TRACE.VERBOSE][6/10/2025 11:27:10 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 6:56:48 AM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 6:56:57 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 336(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 6:56:57 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 104(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 6:56:58 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1787(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 6:56:59 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2014(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 6:56:59 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 54(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 6:56:59 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2540(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 6:56:59 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 24(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 6:56:59 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 55(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 6:59:00 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=15][TRACE.VERBOSE][6/11/2025 6:59:39 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=15][TRACE.VERBOSE][6/11/2025 6:59:39 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=15][TRACE.VERBOSE][6/11/2025 6:59:42 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=15][TRACE.VERBOSE][6/11/2025 6:59:43 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=15][TRACE.VERBOSE][6/11/2025 6:59:43 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/10/2025 TotalGainLoss:$92,294.41 +[Thread=15][TRACE.VERBOSE][6/11/2025 6:59:43 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 356(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 7:01:02 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=1][TRACE.VERBOSE][6/11/2025 7:01:09 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 46(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:01:09 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 31(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:01:38 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 34(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:01:38 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 35(ms) +[Thread=16][TRACE.VERBOSE][6/11/2025 7:02:00 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=1][TRACE.VERBOSE][6/11/2025 7:02:02 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 33(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:02:02 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 30(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:02:14 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 35(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:02:14 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 30(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:02:15 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 28(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:02:15 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 38(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:02:15 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 38(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:02:15 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 32(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 7:03:04 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=1][TRACE.VERBOSE][6/11/2025 7:03:54 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 36(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:03:54 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 31(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:03:54 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 33(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:03:55 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 37(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:03:55 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 32(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:03:55 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 38(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:03:55 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 74(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:03:55 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 65(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:04:03 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 73(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 7:04:03 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 67(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 7:05:05 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:07:02 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:07:07 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:09:09 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:11:10 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:12:05 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:13:12 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:15:14 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:17:08 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:17:16 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:19:17 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:21:19 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:22:11 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:23:21 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:25:23 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:27:14 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:27:25 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:29:27 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:31:28 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:32:17 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:33:30 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:35:32 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:37:20 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:37:34 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:39:35 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:41:38 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:42:23 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:43:40 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:45:42 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:47:28 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:47:45 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:49:47 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:51:49 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:52:32 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:53:51 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:55:54 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 7:57:36 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:57:56 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 7:59:58 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:02:01 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:02:40 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:04:03 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:06:05 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:07:45 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:08:08 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:10:10 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:12:12 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:12:49 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:14:15 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:16:17 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:17:53 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:18:19 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:20:22 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:22:24 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:22:57 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:24:26 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:26:28 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:28:02 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:28:31 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:30:33 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:32:35 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:33:06 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:34:38 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:36:40 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:38:10 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:38:42 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:40:45 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:42:47 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:43:14 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:44:49 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:46:51 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:48:19 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:48:54 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:50:56 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:52:58 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:53:23 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:55:01 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:57:02 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 8:58:26 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 8:59:04 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:01:06 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:03:07 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 9:03:29 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:05:09 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:07:10 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 9:08:31 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,717. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:09:13 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:11:15 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Visual] windows::UI::Composition::ICompositor5.RequestCommitAsync timed out, force-triggering next tick (RunLoopHandler #17154720) +[Thread=1][TRACE.DEBUG][6/11/2025 9:13:04 AM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 9:13:04 AM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 9:13:04 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:407,717 +[Thread=1][TRACE.VERBOSE][6/11/2025 9:13:04 AM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 9:13:04 AM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 9:13:05 AM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 9:13:05 AM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 9:41:45 AM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 9:41:54 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 325(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 9:41:55 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 109(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 9:41:56 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1710(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 9:41:56 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 1979(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 9:41:56 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 46(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 9:41:56 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2410(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 9:41:57 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 33(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 9:41:57 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 54(ms) +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:10 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:10 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:14 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:14 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:15 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/11/2025 TotalGainLoss:$92,415.13 +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:15 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 373(ms) +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:25 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 45(ms) +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:26 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 19(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 9:43:29 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 55(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 9:43:29 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 69(ms) +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:33 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 25(ms) +[Thread=17][TRACE.VERBOSE][6/11/2025 9:43:33 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 24(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:43:55 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 43(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:43:55 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 31(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 9:43:57 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=1][TRACE.VERBOSE][6/11/2025 9:44:06 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 39(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:44:06 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 29(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 9:45:59 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=1][TRACE.VERBOSE][6/11/2025 9:46:35 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=1][TRACE.VERBOSE][6/11/2025 9:46:35 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=3][TRACE.VERBOSE][6/11/2025 9:46:38 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=3][TRACE.VERBOSE][6/11/2025 9:46:38 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=3][TRACE.VERBOSE][6/11/2025 9:46:38 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/11/2025 TotalGainLoss:$92,544.38 +[Thread=3][TRACE.VERBOSE][6/11/2025 9:46:38 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 319(ms) +[Thread=16][TRACE.VERBOSE][6/11/2025 9:46:57 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,787. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:48:01 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:07 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:07 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=10][TRACE.VERBOSE][6/11/2025 9:49:09 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=10][TRACE.VERBOSE][6/11/2025 9:49:09 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=10][TRACE.VERBOSE][6/11/2025 9:49:09 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/11/2025 TotalGainLoss:$92,544.38 +[Thread=10][TRACE.VERBOSE][6/11/2025 9:49:09 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 325(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:16 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 32(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:16 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 33(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:20 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 37(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:20 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 30(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:21 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 65(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:21 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 33(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:22 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 33(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:22 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 31(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:25 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 34(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:25 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 39(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:31 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 39(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:31 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 36(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:37 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 34(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:37 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 40(ms) +[Thread=12][TRACE.VERBOSE][6/11/2025 9:49:49 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 340(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:54 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 0(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:54 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 0(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:55 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 0(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:55 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 0(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:56 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 0(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:56 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 0(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:56 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 0(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:56 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 0(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:57 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 35(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:57 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 42(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:49:57 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 31(ms) +[Thread=12][TRACE.VERBOSE][6/11/2025 9:50:01 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 341(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 9:50:03 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=1][TRACE.VERBOSE][6/11/2025 9:50:04 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 41(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:50:04 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 28(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:10 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 28(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:10 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 27(ms) +[Thread=12][TRACE.VERBOSE][6/11/2025 9:50:14 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 48(ms) +[Thread=12][TRACE.VERBOSE][6/11/2025 9:50:14 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 51(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:17 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 18(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:17 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 49(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:22 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 28(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:22 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 30(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 9:50:26 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=1][TRACE.VERBOSE][6/11/2025 9:50:26 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:28 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:28 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:28 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/11/2025 TotalGainLoss:$92,487.77 +[Thread=15][TRACE.VERBOSE][6/11/2025 9:50:29 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 334(ms) +[Thread=16][TRACE.VERBOSE][6/11/2025 9:52:00 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,787. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:52:05 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:54:06 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:56:08 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 9:57:03 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,787. +[Thread=18][TRACE.VERBOSE][6/11/2025 9:58:10 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=1][TRACE.VERBOSE][6/11/2025 9:59:35 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=1][TRACE.VERBOSE][6/11/2025 9:59:35 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=21][TRACE.VERBOSE][6/11/2025 9:59:37 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=21][TRACE.VERBOSE][6/11/2025 9:59:37 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=21][TRACE.VERBOSE][6/11/2025 9:59:37 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/11/2025 TotalGainLoss:$92,492.23 +[Thread=21][TRACE.VERBOSE][6/11/2025 9:59:37 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 321(ms) +[Thread=21][TRACE.VERBOSE][6/11/2025 9:59:44 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 32(ms) +[Thread=21][TRACE.VERBOSE][6/11/2025 9:59:44 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 31(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 9:59:49 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 21(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 9:59:50 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 19(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 9:59:53 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 48(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 9:59:53 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 48(ms) +[Thread=21][TRACE.VERBOSE][6/11/2025 9:59:57 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 26(ms) +[Thread=21][TRACE.VERBOSE][6/11/2025 9:59:57 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 26(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 10:00:12 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:02:06 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,721. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:02:13 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=14][TRACE.VERBOSE][6/11/2025 10:02:26 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 37(ms) +[Thread=14][TRACE.VERBOSE][6/11/2025 10:02:26 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 29(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 10:02:38 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=1][TRACE.VERBOSE][6/11/2025 10:02:38 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=20][TRACE.VERBOSE][6/11/2025 10:02:40 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=20][TRACE.VERBOSE][6/11/2025 10:02:40 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=20][TRACE.VERBOSE][6/11/2025 10:02:40 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/11/2025 TotalGainLoss:$92,488.01 +[Thread=20][TRACE.VERBOSE][6/11/2025 10:02:41 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 474(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 10:03:10 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 25(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 10:03:10 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 25(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 10:03:14 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 49(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 10:03:14 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 44(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 10:03:17 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 23(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 10:03:18 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 18(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 10:03:21 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 29(ms) +[Thread=19][TRACE.VERBOSE][6/11/2025 10:03:21 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 29(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 10:04:15 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:06:17 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:07:09 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:08:19 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:10:21 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:12:12 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:12:22 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:14:24 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:16:26 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:17:15 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:18:28 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:20:29 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:22:17 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:22:31 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:24:33 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:26:35 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:27:20 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:28:37 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:30:38 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:32:23 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:32:40 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:34:42 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:36:44 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:37:26 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:38:46 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:40:47 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:42:29 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:42:49 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:44:51 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:46:53 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:47:32 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:48:54 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:50:56 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:52:35 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:52:58 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:55:00 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:57:02 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 10:57:38 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 10:59:03 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 11:01:05 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 11:02:41 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 11:03:07 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 11:05:09 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 11:07:11 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 11:07:44 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,724. +[Thread=18][TRACE.VERBOSE][6/11/2025 11:09:12 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 11:11:14 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=1][TRACE.VERBOSE][6/11/2025 11:12:30 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=1][TRACE.VERBOSE][6/11/2025 11:12:30 AM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=31][TRACE.VERBOSE][6/11/2025 11:12:33 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=31][TRACE.VERBOSE][6/11/2025 11:12:33 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=31][TRACE.VERBOSE][6/11/2025 11:12:33 AM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/11/2025 TotalGainLoss:$92,582.90 +[Thread=31][TRACE.VERBOSE][6/11/2025 11:12:33 AM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 339(ms) +[Thread=16][TRACE.VERBOSE][6/11/2025 11:12:47 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,787. +[Thread=1][TRACE.VERBOSE][6/11/2025 11:12:49 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 34(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 11:12:49 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 41(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 11:12:51 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 49(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 11:12:51 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 38(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 11:13:05 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 30(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 11:13:05 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 42(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 11:13:09 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 41(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 11:13:09 AM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 33(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 11:13:16 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=28][TRACE.VERBOSE][6/11/2025 11:13:18 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 60(ms) +[Thread=28][TRACE.VERBOSE][6/11/2025 11:13:18 AM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 32(ms) +[Thread=28][TRACE.VERBOSE][6/11/2025 11:13:22 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 36(ms) +[Thread=28][TRACE.VERBOSE][6/11/2025 11:13:22 AM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 18(ms) +[Thread=28][TRACE.VERBOSE][6/11/2025 11:13:26 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 49(ms) +[Thread=28][TRACE.VERBOSE][6/11/2025 11:13:26 AM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 47(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 11:13:29 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 33(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 11:13:29 AM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 30(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 11:15:18 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 11:17:19 AM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 11:17:50 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 486. Items in cache: 407,721. +[Thread=1][TRACE.DEBUG][6/11/2025 11:17:52 AM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 11:17:52 AM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 11:17:53 AM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:407,721 +[Thread=1][TRACE.VERBOSE][6/11/2025 11:17:53 AM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 11:17:53 AM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 11:17:54 AM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 11:17:54 AM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:25:03 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:25:12 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 331(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:25:12 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 98(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:25:13 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1871(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:25:14 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2113(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:25:14 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 50(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:25:14 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2679(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:25:14 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 29(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:25:14 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 61(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:25:46 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:25:46 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:25:46 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:25:46 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:25:46 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:25:47 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:25:47 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:31:36 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:31:38 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 993(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:31:38 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 102(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:31:39 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 2404(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:31:40 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2627(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:31:40 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 47(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:31:40 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 3087(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:31:40 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 33(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:31:40 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 64(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:33:22 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:33:22 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:33:22 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:33:22 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:33:22 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:33:22 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:33:22 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:33:29 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:33:30 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 336(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:33:31 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 97(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:33:32 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1832(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:33:32 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2099(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:33:32 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 48(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:33:33 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2665(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:33:33 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 22(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:33:33 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 53(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:33:46 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:33:46 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:33:46 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:33:46 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:33:46 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:33:47 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:33:47 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:34:00 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:34:01 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 332(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:34:01 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 104(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:34:02 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1824(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:34:03 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2106(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:34:03 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 61(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:34:03 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2701(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:34:03 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 27(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:34:03 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 58(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:35:21 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:35:21 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:35:22 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:35:22 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:35:22 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:35:23 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:35:23 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:35:30 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:35:31 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 360(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:35:32 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 103(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:35:33 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 2002(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:35:33 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2463(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:35:34 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 58(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:35:34 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 3046(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:35:34 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 27(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:35:34 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 112(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:36:05 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:36:05 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:36:05 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:36:05 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:36:05 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:36:06 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:36:06 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:36:48 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:36:49 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 341(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:36:50 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 103(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:36:51 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1906(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:36:51 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2160(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:36:51 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 52(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:36:52 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2731(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:36:52 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 28(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:36:52 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 67(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:37:21 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:37:21 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:37:21 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:37:21 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:37:21 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:37:22 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:37:22 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:37:53 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:37:54 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 352(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:37:54 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 120(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:37:55 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1914(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:37:55 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2170(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:37:56 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 56(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:37:56 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2775(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:37:56 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 29(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:37:56 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 62(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:38:06 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:38:06 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:38:07 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:38:07 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:38:07 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:38:07 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:38:07 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:38:38 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:38:39 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 353(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:38:40 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 105(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:38:41 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1890(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:38:41 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2178(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:38:41 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 53(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:38:42 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2734(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:38:42 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 28(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:38:42 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 62(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:38:52 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:38:52 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:38:52 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:38:52 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:38:52 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:38:53 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:38:53 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:39:12 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:39:13 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 329(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:39:13 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 118(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:39:15 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1977(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:39:15 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2237(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:39:15 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 55(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:39:15 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2812(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:39:15 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 27(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:39:16 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 62(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:39:30 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:39:30 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:39:31 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:39:31 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:39:31 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:39:32 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:39:32 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:39:53 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 1:39:54 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 332(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 1:39:55 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 137(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:39:56 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1896(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:39:56 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2130(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 1:39:56 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 50(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:39:56 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2620(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 1:39:57 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 25(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 1:39:57 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 59(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 1:40:34 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 1:40:34 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 1:40:35 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 1:40:35 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 1:40:35 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 1:40:36 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 1:40:36 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 2:22:29 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 2:22:30 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 317(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 2:22:30 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 130(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 2:22:31 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1827(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 2:22:31 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2048(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 2:22:32 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 50(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 2:22:32 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2697(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 2:22:32 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 32(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 2:22:32 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 57(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 2:24:14 PM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=15][TRACE.VERBOSE][6/11/2025 2:24:14 PM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=14][TRACE.VERBOSE][6/11/2025 2:24:18 PM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=14][TRACE.VERBOSE][6/11/2025 2:24:19 PM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=14][TRACE.VERBOSE][6/11/2025 2:24:19 PM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/11/2025 TotalGainLoss:$92,508.44 +[Thread=14][TRACE.VERBOSE][6/11/2025 2:24:19 PM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 366(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:24:23 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 47(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:24:23 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 33(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 2:24:33 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 2:24:33 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 2:24:33 PM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 2:24:33 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 2:24:33 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 2:24:33 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 2:24:34 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 2:24:34 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 2:27:34 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 2:27:35 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 383(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 2:27:35 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 99(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 2:27:36 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1841(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 2:27:37 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2194(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 2:27:37 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 57(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 2:27:37 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2760(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 2:27:38 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 30(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 2:27:38 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 54(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 2:28:29 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 2:28:29 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 2:28:30 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:0 +[Thread=1][TRACE.VERBOSE][6/11/2025 2:28:30 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 2:28:30 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 2:28:31 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 2:28:31 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End. +[Thread=1][TRACE.VERBOSE][6/11/2025 2:30:38 PM] [PortfolioManager.Program::Main(args)][STARTING] +[Thread=7][TRACE.VERBOSE][6/11/2025 2:30:39 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 323(ms) +[Thread=7][TRACE.VERBOSE][6/11/2025 2:30:40 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 128(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 2:30:41 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 1995(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 2:30:41 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 2247(ms) +[Thread=11][TRACE.VERBOSE][6/11/2025 2:30:42 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 57(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 2:30:42 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 2767(ms) +[Thread=9][TRACE.VERBOSE][6/11/2025 2:30:42 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 33(ms) +[Thread=10][TRACE.VERBOSE][6/11/2025 2:30:42 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 64(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 2:32:43 PM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 2:34:45 PM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=16][TRACE.VERBOSE][6/11/2025 2:35:42 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 445. Items in cache: 46,719. +[Thread=18][TRACE.VERBOSE][6/11/2025 2:36:46 PM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=18][TRACE.VERBOSE][6/11/2025 2:38:48 PM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=24][TRACE.VERBOSE][6/11/2025 2:39:55 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 62(ms) +[Thread=24][TRACE.VERBOSE][6/11/2025 2:39:55 PM] [MarketData.Generator.MGSHMomentum.MGSHMomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 26(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:34 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 24(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:34 PM] [MarketData.Generator.CMTrend.CMTTrendModel::GetModelPerformance(sessionParams)]Done, total took 19(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:38 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 54(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:38 PM] [MarketData.Generator.Momentum.MomentumBacktest::GetModelPerformance(sessionParams)]Done, total took 59(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:42 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 69(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:42 PM] [MarketData.Generator.CMMomentum.CMMomentumBacktest::GetModelPerformance(sessionParams)]Done, took 29(ms) +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:44 PM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()]HandleSelectedSymbol:{ALL} +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:44 PM] [PortfolioManager.ViewModels.GainLossViewModel::HandleSelectedSymbol()][GainLossViewModel::OnGainLossViewModelPropertyChanged]SelectedSymbol '{ALL}' +[Thread=16][TRACE.VERBOSE][6/11/2025 2:40:45 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Symbols: 445. Items in cache: 128,928. +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:48 PM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingActiveGainLoss +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:48 PM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]GeneratingTotalGainLoss) +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:49 PM] [PortfolioManager.ViewModels.GainLossViewModel::b__41_0()]Date:6/11/2025 TotalGainLoss:$92,501.42 +[Thread=15][TRACE.VERBOSE][6/11/2025 2:40:49 PM] [MarketData.MarketDataModel.GainLoss.GainLossSummaryItemCollection::.ctor(portfolioTrades,gainLossGenerator,activeGainLossGenerator,maxDateRef)][GainLossSummaryItemCollection] Done, took 360(ms) +[Thread=18][TRACE.VERBOSE][6/11/2025 2:40:50 PM] [MarketData.Cache.GBPriceCache::ThreadProc()]Clearing GBPriceCache price cache. +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:37 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 41(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:37 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 32(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:40 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 42(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:40 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 29(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:40 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 31(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:41 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 42(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:41 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 37(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:44 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 37(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:44 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 30(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:46 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 38(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:46 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 35(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:49 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 63(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:49 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 48(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:51 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 36(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:51 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 30(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:51 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 34(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:51 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 31(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:51 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 34(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:51 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 35(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:52 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 44(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:52 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 40(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:52 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 37(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:56 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 41(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:56 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 32(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:56 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 32(ms) +[Thread=1][TRACE.VERBOSE][6/11/2025 2:41:56 PM] [PortfolioManager.ViewModels.GainLossViewModel::get_Parity()][Parity]Done, total took 30(ms) +[Thread=1][TRACE.DEBUG][6/11/2025 2:42:00 PM] [PortfolioManager.App+<>c__DisplayClass1_1::b__1(,)]ClosingHandler +[Thread=1][TRACE.VERBOSE][6/11/2025 2:42:00 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=16][TRACE.VERBOSE][6/11/2025 2:42:01 PM] [MarketData.Cache.LocalPriceCache::ThreadProc()][LocalPriceCache:ThreadProc] Thread ended. Items in cache:128,928 +[Thread=1][TRACE.VERBOSE][6/11/2025 2:42:01 PM] [MarketData.Cache.LocalPriceCache::Dispose()][LocalPriceCache:Dispose] End +[Thread=1][TRACE.VERBOSE][6/11/2025 2:42:01 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose]Thread state is 'WaitSleepJoin'. Joining main thread... +[Thread=18][TRACE.VERBOSE][6/11/2025 2:42:01 PM] [MarketData.Cache.GBPriceCache::ThreadProc()][GBPriceCache:ThreadProc]Thread ended. +[Thread=1][TRACE.VERBOSE][6/11/2025 2:42:01 PM] [MarketData.Cache.GBPriceCache::Dispose()][GBPriceCache:Dispose] End.