Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/24/13 12:51:02 (11 years ago)
Author:
gkronber
Message:

#1508 refactoring: removed unused classes, unified calculation of profits and signals, implemented profit-evaluator.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Calculators/OnlineSharpeRatioCalculator.cs

    r9743 r9744  
    2222using System;
    2323using System.Collections.Generic;
    24 using HeuristicLab.Common;
    2524
    2625namespace HeuristicLab.Problems.DataAnalysis.Trading {
    2726  public class OnlineSharpeRatioCalculator : IOnlineCalculator {
    2827
    29     private int p;
    30     private double transactionCost;
    31     private int c;
    3228    private OnlineMeanAndVarianceCalculator meanAndVarianceCalculator;
     29    private OnlineProfitCalculator profitCalculator;
     30
    3331    public double SharpeRatio {
    3432      get {
     
    4038
    4139    public OnlineSharpeRatioCalculator(double transactionCost) {
    42       this.transactionCost = transactionCost;
    4340      this.meanAndVarianceCalculator = new OnlineMeanAndVarianceCalculator();
     41      this.profitCalculator = new OnlineProfitCalculator(transactionCost);
    4442      Reset();
    4543    }
     
    4846    public OnlineCalculatorError ErrorState {
    4947      get {
    50         return meanAndVarianceCalculator.MeanErrorState | meanAndVarianceCalculator.VarianceErrorState;
     48        return meanAndVarianceCalculator.MeanErrorState | meanAndVarianceCalculator.VarianceErrorState | profitCalculator.ErrorState;
    5149      }
    5250    }
     
    5553    }
    5654    public void Reset() {
    57       p = 0;
    58       c = 0;
     55      profitCalculator.Reset();
    5956      meanAndVarianceCalculator.Reset();
    6057    }
    6158
    6259    public void Add(double actualReturn, double signal) {
    63       double iterationReturn = 0.0;
    64       if (c == 0) {
    65         p = (int)signal;
    66         iterationReturn = 0;
    67         c++;
    68       } else {
    69         if (p == 0 && signal.IsAlmost(0)) {
    70         } else if (p == 0 && signal.IsAlmost(1)) {
    71           p = 1;
    72         } else if (p == 0 && signal.IsAlmost(-1)) {
    73           p = -1;
    74         } else if (p == 1 && signal.IsAlmost(1)) {
    75           iterationReturn = actualReturn;
    76         } else if (p == 1 && signal.IsAlmost(0)) {
    77           iterationReturn = actualReturn - transactionCost;
    78           p = 0;
    79         } else if (p == 1 && signal.IsAlmost(-1)) {
    80           iterationReturn = actualReturn - transactionCost;
    81           p = -1;
    82         } else if (p == -1 && signal.IsAlmost(-1)) {
    83           iterationReturn = -actualReturn;
    84         } else if (p == -1 && signal.IsAlmost(0)) {
    85           iterationReturn = -actualReturn - transactionCost;
    86           p = 0;
    87         } else if (p == -1 && signal.IsAlmost(1)) {
    88           iterationReturn = -actualReturn - transactionCost;
    89           p = 1;
    90         }
    91         c++;
    92       }
    93       meanAndVarianceCalculator.Add(iterationReturn);
     60      double prevTotalProfit = profitCalculator.Profit;
     61      profitCalculator.Add(actualReturn, signal);
     62      double curTotalProfit = profitCalculator.Profit;
     63
     64      meanAndVarianceCalculator.Add(curTotalProfit - prevTotalProfit);
    9465    }
    9566    #endregion
Note: See TracChangeset for help on using the changeset viewer.