Sync up with changes from ARM64
This commit is contained in:
@@ -137,7 +137,6 @@ namespace MarketData.Generator.CMTrend
|
||||
double gainLossClosedPositions=0.00;
|
||||
double exposure=0.00;
|
||||
double marketValue=0.00;
|
||||
// if(HolidayDA.IsMarketHoliday(currentDate)) continue;
|
||||
ModelPerformanceItem performanceItem=new ModelPerformanceItem();
|
||||
foreach(MarketData.Generator.CMTrend.Position openPosition in openPositions)
|
||||
{
|
||||
@@ -799,11 +798,58 @@ namespace MarketData.Generator.CMTrend
|
||||
List<CMTCandidate> violations=new List<CMTCandidate>();
|
||||
List<CMTCandidate> candidates=new List<CMTCandidate>();
|
||||
|
||||
// Filter out symbols where we do not have a price on trade date
|
||||
Profiler profiler = new Profiler();
|
||||
Dictionary<String,DateTime> latestDates = PricingDA.GetLatestDates(symbols);
|
||||
symbols=symbols.Where(x => latestDates.ContainsKey(x) && latestDates[x].Date>=analysisDate.Value.Date).ToList();
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,$"Loaded pricing dates in {Utility.FormatNumber(profiler.End(),2)} (ms)");
|
||||
|
||||
|
||||
// Prefetch a subset of fundamentals where each fundamental.asof is no greater than tradeDate
|
||||
profiler.Reset();
|
||||
FundamentalsV2 fundamentals = FundamentalDA.GetFundamentalsMaxDateV2(analysisDate.Value);
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,$"Loaded fundamentals in {Utility.FormatNumber(profiler.End(),2)} (ms)");
|
||||
|
||||
// Prefetch the company profiles
|
||||
profiler.Reset();
|
||||
Dictionary<String,CompanyProfile> companyProfiles = CompanyProfileDA.GetCompanyProfiles(symbols);
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,$"Loaded company profiles in {Utility.FormatNumber(profiler.End(),2)} (ms)");
|
||||
|
||||
// Prefetch the pricing dates required for 200 day moving average.
|
||||
profiler.Reset();
|
||||
DateGenerator dateGenerator = new DateGenerator();
|
||||
DateTime historicalDate=dateGenerator.GenerateHistoricalDate(analysisDate.Value,cmtParams.DMA200Horizon+10);
|
||||
List<DateTime> historicalDates=PricingDA.GetPricingDatesBetween(historicalDate,analysisDate.Value);
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,$"Loaded moving average dates in {Utility.FormatNumber(profiler.End(),2)} (ms)");
|
||||
|
||||
// Prefetch the EPS time series
|
||||
profiler.Reset();
|
||||
Dictionary<String,TimeSeriesCollection> epsTimeSeriesCollectionDictionary = FundamentalDA.GetEPS(symbols,analysisDate.Value,3);
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,$"Loaded EPS Time Series in {Utility.FormatNumber(profiler.End(),2)} (ms)");
|
||||
|
||||
// Prefetch the profit margin time series
|
||||
profiler.Reset();
|
||||
Dictionary<String,TimeSeriesCollection> profitMarginTimeSeriesCollectionDictionary = IncomeStatementDA.GetProfitMarginMaxAsOf(symbols,analysisDate.Value,3,IncomeStatement.PeriodType.Quarterly);
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,$"Loaded Profit Margin Time Series in {Utility.FormatNumber(profiler.End(),2)} (ms)");
|
||||
|
||||
for(int index=0;index<symbols.Count;index++)
|
||||
{
|
||||
String symbol=symbols[index];
|
||||
if(0==(index%500)) Console.WriteLine("GenerateCMTCandidates processing item {0} of {1}",index+1,symbols.Count);
|
||||
CMTCandidate cmtCandidate=CMTCandidateGenerator.GenerateCandidate(symbol,analysisDate.Value,cmtParams);
|
||||
|
||||
FundamentalV2 fundamental = default;
|
||||
if(fundamentals.ContainsKey(symbol))fundamental=fundamentals[symbol];
|
||||
|
||||
CompanyProfile companyProfile = default;
|
||||
if(companyProfiles.ContainsKey(symbol))companyProfile = companyProfiles[symbol];
|
||||
|
||||
TimeSeriesCollection epsTimeSeriesCollection = default;
|
||||
if(epsTimeSeriesCollectionDictionary.ContainsKey(symbol))epsTimeSeriesCollection=epsTimeSeriesCollectionDictionary[symbol];
|
||||
|
||||
TimeSeriesCollection profitMarginTimeSeriesCollection = default;
|
||||
if(profitMarginTimeSeriesCollectionDictionary.ContainsKey(symbol))profitMarginTimeSeriesCollection=profitMarginTimeSeriesCollectionDictionary[symbol];
|
||||
|
||||
CMTCandidate cmtCandidate=CMTCandidateGenerator.GenerateCandidate(symbol,analysisDate.Value,cmtParams,fundamental,companyProfile,historicalDates,epsTimeSeriesCollection,profitMarginTimeSeriesCollection);
|
||||
if(cmtCandidate.Violation) violations.Add(cmtCandidate);
|
||||
else candidates.Add(cmtCandidate);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user