|
From: Márcio V. d. S. <mv...@us...> - 2007-07-26 19:33:37
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/walk In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv29411/src/java/net/sf/tail/analysis/walk Modified Files: WalkForward.java Walker.java Log Message: Refatoração do Walker e Evaluator para usar novo objeto: Decision. Index: WalkForward.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/walk/WalkForward.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** WalkForward.java 19 Jul 2007 21:51:53 -0000 1.6 --- WalkForward.java 26 Jul 2007 19:33:29 -0000 1.7 *************** *** 14,17 **** --- 14,18 ---- import net.sf.tail.TimeSeriesSplitter; import net.sf.tail.Trade; + import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.runner.HistoryRunner; *************** *** 32,37 **** Walker walker = new Walker(evaluator); Runner runner = new HistoryRunner(OperationType.BUY); ! List<Double> values = new ArrayList<Double>(); ! List<Double> bestValues = null; Set<Strategy> bestStrategySet = null; --- 33,38 ---- Walker walker = new Walker(evaluator); Runner runner = new HistoryRunner(OperationType.BUY); ! List<Decision> decisions = new ArrayList<Decision>(); ! List<Decision> bestDecisions = null; Set<Strategy> bestStrategySet = null; *************** *** 40,49 **** for (Set<Strategy> strategies : strategiesSet) { ! values = walker.walk(strategies, constrainedSeries, interval, criterion); ! if (bestStrategySet == null || criterion.isBetter(values, bestValues)) { LOG.debug("Changing better set of strategy to " + strategies); ! bestValues = values; bestStrategySet = strategies; } --- 41,50 ---- for (Set<Strategy> strategies : strategiesSet) { ! decisions = walker.walk(strategies, constrainedSeries, criterion); ! if (bestStrategySet == null || criterion.isBetter(decisions, bestDecisions)) { LOG.debug("Changing better set of strategy to " + strategies); ! bestDecisions = decisions; bestStrategySet = strategies; } *************** *** 51,58 **** ! Strategy bestStrategy = evaluator.evaluate(bestStrategySet, constrainedSeries.get(constrainedSeries.size() - 2), criterion); ConstrainedTimeSeries lastInterval = constrainedSeries.get(constrainedSeries.size() - 1); ! List<Trade> trades = runner.run(bestStrategy, lastInterval.getBegin(), lastInterval.getBegin() + lastInterval.getSize()); ! LOG.info("Elected best strategy: " + bestStrategy); return criterion.calculate(lastInterval, trades); } --- 52,59 ---- ! Decision bestDecision = evaluator.evaluate(bestStrategySet, constrainedSeries.get(constrainedSeries.size() - 2), criterion); ConstrainedTimeSeries lastInterval = constrainedSeries.get(constrainedSeries.size() - 1); ! List<Trade> trades = runner.run(bestDecision.getStrategy(), lastInterval.getBegin(), lastInterval.getBegin() + lastInterval.getSize()); ! LOG.info("Elected best strategy: " + bestDecision); return criterion.calculate(lastInterval, trades); } Index: Walker.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/walk/Walker.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Walker.java 19 Jul 2007 21:51:53 -0000 1.3 --- Walker.java 26 Jul 2007 19:33:29 -0000 1.4 *************** *** 1,5 **** package net.sf.tail.analysis.walk; ! import java.util.ArrayList; import java.util.List; import java.util.Set; --- 1,5 ---- package net.sf.tail.analysis.walk; ! import java.util.LinkedList; import java.util.List; import java.util.Set; *************** *** 8,16 **** import net.sf.tail.ConstrainedTimeSeries; import net.sf.tail.Evaluator; - import net.sf.tail.OperationType; - import net.sf.tail.Runner; import net.sf.tail.Strategy; ! import net.sf.tail.Trade; ! import net.sf.tail.runner.HistoryRunner; import org.apache.log4j.Logger; --- 8,13 ---- import net.sf.tail.ConstrainedTimeSeries; import net.sf.tail.Evaluator; import net.sf.tail.Strategy; ! import net.sf.tail.analysis.evaluator.Decision; import org.apache.log4j.Logger; *************** *** 26,49 **** } ! public List<Double> walk(Set<Strategy> strategies, List<ConstrainedTimeSeries> constrainedSeries, int interval, AnalysisCriterion criterion) { LOG.info("Running strategies " + strategies); ! List<Double> values = new ArrayList<Double>(); - Strategy bestStrategy = evaluator.evaluate(strategies, constrainedSeries.get(0), criterion); - LOG.info("First best strategy calculated: " + bestStrategy); - Runner runner = new HistoryRunner(OperationType.BUY); for(int i = 1; i < constrainedSeries.size(); i++) { ! ConstrainedTimeSeries constrainedSerie = constrainedSeries.get(i); ! List<Trade> trades = runner.run(bestStrategy, constrainedSerie.getBegin(), constrainedSerie.getBegin() + constrainedSerie.getSize()); ! double value = criterion.calculate(constrainedSerie, trades); ! values.add(value); ! bestStrategy = evaluator.evaluate(strategies, constrainedSerie, criterion); ! LOG.debug("Best strategy at period " + i + ": " + bestStrategy); } ! return values; } --- 23,44 ---- } ! public List<Decision> walk(Set<Strategy> strategies, List<ConstrainedTimeSeries> constrainedSeries, AnalysisCriterion criterion) { LOG.info("Running strategies " + strategies); ! List<Decision> decisions = new LinkedList<Decision>(); ! ! Decision lastDecision = evaluator.evaluate(strategies, constrainedSeries.get(0), criterion); ! LOG.info("First best decision calculated: " + lastDecision); for(int i = 1; i < constrainedSeries.size(); i++) { ! ConstrainedTimeSeries currentSeries = constrainedSeries.get(i); ! decisions.add(lastDecision.applyFor(currentSeries)); ! lastDecision = evaluator.evaluate(strategies, currentSeries, criterion); ! LOG.debug("Best strategy at period " + i + ": " + lastDecision); } ! return decisions; } |