Пример #1
0
 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);
 }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }
Пример #16
0
        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);
        }
Пример #17
0
        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);
        }
Пример #18
0
        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);
        }
Пример #19
0
        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);
        }
Пример #20
0
        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);
        }
Пример #21
0
        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);
        }
Пример #22
0
        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);
        }
Пример #23
0
        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);
        }
Пример #24
0
        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);
        }
Пример #25
0
        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);
        }
Пример #26
0
        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);
        }
Пример #27
0
        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);
        }
Пример #28
0
        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)));
        }
Пример #29
0
        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);
        }