|
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:47
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/evaluator In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/analysis/evaluator Modified Files: BestStrategyEvaluatorTest.java SampleDecision.java DecisionTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: BestStrategyEvaluatorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/evaluator/BestStrategyEvaluatorTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** BestStrategyEvaluatorTest.java 8 Oct 2007 19:38:14 -0000 1.7 --- BestStrategyEvaluatorTest.java 21 Nov 2007 21:55:19 -0000 1.8 *************** *** 5,19 **** import java.util.HashSet; - import net.sf.tail.ConstrainedTimeSeries; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; - import net.sf.tail.TimeSeries; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.strategy.AlwaysOperateStrategy; import net.sf.tail.strategy.FakeStrategy; import org.junit.Before; import org.junit.Test; --- 5,20 ---- import java.util.HashSet; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.sample.SampleTimeSeries; + import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.AlwaysOperateStrategy; import net.sf.tail.strategy.FakeStrategy; + import org.joda.time.DateTime; + import org.joda.time.Period; import org.junit.Before; import org.junit.Test; *************** *** 44,52 **** @Test public void bestShouldBeAlwaysOperateOnProfit() { ! SampleTimeSeries series = new SampleTimeSeries(new double[] { 6.0, 9.0, 6.0, 6.0 }); ! TimeSeries constrainedSeries = new ConstrainedTimeSeries(series, 0, 3); ! ! HigherValueEvaluator evaluator = new HigherValueEvaluator(new HistoryRunner(OperationType.BUY)); ! Decision decision = evaluator.evaluate(strategies, constrainedSeries, new TotalProfitCriterion()); assertEquals(alwaysStrategy, decision.getStrategy()); --- 45,53 ---- @Test public void bestShouldBeAlwaysOperateOnProfit() { ! DateTime date = new DateTime(); ! SampleTimeSeries series = new SampleTimeSeries(new double[] { 6.0, 9.0, 6.0, 6.0 }, new DateTime[]{date, date, date, date}); ! ! HigherValueEvaluator evaluator = new HigherValueEvaluator(new HistoryRunnerFactory(), strategies, new RegularSlicer(series, new Period().withYears(2000)), new TotalProfitCriterion()); ! Decision decision = evaluator.evaluate(0); assertEquals(alwaysStrategy, decision.getStrategy()); *************** *** 55,63 **** @Test public void bestShouldBeBuyAndHoldOnLoss() { ! SampleTimeSeries series = new SampleTimeSeries(new double[] { 6.0, 3.0, 6.0, 6.0 }); ! TimeSeries constrainedSeries = new ConstrainedTimeSeries(series, 0, 3); ! HigherValueEvaluator evaluator = new HigherValueEvaluator(new HistoryRunner(OperationType.BUY)); ! Decision decision = evaluator.evaluate(strategies, constrainedSeries, new TotalProfitCriterion()); assertEquals(buyAndHoldStrategy, decision.getStrategy()); --- 56,65 ---- @Test public void bestShouldBeBuyAndHoldOnLoss() { ! DateTime date = new DateTime(); ! SampleTimeSeries series = new SampleTimeSeries(new double[] { 6.0, 3.0, 6.0, 6.0 }, new DateTime[]{date, date, date, date}); ! ! HigherValueEvaluator evaluator = new HigherValueEvaluator(new HistoryRunnerFactory(), strategies, new RegularSlicer(series, new Period().withYears(2000)), new TotalProfitCriterion()); ! Decision decision = evaluator.evaluate(0); assertEquals(buyAndHoldStrategy, decision.getStrategy()); Index: DecisionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/evaluator/DecisionTest.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** DecisionTest.java 3 Oct 2007 18:57:45 -0000 1.11 --- DecisionTest.java 21 Nov 2007 21:55:19 -0000 1.12 *************** *** 11,14 **** --- 11,15 ---- import net.sf.tail.Strategy; import net.sf.tail.TimeSeries; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; import net.sf.tail.analysis.criteria.AverageProfitCriterion; *************** *** 16,21 **** --- 17,25 ---- import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; + import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.FakeStrategy; + import org.joda.time.DateTime; + import org.joda.time.Period; import org.junit.Before; import org.junit.Test; *************** *** 27,36 **** private AnalysisCriterion criteria; - private Runner runner; - @Before public void setUp() { criteria = new TotalProfitCriterion(); - runner = new HistoryRunner(OperationType.BUY); } --- 31,37 ---- *************** *** 39,42 **** --- 40,44 ---- series = new SampleTimeSeries(3d, 5d, 7d, 9d); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); Operation[] buy = new Operation[] { new Operation(0, OperationType.BUY), null, *************** *** 47,53 **** Strategy fakeStrategy = new FakeStrategy(buy, sell); ! Decision decision = new Decision(fakeStrategy, series, criteria, runner.run(fakeStrategy, series.getBegin(), ! series.getEnd()), new HistoryRunner(OperationType.BUY)); assertEquals(45d / 21, decision.evaluateCriterion(), 0.001); } --- 49,56 ---- Strategy fakeStrategy = new FakeStrategy(buy, sell); + + Runner runner = new HistoryRunner(slicer,fakeStrategy); ! Decision decision = new Decision(fakeStrategy, slicer,0, criteria, runner.run(0), new HistoryRunner(slicer,fakeStrategy)); assertEquals(45d / 21, decision.evaluateCriterion(), 0.001); } *************** *** 56,60 **** public void testEvaluateCriterionNotSelling() { series = new SampleTimeSeries(3d, 1d, 7d, 9d); ! Operation[] buy = new Operation[] { new Operation(0, OperationType.BUY), null, new Operation(2, OperationType.BUY), null }; --- 59,64 ---- public void testEvaluateCriterionNotSelling() { series = new SampleTimeSeries(3d, 1d, 7d, 9d); ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); ! Operation[] buy = new Operation[] { new Operation(0, OperationType.BUY), null, new Operation(2, OperationType.BUY), null }; *************** *** 63,70 **** Strategy fakeStrategy = new FakeStrategy(buy, sell); ! ! Decision decision = new Decision(fakeStrategy, series, criteria, runner.run(fakeStrategy, series.getBegin(), ! series.getEnd()), new HistoryRunner(OperationType.BUY)); ! assertEquals(3d, decision.evaluateCriterion(), 0.0001); } --- 67,73 ---- Strategy fakeStrategy = new FakeStrategy(buy, sell); ! Runner runner = new HistoryRunner(slicer,fakeStrategy); ! Decision decision = new Decision(fakeStrategy, slicer,0, criteria, runner.run(0), new HistoryRunner(slicer,fakeStrategy)); ! assertEquals(1d, decision.evaluateCriterion()); } *************** *** 72,76 **** --- 75,95 ---- public void testEvaluateCriterionWithAnotherCriteria() { series = new SampleTimeSeries(3d, 1d, 7d, 9d); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); + + Operation[] buy = new Operation[] { new Operation(0, OperationType.BUY), null, null, null }; + Operation[] sell = new Operation[] { null, null, null, new Operation(3, OperationType.SELL) }; + + Strategy fakeStrategy = new FakeStrategy(buy, sell); + Runner runner = new HistoryRunner(slicer,fakeStrategy); + Decision decision = new Decision(fakeStrategy, slicer,0, null, runner.run(0), new HistoryRunner(slicer,fakeStrategy)); + assertEquals(Math.pow(3d, 1d / 4), decision.evaluateCriterion(new AverageProfitCriterion()), 0.0001); + } + + @Test + public void testAverageProfitWithZeroNumberOfTicks() { + series = new SampleTimeSeries(3d, 1d, 7d, 9d); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); + Operation[] buy = new Operation[] { new Operation(0, OperationType.BUY), null, new Operation(2, OperationType.BUY), null }; *************** *** 79,107 **** Strategy fakeStrategy = new FakeStrategy(buy, sell); ! ! Decision decision = new Decision(fakeStrategy, series, null, runner.run(fakeStrategy, series.getBegin(), series ! .getEnd()), new HistoryRunner(OperationType.BUY)); ! assertEquals(Math.pow(3d, 1d / 4), decision.evaluateCriterion(new AverageProfitCriterion()), 0.0001); } @Test public void testApplyFor() { ! series = new SampleTimeSeries(1d, 2d, 3d, 4d, 5d); ! TimeSeries nextSeries = new SampleTimeSeries(5d, 5d, 5d, 5d, 5d); ! Operation[] buy = new Operation[] { new Operation(0, OperationType.BUY), null, null, null, null }; ! Operation[] sell = new Operation[] { null, null, null, null, new Operation(4, OperationType.SELL) }; Strategy fakeStrategy = new FakeStrategy(buy, sell); ! List<Trade> trades = runner.run(fakeStrategy, series.getBegin(), series.getEnd()); ! Decision decision = new Decision(fakeStrategy, series, criteria, trades, new HistoryRunner(OperationType.BUY)); ! Decision nextDecision = new Decision(fakeStrategy, nextSeries, criteria, runner.run(fakeStrategy, nextSeries ! .getBegin(), nextSeries.getEnd()), new HistoryRunner(OperationType.BUY)); ! ! Decision appliedDecision = decision.applyFor(nextSeries); assertEquals(nextDecision, appliedDecision); assertEquals(1d, appliedDecision.evaluateCriterion()); ! assertEquals(nextSeries, appliedDecision.getSeries()); } } --- 98,126 ---- Strategy fakeStrategy = new FakeStrategy(buy, sell); ! Runner runner = new HistoryRunner(slicer,fakeStrategy); ! Decision decision = new Decision(fakeStrategy, slicer,0, null, runner.run(0), new HistoryRunner(slicer,fakeStrategy)); ! assertEquals(1d, decision.evaluateCriterion(new AverageProfitCriterion())); } @Test public void testApplyFor() { ! DateTime date = new DateTime(); ! series = new SampleTimeSeries(new double[] { 1d, 2d, 3d, 4d, 5d,5d, 5d, 5d, 5d, 5d},new DateTime[]{date.withYear(2000),date.withYear(2000),date.withYear(2000),date.withYear(2000),date.withYear(2000),date.withYear(2001),date.withYear(2001),date.withYear(2001),date.withYear(2001),date.withYear(2001),}); ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); ! Operation[] buy = new Operation[] { new Operation(0, OperationType.BUY), null, null, null, null, null, null, null, null,null }; ! Operation[] sell = new Operation[] { null, null, null, null, new Operation(4, OperationType.SELL), null, null, null, null,null }; Strategy fakeStrategy = new FakeStrategy(buy, sell); + Runner runner = new HistoryRunner(slicer,fakeStrategy); + List<Trade> trades = runner.run(0); + Decision decision = new Decision(fakeStrategy, slicer,0, criteria, trades, new HistoryRunner(slicer,fakeStrategy)); + Decision nextDecision = new Decision(fakeStrategy, slicer,1, criteria, runner.run(1), new HistoryRunner(slicer,fakeStrategy)); ! Decision appliedDecision = decision.applyFor(1); assertEquals(nextDecision, appliedDecision); assertEquals(1d, appliedDecision.evaluateCriterion()); ! assertEquals(slicer.getSlice(1).getBegin(), appliedDecision.getActualSlice().getBegin()); ! assertEquals(slicer.getSlice(1).getEnd(), appliedDecision.getActualSlice().getEnd()); } } Index: SampleDecision.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/evaluator/SampleDecision.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SampleDecision.java 23 Aug 2007 12:51:08 -0000 1.3 --- SampleDecision.java 21 Nov 2007 21:55:19 -0000 1.4 *************** *** 1,5 **** package net.sf.tail.analysis.evaluator; - import net.sf.tail.OperationType; import net.sf.tail.runner.HistoryRunner; --- 1,4 ---- *************** *** 9,13 **** public SampleDecision(double value) { ! super(null, null, null, null, new HistoryRunner(OperationType.BUY)); this.value = value; } --- 8,12 ---- public SampleDecision(double value) { ! super(null, null,0, null, null, new HistoryRunner(null,null)); this.value = value; } |