You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(148) |
Jun
(48) |
Jul
(107) |
Aug
(292) |
Sep
(301) |
Oct
(530) |
Nov
(142) |
Dec
(37) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
|
Feb
|
Mar
(4) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: xanaot <xa...@us...> - 2007-11-26 16:55:38
|
Update of /cvsroot/tail/TailS In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv9825 Modified Files: build.xml Log Message: Atualização no build e arquivo de properties Index: build.xml =================================================================== RCS file: /cvsroot/tail/TailS/build.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** build.xml 12 Nov 2007 23:28:20 -0000 1.2 --- build.xml 26 Nov 2007 16:39:42 -0000 1.3 *************** *** 68,75 **** <target name="zip" depends="jar"> <zip destfile="${dist}/tails-${version}.zip"> ! <zipfileset dir="${lib.dir}" prefix="lib/"></zipfileset> ! <zipfileset dir="${dist}" includes="tails-${version}.jar"></zipfileset> ! <zipfileset dir="${data}" prefix="Data/"></zipfileset> ! <zipfileset dir="${dsl}" prefix="dsl/"></zipfileset> </zip> </target> --- 68,75 ---- <target name="zip" depends="jar"> <zip destfile="${dist}/tails-${version}.zip"> ! <zipfileset dir="${lib.dir}" prefix="tails/lib/"></zipfileset> ! <zipfileset dir="${dist}" includes="tails-${version}.jar" prefix="tails/"></zipfileset> ! <zipfileset dir="${data}" prefix="tails/Data/"></zipfileset> ! <zipfileset dir="${dsl}" prefix="tails/dsl/"></zipfileset> </zip> </target> |
From: xanaot <xa...@us...> - 2007-11-26 16:54:18
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/i18n In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv9825/src/java/net/sf/tails/i18n Modified Files: DSL_IDE.properties Log Message: Atualização no build e arquivo de properties Index: DSL_IDE.properties =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/i18n/DSL_IDE.properties,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** DSL_IDE.properties 1 Nov 2007 15:13:43 -0000 1.6 --- DSL_IDE.properties 26 Nov 2007 16:39:42 -0000 1.7 *************** *** 1,2 **** - RUBY_KEYWORDS= alias and add begin break case catch class collect def do each elsif else fail ensure for end if in module next not or raise redo rescue retry return then throw super unless undef until when while yield --- 1 ---- |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 22:19:48
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/graphics In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv18399/src/test/net/sf/tail/graphics Modified Files: CriteriaDatasetTest.java Log Message: Acerto dos testes Index: CriteriaDatasetTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/graphics/CriteriaDatasetTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** CriteriaDatasetTest.java 21 Nov 2007 21:55:20 -0000 1.7 --- CriteriaDatasetTest.java 21 Nov 2007 22:19:51 -0000 1.8 *************** *** 110,187 **** assertEquals(1d, dataset.getValue(1, 1)); } - - @Test - public void testMoveRight() { - CriteriaDataset dataset = new CriteriaDataset(reports, series, 11); - - assertEquals(reports.size(), dataset.getRowCount()); - assertEquals(11, dataset.getColumnCount()); - - assertEquals(1d, dataset.getValue(1, 0)); - assertEquals(1d, dataset.getValue(1, 1)); - assertEquals(1d, dataset.getValue(1, 2)); - assertEquals(4d/3, dataset.getValue(1, 3)); - assertEquals(4d/3, dataset.getValue(1, 4)); - assertEquals(4d/3, dataset.getValue(1, 5)); - assertEquals(4d/3, dataset.getValue(1, 6)); - assertEquals(4d/3, dataset.getValue(1, 7)); - assertEquals(4d/3, dataset.getValue(1, 8)); - assertEquals(2d, dataset.getValue(1, 9)); - assertEquals(2d, dataset.getValue(1, 10)); - - dataset.moveRight(1); - - assertEquals(reports.size(), dataset.getRowCount()); - assertEquals(11, dataset.getColumnCount()); - - assertEquals(1d, dataset.getValue(1, 0)); - assertEquals(1d, dataset.getValue(1, 1)); - assertEquals(4d/3, dataset.getValue(1, 2)); - assertEquals(4d/3, dataset.getValue(1, 3)); - assertEquals(4d/3, dataset.getValue(1, 4)); - assertEquals(4d/3, dataset.getValue(1, 5)); - assertEquals(4d/3, dataset.getValue(1, 6)); - assertEquals(4d/3, dataset.getValue(1, 7)); - assertEquals(2d, dataset.getValue(1, 8)); - assertEquals(2d, dataset.getValue(1, 9)); - assertEquals(2d, dataset.getValue(1, 10)); - } - - @Test - public void testMoveLeft() { - CriteriaDataset dataset = new CriteriaDataset(reports, series, 11); - - assertEquals(reports.size(), dataset.getRowCount()); - assertEquals(11, dataset.getColumnCount()); - - assertEquals(1d, dataset.getValue(1, 0)); - assertEquals(1d, dataset.getValue(1, 1)); - assertEquals(1d, dataset.getValue(1, 2)); - assertEquals(4d/3, dataset.getValue(1, 3)); - assertEquals(4d/3, dataset.getValue(1, 4)); - assertEquals(4d/3, dataset.getValue(1, 5)); - assertEquals(4d/3, dataset.getValue(1, 6)); - assertEquals(4d/3, dataset.getValue(1, 7)); - assertEquals(4d/3, dataset.getValue(1, 8)); - assertEquals(2d, dataset.getValue(1, 9)); - assertEquals(2d, dataset.getValue(1, 10)); - - dataset.moveRight(1); - dataset.moveLeft(1); - - assertEquals(reports.size(), dataset.getRowCount()); - assertEquals(11, dataset.getColumnCount()); - - assertEquals(1d, dataset.getValue(1, 0)); - assertEquals(1d, dataset.getValue(1, 1)); - assertEquals(1d, dataset.getValue(1, 2)); - assertEquals(4d/3, dataset.getValue(1, 3)); - assertEquals(4d/3, dataset.getValue(1, 4)); - assertEquals(4d/3, dataset.getValue(1, 5)); - assertEquals(4d/3, dataset.getValue(1, 6)); - assertEquals(4d/3, dataset.getValue(1, 7)); - assertEquals(4d/3, dataset.getValue(1, 8)); - assertEquals(2d, dataset.getValue(1, 9)); - assertEquals(2d, dataset.getValue(1, 10)); - } } --- 110,112 ---- |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:58:48
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/runner In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv9281/src/java/net/sf/tail/runner Added Files: ShortSellRunnerFactory.java Log Message: Novo factory --- NEW FILE: ShortSellRunnerFactory.java --- package net.sf.tail.runner; import net.sf.tail.Runner; import net.sf.tail.Strategy; import net.sf.tail.TimeSeriesSlicer; public class ShortSellRunnerFactory implements RunnerFactory { public Runner create(Strategy strategy, TimeSeriesSlicer slicer) { return new ShortSellRunner(slicer,strategy); } } |
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; } |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:46
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail Modified Files: ReportXmlSerializerTest.java EMAWalkTest.java StockAnalysisXmlSerializerTest.java EMACompleteTest.java ConstrainedTimeSeriesTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: EMACompleteTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/EMACompleteTest.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** EMACompleteTest.java 17 Oct 2007 16:41:53 -0000 1.21 --- EMACompleteTest.java 21 Nov 2007 21:55:19 -0000 1.22 *************** *** 18,22 **** import net.sf.tail.analysis.criteria.RewardRiskRatioCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.flow.CashFlow; --- 18,22 ---- import net.sf.tail.analysis.criteria.RewardRiskRatioCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluatorFactory; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.flow.CashFlow; *************** *** 28,32 **** import net.sf.tail.report.Report; import net.sf.tail.report.html.ReportHTMLGenerator; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; --- 28,32 ---- import net.sf.tail.report.Report; import net.sf.tail.report.html.ReportHTMLGenerator; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; *************** *** 42,47 **** TimeSeries series = ctsl.load(new FileInputStream("BaseBovespa/15min/petr4_15min_05102007.csv"), "Ambev (ambv4)"); - Walker w = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); - Set<Strategy> strategies = new HashSet<Strategy>(); Indicator<Double> close = new ClosePriceIndicator(series); --- 42,45 ---- *************** *** 52,56 **** } ! Report r = w.walk(strategies, new FullyMemorizedSlicer(series, new Period().withMonths(1)), new TotalProfitCriterion()); List<AnalysisCriterion> criteria = new LinkedList<AnalysisCriterion>(); criteria.add(new NumberOfTradesCriterion()); --- 50,59 ---- } ! ! TimeSeriesSlicer slicer = new FullyMemorizedSlicer(series, new Period().withMonths(1)); ! AnalysisCriterion criterion = new TotalProfitCriterion(); ! ! Walker w = new WalkForward(new HigherValueEvaluatorFactory(),new HistoryRunnerFactory()); ! Report r = w.walk(strategies,slicer, criterion); List<AnalysisCriterion> criteria = new LinkedList<AnalysisCriterion>(); criteria.add(new NumberOfTradesCriterion()); Index: ConstrainedTimeSeriesTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/ConstrainedTimeSeriesTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ConstrainedTimeSeriesTest.java 7 Nov 2007 23:40:49 -0000 1.3 --- ConstrainedTimeSeriesTest.java 21 Nov 2007 21:55:19 -0000 1.4 *************** *** 41,45 **** } ! @Test(expected = IllegalArgumentException.class) public void getTickTestWrongIndex() { constrained.getTick(series.getEnd() + 1); --- 41,45 ---- } ! @Test(expected = IndexOutOfBoundsException.class) public void getTickTestWrongIndex() { constrained.getTick(series.getEnd() + 1); Index: EMAWalkTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/EMAWalkTest.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** EMAWalkTest.java 17 Oct 2007 23:23:36 -0000 1.21 --- EMAWalkTest.java 21 Nov 2007 21:55:19 -0000 1.22 *************** *** 11,15 **** import net.sf.tail.analysis.criteria.RewardRiskRatioCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.indicator.simple.ClosePriceIndicator; --- 11,15 ---- import net.sf.tail.analysis.criteria.RewardRiskRatioCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluatorFactory; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.indicator.simple.ClosePriceIndicator; *************** *** 18,22 **** import net.sf.tail.report.Report; import net.sf.tail.report.html.ReportHTMLGenerator; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; --- 18,22 ---- import net.sf.tail.report.Report; import net.sf.tail.report.html.ReportHTMLGenerator; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; *************** *** 48,52 **** // walks year by year, forgetting the past and generates the report in // /tmp/petr4 ! Walker forward = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); Report report = forward.walk(strategies, slicer, new TotalProfitCriterion()); ReportHTMLGenerator generator = new ReportHTMLGenerator(); --- 48,52 ---- // walks year by year, forgetting the past and generates the report in // /tmp/petr4 ! Walker forward = new WalkForward(new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()); Report report = forward.walk(strategies, slicer, new TotalProfitCriterion()); ReportHTMLGenerator generator = new ReportHTMLGenerator(); Index: StockAnalysisXmlSerializerTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/StockAnalysisXmlSerializerTest.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** StockAnalysisXmlSerializerTest.java 17 Oct 2007 16:51:43 -0000 1.10 --- StockAnalysisXmlSerializerTest.java 21 Nov 2007 21:55:19 -0000 1.11 *************** *** 14,18 **** import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.EMAIndicator; --- 14,19 ---- import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluatorFactory; ! import net.sf.tail.analysis.evaluator.StrategyEvaluatorFactory; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.EMAIndicator; *************** *** 21,25 **** import net.sf.tail.io.StockAnalysisSerializer; import net.sf.tail.io.reader.CedroTimeSeriesLoader; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.series.SerializableTimeSeries; --- 22,26 ---- import net.sf.tail.io.StockAnalysisSerializer; import net.sf.tail.io.reader.CedroTimeSeriesLoader; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.series.SerializableTimeSeries; *************** *** 37,48 **** TimeSeriesSlicer slicer = new FullyMemorizedSlicer(stock, new Period().withDays(1)); ! Runner runner = new HistoryRunner(OperationType.BUY); ! StrategyEvaluator evaluator = new HigherValueEvaluator(runner); ! ! StockAnalysis stockAnalysis = new StockAnalysis(stock, applyedCriterion, slicer, evaluator); ! stockAnalysis.addCriterion(new MaximumDrawDownCriterion()); ! stockAnalysis.addCriterion(new AverageProfitCriterion()); ! stockAnalysis.addCriterion(new NumberOfTicksCriterion()); Set<Strategy> strategies = new HashSet<Strategy>(); --- 38,44 ---- TimeSeriesSlicer slicer = new FullyMemorizedSlicer(stock, new Period().withDays(1)); ! ! Set<Strategy> strategies = new HashSet<Strategy>(); *************** *** 54,59 **** --- 50,61 ---- strategies.add(strategy); } + StrategyEvaluatorFactory evaluator = new HigherValueEvaluatorFactory(); + StockAnalysis stockAnalysis = new StockAnalysis(stock, applyedCriterion, slicer, evaluator, new HistoryRunnerFactory()); + stockAnalysis.addCriterion(new MaximumDrawDownCriterion()); + stockAnalysis.addCriterion(new AverageProfitCriterion()); + stockAnalysis.addCriterion(new NumberOfTicksCriterion()); stockAnalysis.addReport("", strategies); + strategies = new HashSet<Strategy>(); Index: ReportXmlSerializerTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/ReportXmlSerializerTest.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ReportXmlSerializerTest.java 17 Oct 2007 16:41:54 -0000 1.8 --- ReportXmlSerializerTest.java 21 Nov 2007 21:55:19 -0000 1.9 *************** *** 11,15 **** import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.indicator.simple.ClosePriceIndicator; --- 11,15 ---- import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluatorFactory; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.indicator.simple.ClosePriceIndicator; *************** *** 18,22 **** import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; --- 18,22 ---- import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; *************** *** 37,41 **** } ! Walker w = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); Set<Strategy> strategies = new HashSet<Strategy>(); --- 37,44 ---- } ! TimeSeriesSlicer slicer = new RegularSlicer(timeSeries, new Period().withDays(1)); ! AnalysisCriterion criterion = new TotalProfitCriterion(); ! ! Set<Strategy> strategies = new HashSet<Strategy>(); *************** *** 48,53 **** } ! Report r = w.walk(strategies, new RegularSlicer(timeSeries, new Period().withDays(1)), ! new TotalProfitCriterion()); ReportSerializer serializer = new ReportSerializer(); String xml = serializer.toXML(r); --- 51,56 ---- } ! Walker w = new WalkForward(new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()); ! Report r = w.walk(strategies, slicer, criterion); ReportSerializer serializer = new ReportSerializer(); String xml = serializer.toXML(r); |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:46
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/evaluator In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/java/net/sf/tail/analysis/evaluator Modified Files: HigherValueEvaluator.java DummyDecision.java Decision.java Added Files: StrategyEvaluatorFactory.java HigherValueEvaluatorFactory.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: Decision.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/evaluator/Decision.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** Decision.java 17 Oct 2007 23:23:36 -0000 1.15 --- Decision.java 21 Nov 2007 21:55:19 -0000 1.16 *************** *** 7,11 **** --- 7,13 ---- import net.sf.tail.Strategy; import net.sf.tail.TimeSeries; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; + import net.sf.tail.series.RegularSlicer; public class Decision { *************** *** 13,18 **** private AnalysisCriterion criterion; - private TimeSeries series; - private Strategy strategy; --- 15,18 ---- *************** *** 21,39 **** private Runner runner; ! public Decision(Strategy bestStrategy, TimeSeries series, AnalysisCriterion criterion, List<Trade> trades, Runner runner) { this.strategy = bestStrategy; ! this.series = series; this.criterion = criterion; this.trades = trades; this.runner = runner; } public double evaluateCriterion() { ! return this.criterion.calculate(series, trades); } public double evaluateCriterion(AnalysisCriterion otherCriterion) { ! return otherCriterion.calculate(series, trades); } --- 21,44 ---- private Runner runner; ! private TimeSeriesSlicer slicer; ! ! private int slicerPosition; ! ! public Decision(Strategy bestStrategy, TimeSeriesSlicer slicer,int slicerPosition,AnalysisCriterion criterion, List<Trade> trades, Runner runner) { this.strategy = bestStrategy; ! this.slicer = new RegularSlicer(slicer.getSeries(), slicer.getPeriod(), slicer.getSlice(0).getTick(slicer.getSlice(0).getBegin()).getDate()); this.criterion = criterion; this.trades = trades; this.runner = runner; + this.slicerPosition = slicerPosition; } public double evaluateCriterion() { ! return this.criterion.calculate(getActualSlice(), trades); } public double evaluateCriterion(AnalysisCriterion otherCriterion) { ! return otherCriterion.calculate(getActualSlice(), trades); } *************** *** 42,48 **** } ! public Decision applyFor(TimeSeries nextSeries) { ! List<Trade> newTrades = runner.run(strategy, nextSeries.getBegin(), nextSeries.getEnd()); ! return new Decision(this.strategy, nextSeries, this.criterion, newTrades, runner); } --- 47,53 ---- } ! public Decision applyFor(int slicePosition) { ! List<Trade> newTrades = runner.run(slicePosition); ! return new Decision(this.strategy,slicer,slicerPosition+1, this.criterion, newTrades, runner); } *************** *** 51,72 **** } ! public TimeSeries getSeries() { ! return series; ! } ! ! @Override ! public boolean equals(Object obj) { ! if (obj instanceof Decision) { ! Decision decision = (Decision) obj; ! return decision.criterion.equals(this.criterion) && decision.series.equals(this.series) ! && decision.strategy.equals(this.strategy) && decision.trades.equals(this.trades); ! } ! return false; ! } ! ! @Override ! public int hashCode() { ! return (17 * criterion.hashCode()) + (31 * strategy.hashCode()) + (51 * series.hashCode()) ! + (23 * trades.hashCode()); } --- 56,61 ---- } ! public TimeSeries getActualSlice() { ! return slicer.getSlice(slicerPosition); } *************** *** 83,94 **** public String getName() { ! return series.getName() + ": " + series.getPeriodName(); } public String getFileName() { ! return this.getClass().getSimpleName() + series.getTick(series.getBegin()).getDate().toString("hhmmddMMyyyy"); } - } --- 72,133 ---- public String getName() { ! return getActualSlice().getName() + ": " + getActualSlice().getPeriodName(); } public String getFileName() { ! return this.getClass().getSimpleName() + getActualSlice().getTick(getActualSlice().getBegin()).getDate().toString("hhmmddMMyyyy"); } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((criterion == null) ? 0 : criterion.hashCode()); + result = prime * result + ((runner == null) ? 0 : runner.hashCode()); + result = prime * result + ((slicer == null) ? 0 : slicer.hashCode()); + result = prime * result + slicerPosition; + result = prime * result + ((strategy == null) ? 0 : strategy.hashCode()); + result = prime * result + ((trades == null) ? 0 : trades.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final Decision other = (Decision) obj; + if (criterion == null) { + if (other.criterion != null) + return false; + } else if (!criterion.equals(other.criterion)) + return false; + if (runner == null) { + if (other.runner != null) + return false; + } else if (!runner.equals(other.runner)) + return false; + if (slicer == null) { + if (other.slicer != null) + return false; + } else if (!slicer.equals(other.slicer)) + return false; + if (slicerPosition != other.slicerPosition) + return false; + if (strategy == null) { + if (other.strategy != null) + return false; + } else if (!strategy.equals(other.strategy)) + return false; + if (trades == null) { + if (other.trades != null) + return false; + } else if (!trades.equals(other.trades)) + return false; + return true; + } } --- NEW FILE: HigherValueEvaluatorFactory.java --- package net.sf.tail.analysis.evaluator; import java.util.Set; import net.sf.tail.AnalysisCriterion; import net.sf.tail.Strategy; import net.sf.tail.StrategyEvaluator; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.runner.RunnerFactory; public class HigherValueEvaluatorFactory implements StrategyEvaluatorFactory { public StrategyEvaluator create(RunnerFactory runnerFactory, Set<Strategy> strategies, TimeSeriesSlicer slicer, AnalysisCriterion criterion) { return new HigherValueEvaluator(runnerFactory,strategies,slicer,criterion); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (this.getClass().hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; return true; } } Index: DummyDecision.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/evaluator/DummyDecision.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** DummyDecision.java 7 Nov 2007 22:22:10 -0000 1.1 --- DummyDecision.java 21 Nov 2007 21:55:19 -0000 1.2 *************** *** 4,10 **** import java.util.List; ! import net.sf.tail.OperationType; import net.sf.tail.Trade; - import net.sf.tail.runner.HistoryRunner; public class DummyDecision extends Decision { --- 4,9 ---- import java.util.List; ! import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; public class DummyDecision extends Decision { *************** *** 12,22 **** private double value; ! public DummyDecision(double value) { ! super(null, null, null, new LinkedList<Trade>(), new HistoryRunner(OperationType.BUY)); this.value = value; } ! public DummyDecision(List<Trade> trades) { ! super(null, null, null, trades, new HistoryRunner(OperationType.BUY)); } --- 11,21 ---- private double value; ! public DummyDecision(double value, TimeSeriesSlicer slicer) { ! super(null, slicer,0, null, new LinkedList<Trade>(), null); this.value = value; } ! public DummyDecision(List<Trade> trades, TimeSeriesSlicer slicer) { ! super(null, slicer,0, null, trades, null); } Index: HigherValueEvaluator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/evaluator/HigherValueEvaluator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** HigherValueEvaluator.java 8 Oct 2007 19:38:14 -0000 1.1 --- HigherValueEvaluator.java 21 Nov 2007 21:55:19 -0000 1.2 *************** *** 1,16 **** package net.sf.tail.analysis.evaluator; import java.util.Iterator; import java.util.Set; - import org.apache.log4j.Logger; - import net.sf.tail.AnalysisCriterion; - import net.sf.tail.StrategyEvaluator; - import net.sf.tail.OperationType; import net.sf.tail.Runner; import net.sf.tail.Strategy; ! import net.sf.tail.TimeSeries; ! import net.sf.tail.runner.HistoryRunner; public class HigherValueEvaluator implements StrategyEvaluator { --- 1,16 ---- package net.sf.tail.analysis.evaluator; + import java.util.HashMap; import java.util.Iterator; import java.util.Set; import net.sf.tail.AnalysisCriterion; import net.sf.tail.Runner; import net.sf.tail.Strategy; ! import net.sf.tail.StrategyEvaluator; ! import net.sf.tail.TimeSeriesSlicer; ! import net.sf.tail.runner.RunnerFactory; ! ! import org.apache.log4j.Logger; public class HigherValueEvaluator implements StrategyEvaluator { *************** *** 18,38 **** private static final Logger LOG = Logger.getLogger(HigherValueEvaluator.class); - private Runner runner; ! public HigherValueEvaluator(Runner runner) { ! this.runner = runner; } ! public Decision evaluate(Set<Strategy> strategies, TimeSeries series, AnalysisCriterion criterion) { Iterator<Strategy> iter = strategies.iterator(); Strategy bestStrategy = iter.next(); ! Decision bestDecision = new Decision(bestStrategy, series, criterion, runner.run(bestStrategy, series ! .getBegin(), series.getEnd()), runner); while (iter.hasNext()) { Strategy strategy = iter.next(); ! Decision decision = new Decision(strategy, series, criterion, runner.run(strategy, series.getBegin(), ! series.getEnd()), new HistoryRunner(OperationType.BUY)); double value = decision.evaluateCriterion(); LOG.info(String.format("For %s, criterion %s, gave %.3f", strategy, criterion.getClass().getSimpleName(), --- 18,58 ---- private static final Logger LOG = Logger.getLogger(HigherValueEvaluator.class); ! private Set<Strategy> strategies; ! ! private TimeSeriesSlicer slicer; ! ! private AnalysisCriterion criterion; ! ! private int slicePosition; ! ! private HashMap<Strategy, Runner> hashRunner; ! ! public HigherValueEvaluator(RunnerFactory runnerFactory,Set<Strategy> strategies, TimeSeriesSlicer slicer, AnalysisCriterion criterion) { ! this.strategies = strategies; ! this.slicer = slicer; ! this.criterion = criterion; ! this.slicePosition = 0; ! ! this.hashRunner = new HashMap<Strategy, Runner>(); ! ! for (Strategy strategy : strategies) { ! hashRunner.put(strategy, runnerFactory.create(strategy, slicer)); ! } } ! public Decision evaluate(int slicePosition) { Iterator<Strategy> iter = strategies.iterator(); Strategy bestStrategy = iter.next(); ! Runner runner = hashRunner.get(bestStrategy); ! ! Decision bestDecision = new Decision(bestStrategy, slicer,slicePosition, criterion, runner.run(slicePosition), runner); while (iter.hasNext()) { Strategy strategy = iter.next(); ! runner = hashRunner.get(strategy); ! ! Decision decision = new Decision(strategy, slicer,slicePosition, criterion, runner.run(slicePosition), runner); double value = decision.evaluateCriterion(); LOG.info(String.format("For %s, criterion %s, gave %.3f", strategy, criterion.getClass().getSimpleName(), *************** *** 50,54 **** final int prime = 31; int result = 1; ! result = prime * result + ((runner == null) ? 0 : runner.hashCode()); return result; } --- 70,78 ---- final int prime = 31; int result = 1; ! result = prime * result + ((criterion == null) ? 0 : criterion.hashCode()); ! result = prime * result + ((hashRunner == null) ? 0 : hashRunner.hashCode()); ! result = prime * result + slicePosition; ! result = prime * result + ((slicer == null) ? 0 : slicer.hashCode()); ! result = prime * result + ((strategies == null) ? 0 : strategies.hashCode()); return result; } *************** *** 63,70 **** return false; final HigherValueEvaluator other = (HigherValueEvaluator) obj; ! if (runner == null) { ! if (other.runner != null) return false; ! } else if (!runner.equals(other.runner)) return false; return true; --- 87,111 ---- return false; final HigherValueEvaluator other = (HigherValueEvaluator) obj; ! if (criterion == null) { ! if (other.criterion != null) return false; ! } else if (!criterion.equals(other.criterion)) ! return false; ! if (hashRunner == null) { ! if (other.hashRunner != null) ! return false; ! } else if (!hashRunner.equals(other.hashRunner)) ! return false; ! if (slicePosition != other.slicePosition) ! return false; ! if (slicer == null) { ! if (other.slicer != null) ! return false; ! } else if (!slicer.equals(other.slicer)) ! return false; ! if (strategies == null) { ! if (other.strategies != null) ! return false; ! } else if (!strategies.equals(other.strategies)) return false; return true; --- NEW FILE: StrategyEvaluatorFactory.java --- package net.sf.tail.analysis.evaluator; import java.util.Set; import net.sf.tail.AnalysisCriterion; import net.sf.tail.Strategy; import net.sf.tail.StrategyEvaluator; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.runner.RunnerFactory; public interface StrategyEvaluatorFactory { StrategyEvaluator create(RunnerFactory runnerFactory,Set<Strategy> strategies, TimeSeriesSlicer slicer, AnalysisCriterion criterion); } |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:46
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/report In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/report Modified Files: ReportTest.java SliceReportGeneratorTest.java ReportGeneratorTest.java CompleteReportGeneratorTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: CompleteReportGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/CompleteReportGeneratorTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** CompleteReportGeneratorTest.java 15 Oct 2007 20:23:23 -0000 1.7 --- CompleteReportGeneratorTest.java 21 Nov 2007 21:55:19 -0000 1.8 *************** *** 19,22 **** --- 19,23 ---- import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.series.FullyMemorizedSlicer; + import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.FakeStrategy; *************** *** 38,41 **** --- 39,44 ---- public void setUp() throws Exception { SampleTimeSeries series = new SampleTimeSeries(); + slicer = new RegularSlicer(series,new Period().withYears(2000)); + List<Trade> trades = new ArrayList<Trade>(); trades.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); *************** *** 43,48 **** decisions = new ArrayList<Decision>(); ! Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, ! new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); slicer = new FullyMemorizedSlicer(series, new Period().withYears(1)); --- 46,54 ---- decisions = new ArrayList<Decision>(); ! ! TimeSeriesSlicer slicer = new RegularSlicer(series,new Period().withYears(2000)); ! ! Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), slicer,0, ! new TotalProfitCriterion(), trades, new HistoryRunner(slicer,new FakeStrategy(new Operation[0], new Operation[0]))); decisions.add(decision); slicer = new FullyMemorizedSlicer(series, new Period().withYears(1)); Index: ReportTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/ReportTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ReportTest.java 5 Nov 2007 23:16:09 -0000 1.7 --- ReportTest.java 21 Nov 2007 21:55:19 -0000 1.8 *************** *** 10,13 **** --- 10,14 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.Strategy; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; *************** *** 40,47 **** decisions = new ArrayList<Decision>(); - Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, - new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); - decisions.add(decision); slicer = new FullyMemorizedSlicer(series, new Period().withYears(1)); } --- 41,50 ---- decisions = new ArrayList<Decision>(); slicer = new FullyMemorizedSlicer(series, new Period().withYears(1)); + Strategy fakeStrategy = new FakeStrategy(new Operation[0], new Operation[0]); + Decision decision = new Decision(fakeStrategy, slicer, 0, + new TotalProfitCriterion(), trades, new HistoryRunner(slicer, fakeStrategy)); + decisions.add(decision); + } Index: ReportGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/ReportGeneratorTest.java,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** ReportGeneratorTest.java 15 Oct 2007 20:23:23 -0000 1.25 --- ReportGeneratorTest.java 21 Nov 2007 21:55:19 -0000 1.26 *************** *** 40,48 **** trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); decisions = new ArrayList<Decision>(); ! Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, ! new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); ! slicer = new FullyMemorizedSlicer(series, new Period().withYears(1)); criteria = new ArrayList<AnalysisCriterion>(); --- 40,50 ---- trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); + slicer = new FullyMemorizedSlicer(series, new Period().withYears(1)); decisions = new ArrayList<Decision>(); ! FakeStrategy strategy = new FakeStrategy(new Operation[0], new Operation[0]); ! Decision decision = new Decision(strategy, slicer, 0, ! new TotalProfitCriterion(), trades, new HistoryRunner(slicer, strategy)); decisions.add(decision); ! criteria = new ArrayList<AnalysisCriterion>(); Index: SliceReportGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/SliceReportGeneratorTest.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SliceReportGeneratorTest.java 10 Oct 2007 19:04:09 -0000 1.6 --- SliceReportGeneratorTest.java 21 Nov 2007 21:55:19 -0000 1.7 *************** *** 10,13 **** --- 10,15 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.Strategy; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; *************** *** 17,23 **** --- 19,27 ---- 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; *************** *** 38,43 **** trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, ! new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); criteria = new ArrayList<AnalysisCriterion>(); --- 42,49 ---- trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); ! Strategy strategy = new FakeStrategy(new Operation[0], new Operation[0]); ! decision = new Decision(strategy, slicer, 0, ! new TotalProfitCriterion(), trades, new HistoryRunner(slicer, strategy)); criteria = new ArrayList<AnalysisCriterion>(); |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:46
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/series In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/java/net/sf/tail/series Modified Files: PartialMemorizedSlicer.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: PartialMemorizedSlicer.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/series/PartialMemorizedSlicer.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** PartialMemorizedSlicer.java 17 Oct 2007 23:23:35 -0000 1.6 --- PartialMemorizedSlicer.java 21 Nov 2007 21:55:19 -0000 1.7 *************** *** 27,30 **** --- 27,32 ---- public PartialMemorizedSlicer(TimeSeries series, Period period, DateTime periodBegin, int periodsPerSlice) { + if(period == null) + throw new NullPointerException("Period cannot be null"); if(periodsPerSlice < 1) throw new IllegalArgumentException("Periods per slice must be greater than 1"); |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:23
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/java/net/sf/tail/analysis Modified Files: StockAnalysis.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: StockAnalysis.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/StockAnalysis.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** StockAnalysis.java 5 Nov 2007 23:16:10 -0000 1.15 --- StockAnalysis.java 21 Nov 2007 21:55:21 -0000 1.16 *************** *** 15,23 **** import net.sf.tail.AnalysisCriterion; import net.sf.tail.Strategy; - import net.sf.tail.StrategyEvaluator; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.dsl.ruby.RubyDSL; import net.sf.tail.report.Report; import net.sf.tail.series.SerializableTimeSeries; --- 15,24 ---- import net.sf.tail.AnalysisCriterion; import net.sf.tail.Strategy; import net.sf.tail.TimeSeriesSlicer; + import net.sf.tail.analysis.evaluator.StrategyEvaluatorFactory; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.dsl.ruby.RubyDSL; import net.sf.tail.report.Report; + import net.sf.tail.runner.RunnerFactory; import net.sf.tail.series.SerializableTimeSeries; *************** *** 40,45 **** private SerializableTimeSeries stock; - private StrategyEvaluator evaluator; - private List<Report> reports; --- 41,44 ---- *************** *** 48,58 **** private transient RubyDSL dsl; ! public StockAnalysis(SerializableTimeSeries stock, AnalysisCriterion applyedCriterion, TimeSeriesSlicer slicer, StrategyEvaluator evaluator) { this.stock = stock; this.applyedCriterion = applyedCriterion; this.slicer = slicer; ! this.evaluator = evaluator; ! walker = new WalkForward(evaluator); reports = new ArrayList<Report>(); additionalCriteria = new ArrayList<AnalysisCriterion>(); --- 47,62 ---- private transient RubyDSL dsl; ! private StrategyEvaluatorFactory evaluatorFactory; ! ! private RunnerFactory runnerFactory; ! ! public StockAnalysis(SerializableTimeSeries stock, AnalysisCriterion applyedCriterion, TimeSeriesSlicer slicer, StrategyEvaluatorFactory evaluatorFactory, RunnerFactory runnerFactory) { this.stock = stock; this.applyedCriterion = applyedCriterion; this.slicer = slicer; ! this.evaluatorFactory = evaluatorFactory; ! this.runnerFactory = runnerFactory; ! walker = new WalkForward(evaluatorFactory,runnerFactory); reports = new ArrayList<Report>(); additionalCriteria = new ArrayList<AnalysisCriterion>(); *************** *** 138,143 **** } ! public StrategyEvaluator getEvaluator() { ! return evaluator; } --- 142,147 ---- } ! public StrategyEvaluatorFactory getEvaluatorFactory() { ! return evaluatorFactory; } *************** *** 169,173 **** int result = 1; result = prime * result + ((applyedCriterion == null) ? 0 : applyedCriterion.hashCode()); ! result = prime * result + ((evaluator == null) ? 0 : evaluator.hashCode()); result = prime * result + (reports.hashCode()); result = prime * result + ((slicer == null) ? 0 : slicer.hashCode()); --- 173,177 ---- int result = 1; result = prime * result + ((applyedCriterion == null) ? 0 : applyedCriterion.hashCode()); ! result = prime * result + ((evaluatorFactory == null) ? 0 : evaluatorFactory.hashCode()); result = prime * result + (reports.hashCode()); result = prime * result + ((slicer == null) ? 0 : slicer.hashCode()); *************** *** 190,197 **** } else if (!applyedCriterion.equals(other.applyedCriterion)) return false; ! if (evaluator == null) { ! if (other.evaluator != null) return false; ! } else if (!evaluator.equals(other.evaluator)) return false; if (!reports.equals(other.reports)) --- 194,201 ---- } else if (!applyedCriterion.equals(other.applyedCriterion)) return false; ! if (evaluatorFactory == null) { ! if (other.evaluatorFactory != null) return false; ! } else if (!evaluatorFactory.equals(other.evaluatorFactory)) return false; if (!reports.equals(other.reports)) *************** *** 223,226 **** --- 227,234 ---- return text; + } + + public RunnerFactory getRunnerFactory() { + return runnerFactory; } |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:21
|
Update of /cvsroot/tail/Tail/Data/templates/slice In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/Data/templates/slice Modified Files: header.ftl sliceReport.ftl Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: sliceReport.ftl =================================================================== RCS file: /cvsroot/tail/Tail/Data/templates/slice/sliceReport.ftl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** sliceReport.ftl 10 Oct 2007 19:04:12 -0000 1.1 --- sliceReport.ftl 21 Nov 2007 21:55:21 -0000 1.2 *************** *** 22,31 **** </#if> <td>${x}</td> ! <td class="date">${decision.series.getTick(trade.entry.index).getDateName()}</td> ! <td class="date">${decision.series.getTick(trade.entry.index).closePrice}</td> ! <td class="date">${decision.series.getTick(trade.exit.index).getDateName()}</td> ! <td class="date">${decision.series.getTick(trade.exit.index).closePrice}</td> <#list criteria as criterion> ! <td> ${criterion.calculate(decision.series, decision.trades.get(x - 1))}</td> </#list> <#assign x=x+1> --- 22,31 ---- </#if> <td>${x}</td> ! <td class="date">${decision.getActualSlice().getTick(trade.entry.index).getDateName()}</td> ! <td class="date">${decision.getActualSlice().getTick(trade.entry.index).closePrice}</td> ! <td class="date">${decision.getActualSlice().getTick(trade.exit.index).getDateName()}</td> ! <td class="date">${decision.getActualSlice().getTick(trade.exit.index).closePrice}</td> <#list criteria as criterion> ! <td> ${criterion.calculate(decision.getActualSlice(), decision.trades.get(x - 1))}</td> </#list> <#assign x=x+1> *************** *** 36,45 **** <tr class="total"> <td>TOTAL</td> ! <td>${decision.series.getTick(decision.series.begin).getDateName()}</td> <td>-</td> ! <td>${decision.series.getTick(decision.series.end).getDateName()}</td> <td>-</td> <#list criteria as criterion> ! <td>${criterion.calculate(decision.series, decision.trades)} </td> </#list> </tr> --- 36,45 ---- <tr class="total"> <td>TOTAL</td> ! <td>${decision.getActualSlice().getTick(decision.getActualSlice().begin).getDateName()}</td> <td>-</td> ! <td>${decision.getActualSlice().getTick(decision.getActualSlice().end).getDateName()}</td> <td>-</td> <#list criteria as criterion> ! <td>${criterion.calculate(decision.getActualSlice(), decision.trades)} </td> </#list> </tr> Index: header.ftl =================================================================== RCS file: /cvsroot/tail/Tail/Data/templates/slice/header.ftl,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** header.ftl 5 Nov 2007 18:59:47 -0000 1.2 --- header.ftl 21 Nov 2007 21:55:21 -0000 1.3 *************** *** 9,13 **** <h1>Slice Report</h1> ! <h2>Stock: <span class="titleHeader">${decision.series.name} for: ${decision.series.periodName}</span></h2> <h3> --- 9,13 ---- <h1>Slice Report</h1> ! <h2>Stock: <span class="titleHeader">${decision.getActualSlice().name} for: ${decision.getActualSlice().periodName}</span></h2> <h3> |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:21
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/io In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/java/net/sf/tail/io Modified Files: StockAnalysisSerializer.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: StockAnalysisSerializer.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/io/StockAnalysisSerializer.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** StockAnalysisSerializer.java 17 Oct 2007 16:51:44 -0000 1.7 --- StockAnalysisSerializer.java 21 Nov 2007 21:55:21 -0000 1.8 *************** *** 24,28 **** TimeSeriesSlicer newSlicer = analysis.getSlicer().applyForSeries(newStock); ! StockAnalysis newAnalysis = new StockAnalysis(newStock,analysis.getApplyedCriterion(),newSlicer, analysis.getEvaluator()); newAnalysis.getAdditionalCriteria().addAll(analysis.getAdditionalCriteria()); --- 24,28 ---- TimeSeriesSlicer newSlicer = analysis.getSlicer().applyForSeries(newStock); ! StockAnalysis newAnalysis = new StockAnalysis(newStock,analysis.getApplyedCriterion(),newSlicer, analysis.getEvaluatorFactory(), analysis.getRunnerFactory()); newAnalysis.getAdditionalCriteria().addAll(analysis.getAdditionalCriteria()); |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:21
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/sample In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/java/net/sf/tail/sample Modified Files: SampleTimeSeries.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: SampleTimeSeries.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/sample/SampleTimeSeries.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SampleTimeSeries.java 7 Nov 2007 23:40:48 -0000 1.2 --- SampleTimeSeries.java 21 Nov 2007 21:55:21 -0000 1.3 *************** *** 17,21 **** ticks = new ArrayList<DefaultTick>(); for (int i = 0; i < data.length; i++) { ! ticks.add(new DefaultTick(data[i])); } } --- 17,21 ---- ticks = new ArrayList<DefaultTick>(); for (int i = 0; i < data.length; i++) { ! ticks.add(new DefaultTick(new DateTime().withMillisOfSecond(i),data[i])); } } |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:19
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/runner In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/runner Modified Files: HistoryRunnerTest.java ShortSellRunnerTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: HistoryRunnerTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/runner/HistoryRunnerTest.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** HistoryRunnerTest.java 22 Oct 2007 16:01:39 -0000 1.14 --- HistoryRunnerTest.java 21 Nov 2007 21:55:21 -0000 1.15 *************** *** 8,14 **** --- 8,20 ---- import net.sf.tail.OperationType; import net.sf.tail.Strategy; + import net.sf.tail.TimeSeries; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; + 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; *************** *** 21,27 **** --- 27,40 ---- private Strategy strategy; + + private TimeSeries series; @Before public void setUp() { + DateTime date = new DateTime(); + series = new SampleTimeSeries(new double[]{1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d, 9d}, + new DateTime[]{date.withYear(2000), date.withYear(2000), date.withYear(2000), date.withYear(2000), date.withYear(2001), + date.withYear(2001), date.withYear(2002), date.withYear(2002), date.withYear(2002)}); + enter = new Operation[] { null, null, new Operation(2, OperationType.BUY), new Operation(3, OperationType.BUY), null, null, new Operation(6, OperationType.BUY), null, null }; *************** *** 33,38 **** @Test public void testRunMethod() { ! HistoryRunner historyRunner = new HistoryRunner(OperationType.BUY); ! List<Trade> trades = historyRunner.run(this.strategy, 0, 8); assertEquals(2, trades.size()); --- 46,52 ---- @Test public void testRunMethod() { ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); ! HistoryRunner historyRunner = new HistoryRunner(slicer, strategy); ! List<Trade> trades = historyRunner.run(0); assertEquals(2, trades.size()); *************** *** 46,55 **** @Test public void testRunWithOpenEntryBuyLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.BUY), null, null }; ! Operation[] exit = { null, null, null, null }; Strategy strategy = new FakeStrategy(enter, exit); ! HistoryRunner historyRunner = new HistoryRunner(OperationType.BUY); ! List<Trade> trades = historyRunner.run(strategy, 0, 3); assertEquals(1, trades.size()); --- 60,70 ---- @Test public void testRunWithOpenEntryBuyLeft() { ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.BUY), null, null, null, null, null, null, null }; ! Operation[] exit = { null, null, null, new Operation(3, OperationType.SELL), null, null, null, null, null }; Strategy strategy = new FakeStrategy(enter, exit); ! HistoryRunner historyRunner = new HistoryRunner(slicer, strategy); ! List<Trade> trades = historyRunner.run(0); assertEquals(1, trades.size()); *************** *** 60,69 **** @Test public void testRunWithOpenEntrySellLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.SELL), null, null }; ! Operation[] exit = { null, null, null, null }; Strategy strategy = new FakeStrategy(enter, exit); ! HistoryRunner historyRunner = new HistoryRunner(OperationType.SELL); ! List<Trade> trades = historyRunner.run(strategy, 0, 3); assertEquals(1, trades.size()); --- 75,85 ---- @Test public void testRunWithOpenEntrySellLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.SELL), null, null, null, null, null, null, null }; ! Operation[] exit = { null, null, null, new Operation(3, OperationType.BUY), null, null, null, null, null }; + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); Strategy strategy = new FakeStrategy(enter, exit); ! HistoryRunner historyRunner = new HistoryRunner(OperationType.SELL, slicer, strategy); ! List<Trade> trades = historyRunner.run(0); assertEquals(1, trades.size()); *************** *** 72,131 **** } - @Test - public void testDoesntRunOnEmptyInterval() { - HistoryRunner runner = new HistoryRunner(OperationType.BUY); - - List<Trade> trades = runner.run(this.strategy, 0, 0); - - assertEquals(0, trades.size()); - } - - @Test(expected = IndexOutOfBoundsException.class) - public void testDoesntRunOnInvalidIntervalNegativeStart() { - HistoryRunner runner = new HistoryRunner(OperationType.BUY); - - @SuppressWarnings("unused") - List<Trade> trades = runner.run(this.strategy, -1, 0); - } - - @Test(expected = IndexOutOfBoundsException.class) - public void testDoesntRunOnInvalidIntervalNegativeEnd() { - HistoryRunner runner = new HistoryRunner(OperationType.BUY); - - @SuppressWarnings("unused") - List<Trade> trades = runner.run(this.strategy, 0, -1); - } - - @Test(expected = IllegalArgumentException.class) - public void testDoesntRunOnInvalidIntervalEndBeforeStarting() { - HistoryRunner runner = new HistoryRunner(OperationType.BUY); - - @SuppressWarnings("unused") - List<Trade> trades = runner.run(this.strategy, 3, 2); - } @Test(expected = NullPointerException.class) public void testNullTypeShouldThrowException() { @SuppressWarnings("unused") ! HistoryRunner runner = new HistoryRunner(null); } @Test public void testRunSplitted() { ! HistoryRunner historyRunner = new HistoryRunner(OperationType.BUY); ! List<Trade> trades = historyRunner.run(this.strategy, 0, 3); ! assertEquals(1, trades.size()); ! ! trades = historyRunner.run(this.strategy, 3, 6); ! assertEquals(1, trades.size()); ! assertEquals(new Operation(3, OperationType.BUY), trades.get(0).getEntry()); assertEquals(new Operation(4, OperationType.SELL), trades.get(0).getExit()); ! trades = historyRunner.run(this.strategy, 6, 8); assertEquals(1, trades.size()); assertEquals(new Operation(6, OperationType.BUY), trades.get(0).getEntry()); assertEquals(new Operation(7, OperationType.SELL), trades.get(0).getExit()); } } --- 88,166 ---- } @Test(expected = NullPointerException.class) public void testNullTypeShouldThrowException() { @SuppressWarnings("unused") ! HistoryRunner runner = new HistoryRunner(null, null); } @Test public void testRunSplitted() { ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); ! HistoryRunner historyRunner = new HistoryRunner(slicer, strategy); ! List<Trade> trades = historyRunner.run(0); assertEquals(1, trades.size()); ! assertEquals(new Operation(2, OperationType.BUY), trades.get(0).getEntry()); assertEquals(new Operation(4, OperationType.SELL), trades.get(0).getExit()); + + trades = historyRunner.run(1); ! assertEquals(0, trades.size()); ! ! ! trades = historyRunner.run(2); assertEquals(1, trades.size()); assertEquals(new Operation(6, OperationType.BUY), trades.get(0).getEntry()); assertEquals(new Operation(7, OperationType.SELL), trades.get(0).getExit()); + + } + + @Test + public void testSplitted(){ + DateTime date = new DateTime(); + TimeSeries series = new SampleTimeSeries(new double[]{1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d, 9d, 10d}, + new DateTime[]{date.withYear(2000), date.withYear(2000), date.withYear(2001), date.withYear(2001), date.withYear(2002), + date.withYear(2002), date.withYear(2002), date.withYear(2003), date.withYear(2004), date.withYear(2005)}); + + Operation[] enter = new Operation[] { new Operation(0, OperationType.BUY), null, null, new Operation(3, OperationType.BUY), + null, new Operation(5, OperationType.BUY), null, new Operation(7, OperationType.BUY), null, null }; + Operation[] exit = new Operation[] { null, null, new Operation(2, OperationType.SELL), null, new Operation(4, OperationType.SELL), null, new Operation(6, OperationType.SELL), + null, null, new Operation(9, OperationType.SELL) }; + Strategy strategy = new FakeStrategy(enter, exit); + + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); + HistoryRunner historyRunner = new HistoryRunner(slicer, strategy); + List<Trade> trades = historyRunner.run(0); + + assertEquals(1, trades.size()); + assertEquals(new Operation(0, OperationType.BUY), trades.get(0).getEntry()); + assertEquals(new Operation(2, OperationType.SELL), trades.get(0).getExit()); + + trades = historyRunner.run(1); + + assertEquals(1, trades.size()); + assertEquals(new Operation(3, OperationType.BUY), trades.get(0).getEntry()); + assertEquals(new Operation(4, OperationType.SELL), trades.get(0).getExit()); + + trades = historyRunner.run(2); + + assertEquals(1, trades.size()); + assertEquals(new Operation(5, OperationType.BUY), trades.get(0).getEntry()); + assertEquals(new Operation(6, OperationType.SELL), trades.get(0).getExit()); + + + trades = historyRunner.run(3); + + assertEquals(1, trades.size()); + assertEquals(new Operation(7, OperationType.BUY), trades.get(0).getEntry()); + assertEquals(new Operation(9, OperationType.SELL), trades.get(0).getExit()); + + trades = historyRunner.run(4); + assertEquals(0, trades.size()); + + trades = historyRunner.run(5); + assertEquals(0, trades.size()); + } } Index: ShortSellRunnerTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/runner/ShortSellRunnerTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ShortSellRunnerTest.java 23 Aug 2007 12:51:11 -0000 1.3 --- ShortSellRunnerTest.java 21 Nov 2007 21:55:21 -0000 1.4 *************** *** 9,15 **** --- 9,20 ---- import net.sf.tail.Runner; import net.sf.tail.Strategy; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; + 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; *************** *** 22,27 **** --- 27,39 ---- private Strategy strategy; + private SampleTimeSeries series; + @Before public void setUp() { + DateTime date = new DateTime(); + series = new SampleTimeSeries(new double[]{1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d, 9d}, + new DateTime[]{date.withYear(2000), date.withYear(2000), date.withYear(2000), date.withYear(2000), date.withYear(2001), + date.withYear(2001), date.withYear(2002), date.withYear(2002), date.withYear(2002)}); + enter = new Operation[] { null, null, new Operation(2, OperationType.BUY), new Operation(3, OperationType.BUY), null, null, new Operation(6, OperationType.BUY), null, null }; *************** *** 33,38 **** @Test public void testRunMethod() { ! Runner runner = new ShortSellRunner(); ! List<Trade> trades = runner.run(this.strategy, 0, 8); assertEquals(3, trades.size()); --- 45,51 ---- @Test public void testRunMethod() { ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); ! Runner runner = new ShortSellRunner(slicer, strategy); ! List<Trade> trades = runner.run(0); assertEquals(3, trades.size()); *************** *** 50,59 **** @Test public void testRunWithOpenEntryBuyLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.BUY), null, null }; ! Operation[] exit = { null, null, null, null }; Strategy strategy = new FakeStrategy(enter, exit); ! Runner historyRunner = new ShortSellRunner(); ! List<Trade> trades = historyRunner.run(strategy, 0, 3); assertEquals(1, trades.size()); --- 63,73 ---- @Test public void testRunWithOpenEntryBuyLeft() { ! Operation[] enter = new Operation[] { null, new Operation(1, OperationType.BUY), null, null, null, null, null, null, null }; ! Operation[] exit = { null, null, null, new Operation(3, OperationType.SELL), null, null, null, null, null }; + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(1)); Strategy strategy = new FakeStrategy(enter, exit); ! Runner runner = new ShortSellRunner(slicer, strategy); ! List<Trade> trades = runner.run(0); assertEquals(1, trades.size()); *************** *** 64,73 **** @Test public void testRunWithNoTrades() { ! Operation[] enter = new Operation[] { null, null, null, null }; ! Operation[] exit = { null, null, null, null }; ! Strategy strategy = new FakeStrategy(enter, exit); ! Runner historyRunner = new ShortSellRunner(); ! List<Trade> trades = historyRunner.run(strategy, 0, 3); assertEquals(0, trades.size()); } --- 78,88 ---- @Test public void testRunWithNoTrades() { ! Operation[] enter = new Operation[] { null, null, null, null, null, null, null, null, null }; ! Operation[] exit = { null, null, null, null, null, null, null, null, null }; ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); ! Strategy strategy = new FakeStrategy(enter, exit); ! Runner runner = new ShortSellRunner(slicer, strategy); ! List<Trade> trades = runner.run(0); assertEquals(0, trades.size()); } |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:19
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/analysis/criteria Modified Files: NumberOfTicksCriterionTest.java VersusBuyAndHoldCriterionTest.java AverageProfitCriterionTest.java MaximumDrawDownCriterionTest.java BrazilianTotalProfitCriterionTest.java AverageProfitableTradesCriterionTest.java BrazilianTransactionCostsCriterionTest.java RewardRiskRatioCriterionTest.java NumberOfTradesCriterionTest.java BrazilianRewardRiskRatioCriterionTest.java BuyAndHoldCriterionTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: MaximumDrawDownCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/MaximumDrawDownCriterionTest.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** MaximumDrawDownCriterionTest.java 29 Oct 2007 22:47:22 -0000 1.13 --- MaximumDrawDownCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.14 *************** *** 12,20 **** --- 12,23 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.TimeSeriesSlicer; 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 net.sf.tail.series.RegularSlicer; + import org.joda.time.Period; import org.junit.Test; *************** *** 95,112 **** SampleTimeSeries series = new SampleTimeSeries(new double[] { 1, 2, 3, 6, 5, 20, 3 }); 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(3, 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(6, OperationType.SELL))); ! Decision dummy3 = new DummyDecision(tradesToDummy3); decisions.add(dummy3); --- 98,116 ---- SampleTimeSeries series = new SampleTimeSeries(new double[] { 1, 2, 3, 6, 5, 20, 3 }); List<Decision> decisions = new LinkedList<Decision>(); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); 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, slicer); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(4, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2, slicer); decisions.add(dummy2); List<Trade> tradesToDummy3 = new LinkedList<Trade>(); tradesToDummy3.add(new Trade(new Operation(5, OperationType.BUY), new Operation(6, OperationType.SELL))); ! Decision dummy3 = new DummyDecision(tradesToDummy3, slicer); decisions.add(dummy3); Index: AverageProfitableTradesCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/AverageProfitableTradesCriterionTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** AverageProfitableTradesCriterionTest.java 31 Oct 2007 18:52:41 -0000 1.1 --- AverageProfitableTradesCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.2 *************** *** 9,17 **** --- 9,20 ---- import net.sf.tail.OperationType; import net.sf.tail.TimeSeries; + import net.sf.tail.TimeSeriesSlicer; 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 net.sf.tail.series.RegularSlicer; + import org.joda.time.Period; import org.junit.Test; import static org.junit.Assert.assertEquals; *************** *** 51,55 **** --- 54,60 ---- @Test public void testSummarize() { + TimeSeries series = new SampleTimeSeries(100d, 105d, 110d, 100d, 95d, 105d); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); List<Decision> decisions = new LinkedList<Decision>(); *************** *** 57,66 **** 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(3, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(trades); decisions.add(dummy1); List<Trade> trades2 = new LinkedList<Trade>(); trades2.add(new Trade(new Operation(4, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(trades2); decisions.add(dummy2); --- 62,71 ---- 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(3, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(trades, slicer); decisions.add(dummy1); List<Trade> trades2 = new LinkedList<Trade>(); trades2.add(new Trade(new Operation(4, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(trades2, slicer); decisions.add(dummy2); Index: NumberOfTicksCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/NumberOfTicksCriterionTest.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** NumberOfTicksCriterionTest.java 29 Oct 2007 22:47:22 -0000 1.6 --- NumberOfTicksCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.7 *************** *** 12,20 **** --- 12,23 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.TimeSeriesSlicer; 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 net.sf.tail.series.RegularSlicer; + import org.joda.time.Period; import org.junit.Test; *************** *** 45,57 **** SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); List<Decision> decisions = new LinkedList<Decision>(); ! List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2); decisions.add(dummy2); --- 48,60 ---- SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); List<Decision> decisions = new LinkedList<Decision>(); ! TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1, slicer); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2, slicer); decisions.add(dummy2); Index: BrazilianTotalProfitCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/BrazilianTotalProfitCriterionTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** BrazilianTotalProfitCriterionTest.java 29 Oct 2007 22:47:22 -0000 1.2 --- BrazilianTotalProfitCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.3 *************** *** 14,18 **** --- 14,21 ---- import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.sample.SampleTimeSeries; + import net.sf.tail.series.RegularSlicer; + import org.joda.time.DateTime; + import org.joda.time.Period; import org.junit.Test; *************** *** 64,68 **** 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>(); --- 67,72 ---- public void testSummarize() { ! DateTime date = new DateTime(); ! SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }, new DateTime[]{date, date, date, date, date, date}); List<Trade> trades = new ArrayList<Trade>(); List<Decision> decisions = new ArrayList<Decision>(); *************** *** 70,74 **** 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)); --- 74,78 ---- 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, new RegularSlicer(series, new Period().withYears(2000)),0, null, trades, null)); *************** *** 80,84 **** 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)); --- 84,88 ---- 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, new RegularSlicer(series, new Period().withYears(2000)),0, null, trades, null)); assertEquals(value1 * value2, profit.summarize(series, decisions)); Index: NumberOfTradesCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/NumberOfTradesCriterionTest.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** NumberOfTradesCriterionTest.java 29 Oct 2007 22:47:22 -0000 1.5 --- NumberOfTradesCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.6 *************** *** 12,20 **** --- 12,23 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.TimeSeriesSlicer; 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 net.sf.tail.series.RegularSlicer; + import org.joda.time.Period; import org.junit.Test; *************** *** 43,57 **** @Test public void testSummarize() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); List<Decision> decisions = new LinkedList<Decision>(); List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2); decisions.add(dummy2); --- 46,62 ---- @Test public void testSummarize() { + //TODO Dummy Decision must turn MockDecision SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); List<Decision> decisions = new LinkedList<Decision>(); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1, slicer); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2, slicer); decisions.add(dummy2); Index: BrazilianRewardRiskRatioCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/BrazilianRewardRiskRatioCriterionTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** BrazilianRewardRiskRatioCriterionTest.java 29 Oct 2007 22:47:22 -0000 1.2 --- BrazilianRewardRiskRatioCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.3 *************** *** 11,19 **** --- 11,22 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.TimeSeriesSlicer; 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 net.sf.tail.series.RegularSlicer; + import org.joda.time.Period; import org.junit.Before; import org.junit.Test; *************** *** 48,66 **** 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); --- 51,70 ---- public void testSummarize() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 95, 100, 90, 95, 80, 120 }); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); 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, slicer); 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, slicer); 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, slicer); decisions.add(dummy3); Index: VersusBuyAndHoldCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/VersusBuyAndHoldCriterionTest.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** VersusBuyAndHoldCriterionTest.java 31 Oct 2007 19:53:07 -0000 1.8 --- VersusBuyAndHoldCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.9 *************** *** 12,20 **** --- 12,23 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.TimeSeriesSlicer; 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 net.sf.tail.series.RegularSlicer; + import org.joda.time.Period; import org.junit.Test; *************** *** 35,48 **** public void testSummarize() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); List<Decision> decisions = new LinkedList<Decision>(); List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2); decisions.add(dummy2); AnalysisCriterion buyAndHold = new VersusBuyAndHoldCriterion(new TotalProfitCriterion()); --- 38,52 ---- public void testSummarize() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); List<Decision> decisions = new LinkedList<Decision>(); List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1, slicer); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2, slicer); decisions.add(dummy2); AnalysisCriterion buyAndHold = new VersusBuyAndHoldCriterion(new TotalProfitCriterion()); Index: AverageProfitCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/AverageProfitCriterionTest.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** AverageProfitCriterionTest.java 29 Oct 2007 22:47:22 -0000 1.14 --- AverageProfitCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.15 *************** *** 12,20 **** --- 12,23 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.TimeSeriesSlicer; 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 net.sf.tail.series.RegularSlicer; + import org.joda.time.Period; import org.junit.Before; import org.junit.Test; *************** *** 44,56 **** series = new SampleTimeSeries(100d, 105d, 110d, 100d, 95d, 105d); List<Decision> decisions = new LinkedList<Decision>(); List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2); decisions.add(dummy2); --- 47,60 ---- series = new SampleTimeSeries(100d, 105d, 110d, 100d, 95d, 105d); List<Decision> decisions = new LinkedList<Decision>(); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1, slicer); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2, slicer); decisions.add(dummy2); *************** *** 79,87 **** @Test ! public void testCalculateWithNoTicksShouldReturnNan() { series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); trades.clear(); AnalysisCriterion averageProfit = new AverageProfitCriterion(); ! assertEquals(Double.NaN, averageProfit.calculate(series, trades)); } @Test --- 83,91 ---- @Test ! public void testCalculateWithNoTicksShouldReturn1() { series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); trades.clear(); AnalysisCriterion averageProfit = new AverageProfitCriterion(); ! assertEquals(1d, averageProfit.calculate(series, trades)); } @Test Index: RewardRiskRatioCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/RewardRiskRatioCriterionTest.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** RewardRiskRatioCriterionTest.java 29 Oct 2007 22:47:22 -0000 1.14 --- RewardRiskRatioCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.15 *************** *** 11,19 **** --- 11,22 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.TimeSeriesSlicer; 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 net.sf.tail.series.RegularSlicer; + import org.joda.time.Period; import org.junit.Before; import org.junit.Test; *************** *** 49,66 **** 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); --- 52,70 ---- SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 95, 100, 90, 95, 80, 120 }); List<Decision> decisions = new LinkedList<Decision>(); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); 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, slicer); 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, slicer); 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, slicer); decisions.add(dummy3); Index: BrazilianTransactionCostsCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/BrazilianTransactionCostsCriterionTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** BrazilianTransactionCostsCriterionTest.java 29 Oct 2007 22:47:22 -0000 1.2 --- BrazilianTransactionCostsCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.3 *************** *** 14,18 **** --- 14,21 ---- import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.sample.SampleTimeSeries; + import net.sf.tail.series.RegularSlicer; + import org.joda.time.DateTime; + import org.joda.time.Period; import org.junit.Test; *************** *** 47,56 **** @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>(); --- 50,61 ---- @Test public void testSummarize() { ! DateTime date = new DateTime(); ! ! SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }, new DateTime[]{date, date, date, date, date, date}); 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, new RegularSlicer(series, new Period().withYears(2000)), 0,null, trades, null)); trades = new ArrayList<Trade>(); *************** *** 58,63 **** 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(); --- 63,68 ---- trades.add(new Trade(new Operation(4, OperationType.BUY), new Operation(5, OperationType.SELL))); ! decisions.add(new Decision(null, new RegularSlicer(series, new Period().withYears(2000)),0, null, trades, null)); ! decisions.add(new Decision(null, new RegularSlicer(series, new Period().withYears(2000)),0, null, trades, null)); AnalysisCriterion brazilianCosts = new BrazilianTransactionCostsCriterion(); Index: BuyAndHoldCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/BuyAndHoldCriterionTest.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** BuyAndHoldCriterionTest.java 29 Oct 2007 22:47:22 -0000 1.5 --- BuyAndHoldCriterionTest.java 21 Nov 2007 21:55:20 -0000 1.6 *************** *** 12,20 **** --- 12,23 ---- import net.sf.tail.Operation; import net.sf.tail.OperationType; + import net.sf.tail.TimeSeriesSlicer; 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 net.sf.tail.series.RegularSlicer; + import org.joda.time.Period; import org.junit.Test; *************** *** 35,48 **** public void testSummarize() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); List<Decision> decisions = new LinkedList<Decision>(); List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2); decisions.add(dummy2); --- 38,52 ---- public void testSummarize() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 105, 110, 100, 95, 105 }); + TimeSeriesSlicer slicer = new RegularSlicer(series, new Period().withYears(2000)); List<Decision> decisions = new LinkedList<Decision>(); List<Trade> tradesToDummy1 = new LinkedList<Trade>(); tradesToDummy1.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ! Decision dummy1 = new DummyDecision(tradesToDummy1, slicer); decisions.add(dummy1); List<Trade> tradesToDummy2 = new LinkedList<Trade>(); tradesToDummy2.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ! Decision dummy2 = new DummyDecision(tradesToDummy2, slicer); decisions.add(dummy2); |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:18
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/analysis Modified Files: StockAnalysisTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: StockAnalysisTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/StockAnalysisTest.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** StockAnalysisTest.java 31 Oct 2007 19:53:07 -0000 1.10 --- StockAnalysisTest.java 21 Nov 2007 21:55:21 -0000 1.11 *************** *** 12,25 **** import net.sf.tail.Operation; import net.sf.tail.OperationType; - import net.sf.tail.Runner; import net.sf.tail.Strategy; import net.sf.tail.TimeSeries; import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.series.RegularSlicer; --- 12,24 ---- 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.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluatorFactory; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.series.RegularSlicer; *************** *** 40,45 **** private StockAnalysis stockAnalysis; - private HigherValueEvaluator evaluator; - private RegularSlicer slicer; --- 39,42 ---- *************** *** 63,69 **** slicer = new RegularSlicer(series, period, date.withYear(2000).withMonthOfYear(7)); ! Runner runner = new HistoryRunner(OperationType.BUY); ! evaluator = new HigherValueEvaluator(runner); ! Operation[] enter = new Operation[] { new Operation(0, OperationType.BUY), null, new Operation(2, OperationType.BUY), null, null, null, null, null, null, null, null }; --- 60,64 ---- slicer = new RegularSlicer(series, period, date.withYear(2000).withMonthOfYear(7)); ! Operation[] enter = new Operation[] { new Operation(0, OperationType.BUY), null, new Operation(2, OperationType.BUY), null, null, null, null, null, null, null, null }; *************** *** 74,81 **** strategies.add(new FakeStrategy(enter, exit)); ! walker = new WalkForward(evaluator); report = walker.walk(strategies, slicer, applyedCriterion); report.setName(""); ! this.stockAnalysis = new StockAnalysis(stock, applyedCriterion, slicer, evaluator); } --- 69,76 ---- strategies.add(new FakeStrategy(enter, exit)); ! walker = new WalkForward(new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()); report = walker.walk(strategies, slicer, applyedCriterion); report.setName(""); ! this.stockAnalysis = new StockAnalysis(stock, applyedCriterion, slicer, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()); } *************** *** 114,125 **** @Test public void testGetEvaluator() { ! assertEquals(evaluator, stockAnalysis.getEvaluator()); ! } ! ! @Test ! public void testGetReports() { ! } @Test public void testGetWalker() { --- 109,116 ---- @Test public void testGetEvaluator() { ! assertEquals(new HigherValueEvaluatorFactory(), stockAnalysis.getEvaluatorFactory()); } + @Test public void testGetWalker() { *************** *** 130,150 **** public void testEquals() { ! StockAnalysis analysis = new StockAnalysis(stock, applyedCriterion, slicer, evaluator); assertTrue(analysis.equals(analysis)); ! assertTrue(analysis.equals(new StockAnalysis(stock, applyedCriterion, slicer, evaluator))); assertFalse(analysis.equals(new TotalProfitCriterion())); ! assertFalse(analysis.equals(new StockAnalysis(stock, null, slicer, evaluator))); ! assertFalse((new StockAnalysis(stock, null, slicer, evaluator).equals(analysis))); ! assertFalse(analysis.equals(new StockAnalysis(stock, applyedCriterion, slicer, null))); ! assertFalse((new StockAnalysis(stock, applyedCriterion, slicer, null).equals(analysis))); ! assertFalse(analysis.equals(new StockAnalysis(stock, applyedCriterion, null, evaluator))); ! assertFalse((new StockAnalysis(stock, applyedCriterion, null, evaluator).equals(analysis))); ! assertFalse(analysis.equals(new StockAnalysis(null, applyedCriterion, slicer, evaluator))); ! assertFalse((new StockAnalysis(null, applyedCriterion, slicer, evaluator).equals(analysis))); analysis.addReport("Teste", strategies); ! StockAnalysis analysis2 = new StockAnalysis(stock, applyedCriterion, slicer, evaluator); ! StockAnalysis analysis3 = new StockAnalysis(null, null, null, null); assertFalse(analysis.equals(analysis2)); assertFalse(analysis2.equals(analysis)); --- 121,141 ---- public void testEquals() { ! StockAnalysis analysis = new StockAnalysis(stock, applyedCriterion, slicer, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()); assertTrue(analysis.equals(analysis)); ! assertTrue(analysis.equals(new StockAnalysis(stock, applyedCriterion, slicer, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()))); assertFalse(analysis.equals(new TotalProfitCriterion())); ! assertFalse(analysis.equals(new StockAnalysis(stock, null, slicer, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()))); ! assertFalse((new StockAnalysis(stock, null, slicer, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()).equals(analysis))); ! assertFalse(analysis.equals(new StockAnalysis(stock, applyedCriterion, slicer,null, null))); ! assertFalse((new StockAnalysis(stock, applyedCriterion, slicer, null, null).equals(analysis))); ! assertFalse(analysis.equals(new StockAnalysis(stock, applyedCriterion, null, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()))); ! assertFalse((new StockAnalysis(stock, applyedCriterion, null, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()).equals(analysis))); ! assertFalse(analysis.equals(new StockAnalysis(null, applyedCriterion, slicer, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()))); ! assertFalse((new StockAnalysis(null, applyedCriterion, slicer, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()).equals(analysis))); analysis.addReport("Teste", strategies); ! StockAnalysis analysis2 = new StockAnalysis(stock, applyedCriterion, slicer, new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()); ! StockAnalysis analysis3 = new StockAnalysis(null, null, null, null, null); assertFalse(analysis.equals(analysis2)); assertFalse(analysis2.equals(analysis)); |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:18
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/java/net/sf/tail/analysis/criteria Modified Files: AverageProfitCriterion.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: AverageProfitCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/AverageProfitCriterion.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** AverageProfitCriterion.java 29 Oct 2007 21:40:18 -0000 1.13 --- AverageProfitCriterion.java 21 Nov 2007 21:55:21 -0000 1.14 *************** *** 17,21 **** public double calculate(TimeSeries series, List<Trade> trades) { ! return Math.pow(totalProfit.calculate(series, trades), 1d / numberOfTicks.calculate(series, trades)); } --- 17,24 ---- public double calculate(TimeSeries series, List<Trade> trades) { ! double ticks = numberOfTicks.calculate(series, trades); ! if(ticks == 0) ! return 1; ! return Math.pow(totalProfit.calculate(series, trades), 1d /ticks ); } |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:18
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/java/net/sf/tail Modified Files: StrategyEvaluator.java ConstrainedTimeSeries.java Runner.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: ConstrainedTimeSeries.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/ConstrainedTimeSeries.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ConstrainedTimeSeries.java 5 Nov 2007 18:59:47 -0000 1.10 --- ConstrainedTimeSeries.java 21 Nov 2007 21:55:21 -0000 1.11 *************** *** 29,42 **** public Tick getTick(int i) { - checkValid(i); return series.getTick(i); } - private void checkValid(int i) { - if (i < getBegin() || i > getEnd()) { - throw new IllegalArgumentException("only indexes between " + getBegin() + " and " + getEnd()); - } - } - public int getEnd() { return end; --- 29,35 ---- Index: StrategyEvaluator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/StrategyEvaluator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** StrategyEvaluator.java 8 Oct 2007 19:38:14 -0000 1.1 --- StrategyEvaluator.java 21 Nov 2007 21:55:21 -0000 1.2 *************** *** 1,6 **** package net.sf.tail; - import java.util.Set; - import net.sf.tail.analysis.evaluator.Decision; --- 1,4 ---- *************** *** 16,19 **** * @return <code>Decision</code> */ ! Decision evaluate(Set<Strategy> strategies, TimeSeries series, AnalysisCriterion criterion); } --- 14,17 ---- * @return <code>Decision</code> */ ! Decision evaluate(int slicePosition); } Index: Runner.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/Runner.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Runner.java 25 Aug 2007 12:30:01 -0000 1.2 --- Runner.java 21 Nov 2007 21:55:21 -0000 1.3 *************** *** 5,8 **** public interface Runner { ! List<Trade> run(Strategy strategy, int start, int end); } --- 5,8 ---- public interface Runner { ! List<Trade> run(int SlicePosition); } |
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/graphics In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/graphics Modified Files: ChartForReportTest.java CriteriaDatasetTest.java ChartTest.java StockAndCashFlowChartTest.java FasterCriteriaDatasetTest.java CombinedSeriesAndFlowChartTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: FasterCriteriaDatasetTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/graphics/FasterCriteriaDatasetTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** FasterCriteriaDatasetTest.java 7 Nov 2007 23:40:48 -0000 1.2 --- FasterCriteriaDatasetTest.java 21 Nov 2007 21:55:20 -0000 1.3 *************** *** 9,20 **** import net.sf.tail.AnalysisCriterion; - import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.report.Report; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleIndicator; import net.sf.tail.sample.SampleTimeSeries; --- 9,19 ---- import net.sf.tail.AnalysisCriterion; import net.sf.tail.Strategy; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluatorFactory; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.report.Report; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.sample.SampleIndicator; import net.sf.tail.sample.SampleTimeSeries; *************** *** 62,66 **** strategies2.add(new IndicatorOverIndicatorStrategy(indicator2, indicator1)); ! WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); --- 61,65 ---- strategies2.add(new IndicatorOverIndicatorStrategy(indicator2, indicator1)); ! WalkForward walk = new WalkForward(new HigherValueEvaluatorFactory(),new HistoryRunnerFactory()); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); *************** *** 108,112 **** strategies2.add(new IndicatorOverIndicatorStrategy(indicator2, indicator1)); ! WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); --- 107,111 ---- strategies2.add(new IndicatorOverIndicatorStrategy(indicator2, indicator1)); ! WalkForward walk = new WalkForward(new HigherValueEvaluatorFactory(),new HistoryRunnerFactory()); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); *************** *** 154,158 **** strategies2.add(new IndicatorOverIndicatorStrategy(indicator2, indicator1)); ! WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); --- 153,157 ---- strategies2.add(new IndicatorOverIndicatorStrategy(indicator2, indicator1)); ! WalkForward walk = new WalkForward(new HigherValueEvaluatorFactory(),new HistoryRunnerFactory()); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); *************** *** 199,203 **** strategies2.add(new IndicatorOverIndicatorStrategy(indicator2, indicator1)); ! WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); --- 198,202 ---- strategies2.add(new IndicatorOverIndicatorStrategy(indicator2, indicator1)); ! WalkForward walk = new WalkForward(new HigherValueEvaluatorFactory(),new HistoryRunnerFactory()); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); Index: CombinedSeriesAndFlowChartTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/graphics/CombinedSeriesAndFlowChartTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** CombinedSeriesAndFlowChartTest.java 22 Oct 2007 22:22:32 -0000 1.7 --- CombinedSeriesAndFlowChartTest.java 21 Nov 2007 21:55:20 -0000 1.8 *************** *** 14,19 **** import net.sf.tail.Indicator; - import net.sf.tail.OperationType; import net.sf.tail.TimeSeries; import net.sf.tail.Trade; import net.sf.tail.flow.CashFlow; --- 14,19 ---- import net.sf.tail.Indicator; import net.sf.tail.TimeSeries; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; import net.sf.tail.flow.CashFlow; *************** *** 22,25 **** --- 22,26 ---- import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.runner.HistoryRunner; + import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; *************** *** 28,31 **** --- 29,33 ---- import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; + import org.joda.time.Period; public class CombinedSeriesAndFlowChartTest extends ApplicationFrame implements ActionListener { *************** *** 86,91 **** indicators.add(sma); ! List<Trade> trades = new HistoryRunner(OperationType.BUY).run( ! new IndicatorCrossedIndicatorStrategy(close, sma), 0, 100); cashFlow = new CashFlow(timeSeries, trades); --- 88,94 ---- indicators.add(sma); ! TimeSeriesSlicer slicer = new RegularSlicer(timeSeries,new Period().withYears(2000)); ! ! List<Trade> trades = new HistoryRunner(slicer,new IndicatorCrossedIndicatorStrategy(close, sma)).run(0); cashFlow = new CashFlow(timeSeries, trades); Index: StockAndCashFlowChartTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/graphics/StockAndCashFlowChartTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** StockAndCashFlowChartTest.java 17 Oct 2007 16:41:53 -0000 1.7 --- StockAndCashFlowChartTest.java 21 Nov 2007 21:55:20 -0000 1.8 *************** *** 10,15 **** import net.sf.tail.Indicator; - import net.sf.tail.OperationType; import net.sf.tail.TimeSeries; import net.sf.tail.Trade; import net.sf.tail.flow.CashFlow; --- 10,15 ---- import net.sf.tail.Indicator; import net.sf.tail.TimeSeries; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; import net.sf.tail.flow.CashFlow; *************** *** 18,21 **** --- 18,22 ---- import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.runner.HistoryRunner; + import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; *************** *** 65,70 **** SMAIndicator sma = new SMAIndicator(indicator, 8); ! List<Trade> trades = new HistoryRunner(OperationType.BUY).run(new IndicatorCrossedIndicatorStrategy(indicator, ! sma), timeSeries.getBegin(), timeSeries.getEnd()); cashFlow = new CashFlow(timeSeries, trades); --- 66,73 ---- SMAIndicator sma = new SMAIndicator(indicator, 8); ! TimeSeriesSlicer slicer = new RegularSlicer(timeSeries,new Period().withYears(2000)); ! ! List<Trade> trades = new HistoryRunner(slicer,new IndicatorCrossedIndicatorStrategy(indicator, ! sma)).run(0); cashFlow = new CashFlow(timeSeries, trades); Index: CriteriaDatasetTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/graphics/CriteriaDatasetTest.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** CriteriaDatasetTest.java 7 Nov 2007 23:40:48 -0000 1.6 --- CriteriaDatasetTest.java 21 Nov 2007 21:55:20 -0000 1.7 *************** *** 9,21 **** import net.sf.tail.AnalysisCriterion; - import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.TimeSeries; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.report.Report; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleIndicator; import net.sf.tail.series.DefaultTimeSeries; --- 9,20 ---- import net.sf.tail.AnalysisCriterion; import net.sf.tail.Strategy; import net.sf.tail.TimeSeries; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluatorFactory; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.report.Report; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.sample.SampleIndicator; import net.sf.tail.series.DefaultTimeSeries; *************** *** 75,79 **** ! WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); --- 74,78 ---- ! WalkForward walk = new WalkForward(new HigherValueEvaluatorFactory(),new HistoryRunnerFactory()); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); Index: ChartTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/graphics/ChartTest.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ChartTest.java 24 Oct 2007 22:57:14 -0000 1.10 --- ChartTest.java 21 Nov 2007 21:55:20 -0000 1.11 *************** *** 14,19 **** import net.sf.tail.Indicator; - import net.sf.tail.OperationType; import net.sf.tail.TimeSeries; import net.sf.tail.Trade; import net.sf.tail.indicator.helper.StandardDeviationIndicator; --- 14,19 ---- import net.sf.tail.Indicator; import net.sf.tail.TimeSeries; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; import net.sf.tail.indicator.helper.StandardDeviationIndicator; *************** *** 25,28 **** --- 25,29 ---- import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.runner.HistoryRunner; + import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; *************** *** 31,34 **** --- 32,36 ---- import org.jfree.ui.ApplicationFrame; import org.jfree.ui.RefineryUtilities; + import org.joda.time.Period; public class ChartTest extends ApplicationFrame implements ActionListener { *************** *** 107,112 **** indicators.add(sma); ! List<Trade> trades = new HistoryRunner(OperationType.BUY).run( ! new IndicatorCrossedIndicatorStrategy(close, sma), 0, 100); seriesDataset = new SeriesDataset(timeSeries, indicators, 0, seriesEndIndex, trades); --- 109,115 ---- indicators.add(sma); ! TimeSeriesSlicer slicer = new RegularSlicer(timeSeries,new Period().withYears(2000)); ! ! List<Trade> trades = new HistoryRunner(slicer,new IndicatorCrossedIndicatorStrategy(close, sma)).run(0); seriesDataset = new SeriesDataset(timeSeries, indicators, 0, seriesEndIndex, trades); Index: ChartForReportTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/graphics/ChartForReportTest.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ChartForReportTest.java 24 Oct 2007 22:57:14 -0000 1.8 --- ChartForReportTest.java 21 Nov 2007 21:55:20 -0000 1.9 *************** *** 13,18 **** import net.sf.tail.Indicator; - import net.sf.tail.OperationType; import net.sf.tail.TimeSeries; import net.sf.tail.Trade; import net.sf.tail.indicator.simple.ClosePriceIndicator; --- 13,18 ---- import net.sf.tail.Indicator; import net.sf.tail.TimeSeries; + import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; import net.sf.tail.indicator.simple.ClosePriceIndicator; *************** *** 20,23 **** --- 20,24 ---- import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.runner.HistoryRunner; + import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; *************** *** 25,28 **** --- 26,30 ---- import org.jfree.chart.JFreeChart; import org.jfree.ui.ApplicationFrame; + import org.joda.time.Period; public class ChartForReportTest extends ApplicationFrame { *************** *** 76,81 **** indicators.add(sma); ! List<Trade> trades = new HistoryRunner(OperationType.BUY).run( ! new IndicatorCrossedIndicatorStrategy(close, sma), timeSeries.getBegin(), timeSeries.getEnd()); // for (int i = timeSeries.getBegin(); i < timeSeries.getEnd(); i = i + --- 78,84 ---- indicators.add(sma); ! TimeSeriesSlicer slicer = new RegularSlicer(timeSeries,new Period().withYears(2000)); ! ! List<Trade> trades = new HistoryRunner(slicer,new IndicatorCrossedIndicatorStrategy(close, sma)).run(0); // for (int i = timeSeries.getBegin(); i < timeSeries.getEnd(); i = i + |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:18
|
Update of /cvsroot/tail/Tail/Data/templates/total In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/Data/templates/total Modified Files: report.ftl Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: report.ftl =================================================================== RCS file: /cvsroot/tail/Tail/Data/templates/total/report.ftl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** report.ftl 10 Oct 2007 19:04:10 -0000 1.1 --- report.ftl 21 Nov 2007 21:55:21 -0000 1.2 *************** *** 32,40 **** <#assign x=x+1> <td>${x}</td> ! <td class="date">${decision.series.period}</td> <td class="strategy">${decision.strategy.name}</td> ! <td>${report.applyedCriterion.calculate(decision.series, decision.trades)}</td> <#list criterions as criterion> ! <td>${criterion.calculate(decision.series, decision.trades)}</td> </#list> </tr> --- 32,40 ---- <#assign x=x+1> <td>${x}</td> ! <td class="date">${decision.getActualSlice().period}</td> <td class="strategy">${decision.strategy.name}</td> ! <td>${report.applyedCriterion.calculate(decision.getActualSlice(), decision.trades)}</td> <#list criterions as criterion> ! <td>${criterion.calculate(decision.getActualSlice(), decision.trades)}</td> </#list> </tr> |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:17
|
Update of /cvsroot/tail/Tail/Data/templates/complete In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/Data/templates/complete Modified Files: report.ftl Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: report.ftl =================================================================== RCS file: /cvsroot/tail/Tail/Data/templates/complete/report.ftl,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** report.ftl 5 Nov 2007 18:59:47 -0000 1.2 --- report.ftl 21 Nov 2007 21:55:21 -0000 1.3 *************** *** 32,40 **** <#assign x=x+1> <td>${x}</td> ! <td class="date">${decision.series.periodName}</td> <td class="strategy"><a href=${urls.get(x - 2)}>${decision.strategy.name}</a></td> ! <td>${report.applyedCriterion.calculate(decision.series, decision.trades)}</td> <#list criterions as criterion> ! <td>${criterion.calculate(decision.series, decision.trades)}</td> </#list> </tr> --- 32,40 ---- <#assign x=x+1> <td>${x}</td> ! <td class="date">${decision.getActualSlice().periodName}</td> <td class="strategy"><a href=${urls.get(x - 2)}>${decision.strategy.name}</a></td> ! <td>${report.applyedCriterion.calculate(decision.getActualSlice(), decision.trades)}</td> <#list criterions as criterion> ! <td>${criterion.calculate(decision.getActualSlice(), decision.trades)}</td> </#list> </tr> |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:17
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/walk In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/analysis/walk Modified Files: WalkForwardTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: WalkForwardTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/walk/WalkForwardTest.java,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** WalkForwardTest.java 8 Oct 2007 19:38:14 -0000 1.20 --- WalkForwardTest.java 21 Nov 2007 21:55:20 -0000 1.21 *************** *** 8,12 **** import net.sf.tail.AnalysisCriterion; - import net.sf.tail.StrategyEvaluator; import net.sf.tail.Operation; import net.sf.tail.OperationType; --- 8,11 ---- *************** *** 16,22 **** import net.sf.tail.Walker; import net.sf.tail.analysis.criteria.TotalProfitCriterion; - import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.evaluator.Decision; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.series.RegularSlicer; --- 15,21 ---- import net.sf.tail.Walker; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluatorFactory; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.series.RegularSlicer; *************** *** 38,43 **** private TimeSeries series; - private StrategyEvaluator evaluator; - private Operation[] enter; --- 37,40 ---- *************** *** 58,62 **** this.criteria = new TotalProfitCriterion(); this.series = new SampleTimeSeries(data, dates); - this.evaluator = new HigherValueEvaluator(new HistoryRunner(OperationType.BUY)); enter = new Operation[] { new Operation(0, OperationType.BUY), null, null, null, null, null, --- 55,58 ---- *************** *** 64,75 **** null, null }; exit = new Operation[] { null, null, null, new Operation(3, OperationType.SELL), null, null, null, null, ! new Operation(8, OperationType.SELL), null, null, null, null, null }; this.firstStrategy = new FakeStrategy(enter, exit); strategies.add(firstStrategy); enter = new Operation[] { new Operation(0, OperationType.BUY), null, null, null, null, null, null, null, ! new Operation(8, OperationType.BUY), null, new Operation(10, OperationType.BUY), null, null, null }; exit = new Operation[] { null, null, new Operation(2, OperationType.SELL), null, null, null, null, null, null, ! null, null, null, null, null }; this.secondStrategy = new FakeStrategy(enter, exit); strategies.add(this.secondStrategy); --- 60,71 ---- null, null }; exit = new Operation[] { null, null, null, new Operation(3, OperationType.SELL), null, null, null, null, ! new Operation(8, OperationType.SELL), null, null, null, null, new Operation(13, OperationType.SELL) }; this.firstStrategy = new FakeStrategy(enter, exit); strategies.add(firstStrategy); enter = new Operation[] { new Operation(0, OperationType.BUY), null, null, null, null, null, null, null, ! new Operation(8, OperationType.BUY), null, null, new Operation(11, OperationType.BUY), null, null }; exit = new Operation[] { null, null, new Operation(2, OperationType.SELL), null, null, null, null, null, null, ! null, new Operation(10, OperationType.SELL), null, new Operation(12, OperationType.SELL), null }; this.secondStrategy = new FakeStrategy(enter, exit); strategies.add(this.secondStrategy); *************** *** 78,91 **** @Test public void testWalk() { ! Walker walk = new WalkForward(evaluator); Period period = new Period().withYears(1); TimeSeriesSlicer splittedSeries = new RegularSlicer(series, period); List<Decision> decisions = walk.walk(strategies, splittedSeries, criteria).getDecisions(); assertEquals(secondStrategy, decisions.get(0).getStrategy()); assertEquals(firstStrategy, decisions.get(1).getStrategy()); ! assertEquals(20d / 30, decisions.get(0).evaluateCriterion()); ! assertEquals(15d / 32, decisions.get(1).evaluateCriterion()); ! // TODO Fazer um teste maior, com umas 3 estrategias e uns 5 periodos } } --- 74,90 ---- @Test public void testWalk() { ! Period period = new Period().withYears(1); TimeSeriesSlicer splittedSeries = new RegularSlicer(series, period); + + Walker walk = new WalkForward(new HigherValueEvaluatorFactory(), new HistoryRunnerFactory()); + List<Decision> decisions = walk.walk(strategies, splittedSeries, criteria).getDecisions(); assertEquals(secondStrategy, decisions.get(0).getStrategy()); + assertEquals(15d/30, decisions.get(0).evaluateCriterion()); + assertEquals(firstStrategy, decisions.get(1).getStrategy()); ! assertEquals(15d/32, decisions.get(1).evaluateCriterion()); } } |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:17
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/report/xls In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/report/xls Modified Files: WorkbookGeneratorTest.java SliceXlsGeneratorTest.java ReportXlsGeneratorTest.java TImeSeriesXlsGeneratorTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: WorkbookGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/xls/WorkbookGeneratorTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** WorkbookGeneratorTest.java 24 Oct 2007 22:57:13 -0000 1.3 --- WorkbookGeneratorTest.java 21 Nov 2007 21:55:20 -0000 1.4 *************** *** 58,67 **** trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); - ArrayList<Decision> decisions = new ArrayList<Decision>(); - Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, - new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); - decisions.add(decision); period = new Period().withYears(1); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, period); Set<Strategy> strategies = new HashSet<Strategy>(); --- 58,69 ---- trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); period = new Period().withYears(1); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, period); + ArrayList<Decision> decisions = new ArrayList<Decision>(); + Strategy fakeStrategy = new FakeStrategy(new Operation[0], new Operation[0]); + Decision decision = new Decision(fakeStrategy, slicer, 0, + new TotalProfitCriterion(), trades, new HistoryRunner(slicer, fakeStrategy)); + decisions.add(decision); + Set<Strategy> strategies = new HashSet<Strategy>(); Index: SliceXlsGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/xls/SliceXlsGeneratorTest.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SliceXlsGeneratorTest.java 7 Nov 2007 21:40:01 -0000 1.4 --- SliceXlsGeneratorTest.java 21 Nov 2007 21:55:20 -0000 1.5 *************** *** 60,69 **** ArrayList<Decision> decisions = new ArrayList<Decision>(); - Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, - new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); - decisions.add(decision); - period = new Period().withYears(1); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, period); Set<Strategy> strategies = new HashSet<Strategy>(); --- 60,71 ---- ArrayList<Decision> decisions = new ArrayList<Decision>(); period = new Period().withYears(1); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, period); + Strategy fakeStrategy = new FakeStrategy(new Operation[0], new Operation[0]); + Decision decision = new Decision(fakeStrategy, slicer, 0, + new TotalProfitCriterion(), trades, new HistoryRunner(slicer, fakeStrategy)); + decisions.add(decision); + + Set<Strategy> strategies = new HashSet<Strategy>(); Index: ReportXlsGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/xls/ReportXlsGeneratorTest.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ReportXlsGeneratorTest.java 7 Nov 2007 21:40:01 -0000 1.4 --- ReportXlsGeneratorTest.java 21 Nov 2007 21:55:20 -0000 1.5 *************** *** 59,68 **** trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); - ArrayList<Decision> decisions = new ArrayList<Decision>(); - Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, - new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); - decisions.add(decision); period = new Period().withYears(1); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, period); Set<Strategy> strategies = new HashSet<Strategy>(); --- 59,70 ---- trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); period = new Period().withYears(1); + ArrayList<Decision> decisions = new ArrayList<Decision>(); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, period); + Strategy fakeStrategy = new FakeStrategy(new Operation[0], new Operation[0]); + Decision decision = new Decision(fakeStrategy, slicer, 0, + new TotalProfitCriterion(), trades, new HistoryRunner(slicer, fakeStrategy)); + decisions.add(decision); + Set<Strategy> strategies = new HashSet<Strategy>(); Index: TImeSeriesXlsGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/xls/TImeSeriesXlsGeneratorTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** TImeSeriesXlsGeneratorTest.java 7 Nov 2007 21:40:01 -0000 1.2 --- TImeSeriesXlsGeneratorTest.java 21 Nov 2007 21:55:20 -0000 1.3 *************** *** 1,4 **** --- 1,6 ---- package net.sf.tail.report.xls; + import static org.junit.Assert.assertEquals; + import java.io.IOException; import java.util.ArrayList; *************** *** 27,31 **** import org.junit.Before; import org.junit.Test; - import static org.junit.Assert.*; public class TImeSeriesXlsGeneratorTest { --- 29,32 ---- *************** *** 47,55 **** trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ArrayList<Decision> decisions = new ArrayList<Decision>(); ! Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, ! new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); - FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, new Period().withYears(1)); Set<Strategy> strategies = new HashSet<Strategy>(); --- 48,57 ---- trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); + FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, new Period().withYears(1)); ArrayList<Decision> decisions = new ArrayList<Decision>(); ! Strategy fakeStrategy = new FakeStrategy(new Operation[0], new Operation[0]); ! Decision decision = new Decision(fakeStrategy, slicer, 0, ! new TotalProfitCriterion(), trades, new HistoryRunner(slicer, fakeStrategy)); decisions.add(decision); Set<Strategy> strategies = new HashSet<Strategy>(); |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:17
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/io In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/test/net/sf/tail/io Modified Files: SerializerTest.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: SerializerTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/io/SerializerTest.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** SerializerTest.java 5 Nov 2007 23:16:10 -0000 1.13 --- SerializerTest.java 21 Nov 2007 21:55:20 -0000 1.14 *************** *** 6,10 **** import java.io.IOException; - import net.sf.tail.OperationType; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.analysis.StockAnalysis; --- 6,9 ---- *************** *** 13,19 **** import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.io.reader.CedroTimeSeriesLoader; ! import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.series.SerializableTimeSeries; --- 12,18 ---- import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; ! import net.sf.tail.analysis.evaluator.HigherValueEvaluatorFactory; import net.sf.tail.io.reader.CedroTimeSeriesLoader; ! import net.sf.tail.runner.HistoryRunnerFactory; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.series.SerializableTimeSeries; *************** *** 29,38 **** private TimeSeriesSlicer slicer; - private HistoryRunner runner; - private SerializableTimeSeries stock; - private HigherValueEvaluator evaluator; - @Before public void setUp() throws Exception { --- 28,33 ---- *************** *** 40,45 **** slicer = new FullyMemorizedSlicer(stock, new Period().withDays(1)); ! runner = new HistoryRunner(OperationType.BUY); ! evaluator = new HigherValueEvaluator(runner); applyedCriterion = new TotalProfitCriterion(); --- 35,40 ---- slicer = new FullyMemorizedSlicer(stock, new Period().withDays(1)); ! // runner = new HistoryRunner(OperationType.BUY); ! // evaluator = new HigherValueEvaluator(runner); applyedCriterion = new TotalProfitCriterion(); *************** *** 59,63 **** public void testStockAnalysisSerializer() throws FileNotFoundException, IOException { ! StockAnalysis stockAnalysis = new StockAnalysis(stock, applyedCriterion, slicer, evaluator); stockAnalysis.addCriterion(new MaximumDrawDownCriterion()); --- 54,58 ---- public void testStockAnalysisSerializer() throws FileNotFoundException, IOException { ! StockAnalysis stockAnalysis = new StockAnalysis(stock, applyedCriterion, slicer,new HigherValueEvaluatorFactory(),new HistoryRunnerFactory()); stockAnalysis.addCriterion(new MaximumDrawDownCriterion()); |
From: Márcio V. d. S. <mv...@us...> - 2007-11-21 21:55:17
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7865/src/java/net/sf/tail/report/xls Modified Files: SliceXlsGenerator.java TimeSeriesXlsGenerator.java ReportXlsGenerator.java Log Message: Mega refatoração, Runner não está mais vendendo no final de cada slice Index: TimeSeriesXlsGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/TimeSeriesXlsGenerator.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** TimeSeriesXlsGenerator.java 7 Nov 2007 23:40:47 -0000 1.7 --- TimeSeriesXlsGenerator.java 21 Nov 2007 21:55:20 -0000 1.8 *************** *** 40,44 **** TimeSeries series = new ConstrainedTimeSeries(report.getSlicer().getSeries(), ! report.getDecisions().get(0).getSeries().getBegin(), report.getSlicer().getSeries().getEnd() - 1); HSSFCellStyle style = stylist.createTitleCellStyle(); --- 40,44 ---- TimeSeries series = new ConstrainedTimeSeries(report.getSlicer().getSeries(), ! report.getDecisions().get(0).getActualSlice().getBegin(), report.getSlicer().getSeries().getEnd() - 1); HSSFCellStyle style = stylist.createTitleCellStyle(); Index: SliceXlsGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/SliceXlsGenerator.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** SliceXlsGenerator.java 12 Nov 2007 19:26:01 -0000 1.16 --- SliceXlsGenerator.java 21 Nov 2007 21:55:20 -0000 1.17 *************** *** 69,75 **** String[] subtitle = new String[4]; subtitle[0] = "Stock:"; ! subtitle[1] = decision.getSeries().getName(); subtitle[2] = "for:"; ! subtitle[3] = decision.getSeries().getPeriodName(); row = generateSubTitle(row, subtitle, style, sheet); --- 69,75 ---- String[] subtitle = new String[4]; subtitle[0] = "Stock:"; ! subtitle[1] = decision.getActualSlice().getName(); subtitle[2] = "for:"; ! subtitle[3] = decision.getActualSlice().getPeriodName(); row = generateSubTitle(row, subtitle, style, sheet); *************** *** 185,208 **** createCell(rowDecision, index++, (short) indexcolumn++, style); if (trade.getEntry().getType() == OperationType.BUY) { ! createCell(rowDecision, decision.getSeries().getTick(trade.getEntry().getIndex()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getSeries().getTick(trade.getEntry().getIndex()).getClosePrice(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getSeries().getTick(trade.getExit().getIndex()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getSeries().getTick(trade.getExit().getIndex()).getClosePrice(), (short) indexcolumn++, style); } else { ! createCell(rowDecision, decision.getSeries().getTick(trade.getExit().getIndex()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getSeries().getTick(trade.getExit().getIndex()).getClosePrice(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getSeries().getTick(trade.getEntry().getIndex()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getSeries().getTick(trade.getEntry().getIndex()).getClosePrice(), (short) indexcolumn++, style); } for (AnalysisCriterion criterium : criteria) { ! calculate = criterium.calculate(decision.getSeries(), trade); createCell(rowDecision, calculate, (short) indexcolumn++, style); } --- 185,208 ---- createCell(rowDecision, index++, (short) indexcolumn++, style); if (trade.getEntry().getType() == OperationType.BUY) { ! createCell(rowDecision, decision.getActualSlice().getTick(trade.getEntry().getIndex()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getActualSlice().getTick(trade.getEntry().getIndex()).getClosePrice(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getActualSlice().getTick(trade.getExit().getIndex()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getActualSlice().getTick(trade.getExit().getIndex()).getClosePrice(), (short) indexcolumn++, style); } else { ! createCell(rowDecision, decision.getActualSlice().getTick(trade.getExit().getIndex()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getActualSlice().getTick(trade.getExit().getIndex()).getClosePrice(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getActualSlice().getTick(trade.getEntry().getIndex()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getActualSlice().getTick(trade.getEntry().getIndex()).getClosePrice(), (short) indexcolumn++, style); } for (AnalysisCriterion criterium : criteria) { ! calculate = criterium.calculate(decision.getActualSlice(), trade); createCell(rowDecision, calculate, (short) indexcolumn++, style); } *************** *** 223,234 **** HSSFRow rowLast = sheet.createRow((short) firtRow++); createCell(rowLast, "TOTAL", (short) indexcolumn++, style); ! createCell(rowLast, decision.getSeries().getTick(decision.getSeries().getBegin()).getDateName(), (short) indexcolumn++, style); createCell(rowLast, " - ", (short) indexcolumn++, style); ! createCell(rowLast, decision.getSeries().getTick(decision.getSeries().getEnd()).getDateName(), (short) indexcolumn++, style); createCell(rowLast, " - ", (short) indexcolumn++, style); for (AnalysisCriterion criterium : criteria) { ! calculate = criterium.calculate(decision.getSeries(), decision.getTrades()); createCell(rowLast, calculate, (short) indexcolumn++, style); } --- 223,234 ---- HSSFRow rowLast = sheet.createRow((short) firtRow++); createCell(rowLast, "TOTAL", (short) indexcolumn++, style); ! createCell(rowLast, decision.getActualSlice().getTick(decision.getActualSlice().getBegin()).getDateName(), (short) indexcolumn++, style); createCell(rowLast, " - ", (short) indexcolumn++, style); ! createCell(rowLast, decision.getActualSlice().getTick(decision.getActualSlice().getEnd()).getDateName(), (short) indexcolumn++, style); createCell(rowLast, " - ", (short) indexcolumn++, style); for (AnalysisCriterion criterium : criteria) { ! calculate = criterium.calculate(decision.getActualSlice(), decision.getTrades()); createCell(rowLast, calculate, (short) indexcolumn++, style); } Index: ReportXlsGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/ReportXlsGenerator.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ReportXlsGenerator.java 12 Nov 2007 19:26:01 -0000 1.15 --- ReportXlsGenerator.java 21 Nov 2007 21:55:20 -0000 1.16 *************** *** 191,201 **** createCell(rowDecision, index++, (short) indexcolumn++, style); ! createCell(rowDecision, decision.getSeries().getTick(decision.getSeries().getBegin()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getSeries().getTick(decision.getSeries().getEnd()).getDateName(), (short) indexcolumn++, style); createCell(rowDecision, decision.getStrategy().getName(), (short) indexcolumn++, style); for (AnalysisCriterion criterium : criteria) { ! calculate = criterium.calculate(decision.getSeries(), decision.getTrades()); createCell(rowDecision, calculate, (short) indexcolumn++, style); } --- 191,201 ---- createCell(rowDecision, index++, (short) indexcolumn++, style); ! createCell(rowDecision, decision.getActualSlice().getTick(decision.getActualSlice().getBegin()).getDateName(), (short) indexcolumn++, style); ! createCell(rowDecision, decision.getActualSlice().getTick(decision.getActualSlice().getEnd()).getDateName(), (short) indexcolumn++, style); createCell(rowDecision, decision.getStrategy().getName(), (short) indexcolumn++, style); for (AnalysisCriterion criterium : criteria) { ! calculate = criterium.calculate(decision.getActualSlice(), decision.getTrades()); createCell(rowDecision, calculate, (short) indexcolumn++, style); } |