Beispiel #1
0
 /// <summary>
 /// Returns a summary of the algorithm performance as a dictionary
 /// </summary>
 private static Dictionary <string, string> GetSummary(AlgorithmPerformance totalPerformance, decimal totalFees, int totalTransactions)
 {
     return(new Dictionary <string, string>
     {
         { "Total Trades", totalTransactions.ToString(CultureInfo.InvariantCulture) },
         { "Average Win", Math.Round(totalPerformance.PortfolioStatistics.AverageWinRate.SafeMultiply100(), 2) + "%" },
         { "Average Loss", Math.Round(totalPerformance.PortfolioStatistics.AverageLossRate.SafeMultiply100(), 2) + "%" },
         { "Compounding Annual Return", Math.Round(totalPerformance.PortfolioStatistics.CompoundingAnnualReturn.SafeMultiply100(), 3) + "%" },
         { "Drawdown", (Math.Round(totalPerformance.PortfolioStatistics.Drawdown.SafeMultiply100(), 3)) + "%" },
         { "Expectancy", Math.Round(totalPerformance.PortfolioStatistics.Expectancy, 3).ToString(CultureInfo.InvariantCulture) },
         { "Net Profit", Math.Round(totalPerformance.PortfolioStatistics.TotalNetProfit.SafeMultiply100(), 3) + "%" },
         { "Sharpe Ratio", Math.Round((double)totalPerformance.PortfolioStatistics.SharpeRatio, 3).ToString(CultureInfo.InvariantCulture) },
         { "Loss Rate", Math.Round(totalPerformance.PortfolioStatistics.LossRate.SafeMultiply100()) + "%" },
         { "Win Rate", Math.Round(totalPerformance.PortfolioStatistics.WinRate.SafeMultiply100()) + "%" },
         { "Profit-Loss Ratio", Math.Round(totalPerformance.PortfolioStatistics.ProfitLossRatio, 2).ToString(CultureInfo.InvariantCulture) },
         { "Alpha", Math.Round((double)totalPerformance.PortfolioStatistics.Alpha, 3).ToString(CultureInfo.InvariantCulture) },
         { "Beta", Math.Round((double)totalPerformance.PortfolioStatistics.Beta, 3).ToString(CultureInfo.InvariantCulture) },
         { "Annual Standard Deviation", Math.Round((double)totalPerformance.PortfolioStatistics.AnnualStandardDeviation, 3).ToString(CultureInfo.InvariantCulture) },
         { "Annual Variance", Math.Round((double)totalPerformance.PortfolioStatistics.AnnualVariance, 3).ToString(CultureInfo.InvariantCulture) },
         { "Information Ratio", Math.Round((double)totalPerformance.PortfolioStatistics.InformationRatio, 3).ToString(CultureInfo.InvariantCulture) },
         { "Tracking Error", Math.Round((double)totalPerformance.PortfolioStatistics.TrackingError, 3).ToString(CultureInfo.InvariantCulture) },
         { "Treynor Ratio", Math.Round((double)totalPerformance.PortfolioStatistics.TreynorRatio, 3).ToString(CultureInfo.InvariantCulture) },
         { "Total Fees", "$" + totalFees.ToString("0.00") }
     });
 }
Beispiel #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="StatisticsResults"/> class
 /// </summary>
 public StatisticsResults()
 {
     TotalPerformance    = new AlgorithmPerformance();
     RollingPerformances = new Dictionary <string, AlgorithmPerformance>();
     Summary             = new Dictionary <string, string>();
 }
Beispiel #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="StatisticsResults"/> class
 /// </summary>
 /// <param name="totalPerformance">The algorithm total performance</param>
 /// <param name="rollingPerformances">The algorithm rolling performances</param>
 /// <param name="summary">The summary performance dictionary</param>
 public StatisticsResults(AlgorithmPerformance totalPerformance, Dictionary <string, AlgorithmPerformance> rollingPerformances, Dictionary <string, string> summary)
 {
     TotalPerformance    = totalPerformance;
     RollingPerformances = rollingPerformances;
     Summary             = summary;
 }