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: Márcio V. d. S. <mv...@us...> - 2007-08-16 21:39:25
|
Update of /cvsroot/tail/Tail/src/templates In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv18393/src/templates Added Files: report.html style.css Log Message: --- NEW FILE: report.html --- <html> <head> <title>Walk Forward Report</title> </head> <h1>Walk Forwad Report</h1> <h2>AMBV4 IntraDAY</h2> <h3>SlicerByTimePeriod Period: 1 day(s)</h3> <h3>Using criterion: TotalProfitCriterion</h3> <body><link rel="stylesheet" type="text/css" href="style.css"> <table align="center"> <tr> <th></th> <th>Period</th> <th>Strategy Used</th> [...2034 lines suppressed...] <td>JustBuyOnceStrategy</td> <td>1,036</td> <td>1</td> <td>1,002</td> <td>22</td> </tr> <tr class="total"> <td>Total</td> <td>10:00 02/06/2006 - 03:30 03/05/2007</td> <td>-</td> <td>2,554</td> <td>576</td> <td>1</td> <td>4.182</td> </tr> </table> </body> </html> --- NEW FILE: style.css --- body { background:#FFFFFF; font-family:Verdana,Arial,sans-serif; text-align:center; } h1{ font-size: 50px; font-family: Arial; color: #CC0001; } h2{ font-size: 40px; font-family: Arial; } h3{ font-size: 20px; font-family: Verdana,Arial,sans-serif; } table { text-align:center; border-collapse: separated; border-style: none; } th{ background: #003366; font-size: 20px; font-weigth: bold; color: #FFFFFF; } .row1{ background-color: #FFFFFF; font-size: 12px; } .row2{ background-color: #ECECEC; font-size: 12px; } .green { } .red { } .period { font-weigth: bold; font-size: 15px; } .strategy { font-family:arial,sans-serif; } .total{ font-size: 20px; background-color: #CF4D4D; } |
|
From: Márcio V. d. S. <mv...@us...> - 2007-08-16 21:09:10
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/flow In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv5652/src/java/net/sf/tail/flow Modified Files: CashFlow.java Log Message: arrumando testes do cash flow Index: CashFlow.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/flow/CashFlow.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CashFlow.java 15 Aug 2007 22:48:18 -0000 1.5 --- CashFlow.java 16 Aug 2007 21:09:10 -0000 1.6 *************** *** 32,55 **** } ! for (Trade t : trades) { ! int begin = t.getEntry().getIndex(); if (begin > values.size()) { values.addAll(Collections.nCopies(begin - values.size(), values.get(values.size() - 1))); } // assert begin == values.size() : "nao da " + begin; ! int end = t.getExit().getIndex(); ! for (int i = begin + 1; i <= end; i++) { double ratio; // TODO: maybe we should isolate getClosePrice, use an Indicator // instead? ! if (t.getEntry().getType().equals(OperationType.BUY)) { ! ratio = timeSeries.getTick(i).getClosePrice() / timeSeries.getTick(i - 1).getClosePrice(); } else { ratio = timeSeries.getTick(i - 1).getClosePrice() / timeSeries.getTick(i).getClosePrice(); } ! values.add(values.get(values.size() - 1) * ratio); } } ! // terminar de popular coisas aqui } --- 32,58 ---- } ! for (Trade trade : trades) { ! int begin = trade.getEntry().getIndex() + 1; if (begin > values.size()) { values.addAll(Collections.nCopies(begin - values.size(), values.get(values.size() - 1))); } // assert begin == values.size() : "nao da " + begin; ! int end = trade.getExit().getIndex(); ! for (int i = Math.max(begin, 1) ; i <= end; i++) { double ratio; // TODO: maybe we should isolate getClosePrice, use an Indicator // instead? ! if (trade.getEntry().getType().equals(OperationType.BUY)) { ! ratio = timeSeries.getTick(i).getClosePrice() / timeSeries.getTick( trade.getEntry().getIndex()).getClosePrice(); ! //values.get(values.size() - 1); ! // timeSeries.getTick(i - 1).getClosePrice(); } else { ratio = timeSeries.getTick(i - 1).getClosePrice() / timeSeries.getTick(i).getClosePrice(); } ! values.add(values.get(trade.getEntry().getIndex()) * ratio); } } ! if(timeSeries.getSize() - values.size() > 0) ! values.addAll(Collections.nCopies(timeSeries.getSize() - values.size(), values.get(values.size() - 1 ))); // terminar de popular coisas aqui } |
|
From: Márcio V. d. S. <mv...@us...> - 2007-08-16 21:09:10
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv5652/src/test/net/sf/tail Modified Files: EMACompleteTest.java Log Message: arrumando testes do cash flow Index: EMACompleteTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/EMACompleteTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EMACompleteTest.java 15 Aug 2007 22:07:52 -0000 1.1 --- EMACompleteTest.java 16 Aug 2007 21:09:10 -0000 1.2 *************** *** 14,17 **** --- 14,18 ---- import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.NumberOfTradesCriterion; + import net.sf.tail.analysis.criteria.RewardRiskRatioCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.BestStrategyEvaluator; *************** *** 58,62 **** criteria.add(new NumberOfTradesCriterion()); criteria.add(new NumberOfTicksCriterion()); ! criteria.add(new AverageProfitCriterion()); StringBuffer html = new ReportGenerator().generate(r,criteria); System.out.println(html); --- 59,64 ---- criteria.add(new NumberOfTradesCriterion()); criteria.add(new NumberOfTicksCriterion()); ! criteria.add(new RewardRiskRatioCriterion()); ! StringBuffer html = new ReportGenerator().generate(r,criteria); System.out.println(html); |
|
From: Márcio V. d. S. <mv...@us...> - 2007-08-16 21:09:10
|
Update of /cvsroot/tail/Tail In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv5652 Modified Files: .classpath Log Message: arrumando testes do cash flow Index: .classpath =================================================================== RCS file: /cvsroot/tail/Tail/.classpath,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** .classpath 4 Aug 2007 13:51:35 -0000 1.11 --- .classpath 16 Aug 2007 21:09:10 -0000 1.12 *************** *** 13,16 **** --- 13,17 ---- <classpathentry kind="lib" path="lib/freemarker.jar"/> <classpathentry kind="lib" path="lib/joda-time-1.4.jar" sourcepath="lib/joda-time-1.4-src-ide.zip"/> + <classpathentry kind="lib" path="lib/joda-time-1.4-src-ide.zip"/> <classpathentry kind="output" path="bin"/> </classpath> |
|
From: Márcio V. d. S. <mv...@us...> - 2007-08-16 21:09:10
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/flow In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv5652/src/test/net/sf/tail/flow Modified Files: CashFlowTest.java Log Message: arrumando testes do cash flow Index: CashFlowTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/flow/CashFlowTest.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CashFlowTest.java 15 Aug 2007 22:48:18 -0000 1.5 --- CashFlowTest.java 16 Aug 2007 21:09:11 -0000 1.6 *************** *** 62,66 **** CashFlow cashFlow = new CashFlow(sampleTimeSeries, trades); ! assertEquals(1d, cashFlow.getValue(0), 0.0001); assertEquals(2d, cashFlow.getValue(1), 0.0001); --- 62,68 ---- CashFlow cashFlow = new CashFlow(sampleTimeSeries, trades); ! ! ! assertEquals(3, cashFlow.getSize()); assertEquals(1d, cashFlow.getValue(0), 0.0001); assertEquals(2d, cashFlow.getValue(1), 0.0001); *************** *** 140,144 **** public void testCashFlowWithConstrainedSeries() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 5d, 6d, 3d, 7d, 8d, 6d, 10d, 15d, 6d }); ! ConstrainedTimeSeries constrained = new ConstrainedTimeSeries(series, 4, 9); List<Trade> trades = new ArrayList<Trade>(); trades.add(new Trade(new Operation(4, OperationType.BUY), new Operation(5, OperationType.SELL))); --- 142,146 ---- public void testCashFlowWithConstrainedSeries() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 5d, 6d, 3d, 7d, 8d, 6d, 10d, 15d, 6d }); ! ConstrainedTimeSeries constrained = new ConstrainedTimeSeries(series, 4, 8); List<Trade> trades = new ArrayList<Trade>(); trades.add(new Trade(new Operation(4, OperationType.BUY), new Operation(5, OperationType.SELL))); *************** *** 146,153 **** CashFlow flow = new CashFlow(constrained, trades); assertEquals(1d, flow.getValue(0)); ! assertEquals(6d / 8, flow.getValue(1), 0.00001); ! assertEquals(6d / 8, flow.getValue(2), 0.00001); ! assertEquals(6d / 8 * 15d / 10, flow.getValue(3), 0.00001); ! assertEquals(6d / 8 * 6d / 10, flow.getValue(4), 0.00001); } --- 148,159 ---- CashFlow flow = new CashFlow(constrained, trades); assertEquals(1d, flow.getValue(0)); ! assertEquals(1d, flow.getValue(1)); ! assertEquals(1d, flow.getValue(2)); ! assertEquals(1d, flow.getValue(3)); ! assertEquals(1d, flow.getValue(4)); ! assertEquals(6d / 8, flow.getValue(5), 0.00001); ! assertEquals(6d / 8, flow.getValue(6), 0.00001); ! assertEquals(6d / 8 * 15d / 10, flow.getValue(7), 0.00001); ! assertEquals(6d / 8 * 6d / 10, flow.getValue(8), 0.00001); } |
|
From: Márcio V. d. S. <mv...@us...> - 2007-08-16 21:09:10
|
Update of /cvsroot/tail/Tail/src/templates In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv5652/src/templates Removed Files: report.html style.css Log Message: arrumando testes do cash flow --- report.html DELETED --- --- style.css DELETED --- |
|
From: Kadu <ma...@gm...> - 2007-08-16 20:36:01
|
No report.html tem um h1 e um h3 fora do body e o estilo est=E1 sendo adicionado no body e n=E3o no head. []'s On 8/16/07, Kadu <ma...@gm...> wrote: > > No report.html tem um h1 e um h3 fora do body e o estilo est=E1 sendo > adicionado no body e n=E3o no head. > > []'s > > On 8/16/07, tai...@li... < > tai...@li...> wrote: > > > > Send Tail-cvs mailing list submissions to > > tai...@li... > > > > To subscribe or unsubscribe via the World Wide Web, visit > > https://lists.sourceforge.net/lists/listinfo/tail-cvs > > or, via email, send a message with subject or body 'help' to > > tai...@li... > > > > You can reach the person managing the list at > > tai...@li... > > > > When replying, please edit your Subject line so it is more specific > > than "Re: Contents of Tail-cvs digest..." > > > > > > Today's Topics: > > > > 1. Tail/src/templates report.html, 1.1 style.css, 1.1 > > header.ftl, 1.3 report.ftl, 1.8 (M=C3=A1rcio Vinicius dos Santos) > > 2. Tail/reports/PNGCharts - New directory (Carlos) > > 3. Tail/reports - New directory (Carlos) > > 4. Tail/src/test/net/sf/tail/graphics ChartForReportTest.java= , > > 1.1 (Carlos) > > > > > > ---------------------------------------------------------------------- > > > > Message: 1 > > Date: Wed, 15 Aug 2007 22:26:13 +0000 > > From: M=C3=A1rcio Vinicius dos Santos <mv...@us...> > > Subject: [Tail-cvs] Tail/src/templates report.html, 1.1 style.css, > > 1.1 > > header.ftl, 1.3 report.ftl, 1.8 > > To: tai...@li... > > Message-ID: < E1I...@ma...> > > > > Update of /cvsroot/tail/Tail/src/templates > > In directory > > sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv30037/src/templates > > > > Modified Files: > > header.ftl report.ftl > > Added Files: > > report.html style.css > > Log Message: > > P=E1gina do Report com css > > > > --- NEW FILE: report.html --- > > <html> > > <head> > > <title>Walk Forward Report</title> > > > > </head> > > > > <h1>Walk Forwad Report</h1> > > <h2>AMBV4 IntraDAY</h2> > > > > <h3>SlicerByTimePeriod Period: 1 day(s)</h3> > > <h3>Using criterion: TotalProfitCriterion</h3> > > > > <body><link rel=3D"stylesheet" type=3D"text/css" href=3D"style.css"> > > > > <table align=3D"center"> > > <tr> > > <th></th> > > <th>Period</th> > > <th>Strategy Used</th> > > [...2034 lines suppressed...] > > <td>JustBuyOnceStrategy</td> > > <td>1,036</td> > > <td>1</td> > > <td>1,002</td> > > <td>22</td> > > </tr> > > <tr class=3D"total"> > > <td>Total</td> > > <td>10:00 02/06/2006 - 03:30 03/05/2007</td> > > <td>-</td> > > <td>2,554</td> > > <td>576</td> > > <td>1</td> > > <td>4.182</td> > > </tr> > > > > </table> > > > > </body> > > </html> > > |
|
From: Carlos <ma...@us...> - 2007-08-16 20:13:30
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/graphics In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv13919/src/test/net/sf/tail/graphics Modified Files: ChartForReportTest.java Log Message: Refatoração para gerar vários charts para todo o time series. Index: ChartForReportTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/graphics/ChartForReportTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ChartForReportTest.java 16 Aug 2007 18:15:49 -0000 1.1 --- ChartForReportTest.java 16 Aug 2007 20:13:31 -0000 1.2 *************** *** 32,37 **** private final List<Indicator<? extends Number>> indicators; private final TimeSeries timeSeries; ! private int seriesEndIndex = 50; ! public ChartForReportTest(String chartName) { --- 32,36 ---- private final List<Indicator<? extends Number>> indicators; private final TimeSeries timeSeries; ! private int chartSize = 50; public ChartForReportTest(String chartName) { *************** *** 48,55 **** writer.println("<html>"); writer.println("<head><title>" + chartName + "</title></head>"); ! writer.println("<body>"); ! writer.println("<img src=\"PNGCharts/" + createSmaAndStrategyChartInPNGFile() + ! "\" width=\"800\" height=\"600\">"); ! writer.println("</body>"); writer.println("</html>"); writer.close(); --- 47,56 ---- writer.println("<html>"); writer.println("<head><title>" + chartName + "</title></head>"); ! writer.println("<body><table align=\"center\">"); ! for (String fileName : createSmaAndStrategyChartsInPNGFile()) { ! writer.println("<tr><img src=\"PNGCharts/" + fileName + ! "\" width=\"800\" height=\"600\"></tr>"); ! } ! writer.println("</table></body>"); writer.println("</html>"); writer.close(); *************** *** 66,71 **** } ! public String createSmaAndStrategyChartInPNGFile() { ClosePriceIndicator close = new ClosePriceIndicator(timeSeries); SMAIndicator sma = new SMAIndicator(close, 8); --- 67,73 ---- } ! public List<String> createSmaAndStrategyChartsInPNGFile() { + List<String> fileNames = new ArrayList<String>(); ClosePriceIndicator close = new ClosePriceIndicator(timeSeries); SMAIndicator sma = new SMAIndicator(close, 8); *************** *** 74,92 **** 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); ! ! SeriesChart seriesChart = new SeriesChart(seriesDataset); ! JFreeChart jfreechart = seriesChart.createChart("Report Chart"); ! File filePNG = new File("reports/PNGCharts/chartTeste.png"); ! try { ! ChartUtilities.saveChartAsPNG(filePNG, jfreechart, 800, 600); ! } catch (IOException e) { ! // TODO Auto-generated catch block ! e.printStackTrace(); } ! return filePNG.getName(); } --- 76,107 ---- 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 + chartSize) ! for (int i = timeSeries.getBegin(); i < 200; i = i + chartSize) ! { ! if (i + chartSize > timeSeries.getEnd()) ! { ! seriesDataset = new SeriesDataset(timeSeries, indicators, i, timeSeries.getEnd(), trades); ! } ! else ! { ! seriesDataset = new SeriesDataset(timeSeries, indicators, i, i + chartSize, trades); ! } ! ! SeriesChart seriesChart = new SeriesChart(seriesDataset); ! JFreeChart jfreechart = seriesChart.createChart("Report Chart"); ! String fileName = "chartTeste00" + i + ".png"; ! File filePNG = new File("reports/PNGCharts/" + fileName); ! fileNames.add(fileName); ! try { ! ChartUtilities.saveChartAsPNG(filePNG, jfreechart, 800, 600); ! } catch (IOException e) { ! // TODO Auto-generated catch block ! e.printStackTrace(); ! } } ! return fileNames; } |
|
From: Carlos <ma...@us...> - 2007-08-16 18:15:48
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/graphics In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv27624/src/test/net/sf/tail/graphics Added Files: ChartForReportTest.java Log Message: Classe que gera um Chart, converte para PNG e o coloca em um arquivo HTML. Feita com o intuito de se fazer um Chart do report. --- NEW FILE: ChartForReportTest.java --- package net.sf.tail.graphics; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; 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; import net.sf.tail.indicator.tracker.SMAIndicator; import net.sf.tail.reader.CedroTimeSeriesLoader; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.ui.ApplicationFrame; public class ChartForReportTest extends ApplicationFrame { private static final long serialVersionUID = -6626066873257820845L; private SeriesDataset seriesDataset; private final List<Indicator<? extends Number>> indicators; private final TimeSeries timeSeries; private int seriesEndIndex = 50; public ChartForReportTest(String chartName) { super(chartName); indicators = new ArrayList<Indicator<? extends Number>>(); timeSeries = readFileData(); File htmlChart = new File("reports/reportWithChart.html"); try { OutputStream out = new BufferedOutputStream(new FileOutputStream(htmlChart)); PrintWriter writer = new PrintWriter(out); writer.println("<html>"); writer.println("<head><title>" + chartName + "</title></head>"); writer.println("<body>"); writer.println("<img src=\"PNGCharts/" + createSmaAndStrategyChartInPNGFile() + "\" width=\"800\" height=\"600\">"); writer.println("</body>"); writer.println("</html>"); writer.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String args[]) { new ChartForReportTest("SMA Chart"); } public String createSmaAndStrategyChartInPNGFile() { ClosePriceIndicator close = new ClosePriceIndicator(timeSeries); SMAIndicator sma = new SMAIndicator(close, 8); indicators.add(close); 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); SeriesChart seriesChart = new SeriesChart(seriesDataset); JFreeChart jfreechart = seriesChart.createChart("Report Chart"); File filePNG = new File("reports/PNGCharts/chartTeste.png"); try { ChartUtilities.saveChartAsPNG(filePNG, jfreechart, 800, 600); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return filePNG.getName(); } /** * @return */ private TimeSeries readFileData() { CedroTimeSeriesLoader ctsl = new CedroTimeSeriesLoader(); TimeSeries timeSeries = null; try { timeSeries = ctsl.load(new FileInputStream("BaseBovespa/15min/ambv4.csv"), ""); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return timeSeries; } } |
|
From: Carlos <ma...@us...> - 2007-08-16 18:15:42
|
Update of /cvsroot/tail/Tail/reports In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv27605/reports Log Message: Directory /cvsroot/tail/Tail/reports added to the repository |
|
From: Carlos <ma...@us...> - 2007-08-16 18:15:42
|
Update of /cvsroot/tail/Tail/reports/PNGCharts In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv27605/reports/PNGCharts Log Message: Directory /cvsroot/tail/Tail/reports/PNGCharts added to the repository |
|
From: Márcio V. d. S. <mv...@us...> - 2007-08-15 22:26:12
|
Update of /cvsroot/tail/Tail/src/templates In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv30037/src/templates Modified Files: header.ftl report.ftl Added Files: report.html style.css Log Message: Página do Report com css --- NEW FILE: report.html --- <html> <head> <title>Walk Forward Report</title> </head> <h1>Walk Forwad Report</h1> <h2>AMBV4 IntraDAY</h2> <h3>SlicerByTimePeriod Period: 1 day(s)</h3> <h3>Using criterion: TotalProfitCriterion</h3> <body><link rel="stylesheet" type="text/css" href="style.css"> <table align="center"> <tr> <th></th> <th>Period</th> <th>Strategy Used</th> [...2034 lines suppressed...] <td>JustBuyOnceStrategy</td> <td>1,036</td> <td>1</td> <td>1,002</td> <td>22</td> </tr> <tr class="total"> <td>Total</td> <td>10:00 02/06/2006 - 03:30 03/05/2007</td> <td>-</td> <td>2,554</td> <td>576</td> <td>1</td> <td>4.182</td> </tr> </table> </body> </html> Index: report.ftl =================================================================== RCS file: /cvsroot/tail/Tail/src/templates/report.ftl,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** report.ftl 15 Aug 2007 22:07:53 -0000 1.7 --- report.ftl 15 Aug 2007 22:26:11 -0000 1.8 *************** *** 1,21 **** <#include "header.ftl"> ! ! <h1>${report.slicer.series.name}</h1> ! ! <h3>${report.slicer.name}</h3> ! <h3>Using criterion: ${report.criterion.class.simpleName}</h3> ! ! <table> <tr> ! <td></td> ! <td>Period</td> ! <td>Strategy Used</td> ! <td>Applyed Criterion</td> <#list criterions as criterion> ! <td>${criterion.class.simpleName}</td> </#list> </tr> ! <tr> <td></td> <td>${report.slicer.slice(0).period}</td> --- 1,16 ---- <#include "header.ftl"> + <link rel="stylesheet" type="text/css" href="style.css"> ! <table align="center"> <tr> ! <th></th> ! <th>Period</th> ! <th>Strategy Used</th> ! <th>Applyed Criterion</th> <#list criterions as criterion> ! <th>${criterion.class.simpleName}</th> </#list> </tr> ! <tr class="row1"> <td></td> <td>${report.slicer.slice(0).period}</td> *************** *** 27,34 **** </tr> <#list report.decisions as decision> ! <tr> <td></td> ! <td>${decision.series.period}</td> <td>${decision.strategy.name}</td> <td>${report.criterion.calculate(decision.series, decision.trades)}</td> --- 22,35 ---- </tr> + <#assign x=1> <#list report.decisions as decision> ! <#if (x%2)= 0> ! <tr class="row1"> ! <#else> ! <tr class="row2"> ! </#if> ! <#assign x=x+1> <td></td> ! <td class="period">${decision.series.period}</td> <td>${decision.strategy.name}</td> <td>${report.criterion.calculate(decision.series, decision.trades)}</td> *************** *** 38,44 **** </tr> </#list> ! <tr> <td>Total</td> ! <td>${report.slicer.period}</td> <td>-</td> <td>${report.criterion.summarize(report.slicer.series, report.decisions)}</td> --- 39,45 ---- </tr> </#list> ! <tr class="total"> <td>Total</td> ! <td>${report.slicer.series.period}</td> <td>-</td> <td>${report.criterion.summarize(report.slicer.series, report.decisions)}</td> --- NEW FILE: style.css --- body { background:#FFFFFF; font-family:Verdana,Arial,sans-serif; text-align:center; } h1{ font-size: 50px; font-family: Arial; color: #CC0001; } h2{ font-size: 40px; font-family: Arial; } h3{ font-size: 20px; font-family: Verdana,Arial,sans-serif; } table { text-align:center; border-collapse: separated; border-style: none; } th{ background: #003366; font-size: 20px; font-weigth: bold; color: #FFFFFF; } .row1{ background-color: #FFFFFF; font-size: 12px; } .row2{ background-color: #ECECEC; font-size: 12px; } .green { } .red { } .period { font-weigth: bold; font-size: 15px; } .strategy { font-family:arial,sans-serif; } .total{ font-size: 20px; background-color: #CF4D4D; } Index: header.ftl =================================================================== RCS file: /cvsroot/tail/Tail/src/templates/header.ftl,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** header.ftl 7 Aug 2007 18:07:03 -0000 1.2 --- header.ftl 15 Aug 2007 22:26:11 -0000 1.3 *************** *** 1,8 **** <html> <head> - <!-- Please gimme a CSS!!! - - --> <title>Walk Forward Report</title> </head> <body> \ No newline at end of file --- 1,13 ---- <html> <head> <title>Walk Forward Report</title> + </head> + + <h1>Walk Forwad Report</h1> + <h2>${report.slicer.series.name}</h2> + + <h3>${report.slicer.name}</h3> + <h3>Using criterion: ${report.criterion.class.simpleName}</h3> + <body> \ No newline at end of file |
|
From: Thies <tg...@us...> - 2007-08-15 22:08:04
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/sample In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/test/net/sf/tail/sample Modified Files: SampleTimeSeries.java Log Message: gerando o memorizedSlicer através de enum Index: SampleTimeSeries.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/sample/SampleTimeSeries.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** SampleTimeSeries.java 8 Aug 2007 22:03:28 -0000 1.10 --- SampleTimeSeries.java 15 Aug 2007 22:07:52 -0000 1.11 *************** *** 71,75 **** public String getPeriod() { ! return ticks.get(0).getDate().toString("hh:mm dd/MM/yyyy - ") + ticks.get(0).getDate().toString("hh:mm dd/MM/yyyy"); } } --- 71,75 ---- public String getPeriod() { ! return ticks.get(0).getDate().toString("hh:mm dd/MM/yyyy - ") + ticks.get(this.getEnd()).getDate().toString("hh:mm dd/MM/yyyy"); } } |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:59
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/test/net/sf/tail Modified Files: EMAWalkTest.java Added Files: EMACompleteTest.java Log Message: gerando o memorizedSlicer através de enum --- NEW FILE: EMACompleteTest.java --- package net.sf.tail; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import net.sf.tail.TimeSeriesSlicer.SlicerType; import net.sf.tail.analysis.SlicerByTimePeriod; import net.sf.tail.analysis.criteria.AverageProfitCriterion; import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.NumberOfTradesCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.BestStrategyEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.EMAIndicator; import net.sf.tail.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; import net.sf.tail.report.ReportGenerator; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import org.joda.time.Period; public class EMACompleteTest { public void testCompleteSMAGenerate() throws IOException { CedroTimeSeriesLoader ctsl = new CedroTimeSeriesLoader(); TimeSeries timeSeries = null; try { timeSeries = ctsl.load(new FileInputStream("BaseBovespa/15min/ambv4.csv"), "AMBV4 IntraDAY"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Walker w = new WalkForward(new BestStrategyEvaluator(new HistoryRunner(OperationType.BUY))); Set<Strategy> strategies = new HashSet<Strategy>(); for (int i = 4; i < 20; i++) { Indicator<Double> close = new ClosePriceIndicator(timeSeries); Indicator<Double> tracker = new EMAIndicator(close, i); Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker); strategies.add(strategy); } Report r = w.walk(strategies,new SlicerByTimePeriod(timeSeries,new Period().withDays(1), SlicerType.MEMORIZED),new TotalProfitCriterion()); List<AnalysisCriterion> criteria = new LinkedList<AnalysisCriterion>(); criteria.add(new NumberOfTradesCriterion()); criteria.add(new NumberOfTicksCriterion()); criteria.add(new AverageProfitCriterion()); StringBuffer html = new ReportGenerator().generate(r,criteria); System.out.println(html); } public static void main(String[] args) { EMACompleteTest emaTest = new EMACompleteTest(); try { emaTest.testCompleteSMAGenerate(); } catch (IOException e) { } } } Index: EMAWalkTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/EMAWalkTest.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** EMAWalkTest.java 13 Aug 2007 20:21:16 -0000 1.8 --- EMAWalkTest.java 15 Aug 2007 22:07:52 -0000 1.9 *************** *** 7,10 **** --- 7,11 ---- import java.util.Set; + import net.sf.tail.TimeSeriesSlicer.SlicerType; import net.sf.tail.analysis.SlicerByTimePeriod; import net.sf.tail.analysis.criteria.AverageProfitCriterion; *************** *** 45,49 **** // slice the series by each year, since 1999 TimeSeriesSlicer slicer = new SlicerByTimePeriod(series, new Period().withYears(1), new DateTime() ! .withYear(1999)); // walks year by year, forgetting the past and generates the report in --- 46,50 ---- // slice the series by each year, since 1999 TimeSeriesSlicer slicer = new SlicerByTimePeriod(series, new Period().withYears(1), new DateTime() ! .withYear(1999), SlicerType.MEMORIZED); // walks year by year, forgetting the past and generates the report in *************** *** 56,62 **** List<AnalysisCriterion> criterions = new ArrayList<AnalysisCriterion>(); criterions.add(new AverageProfitCriterion()); criterions.add(new MaximumDrawDownCriterion()); ! criterions.add(new RewardRiskRatioCriterion()); StringBuffer buffer = generator.generate(report,criterions); --- 57,65 ---- List<AnalysisCriterion> criterions = new ArrayList<AnalysisCriterion>(); + criterions.add(new AverageProfitCriterion()); criterions.add(new MaximumDrawDownCriterion()); ! criterions.add(new RewardRiskRatioCriterion()); ! StringBuffer buffer = generator.generate(report,criterions); |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:57
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/test/net/sf/tail/analysis/criteria Modified Files: VersusBuyAndHoldCriterionTest.java Log Message: gerando o memorizedSlicer através de enum Index: VersusBuyAndHoldCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/VersusBuyAndHoldCriterionTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** VersusBuyAndHoldCriterionTest.java 9 Aug 2007 15:21:25 -0000 1.2 --- VersusBuyAndHoldCriterionTest.java 15 Aug 2007 22:07:53 -0000 1.3 *************** *** 44,48 **** Decision dummy2 = new DummyDecision(tradesToDummy2); decisions.add(dummy2); - AnalysisCriterion buyAndHold = new VersusBuyAndHoldCriterion(); assertEquals(1.10 * 1.05 / 1.05, buyAndHold.summarize(series, decisions),0.01); --- 44,47 ---- |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:56
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/java/net/sf/tail Modified Files: TimeSeriesSlicer.java Log Message: gerando o memorizedSlicer através de enum Index: TimeSeriesSlicer.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/TimeSeriesSlicer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TimeSeriesSlicer.java 8 Aug 2007 18:50:42 -0000 1.3 --- TimeSeriesSlicer.java 15 Aug 2007 22:07:53 -0000 1.4 *************** *** 2,5 **** --- 2,6 ---- + public interface TimeSeriesSlicer { *************** *** 9,11 **** --- 10,20 ---- TimeSeries getBiggerSlice(int position, int numberOfPeriodsOfTheSlice); String getName(); + //String getPeriod(); + SlicerType getSlicerType(); + TimeSeriesSlicer applyForType(SlicerType type); + + public enum SlicerType { + MEMORIZED, + REGULAR + } } \ No newline at end of file |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:54
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/walk In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/java/net/sf/tail/analysis/walk Modified Files: AbstractWalker.java Log Message: gerando o memorizedSlicer através de enum Index: AbstractWalker.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/walk/AbstractWalker.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** AbstractWalker.java 7 Aug 2007 19:45:37 -0000 1.3 --- AbstractWalker.java 15 Aug 2007 22:07:52 -0000 1.4 *************** *** 5,10 **** import java.util.Set; - import org.apache.log4j.Logger; - import net.sf.tail.AnalysisCriterion; import net.sf.tail.Evaluator; --- 5,8 ---- *************** *** 13,19 **** --- 11,20 ---- import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Walker; + import net.sf.tail.TimeSeriesSlicer.SlicerType; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.report.Report; + import org.apache.log4j.Logger; + public abstract class AbstractWalker implements Walker { private static final Logger LOG = Logger.getLogger(AbstractWalker.class); *************** *** 27,30 **** --- 28,33 ---- public Report walk(Set<Strategy> strategies, TimeSeriesSlicer slicer, AnalysisCriterion criterion) { + TimeSeriesSlicer regularSlicer = slicer.applyForType(SlicerType.REGULAR); + LOG.info("Running strategies"); List<Decision> decisions = new LinkedList<Decision>(); *************** *** 36,40 **** for (int i = 1; i < slicer.getSlices(); i++) { TimeSeries currentSeries = getSeries(slicer, i); ! Decision bestAppliedForCurrentSeries = lastDecision.applyFor(currentSeries); LOG.info(String .format("Applying last best decision for time series %d: %s", i, bestAppliedForCurrentSeries)); --- 39,45 ---- for (int i = 1; i < slicer.getSlices(); i++) { TimeSeries currentSeries = getSeries(slicer, i); ! TimeSeries regularSeries = regularSlicer.getSlice(i); ! ! Decision bestAppliedForCurrentSeries = lastDecision.applyFor(regularSeries); LOG.info(String .format("Applying last best decision for time series %d: %s", i, bestAppliedForCurrentSeries)); |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:54
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/report In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/test/net/sf/tail/report Modified Files: ReportGeneratorTest.java Added Files: ReportSerializerTest.java Log Message: gerando o memorizedSlicer através de enum --- NEW FILE: ReportSerializerTest.java --- package net.sf.tail.report; import java.util.HashSet; import java.util.Set; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.TimeSeries; import net.sf.tail.Walker; import net.sf.tail.TimeSeriesSlicer.SlicerType; import net.sf.tail.analysis.SlicerByTimePeriod; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.BestStrategyEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.SMAIndicator; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import net.sf.tail.strategy.JustBuyOnceStrategy; import org.joda.time.DateTime; import org.joda.time.Period; import org.junit.Test; public class ReportSerializerTest { @Test public void testToXML() { DateTime date = new DateTime(); TimeSeries timeSeries = new SampleTimeSeries(date.withYear(2000), date.withDate(2000, 2, 20),date.withDate(2000, 4, 25) , date.withYear(2002), date.withYear(2003)); Walker w = new WalkForward(new BestStrategyEvaluator(new HistoryRunner(OperationType.BUY))); ClosePriceIndicator close = new ClosePriceIndicator(timeSeries); SMAIndicator sma = new SMAIndicator(close, 8); Set<Strategy> strategies = new HashSet<Strategy>(); strategies.add(new IndicatorCrossedIndicatorStrategy(close,sma) ); strategies.add(new JustBuyOnceStrategy()); Report r = w.walk(strategies,new SlicerByTimePeriod(timeSeries,new Period().withYears(1), SlicerType.MEMORIZED),new TotalProfitCriterion()); ReportSerializer serializer = new ReportSerializer(); String xml = serializer.toXML(r); Report reportAfter = serializer.fromXML(xml); } } Index: ReportGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/ReportGeneratorTest.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** ReportGeneratorTest.java 13 Aug 2007 20:21:16 -0000 1.14 --- ReportGeneratorTest.java 15 Aug 2007 22:07:52 -0000 1.15 *************** *** 3,33 **** import static org.junit.Assert.assertTrue; - import java.io.FileInputStream; - import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; - import java.util.HashSet; import java.util.List; - import java.util.Set; import net.sf.tail.Operation; import net.sf.tail.OperationType; - import net.sf.tail.Strategy; - import net.sf.tail.TimeSeries; import net.sf.tail.Trade; ! import net.sf.tail.Walker; import net.sf.tail.analysis.SlicerByTimePeriod; import net.sf.tail.analysis.criteria.TotalProfitCriterion; - import net.sf.tail.analysis.evaluator.BestStrategyEvaluator; import net.sf.tail.analysis.evaluator.Decision; - import net.sf.tail.analysis.walk.WalkForward; - import net.sf.tail.indicator.simple.ClosePriceIndicator; - import net.sf.tail.indicator.tracker.SMAIndicator; - import net.sf.tail.reader.CedroTimeSeriesLoader; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.strategy.FakeStrategy; - import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; - import net.sf.tail.strategy.JustBuyOnceStrategy; import org.joda.time.Period; --- 3,20 ---- import static org.junit.Assert.assertTrue; import java.io.IOException; import java.util.ArrayList; import java.util.List; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Trade; ! import net.sf.tail.TimeSeriesSlicer.SlicerType; import net.sf.tail.analysis.SlicerByTimePeriod; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.strategy.FakeStrategy; import org.joda.time.Period; *************** *** 51,88 **** new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); ! slicer = new SlicerByTimePeriod(series,new Period().withYears(1)); } - @Test - public void testCompleteSMAGenerate() throws IOException { - CedroTimeSeriesLoader ctsl = new CedroTimeSeriesLoader(); - TimeSeries timeSeries = null; - - try { - timeSeries = ctsl.load(new FileInputStream("BaseBovespa/15min/ambv4.csv"), "AMBV4 IntraDAY"); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - - Walker w = new WalkForward(new BestStrategyEvaluator(new HistoryRunner(OperationType.BUY))); - - ClosePriceIndicator close = new ClosePriceIndicator(timeSeries); - SMAIndicator sma = new SMAIndicator(close, 8); - - Set<Strategy> strategies = new HashSet<Strategy>(); - strategies.add(new IndicatorCrossedIndicatorStrategy(close,sma) ); - strategies.add(new JustBuyOnceStrategy()); - - Report r = w.walk(strategies,new SlicerByTimePeriod(timeSeries,new Period().withDays(1)),new TotalProfitCriterion()); - - StringBuffer html = new ReportGenerator().generate(r); - System.out.println(html); - - assertTrue(html.toString().contains("0,984")); - assertTrue(html.toString().contains("1,022")); - } - @Test --- 38,44 ---- new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); ! slicer = new SlicerByTimePeriod(series,new Period().withYears(1), SlicerType.MEMORIZED); } @Test |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:54
|
Update of /cvsroot/tail/Tail/src/templates In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/templates Modified Files: report.ftl Log Message: gerando o memorizedSlicer através de enum Index: report.ftl =================================================================== RCS file: /cvsroot/tail/Tail/src/templates/report.ftl,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** report.ftl 9 Aug 2007 15:21:26 -0000 1.6 --- report.ftl 15 Aug 2007 22:07:53 -0000 1.7 *************** *** 40,44 **** <tr> <td>Total</td> ! <td>${report.slicer.series.period}</td> <td>-</td> <td>${report.criterion.summarize(report.slicer.series, report.decisions)}</td> --- 40,44 ---- <tr> <td>Total</td> ! <td>${report.slicer.period}</td> <td>-</td> <td>${report.criterion.summarize(report.slicer.series, report.decisions)}</td> |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:53
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/report In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/java/net/sf/tail/report Modified Files: ReportSerializer.java Log Message: gerando o memorizedSlicer através de enum Index: ReportSerializer.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/ReportSerializer.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ReportSerializer.java 2 Aug 2007 05:56:09 -0000 1.1 --- ReportSerializer.java 15 Aug 2007 22:07:52 -0000 1.2 *************** *** 1,5 **** package net.sf.tail.report; ! import net.sf.tail.DefaultTimeSeries; import com.thoughtworks.xstream.XStream; --- 1,5 ---- package net.sf.tail.report; ! import net.sf.tail.sample.SampleTimeSeries; import com.thoughtworks.xstream.XStream; *************** *** 11,18 **** // ele apenas transforma, quem grava deve ser outra pessoa XStream xstream = new XStream(new DomDriver()); ! xstream.omitField(DefaultTimeSeries.class, "ticks"); xstream.setMode(XStream.ID_REFERENCES); return xstream.toXML(report); } } --- 11,24 ---- // ele apenas transforma, quem grava deve ser outra pessoa XStream xstream = new XStream(new DomDriver()); ! xstream.omitField(SampleTimeSeries.class, "ticks"); xstream.setMode(XStream.ID_REFERENCES); return xstream.toXML(report); } + public Report fromXML(String xml) + { + XStream xstream = new XStream(new DomDriver()); + return (Report)xstream.fromXML(xml); + + } } |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:53
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/walk In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/test/net/sf/tail/analysis/walk Modified Files: WalkForwardTest.java Log Message: gerando o memorizedSlicer através de enum Index: WalkForwardTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/walk/WalkForwardTest.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** WalkForwardTest.java 13 Aug 2007 20:21:16 -0000 1.13 --- WalkForwardTest.java 15 Aug 2007 22:07:52 -0000 1.14 *************** *** 15,18 **** --- 15,19 ---- import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Walker; + import net.sf.tail.TimeSeriesSlicer.SlicerType; import net.sf.tail.analysis.SlicerByTimePeriod; import net.sf.tail.analysis.criteria.TotalProfitCriterion; *************** *** 126,130 **** Walker walk = new WalkForward(evaluator); Period period = new Period().withYears(1); ! TimeSeriesSlicer splittedSeries = new SlicerByTimePeriod(series,period); List<Decision> decisions = walk.walk(strategies, splittedSeries, criteria).getDecisions(); --- 127,131 ---- Walker walk = new WalkForward(evaluator); Period period = new Period().withYears(1); ! TimeSeriesSlicer splittedSeries = new SlicerByTimePeriod(series,period, SlicerType.REGULAR); List<Decision> decisions = walk.walk(strategies, splittedSeries, criteria).getDecisions(); |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:52
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/test/net/sf/tail/analysis Modified Files: SlicerByTimePeriodTest.java Log Message: gerando o memorizedSlicer através de enum Index: SlicerByTimePeriodTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/SlicerByTimePeriodTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SlicerByTimePeriodTest.java 5 Aug 2007 15:02:19 -0000 1.1 --- SlicerByTimePeriodTest.java 15 Aug 2007 22:07:52 -0000 1.2 *************** *** 3,6 **** --- 3,7 ---- import static org.junit.Assert.assertEquals; import net.sf.tail.TimeSeriesSlicer; + import net.sf.tail.TimeSeriesSlicer.SlicerType; import net.sf.tail.sample.SampleTimeSeries; *************** *** 27,31 **** Period period = new Period().withYears(1); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period); assertEquals(5, split.getSlices()); --- 28,32 ---- Period period = new Period().withYears(1); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, SlicerType.REGULAR); assertEquals(5, split.getSlices()); *************** *** 53,57 **** Period period = new Period().withYears(1); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period); assertEquals(4, split.getSlices()); --- 54,58 ---- Period period = new Period().withYears(1); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, SlicerType.REGULAR); assertEquals(4, split.getSlices()); *************** *** 81,85 **** date.withDate(2003,3,1) ); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, date.withYear(2000).withMonthOfYear(7)); assertEquals(3, split.getSlices()); --- 82,86 ---- date.withDate(2003,3,1) ); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, date.withYear(2000).withMonthOfYear(7), SlicerType.REGULAR); assertEquals(3, split.getSlices()); *************** *** 104,108 **** Period period = new Period().withYears(1); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period); assertEquals(4, split.getSlices()); --- 105,109 ---- Period period = new Period().withYears(1); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, SlicerType.REGULAR); assertEquals(4, split.getSlices()); *************** *** 131,135 **** Period period = new Period().withYears(1); ! SlicerByTimePeriod split = new SlicerByTimePeriod(series, period); assertEquals(4, split.getSlices()); --- 132,136 ---- Period period = new Period().withYears(1); ! SlicerByTimePeriod split = new SlicerByTimePeriod(series, period, SlicerType.REGULAR); assertEquals(4, split.getSlices()); *************** *** 153,157 **** date.withDate(2001, 12, 31), date.withDate(2002, 1, 1), date.withDate(2002, 1, 2), date.withDate(2002, 1, 3), date.withDate(2002, 5, 5), date.withDate(2003, 3, 3) ); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period); assertEquals(3, split.getSlices()); --- 154,158 ---- date.withDate(2001, 12, 31), date.withDate(2002, 1, 1), date.withDate(2002, 1, 2), date.withDate(2002, 1, 3), date.withDate(2002, 5, 5), date.withDate(2003, 3, 3) ); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, SlicerType.REGULAR); assertEquals(3, split.getSlices()); *************** *** 175,179 **** date.withDate(2001, 12, 31), date.withDate(2002, 1, 1), date.withDate(2002, 1, 2), date.withDate(2002, 1, 3), date.withDate(2002, 5, 5), date.withDate(2003, 3, 3) ); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, date.withDate(2000, 1, 1)); assertEquals(4, split.getSlices()); --- 176,180 ---- date.withDate(2001, 12, 31), date.withDate(2002, 1, 1), date.withDate(2002, 1, 2), date.withDate(2002, 1, 3), date.withDate(2002, 5, 5), date.withDate(2003, 3, 3) ); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, date.withDate(2000, 1, 1), SlicerType.REGULAR); assertEquals(4, split.getSlices()); *************** *** 205,209 **** openTime.plusHours(10).plusMinutes(5), openTime.plusHours(10).plusMinutes(10), openTime.plusHours(10).plusMinutes(20), openTime.plusHours(10).plusMinutes(30) ); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period); assertEquals(5, split.getSlices()); --- 206,210 ---- openTime.plusHours(10).plusMinutes(5), openTime.plusHours(10).plusMinutes(10), openTime.plusHours(10).plusMinutes(20), openTime.plusHours(10).plusMinutes(30) ); ! TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, SlicerType.REGULAR); assertEquals(5, split.getSlices()); *************** *** 225,227 **** --- 226,256 ---- } + + @Test + public void testMemorizedSlicer() + { + Period period = new Period().withYears(1); + + series = new SampleTimeSeries( + date.withDate(2000, 7, 1), date.withDate(2000, 8, 1),date.withDate(2000, 9, 15), date.withDate(2001, 1, 1), date.withDate(2001, 1, 3), + date.withDate(2001, 12, 31), date.withDate(2002, 1, 1), date.withDate(2002, 1, 2), date.withDate(2002, 1, 3), date.withDate(2002, 5, 5), + date.withDate(2003, 3, 3) ); + TimeSeriesSlicer split = new SlicerByTimePeriod(series, period, date.withDate(2000, 1, 1), SlicerType.MEMORIZED); + + assertEquals(4, split.getSlices()); + + assertEquals(0, split.getSlice(0).getBegin()); + assertEquals(2, split.getSlice(0).getEnd()); + + assertEquals(0, split.getSlice(1).getBegin()); + assertEquals(5, split.getSlice(1).getEnd()); + + assertEquals(0, split.getSlice(2).getBegin()); + assertEquals(9, split.getSlice(2).getEnd()); + + assertEquals(0, split.getSlice(3).getBegin()); + assertEquals(10, split.getSlice(3).getEnd()); + } + + } |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:52
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/java/net/sf/tail/analysis Modified Files: SlicerByTimePeriod.java Log Message: gerando o memorizedSlicer através de enum Index: SlicerByTimePeriod.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/SlicerByTimePeriod.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** SlicerByTimePeriod.java 9 Aug 2007 15:21:25 -0000 1.4 --- SlicerByTimePeriod.java 15 Aug 2007 22:07:52 -0000 1.5 *************** *** 22,40 **** private DateTime periodBegin; ! private static Logger LOG = Logger.getLogger(SlicerByTimePeriod.class); ! ! public SlicerByTimePeriod(TimeSeries series, Period period, DateTime begin) { splittedSeries = new ArrayList<TimeSeries>(); this.series = series; this.period = period; this.periodBegin = begin; split(); } ! public SlicerByTimePeriod(TimeSeries series, Period period) { ! this(series, period, series.getTick(0).getDate()); } private void split() { LOG.debug(String.format("Spliting %s ", series)); --- 22,52 ---- private DateTime periodBegin; ! private static Logger LOG = Logger.getLogger(SlicerByTimePeriod.class); ! ! private SlicerType slicerType; ! ! ! ! public SlicerByTimePeriod(TimeSeries series, Period period, DateTime begin, SlicerType slicerType) { splittedSeries = new ArrayList<TimeSeries>(); this.series = series; this.period = period; this.periodBegin = begin; + this.slicerType = slicerType; split(); } ! public SlicerByTimePeriod(TimeSeries series, Period period, SlicerType slicerType) { ! this(series, period, series.getTick(0).getDate(), slicerType); } + public TimeSeriesSlicer applyForType(SlicerType type){ + if (type == this.slicerType) { + return this; + } + return new SlicerByTimePeriod(this.series,this.period,this.periodBegin ,type); + } + private void split() { LOG.debug(String.format("Spliting %s ", series)); *************** *** 44,48 **** Interval interval = new Interval(begin, end); - int sliceBeginIndex = 0; int index = 0; --- 56,59 ---- *************** *** 50,54 **** index++; ! sliceBeginIndex = index; while (index <= series.getEnd()) { --- 61,65 ---- index++; ! int sliceBeginIndex = index; while (index <= series.getEnd()) { *************** *** 61,66 **** LOG.debug(String.format("Interval %s before %s ", interval, series.getTick(index).getDate())); ! sliceBeginIndex = index; ! begin = end; end = begin.plus(period); --- 72,78 ---- LOG.debug(String.format("Interval %s before %s ", interval, series.getTick(index).getDate())); ! if(slicerType == SlicerType.REGULAR) ! sliceBeginIndex = index; ! begin = end; end = begin.plus(period); *************** *** 123,125 **** --- 135,145 ---- return sPeriod.substring(0,sPeriod.length()-2); } + + public String getPeriod() { + return this.periodBegin.toString("hh:mm dd/MM/yyyy - ") + series.getTick(series.getEnd()).getDate().toString("hh:mm dd/MM/yyyy"); + } + + public SlicerType getSlicerType() { + return this.slicerType; + } } |
|
From: Thies <tg...@us...> - 2007-08-15 22:07:52
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21977/src/java/net/sf/tail/analysis/criteria Modified Files: BuyAndHoldCriterion.java MaximumDrawDownCriterion.java NumberOfTradesCriterion.java RewardRiskRatioCriterion.java TotalProfitCriterion.java VersusBuyAndHoldCriterion.java NumberOfTicksCriterion.java AverageProfitCriterion.java Log Message: gerando o memorizedSlicer através de enum Index: MaximumDrawDownCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/MaximumDrawDownCriterion.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** MaximumDrawDownCriterion.java 13 Aug 2007 20:21:16 -0000 1.15 --- MaximumDrawDownCriterion.java 15 Aug 2007 22:07:52 -0000 1.16 *************** *** 32,38 **** return maximumDrawDown; } - public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); for (Decision decision : decisions) { trades.addAll(decision.getTrades()); --- 32,38 ---- return maximumDrawDown; } public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); + for (Decision decision : decisions) { trades.addAll(decision.getTrades()); Index: RewardRiskRatioCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/RewardRiskRatioCriterion.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** RewardRiskRatioCriterion.java 9 Aug 2007 15:21:25 -0000 1.10 --- RewardRiskRatioCriterion.java 15 Aug 2007 22:07:52 -0000 1.11 *************** *** 18,24 **** return totalProfit.calculate(series, trades) / maxDrawnDown.calculate(series, trades); } - public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); for (Decision decision : decisions) { trades.addAll(decision.getTrades()); --- 18,24 ---- return totalProfit.calculate(series, trades) / maxDrawnDown.calculate(series, trades); } public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); + for (Decision decision : decisions) { trades.addAll(decision.getTrades()); Index: TotalProfitCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/TotalProfitCriterion.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** TotalProfitCriterion.java 9 Aug 2007 15:21:25 -0000 1.12 --- TotalProfitCriterion.java 15 Aug 2007 22:07:52 -0000 1.13 *************** *** 35,41 **** --- 35,44 ---- public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); + + for (Decision decision : decisions) { trades.addAll(decision.getTrades()); } + return calculate(series, trades); } Index: NumberOfTradesCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/NumberOfTradesCriterion.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** NumberOfTradesCriterion.java 9 Aug 2007 15:21:25 -0000 1.2 --- NumberOfTradesCriterion.java 15 Aug 2007 22:07:52 -0000 1.3 *************** *** 18,21 **** --- 18,22 ---- public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); + for (Decision decision : decisions) { trades.addAll(decision.getTrades()); Index: NumberOfTicksCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/NumberOfTicksCriterion.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** NumberOfTicksCriterion.java 9 Aug 2007 15:21:25 -0000 1.2 --- NumberOfTicksCriterion.java 15 Aug 2007 22:07:52 -0000 1.3 *************** *** 22,25 **** --- 22,26 ---- public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); + for (Decision decision : decisions) { trades.addAll(decision.getTrades()); *************** *** 27,29 **** --- 28,31 ---- return calculate(series, trades); } + } Index: BuyAndHoldCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/BuyAndHoldCriterion.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** BuyAndHoldCriterion.java 9 Aug 2007 15:21:25 -0000 1.2 --- BuyAndHoldCriterion.java 15 Aug 2007 22:07:52 -0000 1.3 *************** *** 17,20 **** --- 17,21 ---- public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); + for (Decision decision : decisions) { trades.addAll(decision.getTrades()); Index: VersusBuyAndHoldCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/VersusBuyAndHoldCriterion.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** VersusBuyAndHoldCriterion.java 9 Aug 2007 15:21:25 -0000 1.2 --- VersusBuyAndHoldCriterion.java 15 Aug 2007 22:07:52 -0000 1.3 *************** *** 21,24 **** --- 21,25 ---- public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); + for (Decision decision : decisions) { trades.addAll(decision.getTrades()); Index: AverageProfitCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/AverageProfitCriterion.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** AverageProfitCriterion.java 9 Aug 2007 15:21:25 -0000 1.8 --- AverageProfitCriterion.java 15 Aug 2007 22:07:52 -0000 1.9 *************** *** 21,24 **** --- 21,25 ---- public double summarize(TimeSeries series, List<Decision> decisions) { List<Trade> trades = new LinkedList<Trade>(); + for (Decision decision : decisions) { trades.addAll(decision.getTrades()); |
|
From: Márcio V. d. S. <mv...@us...> - 2007-08-09 15:21:56
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv18250/src/test/net/sf/tail/analysis/criteria Modified Files: NumberOfTradesCriterionTest.java BuyAndHoldCriterionTest.java AverageProfitCriterionTest.java MaximumDrawDownCriterionTest.java RewardRiskRatioCriterionTest.java VersusBuyAndHoldCriterionTest.java NumberOfTicksCriterionTest.java Log Message: criada assinatura summarize e implementado o método em todos os critérios Index: MaximumDrawDownCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/MaximumDrawDownCriterionTest.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** MaximumDrawDownCriterionTest.java 26 Jul 2007 20:48:55 -0000 1.6 --- MaximumDrawDownCriterionTest.java 9 Aug 2007 15:21:25 -0000 1.7 *************** *** 4,7 **** --- 4,8 ---- import java.util.ArrayList; + import java.util.LinkedList; import java.util.List; *************** *** 9,12 **** --- 10,15 ---- import net.sf.tail.OperationType; 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; *************** *** 69,71 **** --- 72,100 ---- assertEquals(0.5d, mdd.calculate(series, trades)); } + + @Test + public void testSummarize() { + 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); + + MaximumDrawDownCriterion mdd = new MaximumDrawDownCriterion(); + + assertEquals(1.75d, mdd.summarize(series, decisions)); + + } } \ No newline at end of file Index: NumberOfTicksCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/NumberOfTicksCriterionTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** NumberOfTicksCriterionTest.java 7 Aug 2007 19:18:27 -0000 1.1 --- NumberOfTicksCriterionTest.java 9 Aug 2007 15:21:25 -0000 1.2 *************** *** 4,7 **** --- 4,8 ---- import java.util.ArrayList; + import java.util.LinkedList; import java.util.List; *************** *** 10,13 **** --- 11,16 ---- import net.sf.tail.OperationType; 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; *************** *** 35,37 **** --- 38,60 ---- assertEquals(4d, buyAndHold.calculate(series, trades)); } + + + @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); + + AnalysisCriterion buyAndHold = new NumberOfTicksCriterion(); + assertEquals(4d, buyAndHold.summarize(series, decisions)); + } } Index: NumberOfTradesCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/NumberOfTradesCriterionTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** NumberOfTradesCriterionTest.java 7 Aug 2007 19:18:27 -0000 1.1 --- NumberOfTradesCriterionTest.java 9 Aug 2007 15:21:25 -0000 1.2 *************** *** 4,7 **** --- 4,8 ---- import java.util.ArrayList; + import java.util.LinkedList; import java.util.List; *************** *** 10,13 **** --- 11,16 ---- import net.sf.tail.OperationType; 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; *************** *** 35,37 **** --- 38,59 ---- assertEquals(2d, buyAndHold.calculate(series, trades)); } + + @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); + + AnalysisCriterion buyAndHold = new NumberOfTradesCriterion(); + assertEquals(2d, buyAndHold.summarize(series, decisions),0.01); + } } Index: VersusBuyAndHoldCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/VersusBuyAndHoldCriterionTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** VersusBuyAndHoldCriterionTest.java 7 Aug 2007 18:53:23 -0000 1.1 --- VersusBuyAndHoldCriterionTest.java 9 Aug 2007 15:21:25 -0000 1.2 *************** *** 4,7 **** --- 4,8 ---- import java.util.ArrayList; + import java.util.LinkedList; import java.util.List; *************** *** 10,13 **** --- 11,16 ---- import net.sf.tail.OperationType; 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; *************** *** 28,31 **** --- 31,53 ---- @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); + + AnalysisCriterion buyAndHold = new VersusBuyAndHoldCriterion(); + assertEquals(1.10 * 1.05 / 1.05, buyAndHold.summarize(series, decisions),0.01); + } + + @Test public void testCalculateOnlyWithLossTrades() { SampleTimeSeries series = new SampleTimeSeries(new double[] { 100, 95, 100, 80, 85, 70 }); Index: AverageProfitCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/AverageProfitCriterionTest.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** AverageProfitCriterionTest.java 7 Aug 2007 17:45:32 -0000 1.8 --- AverageProfitCriterionTest.java 9 Aug 2007 15:21:25 -0000 1.9 *************** *** 4,7 **** --- 4,8 ---- import java.util.ArrayList; + import java.util.LinkedList; import java.util.List; *************** *** 10,13 **** --- 11,16 ---- import net.sf.tail.OperationType; 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; *************** *** 35,38 **** --- 38,59 ---- } + @Test + public void testSummarize() { + 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); + + AnalysisCriterion averageProfit = new AverageProfitCriterion(); + assertEquals(1.03, averageProfit.summarize(series, decisions),0.01); + } @Test Index: RewardRiskRatioCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/RewardRiskRatioCriterionTest.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** RewardRiskRatioCriterionTest.java 26 Jul 2007 20:48:55 -0000 1.9 --- RewardRiskRatioCriterionTest.java 9 Aug 2007 15:21:25 -0000 1.10 *************** *** 5,8 **** --- 5,9 ---- import java.util.ArrayList; + import java.util.LinkedList; import java.util.List; *************** *** 10,13 **** --- 11,16 ---- import net.sf.tail.OperationType; 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; *************** *** 38,41 **** --- 41,69 ---- assertEquals(((105d / 100) * (90d / 95d) * (120d / 95)) / (((105d / 100) * (100d / 95)) - (105d / 100 * 90d / 95 * 80d / 95)) , rrc.calculate(series, trades), 0.01); } + + + @Test + 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); + + assertEquals(((105d / 100) * (90d / 95d) * (120d / 95)) / (((105d / 100) * (100d / 95)) - (105d / 100 * 90d / 95 * 80d / 95)) , rrc.summarize(series, decisions),0.01); + } + @Test public void testRewardRiskRatioCriterionOnlyWithGain() Index: BuyAndHoldCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/BuyAndHoldCriterionTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** BuyAndHoldCriterionTest.java 7 Aug 2007 18:53:24 -0000 1.1 --- BuyAndHoldCriterionTest.java 9 Aug 2007 15:21:25 -0000 1.2 *************** *** 4,7 **** --- 4,8 ---- import java.util.ArrayList; + import java.util.LinkedList; import java.util.List; *************** *** 10,13 **** --- 11,16 ---- import net.sf.tail.OperationType; 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; *************** *** 27,30 **** --- 30,54 ---- } + + @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); + + AnalysisCriterion buyAndHold = new BuyAndHoldCriterion(); + assertEquals(1.05, buyAndHold.summarize(series, decisions),0.01); + } + + @Test public void testCalculateOnlyWithLossTrades() { |