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;
}
|