Changeset 9744 for branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Calculators/OnlineSharpeRatioCalculator.cs
- Timestamp:
- 07/24/13 12:51:02 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Problems.DataAnalysis.Trading/HeuristicLab.Problems.DataAnalysis.Trading/3.4/Calculators/OnlineSharpeRatioCalculator.cs
r9743 r9744 22 22 using System; 23 23 using System.Collections.Generic; 24 using HeuristicLab.Common;25 24 26 25 namespace HeuristicLab.Problems.DataAnalysis.Trading { 27 26 public class OnlineSharpeRatioCalculator : IOnlineCalculator { 28 27 29 private int p;30 private double transactionCost;31 private int c;32 28 private OnlineMeanAndVarianceCalculator meanAndVarianceCalculator; 29 private OnlineProfitCalculator profitCalculator; 30 33 31 public double SharpeRatio { 34 32 get { … … 40 38 41 39 public OnlineSharpeRatioCalculator(double transactionCost) { 42 this.transactionCost = transactionCost;43 40 this.meanAndVarianceCalculator = new OnlineMeanAndVarianceCalculator(); 41 this.profitCalculator = new OnlineProfitCalculator(transactionCost); 44 42 Reset(); 45 43 } … … 48 46 public OnlineCalculatorError ErrorState { 49 47 get { 50 return meanAndVarianceCalculator.MeanErrorState | meanAndVarianceCalculator.VarianceErrorState ;48 return meanAndVarianceCalculator.MeanErrorState | meanAndVarianceCalculator.VarianceErrorState | profitCalculator.ErrorState; 51 49 } 52 50 } … … 55 53 } 56 54 public void Reset() { 57 p = 0; 58 c = 0; 55 profitCalculator.Reset(); 59 56 meanAndVarianceCalculator.Reset(); 60 57 } 61 58 62 59 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); 94 65 } 95 66 #endregion
Note: See TracChangeset
for help on using the changeset viewer.