/* * ------------------------------------------------------------------------- * $Id: ChartSeries.java,v 1.7 2004/05/26 18:54:54 estewart Exp $ * ------------------------------------------------------------------------- * Copyright (c) 1999 Visual Numerics Inc. All Rights Reserved. * * This software is confidential information which is proprietary to * and a trade secret of Visual Numerics, Inc. Use, duplication or * disclosure is subject to the terms of an appropriate license * agreement. * * VISUAL NUMERICS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE * SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. VISUAL * NUMERICS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR * ITS DERIVATIVES. *-------------------------------------------------------------------------- */ package com.imsl.demo.risk; import com.imsl.chart.*; import java.text.*; import java.util.*; /** * Chart the raw timeseries. * * @author brophy * @created January 31, 2002 */ public class ChartSeries extends JFrameChart { static private final DateFormat DATE_FORMAT_YEAR = new SimpleDateFormat("MMMyy"); private String color[] = {"black", "red", "blue", "green", "gold"}; boolean isRaw = true; /** Creates new ChartSeries */ public ChartSeries(Database db) { setTitle("Risk Analysis"); Object l[] = getListeners(java.awt.event.WindowListener.class); for (int k = 0; k < l.length; k++) { removeWindowListener((java.awt.event.WindowListener)l[k]); } Chart chart = getChart(); //chart.getLegend().setPaint(true); //chart.getBackground().setFillColor(new java.awt.Color(240,240,240)); if (isRaw) { chart.getChartTitle().setTitle("Raw Time Series"); } else { chart.getChartTitle().setTitle("Daily Returns"); } Date dateStart = new GregorianCalendar(1990, 0, 1).getTime(); Date dateEnd = new GregorianCalendar(2002, 11, 31).getTime(); double ticks[] = new double[7]; for (int j = 0; j < ticks.length; j++) { ticks[j] = new GregorianCalendar(1990+2*j, 0, 1).getTimeInMillis(); } double tCross = new GregorianCalendar(1990, 0, 1).getTimeInMillis(); String ticker[] = db.getTickers(); for (int k = 0; k < ticker.length; k++) { Database.Series series = db.getSeries(ticker[k]); AxisXY axis = new AxisXY(chart); axis.setViewport(0.35, 0.98, 0.2, 0.9); axis.setLineColor(color[k]); axis.setTextColor(color[k]); axis.getAxisX().setAutoscaleInput(AxisXY.AUTOSCALE_OFF); axis.getAxisX().setWindow(dateStart.getTime(), dateEnd.getTime()); axis.getAxisX().getAxisLabel().setTextFormat(DATE_FORMAT_YEAR); axis.getAxisX().setTicks(ticks); axis.getAxisY().getAxisLabel().setTextFormat(new java.text.DecimalFormat("0.E0")); axis.getAxisY().getAxisUnit().setTitle(ticker[k]); //axis.getAxisY().getAxisUnit().setFontStyle(java.awt.Font.BOLD); axis.setCross(tCross, 0.0); tCross -= 1000.*3600.*24.*500.; if (!ticker[k].equals("spx")) { axis.getAxisX().setPaint(false); } Data data; if (isRaw) { data = new Data(axis, series.date, series.close); } else { double x[] = new double[series.close.length-2]; double y[] = new double[series.close.length-2]; for (int j = 0; j < y.length; j++) { x[j] = series.date[j+1]; y[j] = (series.close[j+1]-series.close[j])/series.close[j]; } data = new Data(axis, x, y); } data.setTitle(ticker[k]); } } }