|
From: Thies <tg...@us...> - 2007-10-08 19:19:05
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv4409/src/test/net/sf/tail/analysis/criteria Added Files: BrazilianTotalProfitCriterionTest.java BrazilianTransactionCostsCriterionTest.java Log Message: Novos criterias e refatoracao no totalProfit --- NEW FILE: BrazilianTransactionCostsCriterionTest.java --- package net.sf.tail.analysis.criteria; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import net.sf.tail.AnalysisCriterion; 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.sample.SampleTimeSeries; import org.junit.Test; public class BrazilianTransactionCostsCriterionTest { @Test public void testCalculate() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); List<Trade> trades = new ArrayList<Trade>(); AnalysisCriterion brazilianCost = new BrazilianTransactionCostsCriterion(); trades.add(new Trade(new Operation(0, OperationType.BUY), new Operation(1, OperationType.SELL))); assertEquals(40d, brazilianCost.calculate(series, trades)); trades.add(new Trade(new Operation(2, OperationType.BUY), new Operation(3, OperationType.SELL))); assertEquals(80d, brazilianCost.calculate(series, trades)); trades.add(new Trade(new Operation(4, OperationType.BUY), new Operation(5, OperationType.SELL))); assertEquals(120d, brazilianCost.calculate(series, trades)); } @Test public void testCalculateWithOneTrade() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); Trade trade = new Trade(new Operation(0, OperationType.BUY), new Operation(1, OperationType.SELL)); AnalysisCriterion brazilianCost = new BrazilianTransactionCostsCriterion(); assertEquals(40d, brazilianCost.calculate(series, trade)); } @Test public void testSummarize() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); List<Trade> trades = new ArrayList<Trade>(); List<Decision> decisions = new ArrayList<Decision>(); trades.add(new Trade(new Operation(0, OperationType.BUY), new Operation(1, OperationType.SELL))); decisions.add(new Decision(null, null, null, trades, null)); trades = new ArrayList<Trade>(); trades.add(new Trade(new Operation(2, OperationType.BUY), new Operation(3, OperationType.SELL))); trades.add(new Trade(new Operation(4, OperationType.BUY), new Operation(5, OperationType.SELL))); decisions.add(new Decision(null, null, null, trades, null)); decisions.add(new Decision(null, null, null, trades, null)); AnalysisCriterion brazilianCosts = new BrazilianTransactionCostsCriterion(); assertEquals(200d, brazilianCosts.summarize(series, decisions)); } } --- NEW FILE: BrazilianTotalProfitCriterionTest.java --- package net.sf.tail.analysis.criteria; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import net.sf.tail.AnalysisCriterion; 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.sample.SampleTimeSeries; import org.junit.Test; public class BrazilianTotalProfitCriterionTest { @Test public void testCalculateOnlyWithGainTrades() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); List<Trade> trades = new ArrayList<Trade>(); trades.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); AnalysisCriterion profit = new BrazilianTotalProfitCriterion(); assertEquals(((110 * 0.99965d) / (100 * 1.00035d)) * ((105 * 0.99965d) / (100 * 1.00035d)), profit.calculate(series, trades)); } @Test public void testCalculateOnlyWithLossTrades() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); 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))); AnalysisCriterion profit = new BrazilianTotalProfitCriterion(); assertEquals(((95 * 0.99965d) / (100 * 1.00035d)) * ((70 * 0.99965d) / (100 * 1.00035d)), profit.calculate(series, trades)); } @Test public void testCalculateProfitWithTradesThatStartSelling() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); List<Trade> trades = new ArrayList<Trade>(); trades.add(new Trade(new Operation(0, OperationType.SELL), new Operation(1, OperationType.BUY))); trades.add(new Trade(new Operation(2, OperationType.SELL), new Operation(5, OperationType.BUY))); AnalysisCriterion profit = new BrazilianTotalProfitCriterion(); assertEquals(((100 * 0.99965d) / (95d * 1.00035d)) * ((100 * 0.99965d) / (70 * 1.00035d)), profit.calculate(series, trades)); } @Test public void testCalculateWithNoTradesShouldReturn1() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); List<Trade> trades = new ArrayList<Trade>(); AnalysisCriterion profit = new BrazilianTotalProfitCriterion(); assertEquals(1d, profit.calculate(series, trades)); } @Test public void testSummarize() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); List<Trade> trades = new ArrayList<Trade>(); List<Decision> decisions = new ArrayList<Decision>(); AnalysisCriterion profit = new BrazilianTotalProfitCriterion(); 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))); decisions.add(new Decision(null, null, null, trades, null)); trades = new ArrayList<Trade>(); trades.add(new Trade(new Operation(0, OperationType.SELL), new Operation(1, OperationType.BUY))); trades.add(new Trade(new Operation(2, OperationType.SELL), new Operation(5, OperationType.BUY))); double value1 = ((100 * 0.99965d) / (95d * 1.00035d)) * ((100 * 0.99965d) / (70 * 1.00035d)); double value2 = ((95 * 0.99965d) / (100 * 1.00035d)) * ((70 * 0.99965d) / (100 * 1.00035d)); decisions.add(new Decision(null, null, null, trades, null)); assertEquals(value1 * value2, profit.summarize(series, decisions)); } @Test public void testWithOneTrade() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); Trade trade = new Trade(new Operation(0, OperationType.BUY), new Operation(1, OperationType.SELL)); AnalysisCriterion profit = new BrazilianTotalProfitCriterion(); assertEquals(((95 * 0.99965d) / (100 * 1.00035d)), profit.calculate(series, trade)); } } |