This was causing an issue in the SharpeRatioGenerator whereby the SharpeRatio was not being calculated correctly where the asof date would fall on a weekend of holiday. Also, added a ReasonCategory to the CMCanidate as well as a Violation summary line in the model output to show where violations occur. Had I implemented this previously I might have detected the SharpeRatio issue sooner. Also added GetFundamentalMaxDateTop in the FundamentalDA which I used during debugging but is not currently being used anywhere.
41 lines
1.1 KiB
C#
41 lines
1.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace MarketData.Generator.CMMomentum
|
|
{
|
|
public class CMCandidates : List<CMCandidate>
|
|
{
|
|
public CMCandidates()
|
|
{
|
|
}
|
|
public CMCandidates(List<CMCandidate> cmCandidates)
|
|
{
|
|
foreach (CMCandidate cmCandidate in cmCandidates) Add(cmCandidate);
|
|
}
|
|
}
|
|
public class CMCandidate
|
|
{
|
|
public CMCandidate()
|
|
{
|
|
Violation = false;
|
|
}
|
|
public String Symbol { get; set; }
|
|
public DateTime AnalysisDate { get; set; }
|
|
public DateTime TradeDate { get; set; }
|
|
public int DayCount { get; set; }
|
|
public double Slope { get; set; }
|
|
public double AnnualizedReturn { get; set; }
|
|
public double Score { get; set; }
|
|
public double RSquared { get; set; }
|
|
public double Beta { get; set; }
|
|
public int BetaMonths { get; set; }
|
|
public double SharpeRatio { get; set; }
|
|
public long Volume { get; set; }
|
|
public bool Violation { get; set; }
|
|
public String Reason { get; set; }
|
|
public String ReasonCategory { get; set; }
|
|
public bool CNNPrediction{get;set;}
|
|
}
|
|
|
|
}
|