public TradeStatistics InitTradeStatistics(TradeStatistics tradesStatistics = null) { //if (tradesStatistics != null && this.TradeStats != null) // throw new InvalidOperationException("TradeStats member is already set."); TradeStats = tradesStatistics ?? new TradeStatistics(); return(TradeStats); }
public void T16() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.AverageDrawdown; // Assert Assert.Equal(0.77, actual); }
public void T15() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 786, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.AverageCashLoss; // Assert Assert.Equal(786, actual); }
public void T14() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 592, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.AverageCashWin; // Assert Assert.Equal(592, actual); }
public void T13() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 987, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.AveragePointsLoss; // Assert Assert.Equal(987, actual); }
public void T12() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 367, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.AveragePointsWin; // Assert Assert.Equal(367, actual); }
public void T11() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 789, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.BiggestCashLoss; // Assert Assert.Equal(789, actual); }
public void T10() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 567, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.BiggestPointsLoss; // Assert Assert.Equal(567, actual); }
public void T9() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 321, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.BiggestCashWin; // Assert Assert.Equal(321, actual); }
public void T8() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 99, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.BiggestPointsWin; // Assert Assert.Equal(99, actual); }
public void T7() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 88, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.CashTotal; // Assert Assert.Equal(88, actual); }
public void T6() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 77, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.PointsTotal; // Assert Assert.Equal(77, actual); }
public void T0() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.TradeCount; // Assert Assert.Equal(5, actual); }
public void T17() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.AverageMaximumAdverseExcursion; // Assert Assert.Equal(45, actual); }
public void T5() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.LongestLosingStreak; // Assert Assert.Equal(66, actual); }
public void T4() { // Arrange var stats = new TradeStatistics(2, 3, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.LongestWinningStreak; // Assert Assert.Equal(55, actual); }
public void T18() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 72, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.AverageMaximumFavourableExcursion; // Assert Assert.Equal(72, actual); }
public void T27() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.23, 1, 1, 1, 432.66); // Act var actual = stats.PointsExpectancy; // Assert Assert.Equal(432.66, actual); }
public void T3() { // Arrange var stats = new TradeStatistics(2, 3, 0.66, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.WinProbability; // Assert Assert.Equal(0.66, actual); }
public void T26() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.23, 1, 1, 23.65, 1); // Act var actual = stats.CashExpectancy; // Assert Assert.Equal(23.65, actual); }
public void T2() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.Loses; // Assert Assert.Equal(3, actual); }
public void T24() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5.33, 1, 1, 1); // Act var actual = stats.AverageUnrealisedProfitCash; // Assert Assert.Equal(5.33, actual); }
public void T25() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.23, 1, 1.76, 1, 1); // Act var actual = stats.Gain; // Assert Assert.Equal(1.76, actual); }
public void T22() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.23, 1, 1, 1, 1); // Act var actual = stats.AverageUnrealisedProfitPoints; // Assert Assert.Equal(1.23, actual); }
public void T21() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87, 1, 1, 1, 1, 1); // Act var actual = stats.AverageRealisedProfitPercentage; // Assert Assert.Equal(0.87, actual); }
public void T20() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3.65, 1, 1, 1, 1, 1, 1); // Act var actual = stats.AverageResultInR; // Assert Assert.Equal(3.65, actual); }
public void T19() { // Arrange var stats = new TradeStatistics(2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7.45, 1, 1, 1, 1, 1, 1, 1); // Act var actual = stats.AverageRiskRewardRatio; // Assert Assert.Equal(7.45, actual); }
public static decimal RSquared(List <Trade> trades) { var tradeStatistics = new TradeStatistics(trades); var equityChangePerDay = EquityChangePerDay(trades).Select((ec) => (double)ec.Value); var equityCurve = equityChangePerDay.Rollup(0d, (acc, val) => acc + val); var expectedCurve = Enumerable.Repeat((double)tradeStatistics.AverageProfitLoss, equityCurve.Count()).Rollup(0d, (acc, val) => acc + val); var sumOfSquares = expectedCurve.Sum((e) => Math.Pow(e - 1, 2)); var residualSumOfSquares = equityCurve.Zip(expectedCurve, (a, b) => (a - b)).Sum((r) => Math.Pow(r, 2)); return((decimal)(1 - (residualSumOfSquares / sumOfSquares))); }
private void GenerateTradeSummary(IEnumerable <Trade> trades, string header = "") { var tradeStatistics = new TradeStatistics(trades); var tradeSummary = tradeStatistics.GetSummary(); Console.WriteLine(header); foreach (KeyValuePair <string, string> kvp in tradeSummary) { Console.WriteLine("{0} {1}", kvp.Key, kvp.Value); } }
public TradeStatistics CalculateTradeStatistics() { var statistics = new TradeStatistics { TotalActions = TradeLog.Count }; foreach (var record in TradeLog) { switch (record.ExecutedAction) { case MarketAction.Buy: statistics.TotalBuys++; break; case MarketAction.Sell: statistics.TotalSells++; if (record.Profit < 0.0) { statistics.NegativeProfitCloses++; } else if (record.Profit > 0.0) { statistics.PositiveProfitCloses++; } else { statistics.ZeroProfitCloses++; } break; case MarketAction.Hold: statistics.TotalHolds++; break; } if (record.ExecutedAction != record.CorrectAction) { statistics.Mistakes++; } statistics.TotalProfit += record.Profit; } statistics.TotalProfit = MathHelpers.CurrencyPrecision(statistics.TotalProfit); return(statistics); }