Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv27460/src/test/net/sf/tail/analysis/criteria
Added Files:
BrazilianRewardRiskRatioCriterionTest.java
Log Message:
Novo criteria
--- NEW FILE: BrazilianRewardRiskRatioCriterionTest.java ---
package net.sf.tail.analysis.criteria;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import net.sf.tail.Operation;
import net.sf.tail.OperationType;
import net.sf.tail.Trade;
import net.sf.tail.analysis.evaluator.Decision;
import net.sf.tail.analysis.evaluator.DummyDecision;
import net.sf.tail.sample.SampleTimeSeries;
import org.junit.Before;
import org.junit.Test;
public class BrazilianRewardRiskRatioCriterionTest {
private BrazilianRewardRiskRatioCriterion rrc;
@Before
public void setUp() {
this.rrc = new BrazilianRewardRiskRatioCriterion();
}
@Test
public void testRewardRiskRatioCriterion() {
List<Trade> trades = new ArrayList<Trade>();
trades.add(new Trade(new Operation(0, OperationType.BUY), new Operation(1, OperationType.SELL)));
trades.add(new Trade(new Operation(2, OperationType.BUY), new Operation(4, OperationType.SELL)));
trades.add(new Trade(new Operation(5, OperationType.BUY), new Operation(7, OperationType.SELL)));
SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 95, 100, 90, 95, 80, 120 });
double totalProfit = ((105d * 0.99965d)/ (100d * 1.00035d)) * ((90d * 0.99965d)/ (95d * 1.00035d)) * ((120d * 0.99965d) / (95 * 1.00035d));
double peak = (105d / 100) * (100d / 95);
double low = (105d / 100) * (90d / 95) * (80d / 95);
assertEquals(totalProfit / ((peak - low) / peak),
rrc.calculate(series, trades), 0.001);
}
@Test
public void testSummarize() {
SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 95, 100, 90, 95, 80, 120 });
List<Decision> decisions = new LinkedList<Decision>();
List<Trade> tradesToDummy1 = new LinkedList<Trade>();
tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(1, OperationType.SELL)));
Decision dummy1 = new DummyDecision(tradesToDummy1);
decisions.add(dummy1);
List<Trade> tradesToDummy2 = new LinkedList<Trade>();
tradesToDummy2.add(new Trade(new Operation(2, OperationType.BUY), new Operation(4, OperationType.SELL)));
Decision dummy2 = new DummyDecision(tradesToDummy2);
decisions.add(dummy2);
List<Trade> tradesToDummy3 = new LinkedList<Trade>();
tradesToDummy3.add(new Trade(new Operation(5, OperationType.BUY), new Operation(7, OperationType.SELL)));
Decision dummy3 = new DummyDecision(tradesToDummy3);
decisions.add(dummy3);
double totalProfit = ((105d * 0.99965d)/ (100d * 1.00035d)) * ((90d * 0.99965d)/ (95d * 1.00035d)) * ((120d * 0.99965d) / (95 * 1.00035d));
double peak = (105d / 100) * (100d / 95);
double low = (105d / 100) * (90d / 95) * (80d / 95);
assertEquals(totalProfit / ((peak - low) / peak),
rrc.summarize(series, decisions), 0.001);
}
@Test
public void testRewardRiskRatioCriterionOnlyWithGain() {
SampleTimeSeries series = new SampleTimeSeries(new double[] { 1, 2, 3, 6, 8, 20, 3 });
List<Trade> trades = new ArrayList<Trade>();
trades.add(new Trade(new Operation(0, OperationType.BUY), new Operation(1, OperationType.SELL)));
trades.add(new Trade(new Operation(2, OperationType.BUY), new Operation(5, OperationType.SELL)));
assertTrue(Double.isInfinite(rrc.calculate(series, trades)));
}
@Test
public void testRewardRiskRatioCriterionWithNoTrades() {
SampleTimeSeries series = new SampleTimeSeries(new double[] { 1, 2, 3, 6, 8, 20, 3 });
List<Trade> trades = new ArrayList<Trade>();
assertTrue(Double.isInfinite(rrc.calculate(series, trades)));
}
@Test
public void testWithOneTrade() {
Trade trade = new Trade(new Operation(0, OperationType.BUY), new Operation(1, OperationType.SELL));
SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 95, 100, 90, 95, 80, 120 });
assertEquals(((95d* 0.99965d) /(100 * 1.00035d)) / ((1d - 0.95d)), rrc.calculate(series, trade));
}
}
|