From: yeom Date: Fri, 23 Jul 2010 03:44:00 +0000 (+0000) Subject: add Monte Carlo benchmark ported from Java Grande Benchmark suite X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=2c0c03077d3a2ff459630ddf1438fa4313d3afa4;p=IRC.git add Monte Carlo benchmark ported from Java Grande Benchmark suite --- diff --git a/Robust/src/Benchmarks/oooJava/monte/AppDemo.java b/Robust/src/Benchmarks/oooJava/monte/AppDemo.java new file mode 100644 index 00000000..7ac31efd --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/AppDemo.java @@ -0,0 +1,391 @@ +import java.util.Vector; + +/************************************************************************** + * * + * Java Grande Forum Benchmark Suite - Version 2.0 * + * * + * produced by * + * * + * Java Grande Benchmarking Project * + * * + * at * + * * + * Edinburgh Parallel Computing Centre * + * * + * email: epcc-javagrande@epcc.ed.ac.uk * + * * + * Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * + * * + * This version copyright (c) The University of Edinburgh, 1999. * + * All rights reserved. * + * * + **************************************************************************/ + +/** + * Code, a test-harness for invoking and driving the Applications Demonstrator + * classes. + * + *

+ * To do: + *

    + *
  1. Very long delay prior to connecting to the server.
  2. + *
  3. Some text output seem to struggle to get out, without the user tapping + * ENTER on the keyboard!
  4. + *
+ * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class AppDemo extends Universal { + // ------------------------------------------------------------------------ + // Class variables. + // ------------------------------------------------------------------------ + + public static double JGFavgExpectedReturnRateMC; + public static boolean DEBUG; + protected static String prompt; + + public static final int Serial; + // ------------------------------------------------------------------------ + // Instance variables. + // ------------------------------------------------------------------------ + /** + * Directory in which to find the historical rates. + */ + private String dataDirname; + /** + * Name of the historical rate to model. + */ + private String dataFilename; + /** + * The number of time-steps which the Monte Carlo simulation should run for. + */ + private int nTimeStepsMC; + /** + * The number of Monte Carlo simulations to run. + */ + private int nRunsMC; + /** + * The default duration between time-steps, in units of a year. + */ + private double dTime; + /** + * Flag to determine whether initialisation has already taken place. + */ + private boolean initialised; + /** + * Variable to determine which deployment scenario to run. + */ + private int runMode; + + private Vector tasks; + // private Vector results; + + private int workload; + + public AppDemo(String dataDirname, String dataFilename, int nTimeStepsMC, int nRunsMC, + int workload) { + + JGFavgExpectedReturnRateMC = 0.0; + DEBUG = true; + prompt = "AppDemo> "; + Serial = 1; + + dTime = 1.0 / 365.0; + initialised = false; + + pathStartValue = 100.0; + avgExpectedReturnRateMC = 0.0; + avgVolatilityMC = 0.0; + + initAllTasks = null; + + this.dataDirname = dataDirname; + this.dataFilename = dataFilename; + this.nTimeStepsMC = nTimeStepsMC; + this.nRunsMC = nRunsMC; + this.initialised = false; + this.workload = workload; + set_prompt(prompt); + set_DEBUG(DEBUG); + } + + /** + * Single point of contact for running this increasingly bloated class. Other + * run modes can later be defined for whether a new rate should be loaded in, + * etc. Note that if the hostname is set to the string "none", + * then the demonstrator runs in purely serial mode. + */ + + /** + * Initialisation and Run methods. + */ + + PriceStock psMC; + double pathStartValue; + double avgExpectedReturnRateMC; + double avgVolatilityMC; + + ToInitAllTasks initAllTasks; + + public void initSerial() { + // + // Measure the requested path rate. + RatePath rateP = new RatePath(dataDirname, dataFilename); + rateP.dbgDumpFields(); + ReturnPath returnP = rateP.getReturnCompounded(); + returnP.estimatePath(); + returnP.dbgDumpFields(); + double expectedReturnRate = returnP.get_expectedReturnRate(); + double volatility = returnP.get_volatility(); + // + // Now prepare for MC runs. + initAllTasks = new ToInitAllTasks(returnP, nTimeStepsMC, pathStartValue); + String slaveClassName = "MonteCarlo.PriceStock"; + // + // Now create the tasks. + initTasks(nRunsMC); + // + + } + + public void runSerial() { + Vector results = new Vector(nRunsMC); + // Now do the computation. + int nMC=nRunsMC; + int lworkload=workload; + + double avgExpectedReturnRateMC = 0.0; + double avgVolatilityMC = 0.0; + double runAvgExpectedReturnRateMC = 0.0; + double runAvgVolatilityMC = 0.0; + + // Create an instance of a RatePath, for accumulating the results of the + // Monte Carlo simulations. + RatePath avgMCrate = new RatePath(nTimeStepsMC, "MC", 19990109, 19991231, dTime); + + for(int iRun=0;iRunnMC){ + iupper=nMC; + } + + int l_size=iupper-ilow; + PriceStock psArray[]=new PriceStock[l_size]; + sese parallel{ + for(int idx=ilow;idxdataDirname. + * + * @return Value of instance variable dataDirname. + */ + public String get_dataDirname() { + return (this.dataDirname); + } + + /** + * Set method for private instance variable dataDirname. + * + * @param dataDirname + * the value to set for the instance variable + * dataDirname. + */ + public void set_dataDirname(String dataDirname) { + this.dataDirname = dataDirname; + } + + /** + * Accessor method for private instance variable dataFilename. + * + * @return Value of instance variable dataFilename. + */ + public String get_dataFilename() { + return (this.dataFilename); + } + + /** + * Set method for private instance variable dataFilename. + * + * @param dataFilename + * the value to set for the instance variable + * dataFilename. + */ + public void set_dataFilename(String dataFilename) { + this.dataFilename = dataFilename; + } + + /** + * Accessor method for private instance variable nTimeStepsMC. + * + * @return Value of instance variable nTimeStepsMC. + */ + public int get_nTimeStepsMC() { + return (this.nTimeStepsMC); + } + + /** + * Set method for private instance variable nTimeStepsMC. + * + * @param nTimeStepsMC + * the value to set for the instance variable + * nTimeStepsMC. + */ + public void set_nTimeStepsMC(int nTimeStepsMC) { + this.nTimeStepsMC = nTimeStepsMC; + } + + /** + * Accessor method for private instance variable nRunsMC. + * + * @return Value of instance variable nRunsMC. + */ + public int get_nRunsMC() { + return (this.nRunsMC); + } + + /** + * Set method for private instance variable nRunsMC. + * + * @param nRunsMC + * the value to set for the instance variable nRunsMC. + */ + public void set_nRunsMC(int nRunsMC) { + this.nRunsMC = nRunsMC; + } + + /** + * Accessor method for private instance variable tasks. + * + * @return Value of instance variable tasks. + */ + public Vector get_tasks() { + return (this.tasks); + } + + /** + * Set method for private instance variable tasks. + * + * @param tasks + * the value to set for the instance variable tasks. + */ + public void set_tasks(Vector tasks) { + this.tasks = tasks; + } + + // ------------------------------------------------------------------------ +} diff --git a/Robust/src/Benchmarks/oooJava/monte/CallAppDemo.java b/Robust/src/Benchmarks/oooJava/monte/CallAppDemo.java new file mode 100644 index 00000000..60815618 --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/CallAppDemo.java @@ -0,0 +1,66 @@ +/************************************************************************** +* * +* Java Grande Forum Benchmark Suite - Version 2.0 * +* * +* produced by * +* * +* Java Grande Benchmarking Project * +* * +* at * +* * +* Edinburgh Parallel Computing Centre * +* * +* email: epcc-javagrande@epcc.ed.ac.uk * +* * +* Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * +* * +* This version copyright (c) The University of Edinburgh, 1999. * +* All rights reserved. * +* * +**************************************************************************/ + +/** + * Wrapper code to invoke the Application demonstrator. + * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class CallAppDemo { + public int size; +// int datasizes[] = {10000,60000}; +// int input[] = new int[2]; +// AppDemo ap = null; + + int datasizes[]; + int input[]; + AppDemo ap; + + public CallAppDemo(){ + datasizes=new int[2]; + datasizes[0]=10000; + datasizes[1]=60000; + input = new int[2]; + AppDemo ap = null; + } + + public void initialise (int workload) { + + input[0] = 1000; + input[1] = datasizes[size]; + + String dirName="Data"; + String filename="hitData"; + ap = new AppDemo(dirName, filename, + (input[0]),(input[1]),workload); + ap.initSerial(); + } + + public void runiters () { + ap.runSerial(); + } + + public AppDemo getAppDemo(){ + return ap; + } + +} diff --git a/Robust/src/Benchmarks/oooJava/monte/JGFMonteCarloBench.java b/Robust/src/Benchmarks/oooJava/monte/JGFMonteCarloBench.java new file mode 100644 index 00000000..c2f813da --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/JGFMonteCarloBench.java @@ -0,0 +1,69 @@ +/************************************************************************** + * * Java Grande Forum Benchmark Suite - Version 2.0 * * produced by * * Java + * Grande Benchmarking Project * * at * * Edinburgh Parallel Computing Centre * + * * email: epcc-javagrande@epcc.ed.ac.uk * * * This version copyright (c) The + * University of Edinburgh, 1999. * All rights reserved. * * + **************************************************************************/ + +public class JGFMonteCarloBench extends CallAppDemo { + + public JGFMonteCarloBench(){ + super(); + } + + public void JGFsetsize(int size) { + this.size = size; + } + + public void JGFinitialise(int workload) { + + initialise(workload); + + } + + public void JGFapplication() { + + runiters(); + + } + + public void JGFvalidate() { + double refval[] = new double[2]; + refval[0] = -0.0333976656762814; + refval[1] = -0.03215796752868655; + + double dev = Math.abs(getAppDemo().JGFavgExpectedReturnRateMC - refval[size]); + if (dev > 1.0e-12) { + System.out.println("Validation failed"); + System.out.println(" expectedReturnRate= " + getAppDemo().JGFavgExpectedReturnRateMC + " " + dev + + " " + size); + }else{ + System.out.println("Validation success"); + } + } + + public void JGFrun(int size,int workload) { + + JGFsetsize(size); + JGFinitialise(workload); + JGFapplication(); + JGFvalidate(); + + } + + public static void main(String argv[]) { + + JGFMonteCarloBench mc = new JGFMonteCarloBench(); + int size=0; + int workload=100; + if(argv.length>0){ + size=Integer.parseInt(argv[0]); + } + if(argv.length>1){ + workload=Integer.parseInt(argv[1]); + } + mc.JGFrun(size,workload); + + } + +} diff --git a/Robust/src/Benchmarks/oooJava/monte/MonteCarloPath.java b/Robust/src/Benchmarks/oooJava/monte/MonteCarloPath.java new file mode 100644 index 00000000..98047b9c --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/MonteCarloPath.java @@ -0,0 +1,548 @@ +/************************************************************************** + * * + * Java Grande Forum Benchmark Suite - Version 2.0 * + * * + * produced by * + * * + * Java Grande Benchmarking Project * + * * + * at * + * * + * Edinburgh Parallel Computing Centre * + * * + * email: epcc-javagrande@epcc.ed.ac.uk * + * * + * Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * + * * + * This version copyright (c) The University of Edinburgh, 1999. * + * All rights reserved. * + * * + **************************************************************************/ + +/** + * Class representing the paths generated by the Monte Carlo engine. + * + *

+ * To do list: + *

    + *
  1. double[] pathDate is not simulated.
  2. + *
+ * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class MonteCarloPath extends PathId { + + // ------------------------------------------------------------------------ + // Class variables. + // ------------------------------------------------------------------------ + /** + * Class variable for determining whether to switch on debug output or not. + */ + public static boolean DEBUG; + /** + * Class variable for defining the debug message prompt. + */ + protected static String prompt; + /** + * Class variable for determining which field in the stock data should be + * used. This is currently set to point to the 'closing price', as defined in + * class RatePath. + */ + public static int DATUMFIELD; + + // ------------------------------------------------------------------------ + // Instance variables. + // ------------------------------------------------------------------------ + /** + * Random fluctuations generated as a series of random numbers with given + * distribution. + */ + private double[] fluctuations; + /** + * The path values from which the random fluctuations are used to update. + */ + private double[] pathValue; + /** + * Integer flag for determining how the return was calculated, when used to + * calculate the mean drift and volatility parameters. + */ + private int returnDefinition; + /** + * Value for the mean drift, for use in the generation of the random path. + */ + private double expectedReturnRate; + /** + * Value for the volatility, for use in the generation of the random path. + */ + private double volatility; + /** + * Number of time steps for which the simulation should act over. + */ + private int nTimeSteps; + /** + * The starting value for of the security. + */ + private double pathStartValue; + + public void initFields() { + DEBUG = true; + prompt = "MonteCarloPath> "; + DATUMFIELD = 4; + returnDefinition = 0; + // expectedReturnRate = Double.NaN; + // volatility = Double.NaN; + nTimeSteps = 0; + // pathStartValue = Double.NaN; + + } + + // ------------------------------------------------------------------------ + // Constructors. + // ------------------------------------------------------------------------ + /** + * Default constructor. Needed by the HPT library to start create new + * instances of this class. The instance variables for this should then be + * initialised with the setInitAllTasks() method. + */ + public MonteCarloPath() { + super(); + initFields(); + set_prompt(prompt); + set_DEBUG(DEBUG); + } + + /** + * Constructor, using the ReturnPath object to initialise the + * necessary instance variables. + * + * @param returnPath + * Object used to define the instance variables in this object. + * @param nTimeSteps + * The number of time steps for which to generate the random path. + * @exception DemoException + * Thrown if there is a problem initialising the object's + * instance variables. + */ + public MonteCarloPath(ReturnPath returnPath, int nTimeSteps) { + /** + * These instance variables are members of PathId class. + */ + initFields(); + copyInstanceVariables(returnPath); + this.nTimeSteps = nTimeSteps; + this.pathValue = new double[nTimeSteps]; + this.fluctuations = new double[nTimeSteps]; + /** + * Whether to debug, and how. + */ + set_prompt(prompt); + set_DEBUG(DEBUG); + } + + /** + * Constructor, where the PathId objects is used to ease the + * number of instance variables to pass in. + * + * @param pathId + * Object used to define the identity of this Path. + * @param returnDefinition + * How the statistic variables were defined, according to the + * definitions in ReturnPath's two class variables + * COMPOUNDED and NONCOMPOUNDED. + * @param expectedReturnRate + * The measured expected return rate for which to generate. + * @param volatility + * The measured volatility for which to generate. + * @param nTimeSteps + * The number of time steps for which to generate. + * @exception DemoException + * Thrown if there is a problem initialising the object's + * instance variables. + */ + public MonteCarloPath(PathId pathId, int returnDefinition, double expectedReturnRate, + double volatility, int nTimeSteps) { + /** + * These instance variables are members of PathId class. Invoking with this + * particular signature should point to the definition in the PathId class. + */ + initFields(); + copyInstanceVariables(pathId); + this.returnDefinition = returnDefinition; + this.expectedReturnRate = expectedReturnRate; + this.volatility = volatility; + this.nTimeSteps = nTimeSteps; + this.pathValue = new double[nTimeSteps]; + this.fluctuations = new double[nTimeSteps]; + /** + * Whether to debug, and how. + */ + set_prompt(prompt); + set_DEBUG(DEBUG); + } + + /** + * Constructor, for when the user wishes to define each of the instance + * variables individually. + * + * @param name + * The name of the security which this Monte Carlo path should + * represent. + * @param startDate + * The date when the path starts, in 'YYYYMMDD' format. + * @param endDate + * The date when the path ends, in 'YYYYMMDD' format. + * @param dTime + * The interval in the data between successive data points in the + * generated path. + * @param returnDefinition + * How the statistic variables were defined, according to the + * definitions in ReturnPath's two class variables + * COMPOUNDED and NONCOMPOUNDED. + * @param expectedReturnRate + * The measured mean drift for which to generate. + * @param volatility + * The measured volatility for which to generate. + * @param nTimeSteps + * The number of time steps for which to generate. + */ + public MonteCarloPath(String name, int startDate, int endDate, double dTime, + int returnDefinition, double expectedReturnRate, double volatility, int nTimeSteps) { + /** + * These instance variables are members of PathId class. + */ + initFields(); + set_name(name); + set_startDate(startDate); + set_endDate(endDate); + set_dTime(dTime); + this.returnDefinition = returnDefinition; + this.expectedReturnRate = expectedReturnRate; + this.volatility = volatility; + this.nTimeSteps = nTimeSteps; + this.pathValue = new double[nTimeSteps]; + this.fluctuations = new double[nTimeSteps]; + /** + * Whether to debug, and how. + */ + set_prompt(prompt); + set_DEBUG(DEBUG); + } + + // ------------------------------------------------------------------------ + // Methods. + // ------------------------------------------------------------------------ + // ------------------------------------------------------------------------ + // Accessor methods for class MonteCarloPath. + // Generated by 'makeJavaAccessor.pl' script. HWY. 20th January 1999. + // ------------------------------------------------------------------------ + /** + * Accessor method for private instance variable fluctuations. + * + * @return Value of instance variable fluctuations. + * @exception DemoException + * thrown if instance variable fluctuations is + * undefined. + */ + public double[] get_fluctuations() { + if (this.fluctuations == null) { + System.out.println("Variable fluctuations is undefined!-get_fluctuations"); + System.exit(0); + } + return (this.fluctuations); + } + + /** + * Set method for private instance variable fluctuations. + * + * @param fluctuations + * the value to set for the instance variable + * fluctuations. + */ + public void set_fluctuations(double[] fluctuations) { + this.fluctuations = fluctuations; + } + + /** + * Accessor method for private instance variable pathValue. + * + * @return Value of instance variable pathValue. + * @exception DemoException + * thrown if instance variable pathValue is + * undefined. + */ + public double[] get_pathValue() { + if (this.pathValue == null) { + System.out.println("Variable fluctuations is undefined!-get_pathValue"); + System.exit(0); + } + return (this.pathValue); + } + + /** + * Set method for private instance variable pathValue. + * + * @param pathValue + * the value to set for the instance variable pathValue. + */ + public void set_pathValue(double[] pathValue) { + this.pathValue = pathValue; + } + + /** + * Accessor method for private instance variable returnDefinition + * . + * + * @return Value of instance variable returnDefinition. + * @exception DemoException + * thrown if instance variable returnDefinition is + * undefined. + */ + public int get_returnDefinition() { + if (this.returnDefinition == 0) { + System.out.println("Variable fluctuations is undefined!-get_returnDefinition"); + System.exit(0); + } + return (this.returnDefinition); + } + + /** + * Set method for private instance variable returnDefinition. + * + * @param returnDefinition + * the value to set for the instance variable + * returnDefinition. + */ + public void set_returnDefinition(int returnDefinition) { + this.returnDefinition = returnDefinition; + } + + /** + * Accessor method for private instance variable + * expectedReturnRate. + * + * @return Value of instance variable expectedReturnRate. + * @exception DemoException + * thrown if instance variable expectedReturnRate is + * undefined. + */ + public double get_expectedReturnRate() { + // if (this.expectedReturnRate == Double.NaN){ + // System.out.println("Variable expectedReturnRate is undefined!-get_expectedReturnRate"); + // System.exit(0); + // } + return (this.expectedReturnRate); + } + + /** + * Set method for private instance variable expectedReturnRate. + * + * @param expectedReturnRate + * the value to set for the instance variable + * expectedReturnRate. + */ + public void set_expectedReturnRate(double expectedReturnRate) { + this.expectedReturnRate = expectedReturnRate; + } + + /** + * Accessor method for private instance variable volatility. + * + * @return Value of instance variable volatility. + * @exception DemoException + * thrown if instance variable volatility is + * undefined. + */ + public double get_volatility() { + // if (this.volatility == Double.NaN){ + // System.out.println("Variable volatility is undefined!-get_volatility"); + // } + return (this.volatility); + } + + /** + * Set method for private instance variable volatility. + * + * @param volatility + * the value to set for the instance variable volatility + * . + */ + public void set_volatility(double volatility) { + this.volatility = volatility; + } + + /** + * Accessor method for private instance variable nTimeSteps. + * + * @return Value of instance variable nTimeSteps. + * @exception DemoException + * thrown if instance variable nTimeSteps is + * undefined. + */ + public int get_nTimeSteps() { + if (this.nTimeSteps == 0) { + System.out.println("Variable nTimeSteps is undefined!-get_nTimeSteps"); + System.exit(0); + } + return (this.nTimeSteps); + } + + /** + * Set method for private instance variable nTimeSteps. + * + * @param nTimeSteps + * the value to set for the instance variable nTimeSteps + * . + */ + public void set_nTimeSteps(int nTimeSteps) { + this.nTimeSteps = nTimeSteps; + } + + /** + * Accessor method for private instance variable pathStartValue. + * + * @return Value of instance variable pathStartValue. + * @exception DemoException + * thrown if instance variable pathStartValue is + * undefined. + */ + public double get_pathStartValue() { + // if (this.pathStartValue == Double.NaN){ + // System.out.println("Variable pathStartValue is undefined!-get_pathStartValue"); + // System.exit(0); + // } + return (this.pathStartValue); + } + + /** + * Set method for private instance variable pathStartValue. + * + * @param pathStartValue + * the value to set for the instance variable + * pathStartValue. + */ + public void set_pathStartValue(double pathStartValue) { + this.pathStartValue = pathStartValue; + } + + // ------------------------------------------------------------------------ + /** + * Method for copying the suitable instance variable from a + * ReturnPath object. + * + * @param obj + * Object used to define the instance variables which should be + * carried over to this object. + * @exception DemoException + * thrown if there is a problem accessing the instance variables + * from the target objetct. + */ + private void copyInstanceVariables(ReturnPath obj) { + // + // Instance variables defined in the PathId object. + set_name(obj.get_name()); + set_startDate(obj.get_startDate()); + set_endDate(obj.get_endDate()); + set_dTime(obj.get_dTime()); + // + // Instance variables defined in this object. + this.returnDefinition = obj.get_returnDefinition(); + this.expectedReturnRate = obj.get_expectedReturnRate(); + this.volatility = obj.get_volatility(); + } + + /** + * Method for returning a RatePath object from the Monte Carlo data generated. + * + * @return a RatePath object representing the generated data. + * @exception DemoException + * thrown if there was a problem creating the RatePath object. + */ + public RatePath getRatePath() { + return (new RatePath(this)); + } + + /** + * Method for calculating the sequence of fluctuations, based around a + * Gaussian distribution of given mean and variance, as defined in this class' + * instance variables. Mapping from Gaussian distribution of (0,1) to + * (mean-drift,volatility) is done via Ito's lemma on the log of the stock + * price. + * + * @param randomSeed + * The psuedo-random number seed value, to start off a given sequence + * of Gaussian fluctuations. + * @exception DemoException + * thrown if there are any problems with the computation. + */ + public void computeFluctuationsGaussian(long randomSeed) { + if (nTimeSteps > fluctuations.length) { + System.out + .println("Number of timesteps requested is greater than the allocated array!-computeFluctuationsGaussian"); + System.exit(0); + } + // + // First, make use of the passed in seed value. + Random rnd; + if (randomSeed == -1) { + rnd = new Random(); + } else { + rnd = new Random(randomSeed); + } + // + // Determine the mean and standard-deviation, from the mean-drift and + // volatility. + double mean = (expectedReturnRate - 0.5 * volatility * volatility) * get_dTime(); + double sd = volatility * Math.sqrt(get_dTime()); + double gauss, meanGauss = 0.0, variance = 0.0; + for (int i = 0; i < nTimeSteps; i++) { + gauss = rnd.nextGaussian(); + meanGauss += gauss; + variance += (gauss * gauss); + // + // Now map this onto a general Gaussian of given mean and variance. + fluctuations[i] = mean + sd * gauss; + // dbgPrintln("gauss="+gauss+" fluctuations="+fluctuations[i]); + } + meanGauss /= (double) nTimeSteps; + variance /= (double) nTimeSteps; + // dbgPrintln("meanGauss="+meanGauss+" variance="+variance); + } + + /** + * Method for calculating the sequence of fluctuations, based around a + * Gaussian distribution of given mean and variance, as defined in this class' + * instance variables. Mapping from Gaussian distribution of (0,1) to + * (mean-drift,volatility) is done via Ito's lemma on the log of the stock + * price. This overloaded method is for when the random seed should be decided + * by the system. + * + * @exception DemoException + * thrown if there are any problems with the computation. + */ + public void computeFluctuationsGaussian() { + computeFluctuationsGaussian((long) -1); + } + + /** + * Method for calculating the corresponding rate path, given the fluctuations + * and starting rate value. + * + * @param startValue + * the starting value of the rate path, to be updated with the + * precomputed fluctuations. + * @exception DemoException + * thrown if there are any problems with the computation. + */ + public void computePathValue(double startValue) { + pathValue[0] = startValue; + if (returnDefinition == 1 || returnDefinition == 2) { + for (int i = 1; i < nTimeSteps; i++) { + pathValue[i] = pathValue[i - 1] * Math.exp(fluctuations[i]); + } + } else { + System.out.println("Unknown or undefined update method.-computePathValue"); + System.exit(0); + } + } +} diff --git a/Robust/src/Benchmarks/oooJava/monte/PathId.java b/Robust/src/Benchmarks/oooJava/monte/PathId.java new file mode 100644 index 00000000..751c514c --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/PathId.java @@ -0,0 +1,233 @@ +/************************************************************************** + * * + * Java Grande Forum Benchmark Suite - Version 2.0 * + * * + * produced by * + * * + * Java Grande Benchmarking Project * + * * + * at * + * * + * Edinburgh Parallel Computing Centre * + * * + * email: epcc-javagrande@epcc.ed.ac.uk * + * * + * Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * + * * + * This version copyright (c) The University of Edinburgh, 1999. * + * All rights reserved. * + * * + **************************************************************************/ + +/** + * Base class for all the security objects, namely in terms of providing a + * consistent means of identifying each such object. Also provides some methods + * for writing out debug messages. + * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class PathId extends Universal { + + // ------------------------------------------------------------------------ + // Class variables. + // ------------------------------------------------------------------------ + /** + * A class variable. + */ + public static boolean DEBUG; + /** + * The prompt to write before any debug messages. + */ + protected static String prompt; + + // ------------------------------------------------------------------------ + // Instance variables. + // ------------------------------------------------------------------------ + /** + * Simple string name. + */ + private String name; + + /** + * The start date for the path, in YYYYMMDD format. + */ + private int startDate; + /** + * The end date for the path, in YYYYMMDD format. + */ + private int endDate; + /** + * The change in time between two successive data values. + */ + private double dTime; + + public void initFields() { + DEBUG = true; + prompt = "PathId> "; + startDate = 0; + endDate = 0; +// dTime = Double.NaN; + } + + // ------------------------------------------------------------------------ + // Constructors. + // ------------------------------------------------------------------------ + /** + * Default constructor. + */ + public PathId() { + super(); + initFields(); + set_prompt(prompt); + set_DEBUG(DEBUG); + } + + /** + * Another constructor. + * + * @param name + * The name for the security to record. + */ + public PathId(String name) { + initFields(); + set_prompt(prompt); + set_DEBUG(DEBUG); + this.name = name; + } + + // ------------------------------------------------------------------------ + // Methods. + // ------------------------------------------------------------------------ + // ------------------------------------------------------------------------ + // Accessor methods for class PathId. + // Generated by 'makeJavaAccessor.pl' script. HWY. 20th January 1999. + // ------------------------------------------------------------------------ + /** + * Accessor method for private instance variable name. + * + * @return Value of instance variable name. + * @exception DemoException + * thrown if instance variable name is undefined. + */ + public String get_name() { + if (this.name == null) { + System.out.println("Variable name is undefined!-get_name"); + System.exit(0); + } + return (this.name); + } + + /** + * Set method for private instance variable name. + * + * @param name + * the value to set for the instance variable name. + */ + public void set_name(String name) { + this.name = name; + } + + /** + * Accessor method for private instance variable startDate. + * + * @return Value of instance variable startDate. + * @exception DemoException + * thrown if instance variable startDate is + * undefined. + */ + public int get_startDate() { + if (this.startDate == 0) { + System.out.println("Variable startDate is undefined!-get_startDate"); + System.exit(0); + } + return (this.startDate); + } + + /** + * Set method for private instance variable startDate. + * + * @param startDate + * the value to set for the instance variable startDate. + */ + public void set_startDate(int startDate) { + this.startDate = startDate; + } + + /** + * Accessor method for private instance variable endDate. + * + * @return Value of instance variable endDate. + * @exception DemoException + * thrown if instance variable endDate is undefined. + */ + public int get_endDate() { + if (this.endDate == 0) { + System.out.println("Variable endDate is undefined!-get_endDate"); + System.exit(0); + } + return (this.endDate); + } + + /** + * Set method for private instance variable endDate. + * + * @param endDate + * the value to set for the instance variable endDate. + */ + public void set_endDate(int endDate) { + this.endDate = endDate; + } + + /** + * Accessor method for private instance variable dTime. + * + * @return Value of instance variable dTime. + * @exception DemoException + * thrown if instance variable dTime is undefined. + */ + public double get_dTime() { +// if (this.dTime == Double.NaN) { +// System.out.println("Variable dTime is undefined!-get_dTime"); +// } + return (this.dTime); + } + + /** + * Set method for private instance variable dTime. + * + * @param dTime + * the value to set for the instance variable dTime. + */ + public void set_dTime(double dTime) { + this.dTime = dTime; + } + + // ------------------------------------------------------------------------ + /** + * Clone the instance variables in this class, from another instance of this + * class. + * + * @param obj + * the PathId object from which to copy. + * @exception DemoException + * thrown if the values to be copied contain any undefined + * objects. + */ + public void copyInstanceVariables(PathId obj) { + this.name = obj.get_name(); + this.startDate = obj.get_startDate(); + this.endDate = obj.get_endDate(); + this.dTime = obj.get_dTime(); + } + + /** + * Dumps the contents of the fields, to standard-out, for debugging. + */ + public void dbgDumpFields() { + // dbgPrintln("name=" +this.name); + // dbgPrintln("startDate="+this.startDate); + // dbgPrintln("endDate=" +this.endDate); + // dbgPrintln("dTime=" +this.dTime); + } +} diff --git a/Robust/src/Benchmarks/oooJava/monte/PriceStock.java b/Robust/src/Benchmarks/oooJava/monte/PriceStock.java new file mode 100644 index 00000000..397240d5 --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/PriceStock.java @@ -0,0 +1,174 @@ +/************************************************************************** + * * + * Java Grande Forum Benchmark Suite - Version 2.0 * + * * + * produced by * + * * + * Java Grande Benchmarking Project * + * * + * at * + * * + * Edinburgh Parallel Computing Centre * + * * + * email: epcc-javagrande@epcc.ed.ac.uk * + * * + * Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * + * * + * This version copyright (c) The University of Edinburgh, 1999. * + * All rights reserved. * + * * + **************************************************************************/ + +/** + * Class to do the work in the Application demonstrator, in particular the + * pricing of the stock path generated by Monte Carlo. The run method will + * generate a single sequence with the required statistics, estimate its + * volatility, expected return rate and final stock price value. + * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class PriceStock extends Universal { + + // ------------------------------------------------------------------------ + // Class variables. + // ------------------------------------------------------------------------ + /** + * Class variable for determining whether to switch on debug output or not. + */ + public static boolean DEBUG; + /** + * Class variable for defining the debug message prompt. + */ + protected static String prompt; + + // ------------------------------------------------------------------------ + // Instance variables. + // ------------------------------------------------------------------------ + /** + * The Monte Carlo path to be generated. + */ + private MonteCarloPath mcPath; + /** + * String identifier for a given task. + */ + private String taskHeader; + /** + * Random seed from which the Monte Carlo sequence is started. + */ + private long randomSeed; + /** + * Initial stock price value. + */ + private double pathStartValue; + /** + * Object which represents the results from a given computation task. + */ + private ToResult result; + private double expectedReturnRate; + private double volatility; + private double volatility2; + private double finalStockPrice; + private double[] pathValue; + + public void initFields() { + DEBUG = true; + prompt = "PriceStock> "; + + randomSeed = -1; +// pathStartValue = Double.NaN; +// expectedReturnRate = Double.NaN; +// volatility = Double.NaN; +// volatility2 = Double.NaN; +// finalStockPrice = Double.NaN; + } + + // ------------------------------------------------------------------------ + // Constructors. + // ------------------------------------------------------------------------ + /** + * Default constructor. + */ + public PriceStock() { + super(); + initFields(); + mcPath = new MonteCarloPath(); + set_prompt(prompt); + set_DEBUG(DEBUG); + } + + // ------------------------------------------------------------------------ + // Methods. + // ------------------------------------------------------------------------ + // ------------------------------------------------------------------------ + // Methods which implement the Slaveable interface. + // ------------------------------------------------------------------------ + /** + * Method which is passed in the initialisation data common to all tasks, and + * then unpacks them for use by this object. + * + * @param obj + * Object representing data which are common to all tasks. + */ + public void setInitAllTasks(Object obj) { + ToInitAllTasks initAllTasks = (ToInitAllTasks) obj; + mcPath.set_name(initAllTasks.get_name()); + mcPath.set_startDate(initAllTasks.get_startDate()); + mcPath.set_endDate(initAllTasks.get_endDate()); + mcPath.set_dTime(initAllTasks.get_dTime()); + mcPath.set_returnDefinition(initAllTasks.get_returnDefinition()); + mcPath.set_expectedReturnRate(initAllTasks.get_expectedReturnRate()); + mcPath.set_volatility(initAllTasks.get_volatility()); + int nTimeSteps = initAllTasks.get_nTimeSteps(); + mcPath.set_nTimeSteps(nTimeSteps); + this.pathStartValue = initAllTasks.get_pathStartValue(); + mcPath.set_pathStartValue(pathStartValue); + mcPath.set_pathValue(new double[nTimeSteps]); + mcPath.set_fluctuations(new double[nTimeSteps]); + } + + /** + * Method which is passed in the data representing each task, which then + * unpacks it for use by this object. + * + * @param obj + * Object representing the data which defines a given task. + */ + public void setTask(Object obj) { + ToTask toTask = (ToTask) obj; + this.taskHeader = toTask.get_header(); + this.randomSeed = toTask.get_randomSeed(); + } + + /** + * The business end. Invokes the necessary computation routine, for a a given + * task. + */ + public void run() { + mcPath.computeFluctuationsGaussian(randomSeed); + mcPath.computePathValue(pathStartValue); + RatePath rateP = new RatePath(mcPath); + ReturnPath returnP = rateP.getReturnCompounded(); + returnP.estimatePath(); + expectedReturnRate = returnP.get_expectedReturnRate(); + volatility = returnP.get_volatility(); + volatility2 = returnP.get_volatility2(); + finalStockPrice = rateP.getEndPathValue(); + pathValue = mcPath.get_pathValue(); + } + + /* + * Method which returns the results of a computation back to the caller. + * + * @return An object representing the computed results. + */ + public Object getResult() { + String resultHeader = + "Result of task with Header=" + taskHeader + ": randomSeed=" + randomSeed + + ": pathStartValue=" + pathStartValue; + ToResult res = + new ToResult(resultHeader, expectedReturnRate, volatility, volatility2, finalStockPrice, + pathValue); + return (Object) res; + } +} diff --git a/Robust/src/Benchmarks/oooJava/monte/RatePath.java b/Robust/src/Benchmarks/oooJava/monte/RatePath.java new file mode 100644 index 00000000..95985ae1 --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/RatePath.java @@ -0,0 +1,532 @@ + +/************************************************************************** + * * + * Java Grande Forum Benchmark Suite - Version 2.0 * + * * + * produced by * + * * + * Java Grande Benchmarking Project * + * * + * at * + * * + * Edinburgh Parallel Computing Centre * + * * + * email: epcc-javagrande@epcc.ed.ac.uk * + * * + * Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * + * * + * This version copyright (c) The University of Edinburgh, 1999. * + * All rights reserved. * + * * + **************************************************************************/ + +/** + * Class for recording the values in the time-dependent path of a security. + * + *

+ * To Do list: + *

    + *
  1. None! + *
+ * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class RatePath extends PathId { + + // ------------------------------------------------------------------------ + // Class variables. + // ------------------------------------------------------------------------ + /** + * Class variable, for setting whether to print debug messages. + */ + public static boolean DEBUG; + /** + * The prompt to write before any debug messages. + */ + protected static String prompt; + /** + * Class variable for determining which field in the stock data should be + * used. This is currently set to point to the 'closing price'. + */ + public static int DATUMFIELD; + /** + * Class variable to represent the minimal date, whence the stock prices + * appear. Used to trap any potential problems with the data. + */ + public static final int MINIMUMDATE; + /** + * Class variable for defining what is meant by a small number, small enough + * to cause an arithmetic overflow when dividing. According to the Java + * Nutshell book, the actual range is +/-4.9406564841246544E-324 + */ + public static final double EPSILON; + + // ------------------------------------------------------------------------ + // Instance variables. + // ------------------------------------------------------------------------ + /** + * An instance variable, for storing the rate's path values itself. + */ + private double[] pathValue; + /** + * An instance variable, for storing the corresponding date of the datum, in + * 'YYYYMMDD' format. + */ + private int[] pathDate; + /** + * The number of accepted values in the rate path. + */ + private int nAcceptedPathValue; + + private void initFields() { + DEBUG = true; + prompt = "RatePath> "; + DATUMFIELD = 4; + MINIMUMDATE = 19000101; + EPSILON = 10.0 * (4.9E-324); + nAcceptedPathValue = 0; + } + + // ------------------------------------------------------------------------ + // Constructors. + // ------------------------------------------------------------------------ + /** + * Constructor, where the user specifies the filename in from which the data + * should be read. + * + * @param String + * filename + * @exception DemoException + * thrown if there is a problem reading in the data file. + */ + public RatePath(String filename) { + initFields(); + set_prompt(prompt); + set_DEBUG(DEBUG); + readRatesFile(filename); + } + + /** + * Constructor, where the user specifies the directory and filename in from + * which the data should be read. + * + * @param String + * dirName + * @param String + * filename + * @exception DemoException + * thrown if there is a problem reading in the data file. + */ + public RatePath(String dirName, String filename) { + initFields(); + set_prompt(prompt); + set_DEBUG(DEBUG); + readRatesFile(filename); + } + + /** + * Constructor, for when the user specifies simply an array of values for the + * path. User must also include information for specifying the other + * characteristics of the path. + * + * @param pathValue + * the array containing the values for the path. + * @param name + * the name to attach to the path. + * @param startDate + * date from which the path is supposed to start, in 'YYYYMMDD' + * format. + * @param startDate + * date from which the path is supposed to end, in 'YYYYMMDD' format. + * @param dTime + * the time interval between successive path values, in fractions of + * a year. + */ + public RatePath(double[] pathValue, String name, int startDate, int endDate, double dTime) { + initFields(); + set_name(name); + set_startDate(startDate); + set_endDate(endDate); + set_dTime(dTime); + set_prompt(prompt); + set_DEBUG(DEBUG); + this.pathValue = pathValue; + this.nAcceptedPathValue = pathValue.length; + } + + /** + * Constructor, for use by the Monte Carlo generator, when it wishes to + * represent its findings as a RatePath object. + * + * @param mc + * the Monte Carlo generator object, whose data are to be copied + * over. + * @exception DemoException + * thrown if there is an attempt to access an undefined variable. + */ + public RatePath(MonteCarloPath mc) { + initFields(); + // + // Fields pertaining to the parent PathId object: + set_name(mc.get_name()); + set_startDate(mc.get_startDate()); + set_endDate(mc.get_endDate()); + set_dTime(mc.get_dTime()); + // + // Fields pertaining to RatePath object itself. + pathValue = mc.get_pathValue(); + nAcceptedPathValue = mc.get_nTimeSteps(); + // + // Note that currently the pathDate is neither declared, defined, + // nor used in the MonteCarloPath object. + pathDate = new int[nAcceptedPathValue]; + } + + /** + * Constructor, for when there is no actual pathValue with which to + * initialise. + * + * @param pathValueLegth + * the length of the array containing the values for the path. + * @param name + * the name to attach to the path. + * @param startDate + * date from which the path is supposed to start, in 'YYYYMMDD' + * format. + * @param startDate + * date from which the path is supposed to end, in 'YYYYMMDD' format. + * @param dTime + * the time interval between successive path values, in fractions of + * a year. + */ + public RatePath(int pathValueLength, String name, int startDate, int endDate, double dTime) { + initFields(); + set_name(name); + set_startDate(startDate); + set_endDate(endDate); + set_dTime(dTime); + set_prompt(prompt); + set_DEBUG(DEBUG); + this.pathValue = new double[pathValueLength]; + this.nAcceptedPathValue = pathValue.length; + } + + // ------------------------------------------------------------------------ + // Methods. + // ------------------------------------------------------------------------ + /** + * Routine to update this rate path with the values from another rate path, + * via its pathValue array. + * + * @param operandPath + * the path value array to use for the update. + * @exception DemoException + * thrown if there is a mismatch between the lengths of the + * operand and target arrays. + */ + public void inc_pathValue(double[] operandPath) { + if (pathValue.length != operandPath.length) { + System.out + .println("The path to update has a different size to the path to update with!-inc_pathValue"); + System.exit(0); + } + for (int i = 0; i < pathValue.length; i++) + pathValue[i] += operandPath[i]; + } + + /** + * Routine to scale this rate path by a constant. + * + * @param scale + * the constant with which to multiply to all the path values. + * @exception DemoException + * thrown if there is a mismatch between the lengths of the + * operand and target arrays. + */ + public void inc_pathValue(double scale) { + if (pathValue == null) { + System.out.println("Variable pathValue is undefined!-inc_pathValue"); + System.exit(0); + } + for (int i = 0; i < pathValue.length; i++) + pathValue[i] *= scale; + } + + // ------------------------------------------------------------------------ + // Accessor methods for class RatePath. + // Generated by 'makeJavaAccessor.pl' script. HWY. 20th January 1999. + // ------------------------------------------------------------------------ + /** + * Accessor method for private instance variable pathValue. + * + * @return Value of instance variable pathValue. + * @exception DemoException + * thrown if instance variable pathValue is + * undefined. + */ + public double[] get_pathValue() { + if (this.pathValue == null) { + System.out.println("Variable pathValue is undefined!-get_pathValue"); + System.exit(0); + } + return (this.pathValue); + } + + /** + * Set method for private instance variable pathValue. + * + * @param pathValue + * the value to set for the instance variable pathValue. + */ + public void set_pathValue(double[] pathValue) { + this.pathValue = pathValue; + } + + /** + * Accessor method for private instance variable pathDate. + * + * @return Value of instance variable pathDate. + * @exception DemoException + * thrown if instance variable pathDate is + * undefined. + */ + public int[] get_pathDate() { + if (this.pathDate == null) { + System.out.println("Variable pathDate is undefined!-get_pathDate"); + System.exit(0); + } + return (this.pathDate); + } + + /** + * Set method for private instance variable pathDate. + * + * @param pathDate + * the value to set for the instance variable pathDate. + */ + public void set_pathDate(int[] pathDate) { + this.pathDate = pathDate; + } + + // ------------------------------------------------------------------------ + /** + * Method to return the terminal value for a given rate path, as used in + * derivative calculations. + * + * @return The last value in the rate path. + */ + public double getEndPathValue() { + return (getPathValue(pathValue.length - 1)); + } + + /** + * Method to return the value for a given rate path, at a given index. One + * may want to index this in a more user friendly manner! + * + * @param index + * the index on which to return the path value. + * @return The value of the path at the designated index. + */ + public double getPathValue(int index) { + return (pathValue[index]); + } + + /** + * Method for calculating the returns on a given rate path, via the definition + * for the instantaneous compounded return. u_i = \ln{\frac{S_i}{S_{i-1}}} + * + * @return the return, as defined. + * @exception DemoException + * thrown if there is a problem with the calculation. + */ + public ReturnPath getReturnCompounded() { + if (pathValue == null || nAcceptedPathValue == 0) { + System.out.println("The Rate Path has not been defined!"); + System.exit(0); + } + double[] returnPathValue = new double[nAcceptedPathValue]; + returnPathValue[0] = 0.0; + for (int i = 1; i < nAcceptedPathValue; i++) { + returnPathValue[i] = Math.log(pathValue[i] / pathValue[i - 1]); + } + ReturnPath rPath = new ReturnPath(returnPathValue, nAcceptedPathValue, 1); + // + // Copy the PathId information to the ReturnPath object. + rPath.copyInstanceVariables(this); + rPath.estimatePath(); + return (rPath); + } + + /** + * Method for calculating the returns on a given rate path, via the definition + * for the instantaneous non-compounded return. u_i = \frac{S_i - + * S_{i-1}}{S_i} + * + * @return the return, as defined. + * @exception DemoException + * thrown if there is a problem with the calculation. + */ + + public ReturnPath getReturnNonCompounded() { + if (pathValue == null || nAcceptedPathValue == 0) { + System.out.println("The Rate Path has not been defined!-getReturnNonCompounded"); + } + double[] returnPathValue = new double[nAcceptedPathValue]; + returnPathValue[0] = 0.0; + for (int i = 1; i < nAcceptedPathValue; i++) { + returnPathValue[i] = (pathValue[i] - pathValue[i - 1]) / pathValue[i]; + } + ReturnPath rPath = + new ReturnPath(returnPathValue, nAcceptedPathValue, 2); + // + // Copy the PathId information to the ReturnPath object. + rPath.copyInstanceVariables(this); + rPath.estimatePath(); + return (rPath); + } + + // ------------------------------------------------------------------------ + // Private methods. + // ------------------------------------------------------------------------ + /** + * Method for reading in data file, in a given format. Namely: + * + *
+   * 881003,0.0000,14.1944,13.9444,14.0832,2200050,0
+   *       881004,0.0000,14.1668,14.0556,14.1668,1490850,0
+   *       ...
+   *       990108,35.8125,36.7500,35.5625,35.8125,4381200,0
+   *       990111,35.8125,35.8750,34.8750,35.1250,3920800,0
+   *       990112,34.8750,34.8750,34.0000,34.0625,3577500,0
+   * 
+ *

+ * Where the fields represent, one believes, the following: + *

    + *
  1. The date in 'YYMMDD' format
  2. + *
  3. Open
  4. + *
  5. High
  6. + *
  7. Low
  8. + *
  9. Last
  10. + *
  11. Volume
  12. + *
  13. Open Interest
  14. + *
+ * One will probably make use of the closing price, but this can be redefined + * via the class variable DATUMFIELD. Note that since the read in + * data are then used to compute the return, this would be a good place to + * trap for zero values in the data, which will cause all sorts of problems. + * + * @param dirName + * the directory in which to search for the data file. + * @param filename + * the data filename itself. + * @exception DemoException + * thrown if there was a problem with the data file. + */ + + private void readRatesFile(String filename) { + FileInputStream inputFile = new FileInputStream(filename); + String aLine; + // Proceed to read all the lines of data into a Vector object. + int iLine = 0, initNlines = 100, nLines = 0; + + Vector allLines = new Vector(initNlines); + + while ((aLine = inputFile.readLine()) != null) { + iLine++; + allLines.addElement(aLine); + } + nLines = iLine; + // Now create an array to store the rates data. + this.pathValue = new double[nLines]; + this.pathDate = new int[nLines]; + nAcceptedPathValue=0; + iLine=0; + + for (int i = 0; i < allLines.size(); i++) { + aLine = (String)allLines.elementAt(i); + String[] field = Utilities.splitString(",", aLine); + int aDate = Integer.parseInt("19" + field[0]); + // static double Double.parseDouble() method is a feature of JDK1.2! + double aPathValue = Double.valueOf(field[DATUMFIELD]).doubleValue(); + if ((aDate <= MINIMUMDATE) || (Math.abs(aPathValue) < EPSILON)) { + dbgPrintln("Skipped erroneous data in " + filename + " indexed by date=" + field[0] + "."); + } else { + pathDate[iLine] = aDate; + pathValue[iLine] = aPathValue; + iLine++; + } + } + // Record the actual number of accepted data points. + nAcceptedPathValue = iLine; + // + // Now to fill in the structures from the 'PathId' class. + set_name(filename); + set_startDate(pathDate[0]); + set_endDate(pathDate[nAcceptedPathValue-1]); + set_dTime((double)(1.0/365.0)); + + } +/* + private void readRatesFile(String dirName, String filename) { + java.io.File ratesFile = new File(dirName, filename); + java.io.BufferedReader in; + if( ! ratesFile.canRead() ) { + throw new DemoException("Cannot read the file "+ratesFile.toString()); + } + try{ + in = new BufferedReader(new FileReader(ratesFile)); + } catch( FileNotFoundException fnfex ) { + throw new DemoException(fnfex.toString()); + } + // + // Proceed to read all the lines of data into a Vector object. + int iLine=0, initNlines=100, nLines=0; + + String aLine; + java.util.Vector allLines = new Vector(initNlines); + try{ + while( (aLine = in.readLine()) != null ) { + iLine++; + // + // Note, I'm not entirely sure whether the object passed in is copied + // by value, or just its reference. + allLines.addElement(aLine); + } + } catch( IOException ioex ) { + throw new DemoException("Problem reading data from the file "+ioex.toString()); + } + nLines = iLine; + // + // Now create an array to store the rates data. + this.pathValue = new double[nLines]; + this.pathDate = new int[nLines]; + nAcceptedPathValue=0; + iLine=0; + for( java.util.Enumeration enum = allLines.elements(); enum.hasMoreElements(); ) { + aLine = (String) enum.nextElement(); + String[] field = Utilities.splitString(",",aLine); + int aDate = Integer.parseInt("19"+field[0]); + // + // static double Double.parseDouble() method is a feature of JDK1.2! + double aPathValue = Double.valueOf(field[DATUMFIELD]).doubleValue(); + if( (aDate <= MINIMUMDATE) || (Math.abs(aPathValue) < EPSILON) ) { + dbgPrintln("Skipped erroneous data in "+filename+" indexed by date="+field[0]+"."); + } else { + pathDate[iLine] = aDate; + pathValue[iLine] = aPathValue; + iLine++; + } + } + // + // Record the actual number of accepted data points. + nAcceptedPathValue = iLine; + // + // Now to fill in the structures from the 'PathId' class. + set_name(ratesFile.getName()); + set_startDate(pathDate[0]); + set_endDate(pathDate[nAcceptedPathValue-1]); + set_dTime((double)(1.0/365.0)); + } + */ +} diff --git a/Robust/src/Benchmarks/oooJava/monte/ReturnPath.java b/Robust/src/Benchmarks/oooJava/monte/ReturnPath.java new file mode 100644 index 00000000..7f13ee64 --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/ReturnPath.java @@ -0,0 +1,464 @@ +/************************************************************************** + * * + * Java Grande Forum Benchmark Suite - Version 2.0 * + * * + * produced by * + * * + * Java Grande Benchmarking Project * + * * + * at * + * * + * Edinburgh Parallel Computing Centre * + * * + * email: epcc-javagrande@epcc.ed.ac.uk * + * * + * Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * + * * + * This version copyright (c) The University of Edinburgh, 1999. * + * All rights reserved. * + * * + **************************************************************************/ + +/** + * Class for representing the returns of a given security. + * + *

+ * To do list: + *

    + *
  1. Define a window over which the mean drift and volatility are calculated.
  2. + *
  3. Hash table to reference {DATE}->{pathValue-index}.
  4. + *
+ * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class ReturnPath extends PathId { + + // ------------------------------------------------------------------------ + // Class variables. + // ------------------------------------------------------------------------ + /** + * A class variable, for setting whether to print debug messages or not. + */ + public static boolean DEBUG; + /** + * Class variable, for defining the prompt to print in front of debug + * messages. + */ + protected static String prompt; + /** + * Flag for indicating one of the return definitions, via: u_i = + * \ln{\frac{S_i}{S_{i-1}}} corresponding to the instantaneous compounded + * return. + */ + public static int COMPOUNDED; + + /** + * Flag for indicating one of the return definitions, via: u_i = \frac{S_i - + * S_{i-1}}{S_i} corresponding to the instantaneous non-compounded return. + */ + public static int NONCOMPOUNDED; + + // ------------------------------------------------------------------------ + // Instance variables. + // ------------------------------------------------------------------------ + /** + * An instance variable, for storing the return values. + */ + private double[] pathValue; + /** + * The number of accepted values in the rate path. + */ + private int nPathValue; + /** + * Integer flag for indicating how the return was calculated. + */ + private int returnDefinition; + /** + * Value for the expected return rate. + */ + private double expectedReturnRate; + /** + * Value for the volatility, calculated from the return data. + */ + private double volatility; + /** + * Value for the volatility-squared, a more natural quantity to use for many + * of the calculations. + */ + private double volatility2; + /** + * Value for the mean of this return. + */ + private double mean; + /** + * Value for the variance of this return. + */ + private double variance; + + // ------------------------------------------------------------------------ + // Constructors. + // ------------------------------------------------------------------------ + /** + * Default constructor. + */ + public ReturnPath() { + super(); + + DEBUG = false; + prompt = "ReturnPath> "; + COMPOUNDED = 1; + NONCOMPOUNDED = 2; + + nPathValue = 0; + + returnDefinition = 0; + +// expectedReturnRate = Double.NaN; + +// volatility = Double.NaN; + +// volatility2 = Double.NaN; + +// mean = Double.NaN; + +// variance = Double.NaN; + + set_prompt(prompt); + set_DEBUG(DEBUG); + } + + /** + * Another constructor. + * + * @param pathValue + * for creating a return path with a precomputed path value. Indexed + * from 1 to nPathArray-1. + * @param nPathValue + * the number of accepted data points in the array. + * @param returnDefinition + * to tell this class how the return path values were computed. + */ + public ReturnPath(double[] pathValue, int nPathValue, int returnDefinition) { + set_prompt(prompt); + set_DEBUG(DEBUG); + this.pathValue = pathValue; + this.nPathValue = nPathValue; + this.returnDefinition = returnDefinition; + } + + // ------------------------------------------------------------------------ + // Methods. + // ------------------------------------------------------------------------ + // ------------------------------------------------------------------------ + // Accessor methods for class ReturnPath. + // Generated by 'makeJavaAccessor.pl' script. HWY. 20th January 1999. + // ------------------------------------------------------------------------ + /** + * Accessor method for private instance variable pathValue. + * + * @return Value of instance variable pathValue. + * @exception DemoException + * thrown if instance variable pathValue is + * undefined. + */ + public double[] get_pathValue() { + if (this.pathValue == null) { + System.out.println("Variable pathValue is undefined!"); + System.exit(0); + } + return (this.pathValue); + } + + /** + * Set method for private instance variable pathValue. + * + * @param pathValue + * the value to set for the instance variable pathValue. + */ + public void set_pathValue(double[] pathValue) { + this.pathValue = pathValue; + } + + /** + * Accessor method for private instance variable nPathValue. + * + * @return Value of instance variable nPathValue. + * @exception DemoException + * thrown if instance variable nPathValue is + * undefined. + */ + public int get_nPathValue() { + if (this.nPathValue == 0) { + System.out.println("Variable nPathValue is undefined! - get_nPathValue"); + System.exit(0); + } + return (this.nPathValue); + } + + /** + * Set method for private instance variable nPathValue. + * + * @param nPathValue + * the value to set for the instance variable nPathValue + * . + */ + public void set_nPathValue(int nPathValue) { + this.nPathValue = nPathValue; + } + + /** + * Accessor method for private instance variable returnDefinition + * . + * + * @return Value of instance variable returnDefinition. + * @exception DemoException + * thrown if instance variable returnDefinition is + * undefined. + */ + public int get_returnDefinition() { + if (this.returnDefinition == 0){ + System.out.println("Variable returnDefinition is undefined!-get_returnDefinition"); + } + return (this.returnDefinition); + } + + /** + * Set method for private instance variable returnDefinition. + * + * @param returnDefinition + * the value to set for the instance variable + * returnDefinition. + */ + public void set_returnDefinition(int returnDefinition) { + this.returnDefinition = returnDefinition; + } + + /** + * Accessor method for private instance variable + * expectedReturnRate. + * + * @return Value of instance variable expectedReturnRate. + * @exception DemoException + * thrown if instance variable expectedReturnRate is + * undefined. + */ + public double get_expectedReturnRate() { +// if (this.expectedReturnRate == Double.NaN){ +// System.out.println("Variable expectedReturnRate is undefined!-get_expectedReturnRate"); +// System.exit(0); +// } + return (this.expectedReturnRate); + } + + /** + * Set method for private instance variable expectedReturnRate. + * + * @param expectedReturnRate + * the value to set for the instance variable + * expectedReturnRate. + */ + public void set_expectedReturnRate(double expectedReturnRate) { + this.expectedReturnRate = expectedReturnRate; + } + + /** + * Accessor method for private instance variable volatility. + * + * @return Value of instance variable volatility. + * @exception DemoException + * thrown if instance variable volatility is + * undefined. + */ + public double get_volatility() { +// if (this.volatility == Double.NaN){ +// System.out.println("Variable volatility is undefined!-get_volatility"); +// System.exit(0); +// } + return (this.volatility); + } + + /** + * Set method for private instance variable volatility. + * + * @param volatility + * the value to set for the instance variable volatility + * . + */ + public void set_volatility(double volatility) { + this.volatility = volatility; + } + + /** + * Accessor method for private instance variable volatility2. + * + * @return Value of instance variable volatility2. + * @exception DemoException + * thrown if instance variable volatility2 is + * undefined. + */ + public double get_volatility2(){ +// if (this.volatility2 == Double.NaN){ +// System.out.println("Variable volatility2 is undefined!"); +// System.exit(0); +// } + return (this.volatility2); + } + + /** + * Set method for private instance variable volatility2. + * + * @param volatility2 + * the value to set for the instance variable + * volatility2. + */ + public void set_volatility2(double volatility2) { + this.volatility2 = volatility2; + } + + /** + * Accessor method for private instance variable mean. + * + * @return Value of instance variable mean. + * @exception DemoException + * thrown if instance variable mean is undefined. + */ + public double get_mean() { +// if (this.mean == Double.NaN){ +// System.out.println("Variable mean is undefined!-get_mean"); +// System.exit(0); +// } + return (this.mean); + } + + /** + * Set method for private instance variable mean. + * + * @param mean + * the value to set for the instance variable mean. + */ + public void set_mean(double mean) { + this.mean = mean; + } + + /** + * Accessor method for private instance variable variance. + * + * @return Value of instance variable variance. + * @exception DemoException + * thrown if instance variable variance is + * undefined. + */ + public double get_variance() { +// if (this.variance == Double.NaN){ +// System.out.println("Variable variance is undefined!-get_variance"); +// System.exit(0); +// } + return (this.variance); + } + + /** + * Set method for private instance variable variance. + * + * @param variance + * the value to set for the instance variable variance. + */ + public void set_variance(double variance) { + this.variance = variance; + } + + // ------------------------------------------------------------------------ + /** + * Method to calculate the expected return rate from the return data, using + * the relationship: \mu = \frac{\bar{u}}{\Delta t} + \frac{\sigma^2}{2} + * + * @exception DemoException + * thrown one tries to obtain an undefined variable. + */ + public void computeExpectedReturnRate(){ + this.expectedReturnRate = mean / get_dTime() + 0.5 * volatility2; + } + + /** + * Method to calculate volatility and volatility2 + * from the return path data, using the relationship, based on the precomputed + * variance. \sigma^2 = s^2\Delta t + * + * @exception DemoException + * thrown if one of the quantites in the computation are + * undefined. + */ + public void computeVolatility(){ +// if (this.variance == Double.NaN){ +// System.out.println("Variable variance is not defined!-computeVolatility"); +// System.exit(0); +// } + this.volatility2 = variance / get_dTime(); + this.volatility = Math.sqrt(volatility2); + } + + /** + * Method to calculate the mean of the return, for use by other calculations. + * + * @exception DemoException + * thrown if nPathValue is undefined. + */ + public void computeMean() { + if (this.nPathValue == 0){ + System.out.println("Variable nPathValue is undefined!-computeMean"); + System.exit(0); + } + this.mean = 0.0; + for (int i = 1; i < nPathValue; i++) { + mean += pathValue[i]; + } + this.mean /= ((double) (nPathValue - 1.0)); + } + + /** + * Method to calculate the variance of the retrun, for use by other + * calculations. + * + * @exception DemoException + * thrown if the mean or nPathValue + * values are undefined. + */ + public void computeVariance() { +// if (this.mean == Double.NaN || this.nPathValue == 0){ +// System.out.println("Variable mean and/or nPathValue are undefined!"); +// System.exit(0); +// } + this.variance = 0.0; + for (int i = 1; i < nPathValue; i++) { + variance += (pathValue[i] - mean) * (pathValue[i] - mean); + } + this.variance /= ((double) (nPathValue - 1.0)); + } + + /** + * A single method for invoking all the necessary methods which estimate the + * parameters. + * + * @exception DemoException + * thrown if there is a problem reading any variables. + */ + public void estimatePath() { + computeMean(); + computeVariance(); + computeExpectedReturnRate(); + computeVolatility(); + } + + /** + * Dumps the contents of the fields, to standard-out, for debugging. + */ + public void dbgDumpFields() { + super.dbgDumpFields(); + // dbgPrintln("nPathValue=" +this.nPathValue); + // dbgPrintln("expectedReturnRate="+this.expectedReturnRate); + // dbgPrintln("volatility=" +this.volatility); + // dbgPrintln("volatility2=" +this.volatility2); + // dbgPrintln("mean=" +this.mean); + // dbgPrintln("variance=" +this.variance); + } +} diff --git a/Robust/src/Benchmarks/oooJava/monte/ToInitAllTasks.java b/Robust/src/Benchmarks/oooJava/monte/ToInitAllTasks.java new file mode 100644 index 00000000..6658bc1a --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/ToInitAllTasks.java @@ -0,0 +1,318 @@ +/************************************************************************** + * * + * Java Grande Forum Benchmark Suite - Version 2.0 * + * * + * produced by * + * * + * Java Grande Benchmarking Project * + * * + * at * + * * + * Edinburgh Parallel Computing Centre * + * * + * email: epcc-javagrande@epcc.ed.ac.uk * + * * + * Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * + * * + * This version copyright (c) The University of Edinburgh, 1999. * + * All rights reserved. * + * * + **************************************************************************/ + +/** + * Class for defining the initialisation data for all tasks. + * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class ToInitAllTasks { + private String header; + private String name; + private int startDate; + private int endDate; + private double dTime; + private int returnDefinition; + private double expectedReturnRate; + private double volatility; + private int nTimeSteps; + private double pathStartValue; + + /** + * Constructor, for initialisation data which are common to all computation + * tasks. + * + * @param header + * Simple header string. + * @param name + * The name of the security which this Monte Carlo path should + * represent. + * @param startDate + * The date when the path starts, in 'YYYYMMDD' format. + * @param endDate + * The date when the path ends, in 'YYYYMMDD' format. + * @param dTime + * The interval in the data between successive data points in the + * generated path. + * @param returnDefinition + * How the statistic variables were defined, according to the + * definitions in ReturnPath's two class variables + * COMPOUNDED and NONCOMPOUNDED. + * @param expectedReturnRate + * The measured expected return rate for which to generate. + * @param volatility + * The measured volatility for which to generate. + * @param nTimeSteps + * The number of time steps for which to generate. + * @param pathStartValue + * The stock price value to use at the start of each Monte Carlo + * simulation path. + */ + public ToInitAllTasks(String header, String name, int startDate, int endDate, double dTime, + int returnDefinition, double expectedReturnRate, double volatility, double pathStartValue) { + this.header = header; + this.name = name; + this.startDate = startDate; + this.endDate = endDate; + this.dTime = dTime; + this.returnDefinition = returnDefinition; + this.expectedReturnRate = expectedReturnRate; + this.volatility = volatility; + this.nTimeSteps = nTimeSteps; + this.pathStartValue = pathStartValue; + } + + /** + * Another constructor, slightly easier to use by having slightly fewer + * arguments. Makes use of the "ReturnPath" object to accomplish this. + * + * @param obj + * Object used to define the instance variables which should be + * carried over to this object. + * @param nTimeSteps + * The number of time steps which the Monte Carlo generator should + * make. + * @param pathStartValue + * The stock price value to use at the start of each Monte Carlo + * simulation path. + * @exception DemoException + * thrown if there is a problem accessing the instance variables + * from the target objetct. + */ + public ToInitAllTasks(ReturnPath obj, int nTimeSteps, double pathStartValue) { + // + // Instance variables defined in the PathId object. + this.name = obj.get_name(); + this.startDate = obj.get_startDate(); + this.endDate = obj.get_endDate(); + this.dTime = obj.get_dTime(); + // + // Instance variables defined in ReturnPath object. + this.returnDefinition = obj.get_returnDefinition(); + this.expectedReturnRate = obj.get_expectedReturnRate(); + this.volatility = obj.get_volatility(); + this.nTimeSteps = nTimeSteps; + this.pathStartValue = pathStartValue; + } + + // ------------------------------------------------------------------------ + // Accessor methods for class ToInitAllTasks. + // Generated by 'makeJavaAccessor.pl' script. HWY. 20th January 1999. + // ------------------------------------------------------------------------ + /** + * Accessor method for private instance variable header. + * + * @return Value of instance variable header. + */ + public String get_header() { + return (this.header); + } + + /** + * Set method for private instance variable header. + * + * @param header + * the value to set for the instance variable header. + */ + public void set_header(String header) { + this.header = header; + } + + /** + * Accessor method for private instance variable name. + * + * @return Value of instance variable name. + */ + public String get_name() { + return (this.name); + } + + /** + * Set method for private instance variable name. + * + * @param name + * the value to set for the instance variable name. + */ + public void set_name(String name) { + this.name = name; + } + + /** + * Accessor method for private instance variable startDate. + * + * @return Value of instance variable startDate. + */ + public int get_startDate() { + return (this.startDate); + } + + /** + * Set method for private instance variable startDate. + * + * @param startDate + * the value to set for the instance variable startDate. + */ + public void set_startDate(int startDate) { + this.startDate = startDate; + } + + /** + * Accessor method for private instance variable endDate. + * + * @return Value of instance variable endDate. + */ + public int get_endDate() { + return (this.endDate); + } + + /** + * Set method for private instance variable endDate. + * + * @param endDate + * the value to set for the instance variable endDate. + */ + public void set_endDate(int endDate) { + this.endDate = endDate; + } + + /** + * Accessor method for private instance variable dTime. + * + * @return Value of instance variable dTime. + */ + public double get_dTime() { + return (this.dTime); + } + + /** + * Set method for private instance variable dTime. + * + * @param dTime + * the value to set for the instance variable dTime. + */ + public void set_dTime(double dTime) { + this.dTime = dTime; + } + + /** + * Accessor method for private instance variable returnDefinition + * . + * + * @return Value of instance variable returnDefinition. + */ + public int get_returnDefinition() { + return (this.returnDefinition); + } + + /** + * Set method for private instance variable returnDefinition. + * + * @param returnDefinition + * the value to set for the instance variable + * returnDefinition. + */ + public void set_returnDefinition(int returnDefinition) { + this.returnDefinition = returnDefinition; + } + + /** + * Accessor method for private instance variable + * expectedReturnRate. + * + * @return Value of instance variable expectedReturnRate. + */ + public double get_expectedReturnRate() { + return (this.expectedReturnRate); + } + + /** + * Set method for private instance variable expectedReturnRate. + * + * @param expectedReturnRate + * the value to set for the instance variable + * expectedReturnRate. + */ + public void set_expectedReturnRate(double expectedReturnRate) { + this.expectedReturnRate = expectedReturnRate; + } + + /** + * Accessor method for private instance variable volatility. + * + * @return Value of instance variable volatility. + */ + public double get_volatility() { + return (this.volatility); + } + + /** + * Set method for private instance variable volatility. + * + * @param volatility + * the value to set for the instance variable volatility + * . + */ + public void set_volatility(double volatility) { + this.volatility = volatility; + } + + /** + * Accessor method for private instance variable nTimeSteps. + * + * @return Value of instance variable nTimeSteps. + */ + public int get_nTimeSteps() { + return (this.nTimeSteps); + } + + /** + * Set method for private instance variable nTimeSteps. + * + * @param nTimeSteps + * the value to set for the instance variable nTimeSteps + * . + */ + public void set_nTimeSteps(int nTimeSteps) { + this.nTimeSteps = nTimeSteps; + } + + /** + * Accessor method for private instance variable pathStartValue. + * + * @return Value of instance variable pathStartValue. + */ + public double get_pathStartValue() { + return (this.pathStartValue); + } + + /** + * Set method for private instance variable pathStartValue. + * + * @param pathStartValue + * the value to set for the instance variable + * pathStartValue. + */ + public void set_pathStartValue(double pathStartValue) { + this.pathStartValue = pathStartValue; + } + // ------------------------------------------------------------------------ +} diff --git a/Robust/src/Benchmarks/oooJava/monte/ToResult.java b/Robust/src/Benchmarks/oooJava/monte/ToResult.java new file mode 100644 index 00000000..4dc207f5 --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/ToResult.java @@ -0,0 +1,188 @@ +/************************************************************************** + * * + * Java Grande Forum Benchmark Suite - Version 2.0 * + * * + * produced by * + * * + * Java Grande Benchmarking Project * + * * + * at * + * * + * Edinburgh Parallel Computing Centre * + * * + * email: epcc-javagrande@epcc.ed.ac.uk * + * * + * Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * + * * + * This version copyright (c) The University of Edinburgh, 1999. * + * All rights reserved. * + * * + **************************************************************************/ + +/** + * Class for defining the results of a task. Currently, this is simply the Monte + * Carlo generate rate path. + * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class ToResult { + private String header; + private double expectedReturnRate; + private double volatility; + private double volatility2; + private double finalStockPrice; + private double[] pathValue; + + /** + * Constructor, for the results from a computation. + * + * @param header + * Simple header string. + * @param pathValue + * Data computed by the Monte Carlo generator. + */ + public ToResult(String header, double expectedReturnRate, double volatility, double volatility2, + double finalStockPrice, double[] pathValue) { + + this.header = header; + this.expectedReturnRate = expectedReturnRate; + this.volatility = volatility; + this.volatility2 = volatility2; + this.finalStockPrice = finalStockPrice; + this.pathValue = pathValue; + } + + /** + * Gives a simple string representation of this object. + * + * @return String representation of this object. + */ + public String toString() { + return (header); + } + + // ------------------------------------------------------------------------ + // Accessor methods for class ToResult. + // Generated by 'makeJavaAccessor.pl' script. HWY. 20th January 1999. + // ------------------------------------------------------------------------ + /** + * Accessor method for private instance variable header. + * + * @return Value of instance variable header. + */ + public String get_header() { + return (this.header); + } + + /** + * Set method for private instance variable header. + * + * @param header + * the value to set for the instance variable header. + */ + public void set_header(String header) { + this.header = header; + } + + /** + * Accessor method for private instance variable + * expectedReturnRate. + * + * @return Value of instance variable expectedReturnRate. + */ + public double get_expectedReturnRate() { + return (this.expectedReturnRate); + } + + /** + * Set method for private instance variable expectedReturnRate. + * + * @param expectedReturnRate + * the value to set for the instance variable + * expectedReturnRate. + */ + public void set_expectedReturnRate(double expectedReturnRate) { + this.expectedReturnRate = expectedReturnRate; + } + + /** + * Accessor method for private instance variable volatility. + * + * @return Value of instance variable volatility. + */ + public double get_volatility() { + return (this.volatility); + } + + /** + * Set method for private instance variable volatility. + * + * @param volatility + * the value to set for the instance variable volatility + * . + */ + public void set_volatility(double volatility) { + this.volatility = volatility; + } + + /** + * Accessor method for private instance variable volatility2. + * + * @return Value of instance variable volatility2. + */ + public double get_volatility2() { + return (this.volatility2); + } + + /** + * Set method for private instance variable volatility2. + * + * @param volatility2 + * the value to set for the instance variable + * volatility2. + */ + public void set_volatility2(double volatility2) { + this.volatility2 = volatility2; + } + + /** + * Accessor method for private instance variable finalStockPrice. + * + * @return Value of instance variable finalStockPrice. + */ + public double get_finalStockPrice() { + return (this.finalStockPrice); + } + + /** + * Set method for private instance variable finalStockPrice. + * + * @param finalStockPrice + * the value to set for the instance variable + * finalStockPrice. + */ + public void set_finalStockPrice(double finalStockPrice) { + this.finalStockPrice = finalStockPrice; + } + + /** + * Accessor method for private instance variable pathValue. + * + * @return Value of instance variable pathValue. + */ + public double[] get_pathValue() { + return (this.pathValue); + } + + /** + * Set method for private instance variable pathValue. + * + * @param pathValue + * the value to set for the instance variable pathValue. + */ + public void set_pathValue(double[] pathValue) { + this.pathValue = pathValue; + } + // ------------------------------------------------------------------------ +} diff --git a/Robust/src/Benchmarks/oooJava/monte/ToTask.java b/Robust/src/Benchmarks/oooJava/monte/ToTask.java new file mode 100644 index 00000000..a190051c --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/ToTask.java @@ -0,0 +1,79 @@ +/************************************************************************** +* * +* Java Grande Forum Benchmark Suite - Version 2.0 * +* * +* produced by * +* * +* Java Grande Benchmarking Project * +* * +* at * +* * +* Edinburgh Parallel Computing Centre * +* * +* email: epcc-javagrande@epcc.ed.ac.uk * +* * +* Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * +* * +* This version copyright (c) The University of Edinburgh, 1999. * +* All rights reserved. * +* * +**************************************************************************/ + + +/** + * Class for defining a task, for the applications demonstrator. + * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class ToTask { + + private String header; + private long randomSeed; + + public ToTask(){ + + } + + public ToTask(String header, long randomSeed) { + this.header = header; + this.randomSeed = randomSeed; + } + //------------------------------------------------------------------------ + // Accessor methods for class ToTask. + // Generated by 'makeJavaAccessor.pl' script. HWY. 20th January 1999. + //------------------------------------------------------------------------ + /** + * Accessor method for private instance variable header. + * + * @return Value of instance variable header. + */ + public String get_header() { + return(this.header); + } + /** + * Set method for private instance variable header. + * + * @param header the value to set for the instance variable header. + */ + public void set_header(String header) { + this.header = header; + } + /** + * Accessor method for private instance variable randomSeed. + * + * @return Value of instance variable randomSeed. + */ + public long get_randomSeed() { + return(this.randomSeed); + } + /** + * Set method for private instance variable randomSeed. + * + * @param randomSeed the value to set for the instance variable randomSeed. + */ + public void set_randomSeed(long randomSeed) { + this.randomSeed = randomSeed; + } + //------------------------------------------------------------------------ +} diff --git a/Robust/src/Benchmarks/oooJava/monte/Universal.java b/Robust/src/Benchmarks/oooJava/monte/Universal.java new file mode 100644 index 00000000..7b328a02 --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/Universal.java @@ -0,0 +1,158 @@ +/************************************************************************** +* * +* Java Grande Forum Benchmark Suite - Version 2.0 * +* * +* produced by * +* * +* Java Grande Benchmarking Project * +* * +* at * +* * +* Edinburgh Parallel Computing Centre * +* * +* email: epcc-javagrande@epcc.ed.ac.uk * +* * +* Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * +* * +* This version copyright (c) The University of Edinburgh, 1999. * +* All rights reserved. * +* * +**************************************************************************/ + + +/** + * Base class for all non-trivial classes. + * Used as a centralised repository for all the functionalities which + * all classes written by me, which will be of use. + * + * @author H W Yau + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public class Universal { + //------------------------------------------------------------------------ + // Class variables. + //------------------------------------------------------------------------ + /** + * Class variable, for whether to print debug messages. This one is + * unique to this class, and can hence be set in the one place. + */ + private static boolean UNIVERSAL_DEBUG; + //------------------------------------------------------------------------ + // Instance variables. + //------------------------------------------------------------------------ + /** + * Variable, for whether to print debug messages. This one can + * be set by subsequent child classes. + */ + private boolean DEBUG; + /** + * The prompt to write before any debug messages. + */ + private String prompt; + + //------------------------------------------------------------------------ + // Constructors. + //------------------------------------------------------------------------ + /** + * Default constructor. + */ + public Universal() { + this.DEBUG=true; + this.UNIVERSAL_DEBUG=true; + this.prompt="Universal> "; + } + //------------------------------------------------------------------------ + // Methods. + //------------------------------------------------------------------------ + //------------------------------------------------------------------------ + // Accessor methods for class AppDemo/Universal. + // Generated by 'makeJavaAccessor.pl' script. HWY. 20th January 1999. + //------------------------------------------------------------------------ + /** + * Accessor method for private instance variable DEBUG. + * + * @return Value of instance variable DEBUG. + */ + public boolean get_DEBUG() { + return(this.DEBUG); + } + /** + * Set method for private instance variable DEBUG. + * + * @param DEBUG the value to set for the instance variable DEBUG. + */ + public void set_DEBUG(boolean DEBUG) { + this.DEBUG = DEBUG; + } + /** + * Accessor method for private instance variable UNIVERSAL_DEBUG. + * + * @return Value of instance variable UNIVERSAL_DEBUG. + */ + public boolean get_UNIVERSAL_DEBUG() { + return(this.UNIVERSAL_DEBUG); + } + /** + * Set method for private instance variable DEBUG. + * + * @param UNIVERSAL_DEBUG the value to set for the instance + * variable UNIVERSAL_DEBUG. + */ + public void set_UNIVERSAL_DEBUG(boolean UNIVERSAL_DEBUG) { + this.UNIVERSAL_DEBUG = UNIVERSAL_DEBUG; + } + /** + * Accessor method for private instance variable prompt. + * + * @return Value of instance variable prompt. + */ + public String get_prompt() { + return(this.prompt); + } + /** + * Set method for private instance variable prompt. + * + * @param prompt the value to set for the instance variable prompt. + */ + public void set_prompt(String prompt) { + this.prompt = prompt; + } + //------------------------------------------------------------------------ + /** + * Used to print debug messages. + * + * @param s The debug message to print out, to PrintStream "out". + */ + public void dbgPrintln(String s) { + if( DEBUG || UNIVERSAL_DEBUG ) { + System.out.println("DBG "+prompt+s); + } + } + /** + * Used to print debug messages. + * + * @param s The debug message to print out, to PrintStream "out". + */ + public void dbgPrint(String s) { + if( DEBUG || UNIVERSAL_DEBUG ) { + System.out.print("DBG "+prompt+s); + } + } + /** + * Used to print error messages. + * + * @param s The error message to print out, to PrintStream "err". + */ + public void errPrintln(String s) { + System.out.println(prompt+s); + } + /** + * Used to print error messages. + * + * @param s The error message to print out, to PrintStream "err". + */ + public void errPrint(String s) { + System.out.print(prompt+s); + } +} + diff --git a/Robust/src/Benchmarks/oooJava/monte/Utilities.java b/Robust/src/Benchmarks/oooJava/monte/Utilities.java new file mode 100644 index 00000000..e210a13e --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/Utilities.java @@ -0,0 +1,147 @@ +/************************************************************************** +* * +* Java Grande Forum Benchmark Suite - Version 2.0 * +* * +* produced by * +* * +* Java Grande Benchmarking Project * +* * +* at * +* * +* Edinburgh Parallel Computing Centre * +* * +* email: epcc-javagrande@epcc.ed.ac.uk * +* * +* Original version of this code by Hon Yau (hwyau@epcc.ed.ac.uk) * +* * +* This version copyright (c) The University of Edinburgh, 1999. * +* All rights reserved. * +* * +**************************************************************************/ + + +/** + * Utility methods, all static. + * + * @author H W Yau. + * @version $Revision: 1.1 $ $Date: 2010/07/23 03:44:00 $ + */ +public final class Utilities { + public static boolean DEBUG; + private static String className; + + public Utilities(){ + DEBUG=false; + String className="Utilities"; + } + + /** + * Static method which behaves like the Unix `which' command. OS + * specific dependencies are handled by the Java.lang.System + * properties. + * + * @param executable The executable to search for. + * @param pathEnv The list of paths in which to search, in the style of the + * OS's PATH environment variable. + * @return The full pathname of where the executable lives, + * or failing that the error message " not found.". + */ +// public static String which(String executable, String pathEnv) { +// String executablePath; +// String paths[]; +// +// paths=splitString(System.getProperty("path.separator"),pathEnv); +// for(int i=0; i 0 ) { +// java.io.File pathFile=new java.io.File(paths[i]); +// if( pathFile.isDirectory() ) { +// String filesInDirectory[]; +// filesInDirectory=pathFile.list(); +// for(int j=0; j -1 ) { + nArgs++; + fromIndex=foundIndex+1; + } + myArgs = new String[nArgs+1]; + nArgs=0; + fromIndex=0; + while( (foundIndex=arg.indexOf(splitChar,fromIndex)) > -1 ) { + myArgs[nArgs]=arg.substring(fromIndex,foundIndex); + nArgs++; + fromIndex=foundIndex+1; + } + myArgs[nArgs]=arg.substring(fromIndex); + return myArgs; + } +} + diff --git a/Robust/src/Benchmarks/oooJava/monte/hitData b/Robust/src/Benchmarks/oooJava/monte/hitData new file mode 100644 index 00000000..a7b5e907 --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/hitData @@ -0,0 +1,2597 @@ +881003,0.0000,121.7500,120.1250,121.7500,24400,0 +881004,0.0000,122.5000,122.0000,122.5000,7000,0 +881005,0.0000,118.0000,116.5000,117.8750,48700,0 +881006,0.0000,116.2500,115.0000,115.2500,24800,0 +881007,0.0000,118.7500,117.2500,118.5000,20400,0 +881010,0.0000,120.3750,119.0000,119.1250,15900,0 +881011,0.0000,118.1250,118.0000,118.1250,12200,0 +881012,0.0000,115.2500,113.0000,113.0000,13300,0 +881013,0.0000,114.7500,113.0000,114.7500,17600,0 +881014,0.0000,117.2500,115.5000,115.5000,20200,0 +881017,0.0000,117.2500,116.2500,116.7500,15900,0 +881018,0.0000,118.1250,117.2500,118.1250,17400,0 +881019,0.0000,119.5000,118.1250,118.2500,16000,0 +881020,0.0000,119.0000,117.7500,119.0000,30000,0 +881021,0.0000,118.2500,117.7500,117.8750,4800,0 +881024,0.0000,114.7500,114.0000,114.3750,28800,0 +881025,0.0000,114.2500,113.1250,113.2500,13600,0 +881026,0.0000,115.5000,114.7500,114.7500,18000,0 +881027,0.0000,116.0000,115.2500,115.2500,8400,0 +881028,0.0000,116.0000,115.0000,115.7500,7900,0 +881031,0.0000,119.2500,118.6250,119.0000,27400,0 +881101,0.0000,119.1250,118.8750,119.0000,9800,0 +881102,0.0000,116.0000,115.7500,116.0000,2400,0 +881103,0.0000,116.2500,116.0000,116.1250,1400,0 +881104,0.0000,114.7500,114.0000,114.3750,16900,0 +881107,0.0000,113.3750,112.5000,112.7500,10300,0 +881108,0.0000,117.5000,117.1250,117.2500,36400,0 +881109,0.0000,117.0000,116.0000,116.2500,14100,0 +881110,0.0000,116.2500,115.7500,116.2500,14100,0 +881111,0.0000,117.5000,116.7500,116.7500,47000,0 +881114,0.0000,116.7500,116.5000,116.6250,2700,0 +881115,0.0000,117.8750,117.0000,117.8750,76100,0 +881116,0.0000,123.0000,122.2500,122.2500,48000,0 +881117,0.0000,128.0000,125.5000,128.0000,163700,0 +881118,0.0000,125.2500,124.7500,124.7500,20500,0 +881121,0.0000,123.2500,122.6250,122.7500,18200,0 +881122,0.0000,122.6250,122.5000,122.6250,12200,0 +881123,0.0000,123.0000,122.5000,123.0000,4700,0 +881125,0.0000,126.2500,125.7500,126.0000,14800,0 +881128,0.0000,126.2500,125.7500,126.0000,14800,0 +881129,0.0000,133.5000,132.0000,133.0000,55600,0 +881130,0.0000,132.0000,131.2500,132.0000,17500,0 +881201,0.0000,129.2500,128.5000,129.0000,13600,0 +881202,0.0000,128.6250,128.0000,128.0000,7800,0 +881205,0.0000,130.0000,128.1250,130.0000,17300,0 +881206,0.0000,129.7500,128.7500,128.7500,25800,0 +881207,0.0000,130.5000,130.0000,130.3750,17400,0 +881208,0.0000,130.5000,130.1250,130.2500,3100,0 +881209,0.0000,130.5000,130.2500,130.5000,3000,0 +881212,0.0000,128.2500,128.0000,128.0000,7600,0 +881213,0.0000,128.1250,127.2500,127.2500,10900,0 +881214,0.0000,131.5000,130.0000,131.3750,53200,0 +881215,0.0000,129.5000,129.0000,129.2500,18100,0 +881216,0.0000,131.0000,129.0000,130.5000,26800,0 +881219,0.0000,132.5000,131.0000,132.5000,49300,0 +881220,0.0000,131.7500,130.2500,130.2500,39600,0 +881221,0.0000,130.5000,130.0000,130.1250,5800,0 +881222,0.0000,129.5000,129.2500,129.3750,5800,0 +881223,0.0000,128.0000,127.5000,127.8750,9400,0 +881227,0.0000,127.8750,127.5000,127.5000,2500,0 +881228,0.0000,127.0000,126.5000,127.0000,11100,0 +881229,0.0000,128.2500,127.1250,128.2500,9300,0 +881230,0.0000,129.2500,128.1250,129.0000,5000,0 +890103,0.0000,129.2500,128.7500,128.8750,6700,0 +890104,0.0000,128.2500,127.5000,128.2500,15300,0 +890105,0.0000,127.6250,126.5000,126.5000,14800,0 +890106,0.0000,126.0000,125.3750,125.5000,7100,0 +890109,0.0000,129.3750,128.1250,129.2500,12200,0 +890110,0.0000,132.7500,132.0000,132.0000,14200,0 +890111,0.0000,133.5000,132.5000,133.5000,65000,0 +890112,0.0000,132.0000,131.3750,132.0000,36900,0 +890113,0.0000,133.7500,133.0000,133.1250,27600,0 +890116,0.0000,133.3750,133.2500,133.2500,24000,0 +890117,0.0000,133.0000,132.3750,132.7500,10300,0 +890118,0.0000,132.2500,131.2500,131.7500,23500,0 +890119,0.0000,127.6250,126.6250,127.2500,62200,0 +890120,0.0000,128.0000,126.8750,127.5000,24200,0 +890123,0.0000,127.2500,126.7500,127.2500,14100,0 +890124,0.0000,129.0000,127.1250,129.0000,14000,0 +890125,0.0000,126.8750,126.0000,126.8750,14400,0 +890126,0.0000,126.0000,125.5000,126.0000,19800,0 +890127,0.0000,127.8750,127.0000,127.2500,30400,0 +890130,0.0000,127.2500,126.8750,127.0000,3000,0 +890131,0.0000,126.5000,125.6250,125.8750,3200,0 +890201,0.0000,126.1250,125.7500,125.7500,5500,0 +890202,0.0000,125.5000,125.1250,125.5000,10600,0 +890203,0.0000,126.5000,126.2500,126.3750,9900,0 +890206,0.0000,125.0000,124.7500,124.8750,8100,0 +890207,0.0000,124.7500,124.0000,124.5000,28400,0 +890208,0.0000,125.3750,125.0000,125.2500,8400,0 +890209,0.0000,127.3750,126.7500,127.0000,37200,0 +890210,0.0000,126.7500,126.0000,126.0000,5700,0 +890213,0.0000,123.7500,123.0000,123.0000,7900,0 +890214,0.0000,125.6250,125.0000,125.6250,24600,0 +890215,0.0000,126.2500,126.0000,126.1250,15200,0 +890216,0.0000,123.2500,122.3750,122.5000,13200,0 +890217,0.0000,123.5000,122.5000,123.5000,6300,0 +890221,0.0000,123.2500,122.1250,122.1250,9400,0 +890222,0.0000,128.5000,127.0000,127.2500,52200,0 +890223,0.0000,129.5000,129.0000,129.5000,26300,0 +890224,0.0000,129.2500,128.7500,128.7500,5600,0 +890227,0.0000,129.1250,128.7500,129.0000,18200,0 +890228,0.0000,129.7500,129.0000,129.7500,6400,0 +890301,0.0000,130.7500,129.5000,129.7500,14100,0 +890302,0.0000,131.0000,129.7500,131.0000,17400,0 +890303,0.0000,129.0000,128.7500,128.7500,2100,0 +890306,0.0000,125.7500,124.5000,125.2500,23800,0 +890307,0.0000,125.7500,125.0000,125.7500,12400,0 +890308,0.0000,124.7500,124.6250,124.7500,8200,0 +890309,0.0000,122.2500,121.6250,122.2500,20100,0 +890310,0.0000,122.1250,121.7500,122.1250,17900,0 +890313,0.0000,122.0000,121.2500,121.2500,12400,0 +890314,0.0000,121.5000,121.3750,121.5000,17800,0 +890315,0.0000,123.6250,123.0000,123.6250,13200,0 +890316,0.0000,123.5000,123.0000,123.0000,8800,0 +890317,0.0000,121.2500,120.2500,120.3750,7000,0 +890320,0.0000,117.6250,117.0000,117.5000,15000,0 +890321,0.0000,119.1250,118.2500,119.1250,9100,0 +890322,0.0000,116.5000,115.0000,116.2500,25400,0 +890323,0.0000,116.8750,116.0000,116.3750,7300,0 +890327,0.0000,115.5000,114.8750,114.8750,15000,0 +890328,0.0000,119.2500,118.7500,119.2500,15800,0 +890329,0.0000,118.0000,117.2500,117.2500,9600,0 +890330,0.0000,116.2500,115.1250,115.7500,15800,0 +890331,0.0000,115.6250,114.7500,115.5000,9600,0 +890403,0.0000,117.0000,115.7500,117.0000,11800,0 +890404,0.0000,118.5000,117.5000,118.2500,14900,0 +890405,0.0000,119.2500,119.1250,119.2500,8900,0 +890406,0.0000,116.5000,116.0000,116.0000,6900,0 +890407,0.0000,117.6250,117.0000,117.6250,5100,0 +890410,0.0000,116.0000,115.7500,115.8750,17700,0 +890411,0.0000,117.2500,116.5000,117.1250,7900,0 +890412,0.0000,119.2500,118.5000,118.7500,15000,0 +890413,0.0000,117.3750,117.2500,117.3750,5400,0 +890414,0.0000,118.2500,117.8750,118.2500,5000,0 +890417,0.0000,117.0000,116.7500,116.7500,9100,0 +890418,0.0000,117.8750,116.0000,117.8750,15000,0 +890419,0.0000,115.7500,115.3750,115.5000,36900,0 +890420,0.0000,116.0000,115.0000,115.6250,51400,0 +890421,0.0000,115.7500,115.5000,115.7500,7900,0 +890424,0.0000,115.2500,115.0000,115.0000,8700,0 +890425,0.0000,115.7500,115.2500,115.3750,5800,0 +890426,0.0000,115.6250,115.0000,115.1250,9200,0 +890427,0.0000,115.3750,115.1250,115.2500,11900,0 +890428,0.0000,116.1250,115.7500,115.7500,15500,0 +890501,0.0000,116.0000,115.7500,116.0000,9900,0 +890502,0.0000,120.0000,119.5000,119.5000,26600,0 +890503,0.0000,119.7500,119.5000,119.6250,16400,0 +890504,0.0000,119.7500,119.5000,119.6250,7600,0 +890505,0.0000,120.2500,119.5000,120.0000,19600,0 +890508,0.0000,120.2500,119.7500,119.7500,5500,0 +890509,0.0000,123.2500,122.7500,123.2500,34200,0 +890510,0.0000,122.8750,122.5000,122.5000,1000,0 +890511,0.0000,121.5000,121.2500,121.5000,1800,0 +890512,0.0000,120.7500,120.0000,120.7500,12900,0 +890515,0.0000,119.0000,118.0000,119.0000,16500,0 +890516,0.0000,120.8750,120.5000,120.6250,7600,0 +890517,0.0000,120.1250,119.8750,119.8750,4200,0 +890518,0.0000,119.2500,118.7500,119.1250,13300,0 +890519,0.0000,121.5000,120.2500,121.5000,24900,0 +890522,0.0000,122.5000,121.7500,122.2500,18100,0 +890523,0.0000,121.2500,120.5000,120.5000,10600,0 +890524,0.0000,119.0000,118.0000,118.0000,14000,0 +890525,0.0000,120.0000,119.2500,119.6250,4000,0 +890526,0.0000,119.6250,118.3750,118.6250,15200,0 +890530,0.0000,116.5000,116.2500,116.2500,27700,0 +890531,0.0000,119.2500,118.0000,119.0000,18200,0 +890601,0.0000,119.5000,119.0000,119.3750,6600,0 +890602,0.0000,119.7500,119.2500,119.6250,10700,0 +890605,0.0000,117.2500,116.0000,116.0000,21400,0 +890606,0.0000,113.8750,113.2500,113.8750,24000,0 +890607,0.0000,114.0000,112.5000,114.0000,37700,0 +890608,0.0000,113.0000,112.7500,112.7500,7400,0 +890609,0.0000,111.6250,111.2500,111.6250,6300,0 +890612,0.0000,107.5000,107.2500,107.3750,47000,0 +890613,0.0000,107.2500,106.7500,107.1250,24800,0 +890614,0.0000,108.3750,107.7500,108.0000,8300,0 +890615,0.0000,109.2500,105.2500,109.2500,45000,0 +890616,0.0000,109.2500,108.2500,109.0000,14000,0 +890619,0.0000,111.2500,111.0000,111.0000,23200,0 +890620,0.0000,112.2500,111.5000,111.5000,24700,0 +890621,0.0000,113.2500,111.7500,113.2500,19300,0 +890622,0.0000,114.5000,114.0000,114.2500,9600,0 +890623,0.0000,115.7500,114.5000,115.3750,15800,0 +890626,0.0000,114.7500,113.6250,113.6250,2200,0 +890627,0.0000,113.0000,111.7500,111.8750,6800,0 +890628,0.0000,110.7500,110.0000,110.0000,4300,0 +890629,0.0000,110.0000,108.3750,108.3750,5400,0 +890630,0.0000,107.2500,106.2500,106.7500,20600,0 +890703,0.0000,109.8750,109.5000,109.7500,9300,0 +890705,0.0000,116.7500,115.7500,116.7500,44000,0 +890706,0.0000,117.3750,117.0000,117.3750,35600,0 +890707,0.0000,118.2500,117.8750,118.1250,24100,0 +890710,0.0000,118.0000,117.8750,118.0000,3800,0 +890711,0.0000,115.5000,115.0000,115.1250,1400,0 +890712,0.0000,115.1250,115.0000,115.1250,300,0 +890713,0.0000,115.2500,114.7500,115.2500,20500,0 +890714,0.0000,115.0000,114.5000,114.5000,1800,0 +890717,0.0000,113.3750,113.3750,113.3750,3600,0 +890718,0.0000,112.2500,111.7500,112.2500,3700,0 +890719,0.0000,113.2500,112.8750,113.1250,7200,0 +890720,0.0000,113.2500,112.8750,112.8750,4300,0 +890721,0.0000,114.7500,113.8750,114.7500,20300,0 +890724,0.0000,113.7500,112.5000,112.5000,10600,0 +890725,0.0000,114.5000,113.7500,114.5000,15600,0 +890726,0.0000,114.7500,114.5000,114.7500,29200,0 +890727,0.0000,115.2500,115.0000,115.0000,11700,0 +890728,0.0000,114.7500,114.2500,114.2500,7200,0 +890731,0.0000,116.2500,115.2500,115.2500,14200,0 +890801,0.0000,116.1250,115.5000,116.1250,10900,0 +890802,0.0000,115.7500,115.2500,115.6250,7600,0 +890803,0.0000,116.1250,115.7500,115.7500,6700,0 +890804,0.0000,115.8750,115.1250,115.3750,1800,0 +890807,0.0000,114.7500,114.2500,114.6250,6000,0 +890808,0.0000,117.0000,115.2500,116.8750,29300,0 +890809,0.0000,116.2500,116.1250,116.1250,3200,0 +890810,0.0000,120.2500,119.6250,120.1250,34400,0 +890811,0.0000,121.0000,120.2500,120.2500,16300,0 +890814,0.0000,120.5000,120.3750,120.3750,3600,0 +890815,0.0000,121.0000,120.5000,121.0000,9000,0 +890816,0.0000,120.7500,120.5000,120.5000,3800,0 +890817,0.0000,119.6250,119.5000,119.5000,5000,0 +890818,0.0000,118.5000,118.5000,118.5000,12000,0 +890821,0.0000,118.5000,117.7500,117.7500,4600,0 +890822,0.0000,118.0000,117.5000,117.8750,21800,0 +890823,0.0000,117.6250,117.5000,117.5000,14800,0 +890824,0.0000,116.2500,116.0000,116.2500,3100,0 +890825,0.0000,115.0000,114.0000,115.0000,11400,0 +890828,0.0000,112.7500,112.0000,112.7500,21800,0 +890829,0.0000,112.7500,112.0000,112.7500,1800,0 +890830,0.0000,111.2500,110.7500,110.7500,21900,0 +890831,0.0000,110.0000,109.7500,109.8750,15000,0 +890901,0.0000,108.7500,107.7500,108.6250,26800,0 +890905,0.0000,108.7500,108.5000,108.7500,14700,0 +890906,0.0000,108.0000,107.2500,108.0000,15800,0 +890907,0.0000,107.0000,106.3750,107.0000,25100,0 +890908,0.0000,106.7500,106.0000,106.0000,15900,0 +890911,0.0000,106.1250,105.5000,105.8750,9800,0 +890912,0.0000,107.6250,107.2500,107.6250,11500,0 +890913,0.0000,107.5000,107.0000,107.1250,10100,0 +890914,0.0000,107.0000,106.7500,106.7500,700,0 +890915,0.0000,107.7500,106.0000,107.7500,17200,0 +890918,0.0000,107.7500,107.1250,107.3750,6600,0 +890919,0.0000,106.8750,106.5000,106.8750,10100,0 +890920,0.0000,107.2500,107.0000,107.2500,11800,0 +890921,0.0000,107.5000,107.3750,107.5000,7500,0 +890922,0.0000,108.3750,107.5000,108.3750,7300,0 +890925,0.0000,111.2500,110.2500,111.2500,8800,0 +890926,0.0000,112.7500,111.8750,112.6250,5800,0 +890927,0.0000,112.3750,112.0000,112.0000,6700,0 +890928,0.0000,110.5000,110.1250,110.3750,5300,0 +890929,0.0000,111.2500,111.0000,111.1250,3300,0 +891002,0.0000,111.0000,110.6250,110.6250,1200,0 +891003,0.0000,109.5000,108.3750,108.7500,9400,0 +891004,0.0000,106.5000,105.0000,105.2500,17300,0 +891005,0.0000,106.0000,105.6250,105.7500,9500,0 +891006,0.0000,105.0000,105.0000,105.0000,3500,0 +891009,0.0000,106.2500,106.0000,106.0000,12900,0 +891010,0.0000,106.0000,105.5000,105.5000,13500,0 +891011,0.0000,105.6250,105.5000,105.5000,6800,0 +891012,0.0000,104.5000,103.7500,104.2500,11800,0 +891013,0.0000,105.5000,100.5000,100.5000,40900,0 +891016,0.0000,103.0000,100.0000,103.0000,31000,0 +891017,0.0000,104.5000,103.5000,103.5000,18300,0 +891018,0.0000,105.0000,104.7500,105.0000,5000,0 +891019,0.0000,106.7500,106.2500,106.7500,12600,0 +891020,0.0000,104.5000,103.8750,103.8750,15000,0 +891023,0.0000,104.2500,104.0000,104.2500,10200,0 +891024,0.0000,104.0000,102.7500,103.2500,11000,0 +891025,0.0000,103.7500,103.3750,103.3750,3400,0 +891026,0.0000,103.7500,103.3750,103.6250,16000,0 +891027,0.0000,103.7500,103.3750,103.7500,7700,0 +891030,0.0000,103.7500,103.5000,103.7500,5700,0 +891031,0.0000,104.0000,103.7500,104.0000,8500,0 +891101,0.0000,103.1250,102.7500,102.8750,3400,0 +891102,0.0000,102.6250,102.5000,102.6250,3000,0 +891103,0.0000,102.7500,102.5000,102.6250,3900,0 +891106,0.0000,102.8750,102.6250,102.6250,3800,0 +891107,0.0000,102.7500,102.3750,102.7500,5400,0 +891108,0.0000,103.0000,102.1250,102.2500,5800,0 +891109,0.0000,102.1250,101.7500,101.7500,2300,0 +891110,0.0000,102.0000,101.8750,102.0000,3600,0 +891113,0.0000,101.8750,101.6250,101.8750,4000,0 +891114,0.0000,103.6250,103.3750,103.5000,10800,0 +891115,0.0000,103.0000,102.7500,102.8750,7900,0 +891116,0.0000,102.2500,101.1250,101.1250,7400,0 +891117,0.0000,101.3750,100.8750,101.3750,4000,0 +891120,0.0000,100.5000,100.5000,100.5000,4300,0 +891121,0.0000,101.6250,101.5000,101.6250,5500,0 +891122,0.0000,101.6250,101.2500,101.6250,10100,0 +891124,0.0000,102.8750,102.2500,102.2500,3300,0 +891127,0.0000,105.0000,104.5000,105.0000,11400,0 +891128,0.0000,105.0000,104.8750,104.8750,4000,0 +891129,0.0000,110.0000,107.2500,109.6250,29800,0 +891130,0.0000,110.2500,109.5000,110.0000,19900,0 +891201,0.0000,108.5000,107.5000,108.5000,8000,0 +891204,0.0000,111.0000,110.0000,110.5000,10600,0 +891205,0.0000,108.2500,107.5000,107.6250,7300,0 +891206,0.0000,106.8750,106.5000,106.6250,6200,0 +891207,0.0000,106.1250,105.5000,105.5000,8000,0 +891208,0.0000,104.7500,104.0000,104.2500,14300,0 +891211,0.0000,104.5000,104.2500,104.5000,4700,0 +891212,0.0000,105.0000,105.0000,105.0000,8000,0 +891213,0.0000,106.5000,105.5000,106.5000,11600,0 +891214,0.0000,106.0000,105.6250,105.6250,1400,0 +891215,0.0000,105.5000,105.2500,105.2500,2500,0 +891218,0.0000,105.5000,105.2500,105.3750,6600,0 +891219,0.0000,104.7500,103.7500,103.7500,14100,0 +891220,0.0000,103.7500,102.5000,102.5000,13300,0 +891221,0.0000,102.3750,102.2500,102.2500,7500,0 +891222,0.0000,103.5000,102.5000,103.3750,4400,0 +891226,0.0000,108.1250,107.7500,107.8750,7000,0 +891227,0.0000,108.0000,107.5000,107.5000,4800,0 +891228,0.0000,106.7500,106.2500,106.2500,700,0 +891229,0.0000,106.5000,105.5000,105.5000,4200,0 +900102,0.0000,106.1250,105.2500,105.5000,3700,0 +900103,0.0000,106.0000,105.5000,106.0000,5800,0 +900104,0.0000,110.1250,109.2500,110.0000,19200,0 +900105,0.0000,110.0000,109.5000,109.5000,9000,0 +900108,0.0000,109.2500,108.8750,109.0000,8100,0 +900109,0.0000,107.5000,107.0000,107.1250,3600,0 +900110,0.0000,106.8750,106.7500,106.8750,13600,0 +900111,0.0000,105.8750,105.6250,105.6250,8200,0 +900112,0.0000,103.8750,102.6250,102.7500,22500,0 +900115,0.0000,102.6250,102.0000,102.0000,5000,0 +900116,0.0000,102.5000,101.3750,102.3750,30200,0 +900117,0.0000,102.7500,102.2500,102.2500,4500,0 +900118,0.0000,102.0000,101.6250,101.7500,8100,0 +900119,0.0000,103.2500,102.3750,103.0000,20200,0 +900122,0.0000,104.6250,103.2500,103.5000,34300,0 +900123,0.0000,107.2500,106.0000,107.2500,70400,0 +900124,0.0000,106.0000,104.7500,106.0000,7000,0 +900125,0.0000,109.2500,108.6250,108.6250,29500,0 +900126,0.0000,112.0000,110.7500,112.0000,42000,0 +900129,0.0000,111.8750,111.0000,111.1250,5700,0 +900130,0.0000,110.3750,109.3750,109.3750,3300,0 +900131,0.0000,110.0000,109.5000,110.0000,18300,0 +900201,0.0000,109.2500,109.0000,109.1250,2400,0 +900202,0.0000,108.3750,107.7500,108.2500,9300,0 +900205,0.0000,108.0000,107.2500,108.0000,10500,0 +900206,0.0000,108.0000,107.3750,107.3750,6800,0 +900207,0.0000,106.5000,105.0000,106.5000,29000,0 +900208,0.0000,106.2500,106.0000,106.2500,7400,0 +900209,0.0000,105.2500,105.2500,105.2500,6500,0 +900212,0.0000,105.2500,105.0000,105.2500,1600,0 +900213,0.0000,105.0000,104.8750,105.0000,2900,0 +900214,0.0000,106.7500,106.0000,106.7500,4300,0 +900215,0.0000,110.5000,109.7500,110.5000,9600,0 +900216,0.0000,108.8750,108.5000,108.8750,6300,0 +900220,0.0000,105.3750,104.8750,105.2500,20400,0 +900221,0.0000,102.5000,102.2500,102.5000,13000,0 +900222,0.0000,104.3750,103.2500,103.6250,12200,0 +900223,0.0000,99.8750,99.2500,99.5000,56400,0 +900226,0.0000,98.5000,96.2500,98.0000,21100,0 +900227,0.0000,101.6250,101.5000,101.5000,17900,0 +900228,0.0000,104.0000,103.0000,103.6250,27200,0 +900301,0.0000,103.0000,102.0000,102.6250,36600,0 +900302,0.0000,105.2500,104.3750,104.8750,20200,0 +900305,0.0000,104.5000,104.0000,104.2500,10500,0 +900306,0.0000,103.5000,103.0000,103.5000,8800,0 +900307,0.0000,101.0000,100.5000,100.6250,12600,0 +900308,0.0000,102.5000,101.2500,102.2500,11100,0 +900309,0.0000,102.0000,101.0000,101.8750,4600,0 +900312,0.0000,100.0000,99.5000,99.5000,17000,0 +900313,0.0000,98.5000,98.0000,98.5000,11200,0 +900314,0.0000,98.7500,97.7500,98.7500,25100,0 +900315,0.0000,98.8750,98.0000,98.8750,20100,0 +900316,0.0000,98.8750,97.7500,98.7500,20800,0 +900319,0.0000,95.0000,93.7500,95.0000,31200,0 +900320,0.0000,93.5000,92.5000,92.7500,35200,0 +900321,0.0000,92.8750,92.6250,92.8750,14100,0 +900322,0.0000,92.8750,92.2500,92.7500,28900,0 +900323,0.0000,95.1250,93.7500,95.1250,27700,0 +900326,0.0000,96.7500,95.7500,95.8750,14800,0 +900327,0.0000,98.2500,96.0000,96.8750,24100,0 +900328,0.0000,100.2500,99.5000,100.1250,42400,0 +900329,0.0000,103.0000,100.2500,102.5000,42400,0 +900330,0.0000,100.2500,98.7500,98.7500,31700,0 +900402,0.0000,97.7500,94.5000,97.7500,39800,0 +900403,0.0000,102.0000,101.5000,101.6250,54400,0 +900404,0.0000,100.0000,95.6250,96.8750,53700,0 +900405,0.0000,105.0000,104.0000,104.2500,62400,0 +900406,0.0000,106.2500,105.2500,105.6250,38100,0 +900409,0.0000,108.3750,107.0000,107.0000,75900,0 +900410,0.0000,106.8750,106.0000,106.8750,24800,0 +900411,0.0000,106.8750,106.0000,106.0000,20500,0 +900412,0.0000,104.2500,103.5000,103.6250,12800,0 +900416,0.0000,101.5000,100.7500,100.8750,21500,0 +900417,0.0000,99.3750,98.5000,99.2500,39000,0 +900418,0.0000,101.7500,100.1250,101.7500,37100,0 +900419,0.0000,101.2500,100.7500,100.8750,29300,0 +900420,0.0000,100.7500,100.0000,100.3750,22600,0 +900423,0.0000,100.0000,99.2500,99.5000,22700,0 +900424,0.0000,100.0000,99.1250,100.0000,4400,0 +900425,0.0000,99.1250,99.0000,99.1250,26500,0 +900426,0.0000,100.0000,99.3750,99.5000,21400,0 +900427,0.0000,99.3750,99.1250,99.1250,4800,0 +900430,0.0000,99.2500,99.2500,99.2500,200,0 +900501,0.0000,101.2500,100.8750,100.8750,1000,0 +900502,0.0000,101.0000,101.0000,101.0000,2500,0 +900503,0.0000,101.1250,101.0000,101.0000,5200,0 +900504,0.0000,101.8750,101.1250,101.8750,4200,0 +900507,0.0000,102.2500,101.7500,102.2500,3900,0 +900508,0.0000,102.5000,102.0000,102.5000,11400,0 +900509,0.0000,102.2500,102.0000,102.0000,7000,0 +900510,0.0000,101.1250,100.6250,101.1250,13800,0 +900511,0.0000,105.1250,104.6250,105.0000,36000,0 +900514,0.0000,105.5000,105.2500,105.3750,17000,0 +900515,0.0000,104.8750,104.2500,104.6250,3400,0 +900516,0.0000,104.5000,104.2500,104.3750,1600,0 +900517,0.0000,105.7500,105.2500,105.7500,21400,0 +900518,0.0000,105.2500,104.7500,104.8750,12600,0 +900521,0.0000,103.2500,102.7500,102.8750,10600,0 +900522,0.0000,104.7500,103.7500,104.6250,12800,0 +900523,0.0000,105.0000,104.6250,104.6250,15800,0 +900524,0.0000,104.6250,104.2500,104.5000,4800,0 +900525,0.0000,105.0000,104.5000,104.7500,6000,0 +900529,0.0000,104.5000,104.2500,104.5000,8200,0 +900530,0.0000,103.8750,103.6250,103.7500,1700,0 +900531,0.0000,104.0000,103.2500,103.6250,32400,0 +900601,0.0000,103.5000,103.2500,103.2500,3500,0 +900604,0.0000,103.0000,102.2500,102.6250,8100,0 +900605,0.0000,103.7500,103.1250,103.6250,7300,0 +900606,0.0000,103.3750,103.3750,103.3750,200,0 +900607,0.0000,104.0000,103.5000,103.7500,13700,0 +900608,0.0000,103.1250,102.5000,102.6250,12900,0 +900611,0.0000,101.5000,100.5000,100.7500,27400,0 +900612,0.0000,101.2500,100.6250,101.0000,12400,0 +900613,0.0000,100.7500,100.3750,100.6250,7500,0 +900614,0.0000,100.6250,99.6250,99.7500,20700,0 +900615,0.0000,100.2500,99.7500,100.0000,8600,0 +900618,0.0000,98.8750,98.6250,98.7500,16600,0 +900619,0.0000,98.1250,97.5000,98.1250,14100,0 +900620,0.0000,98.3750,98.0000,98.2500,1500,0 +900621,0.0000,98.0000,98.0000,98.0000,2900,0 +900622,0.0000,97.0000,96.7500,96.7500,5000,0 +900625,0.0000,95.2500,95.0000,95.0000,11400,0 +900626,0.0000,97.5000,96.2500,97.2500,29100,0 +900627,0.0000,101.2500,99.7500,101.0000,44700,0 +900628,0.0000,100.7500,100.0000,100.7500,11200,0 +900629,0.0000,99.0000,98.7500,98.8750,12500,0 +900702,0.0000,99.2500,98.7500,99.1250,2700,0 +900703,0.0000,99.1250,99.1250,99.1250,1900,0 +900705,0.0000,99.0000,98.7500,99.0000,6900,0 +900706,0.0000,100.2500,100.2500,100.2500,7100,0 +900709,0.0000,100.5000,100.0000,100.1250,6400,0 +900710,0.0000,100.5000,100.0000,100.2500,16100,0 +900711,0.0000,100.8750,100.2500,100.8750,1900,0 +900712,0.0000,101.1250,100.5000,101.1250,8300,0 +900713,0.0000,101.0000,100.5000,100.5000,5200,0 +900716,0.0000,105.0000,104.0000,104.6250,26300,0 +900717,0.0000,103.2500,102.3750,102.5000,11800,0 +900718,0.0000,101.8750,100.2500,100.5000,3600,0 +900719,0.0000,99.7500,99.5000,99.5000,7700,0 +900720,0.0000,98.2500,98.0000,98.2500,3400,0 +900723,0.0000,97.0000,96.0000,96.3750,6800,0 +900724,0.0000,96.1250,95.3750,96.1250,6000,0 +900725,0.0000,96.2500,96.0000,96.2500,28700,0 +900726,0.0000,94.5000,94.0000,94.0000,20800,0 +900727,0.0000,93.8750,93.2500,93.8750,4500,0 +900730,0.0000,95.5000,94.1250,95.5000,14600,0 +900731,0.0000,96.7500,95.5000,96.6250,4700,0 +900801,0.0000,94.1250,93.8750,94.0000,20900,0 +900802,0.0000,90.2500,88.0000,89.7500,41200,0 +900803,0.0000,88.6250,85.5000,87.0000,19700,0 +900806,0.0000,82.5000,80.7500,82.1250,17600,0 +900807,0.0000,86.2500,85.3750,86.0000,36200,0 +900808,0.0000,86.7500,84.2500,86.2500,23000,0 +900809,0.0000,85.7500,84.0000,85.2500,8100,0 +900810,0.0000,84.5000,82.7500,83.2500,17100,0 +900813,0.0000,82.8750,82.0000,82.7500,11000,0 +900814,0.0000,87.5000,85.0000,87.0000,27900,0 +900815,0.0000,92.5000,90.7500,90.7500,30700,0 +900816,0.0000,90.0000,87.7500,87.8750,17400,0 +900817,0.0000,87.5000,86.0000,86.5000,34700,0 +900820,0.0000,88.8750,88.5000,88.5000,12900,0 +900821,0.0000,86.0000,83.7500,84.7500,13300,0 +900822,0.0000,86.7500,86.1250,86.1250,20600,0 +900823,0.0000,85.7500,83.7500,84.0000,9400,0 +900824,0.0000,89.2500,88.2500,88.7500,14500,0 +900827,0.0000,94.5000,93.5000,94.3750,34500,0 +900828,0.0000,95.2500,94.5000,94.5000,54200,0 +900829,0.0000,95.5000,94.2500,95.2500,12200,0 +900830,0.0000,96.7500,95.7500,95.7500,16500,0 +900831,0.0000,95.2500,94.7500,95.0000,4600,0 +900904,0.0000,90.5000,89.8750,90.1250,31200,0 +900905,0.0000,90.2500,90.0000,90.2500,6500,0 +900906,0.0000,90.0000,89.5000,89.5000,2100,0 +900907,0.0000,91.0000,90.0000,91.0000,9000,0 +900910,0.0000,93.5000,92.6250,92.6250,13500,0 +900911,0.0000,92.0000,91.0000,91.0000,5000,0 +900912,0.0000,92.5000,91.7500,92.2500,7200,0 +900913,0.0000,92.2500,91.7500,92.0000,5300,0 +900914,0.0000,91.7500,91.2500,91.2500,500,0 +900917,0.0000,89.3750,89.0000,89.3750,13900,0 +900918,0.0000,88.5000,87.5000,88.5000,13500,0 +900919,0.0000,88.0000,87.0000,87.0000,4200,0 +900920,0.0000,86.2500,85.5000,85.5000,10500,0 +900921,0.0000,89.2500,88.3750,88.3750,8200,0 +900924,0.0000,88.5000,85.5000,85.5000,23700,0 +900925,0.0000,88.5000,86.7500,88.5000,17400,0 +900926,0.0000,85.5000,84.2500,85.2500,21400,0 +900927,0.0000,85.5000,84.6250,85.2500,7400,0 +900928,0.0000,85.6250,83.0000,85.5000,21400,0 +901001,0.0000,92.0000,88.5000,91.7500,24200,0 +901002,0.0000,96.2500,95.0000,95.1250,62200,0 +901003,0.0000,94.8750,93.5000,93.5000,34900,0 +901004,0.0000,95.6250,94.8750,95.6250,56900,0 +901005,0.0000,97.7500,94.5000,97.2500,35800,0 +901008,0.0000,97.3750,96.5000,96.7500,8800,0 +901009,0.0000,93.8750,92.7500,92.7500,14200,0 +901010,0.0000,92.8750,92.0000,92.1250,22700,0 +901011,0.0000,92.1250,90.6250,90.7500,5700,0 +901012,0.0000,94.0000,92.2500,94.0000,20900,0 +901015,0.0000,94.5000,93.8750,94.2500,11000,0 +901016,0.0000,97.0000,95.5000,96.2500,32200,0 +901017,0.0000,97.5000,97.0000,97.5000,28100,0 +901018,0.0000,96.5000,95.2500,96.5000,29700,0 +901019,0.0000,97.8750,96.2500,97.8750,17100,0 +901022,0.0000,100.3750,98.3750,99.8750,22500,0 +901023,0.0000,98.2500,96.6250,96.7500,23900,0 +901024,0.0000,95.5000,94.2500,95.3750,18100,0 +901025,0.0000,95.7500,94.7500,94.7500,12000,0 +901026,0.0000,93.7500,92.8750,93.0000,15500,0 +901029,0.0000,93.7500,92.7500,93.2500,5900,0 +901030,0.0000,91.5000,90.2500,91.5000,29000,0 +901031,0.0000,91.7500,91.0000,91.0000,5000,0 +901101,0.0000,89.2500,88.5000,89.2500,9000,0 +901102,0.0000,91.2500,89.5000,91.1250,8300,0 +901105,0.0000,91.7500,91.3750,91.7500,2000,0 +901106,0.0000,90.2500,89.2500,89.5000,14500,0 +901107,0.0000,89.0000,88.0000,88.0000,9900,0 +901108,0.0000,86.2500,85.0000,85.6250,46000,0 +901109,0.0000,87.0000,85.5000,86.8750,17900,0 +901112,0.0000,89.5000,86.8750,89.5000,12500,0 +901113,0.0000,88.5000,87.6250,87.6250,12600,0 +901114,0.0000,87.5000,85.6250,87.2500,19400,0 +901115,0.0000,86.2500,85.2500,85.3750,16000,0 +901116,0.0000,85.8750,84.7500,85.0000,9300,0 +901119,0.0000,86.7500,85.7500,85.7500,10100,0 +901120,0.0000,85.0000,84.3750,84.3750,6700,0 +901121,0.0000,84.3750,83.6250,84.3750,6800,0 +901123,0.0000,86.2500,85.7500,85.7500,5600,0 +901126,0.0000,84.7500,84.0000,84.2500,4100,0 +901127,0.0000,85.7500,84.5000,85.5000,16800,0 +901128,0.0000,83.0000,82.2500,82.3750,40300,0 +901129,0.0000,81.2500,78.7500,78.7500,28800,0 +901130,0.0000,82.7500,78.2500,82.2500,38700,0 +901203,0.0000,79.5000,78.5000,78.5000,36400,0 +901204,0.0000,78.7500,76.7500,78.7500,42100,0 +901205,0.0000,80.0000,78.2500,80.0000,17200,0 +901206,0.0000,83.5000,81.0000,81.8750,48200,0 +901207,0.0000,86.0000,84.0000,84.8750,61500,0 +901210,0.0000,86.0000,84.6250,84.6250,12500,0 +901211,0.0000,84.8750,83.7500,83.7500,9300,0 +901212,0.0000,85.5000,84.7500,85.5000,13400,0 +901213,0.0000,87.2500,86.2500,86.3750,27400,0 +901214,0.0000,86.0000,84.1250,84.1250,35600,0 +901217,0.0000,84.0000,82.0000,82.3750,20600,0 +901218,0.0000,86.2500,85.0000,86.2500,26400,0 +901219,0.0000,86.2500,85.5000,85.5000,11500,0 +901220,0.0000,83.5000,82.7500,83.0000,16100,0 +901221,0.0000,83.5000,82.7500,82.8750,5200,0 +901224,0.0000,82.7500,81.7500,82.0000,10000,0 +901226,0.0000,82.2500,81.0000,82.2500,9600,0 +901227,0.0000,82.7500,81.7500,82.7500,5400,0 +901228,0.0000,82.6250,82.3750,82.3750,1300,0 +901231,0.0000,82.5000,81.7500,82.0000,700,0 +910102,0.0000,82.5000,82.0000,82.5000,3900,0 +910103,0.0000,83.2500,83.0000,83.1250,4800,0 +910104,0.0000,83.0000,82.3750,83.0000,7700,0 +910107,0.0000,81.2500,80.0000,80.8750,7200,0 +910108,0.0000,80.5000,80.0000,80.0000,8500,0 +910109,0.0000,82.7500,78.7500,79.0000,13500,0 +910110,0.0000,81.5000,81.0000,81.5000,8700,0 +910111,0.0000,82.0000,81.5000,82.0000,18300,0 +910114,0.0000,80.5000,80.0000,80.1250,7900,0 +910115,0.0000,80.8750,79.0000,80.8750,28200,0 +910116,0.0000,79.3750,78.5000,79.0000,26800,0 +910117,0.0000,86.0000,84.2500,85.7500,39600,0 +910118,0.0000,85.2500,84.5000,85.2500,16500,0 +910121,0.0000,84.0000,83.5000,83.5000,6300,0 +910122,0.0000,84.7500,83.7500,83.8750,13600,0 +910123,0.0000,83.5000,82.5000,83.2500,13500,0 +910124,0.0000,84.2500,83.5000,84.2500,5600,0 +910125,0.0000,85.5000,84.7500,84.8750,4200,0 +910128,0.0000,85.3750,84.8750,84.8750,1300,0 +910129,0.0000,85.3750,85.0000,85.0000,4700,0 +910130,0.0000,86.0000,84.7500,86.0000,11000,0 +910131,0.0000,85.2500,84.7500,85.2500,22700,0 +910201,0.0000,85.5000,85.1250,85.5000,19400,0 +910204,0.0000,87.0000,85.6250,87.0000,11400,0 +910205,0.0000,88.6250,88.0000,88.3750,25200,0 +910206,0.0000,91.6250,90.0000,91.6250,35400,0 +910207,0.0000,91.5000,90.5000,90.8750,53000,0 +910208,0.0000,90.8750,90.2500,90.6250,35900,0 +910211,0.0000,93.0000,90.7500,93.0000,18700,0 +910212,0.0000,94.7500,93.6250,93.6250,41200,0 +910213,0.0000,95.0000,93.7500,95.0000,37200,0 +910214,0.0000,95.7500,93.7500,94.5000,49700,0 +910215,0.0000,100.2500,97.7500,99.5000,56200,0 +910219,0.0000,99.8750,99.1250,99.2500,30900,0 +910220,0.0000,98.7500,97.6250,97.6250,6700,0 +910221,0.0000,96.7500,96.0000,96.3750,16900,0 +910222,0.0000,97.5000,96.1250,97.1250,26100,0 +910225,0.0000,99.0000,98.2500,98.2500,19700,0 +910226,0.0000,95.7500,94.7500,95.0000,19100,0 +910227,0.0000,97.7500,97.5000,97.7500,16000,0 +910228,0.0000,98.0000,97.5000,97.5000,14600,0 +910301,0.0000,94.3750,93.3750,94.2500,46300,0 +910304,0.0000,94.7500,94.2500,94.5000,23800,0 +910305,0.0000,96.0000,95.0000,95.7500,21400,0 +910306,0.0000,97.6250,97.0000,97.6250,46800,0 +910307,0.0000,95.7500,95.3750,95.3750,29700,0 +910308,0.0000,96.2500,95.8750,96.0000,31500,0 +910311,0.0000,95.0000,94.1250,94.2500,20100,0 +910312,0.0000,95.2500,95.0000,95.0000,13600,0 +910313,0.0000,95.0000,94.0000,95.0000,13800,0 +910314,0.0000,95.3750,94.7500,95.0000,14400,0 +910315,0.0000,96.6250,95.2500,95.2500,15300,0 +910318,0.0000,94.7500,94.0000,94.6250,16000,0 +910319,0.0000,94.0000,92.2500,92.8750,11000,0 +910320,0.0000,92.3750,91.5000,92.3750,11600,0 +910321,0.0000,93.2500,92.6250,92.8750,10500,0 +910322,0.0000,91.7500,91.0000,91.0000,7800,0 +910325,0.0000,89.8750,89.0000,89.3750,10100,0 +910326,0.0000,90.0000,89.3750,89.6250,14100,0 +910327,0.0000,88.3750,87.8750,88.1250,17300,0 +910328,0.0000,88.0000,87.5000,87.7500,12800,0 +910401,0.0000,87.2500,86.8750,87.0000,6300,0 +910402,0.0000,90.0000,88.2500,90.0000,8900,0 +910403,0.0000,91.6250,91.2500,91.2500,13200,0 +910404,0.0000,92.5000,91.0000,92.2500,11000,0 +910405,0.0000,91.8750,90.2500,90.5000,5700,0 +910408,0.0000,91.0000,90.1250,91.0000,6200,0 +910409,0.0000,90.8750,89.7500,90.0000,8500,0 +910410,0.0000,90.5000,90.0000,90.0000,3300,0 +910411,0.0000,91.2500,90.1250,90.5000,8700,0 +910412,0.0000,92.1250,91.5000,91.5000,16700,0 +910415,0.0000,92.1250,91.8750,92.0000,30300,0 +910416,0.0000,92.7500,92.0000,92.7500,36200,0 +910417,0.0000,92.6250,92.0000,92.1250,8900,0 +910418,0.0000,91.0000,90.5000,90.5000,2700,0 +910419,0.0000,90.0000,89.0000,89.0000,3100,0 +910422,0.0000,87.3750,86.5000,86.7500,18100,0 +910423,0.0000,88.2500,87.2500,88.1250,9600,0 +910424,0.0000,88.1250,87.6250,87.8750,6400,0 +910425,0.0000,87.0000,86.2500,86.6250,5000,0 +910426,0.0000,87.2500,86.7500,87.2500,4200,0 +910429,0.0000,87.5000,86.7500,87.0000,8200,0 +910430,0.0000,88.2500,87.7500,88.2500,11300,0 +910501,0.0000,89.2500,88.5000,88.5000,1900,0 +910502,0.0000,88.5000,88.5000,88.5000,700,0 +910503,0.0000,88.5000,88.2500,88.2500,700,0 +910506,0.0000,88.5000,87.7500,87.7500,3100,0 +910507,0.0000,87.8750,87.6250,87.6250,3700,0 +910508,0.0000,87.7500,87.0000,87.7500,7000,0 +910509,0.0000,87.7500,86.5000,87.7500,8200,0 +910510,0.0000,87.5000,86.2500,86.2500,2600,0 +910513,0.0000,86.3750,85.7500,86.3750,10600,0 +910514,0.0000,85.2500,84.8750,85.0000,12200,0 +910515,0.0000,85.1250,84.3750,84.3750,3200,0 +910516,0.0000,84.5000,83.8750,84.5000,4300,0 +910517,0.0000,83.5000,83.0000,83.1250,25300,0 +910520,0.0000,81.7500,80.0000,80.0000,50900,0 +910521,0.0000,80.5000,80.1250,80.2500,21300,0 +910522,0.0000,81.7500,81.0000,81.2500,38900,0 +910523,0.0000,82.3750,81.5000,81.5000,28800,0 +910524,0.0000,81.7500,81.5000,81.7500,3000,0 +910528,0.0000,82.1250,81.7500,82.1250,8200,0 +910529,0.0000,83.8750,83.6250,83.8750,23300,0 +910530,0.0000,85.0000,84.5000,85.0000,18200,0 +910531,0.0000,85.3750,85.0000,85.2500,16400,0 +910603,0.0000,84.0000,83.7500,83.7500,6300,0 +910604,0.0000,83.7500,83.0000,83.2500,4200,0 +910605,0.0000,83.2500,82.5000,82.8750,7200,0 +910606,0.0000,83.0000,82.6250,83.0000,7900,0 +910607,0.0000,81.0000,80.3750,80.5000,10800,0 +910610,0.0000,79.5000,78.8750,79.3750,28800,0 +910611,0.0000,80.6250,79.5000,80.2500,12300,0 +910612,0.0000,80.0000,79.6250,79.6250,2400,0 +910613,0.0000,80.2500,79.8750,79.8750,11100,0 +910614,0.0000,81.0000,80.5000,80.7500,45100,0 +910617,0.0000,79.8750,79.2500,79.3750,14900,0 +910618,0.0000,78.7500,78.2500,78.2500,9200,0 +910619,0.0000,76.6250,76.0000,76.5000,20700,0 +910620,0.0000,78.3750,77.2500,78.3750,15100,0 +910621,0.0000,78.6250,78.1250,78.1250,10200,0 +910624,0.0000,76.6250,76.2500,76.2500,9300,0 +910625,0.0000,79.2500,78.5000,79.0000,15700,0 +910626,0.0000,77.7500,77.0000,77.7500,7900,0 +910627,0.0000,79.7500,79.0000,79.5000,10000,0 +910628,0.0000,79.6250,78.3750,78.7500,5500,0 +910701,0.0000,82.7500,82.2500,82.6250,23900,0 +910702,0.0000,82.8750,82.5000,82.6250,10100,0 +910703,0.0000,81.2500,80.2500,80.2500,8400,0 +910705,0.0000,82.3750,82.2500,82.3750,6500,0 +910708,0.0000,81.8750,81.5000,81.8750,1900,0 +910709,0.0000,84.5000,84.0000,84.2500,15400,0 +910710,0.0000,85.2500,84.7500,84.7500,8900,0 +910711,0.0000,84.8750,84.2500,84.2500,6700,0 +910712,0.0000,85.6250,84.3750,85.6250,8600,0 +910715,0.0000,85.2500,84.6250,84.8750,4200,0 +910716,0.0000,83.7500,83.1250,83.3750,11900,0 +910717,0.0000,82.2500,81.6250,81.8750,12800,0 +910718,0.0000,82.2500,82.0000,82.0000,2700,0 +910719,0.0000,82.5000,82.1250,82.5000,1100,0 +910722,0.0000,82.2500,81.6250,81.7500,7600,0 +910723,0.0000,82.2500,82.1250,82.1250,2400,0 +910724,0.0000,83.0000,83.0000,83.0000,2500,0 +910725,0.0000,81.7500,81.0000,81.2500,9300,0 +910726,0.0000,84.0000,83.5000,83.6250,15500,0 +910729,0.0000,83.8750,83.3750,83.6250,3400,0 +910730,0.0000,85.0000,84.2500,85.0000,2600,0 +910731,0.0000,84.7500,84.6250,84.7500,2400,0 +910801,0.0000,84.6250,84.2500,84.2500,7500,0 +910802,0.0000,85.2500,84.7500,84.7500,8700,0 +910805,0.0000,84.1250,83.8750,84.1250,3100,0 +910806,0.0000,83.7500,83.0000,83.7500,3100,0 +910807,0.0000,82.7500,82.0000,82.7500,17300,0 +910808,0.0000,82.5000,82.3750,82.3750,5100,0 +910809,0.0000,82.2500,81.7500,81.7500,4000,0 +910812,0.0000,81.2500,80.8750,81.1250,17700,0 +910813,0.0000,81.0000,80.5000,80.8750,12600,0 +910814,0.0000,80.6250,80.5000,80.5000,15700,0 +910815,0.0000,80.1250,79.1250,79.2500,8600,0 +910816,0.0000,77.7500,77.0000,77.3750,33900,0 +910819,0.0000,75.2500,72.2500,74.7500,78500,0 +910820,0.0000,76.2500,74.5000,75.1250,22500,0 +910821,0.0000,79.6250,78.1250,79.6250,16500,0 +910822,0.0000,79.3750,78.5000,78.7500,17500,0 +910823,0.0000,78.5000,77.8750,78.5000,9500,0 +910826,0.0000,76.5000,75.6250,76.5000,26000,0 +910827,0.0000,75.5000,75.2500,75.3750,18300,0 +910828,0.0000,76.5000,75.5000,76.5000,8000,0 +910829,0.0000,77.2500,76.7500,76.7500,20600,0 +910830,0.0000,77.0000,76.2500,76.5000,16500,0 +910903,0.0000,76.7500,76.2500,76.5000,13200,0 +910904,0.0000,77.0000,76.2500,77.0000,12600,0 +910905,0.0000,76.7500,76.6250,76.6250,3400,0 +910906,0.0000,77.5000,76.7500,77.5000,18900,0 +910909,0.0000,78.3750,78.0000,78.2500,8600,0 +910910,0.0000,77.5000,76.7500,77.0000,10000,0 +910911,0.0000,76.5000,76.0000,76.0000,9600,0 +910912,0.0000,76.5000,75.7500,76.5000,14200,0 +910913,0.0000,77.2500,76.6250,77.1250,14100,0 +910916,0.0000,77.5000,77.0000,77.5000,11700,0 +910917,0.0000,77.7500,77.3750,77.5000,16200,0 +910918,0.0000,78.2500,77.7500,78.1250,8900,0 +910919,0.0000,78.0000,77.5000,77.7500,3400,0 +910920,0.0000,77.5000,77.2500,77.2500,4000,0 +910923,0.0000,77.6250,76.7500,76.7500,8900,0 +910924,0.0000,78.2500,77.3750,78.1250,21500,0 +910925,0.0000,78.2500,77.7500,78.2500,3200,0 +910926,0.0000,78.2500,77.3750,77.3750,7100,0 +910927,0.0000,78.3750,78.0000,78.0000,5900,0 +910930,0.0000,78.7500,78.1250,78.3750,2500,0 +911001,0.0000,78.8750,78.5000,78.7500,7800,0 +911002,0.0000,80.0000,79.2500,79.3750,4800,0 +911003,0.0000,79.7500,79.2500,79.3750,6000,0 +911004,0.0000,79.3750,79.0000,79.0000,4900,0 +911007,0.0000,79.0000,78.5000,78.7500,10700,0 +911008,0.0000,78.6250,78.0000,78.0000,6400,0 +911009,0.0000,78.2500,78.2500,78.2500,2100,0 +911010,0.0000,78.1250,77.7500,77.7500,12400,0 +911011,0.0000,77.5000,77.0000,77.3750,7500,0 +911014,0.0000,77.7500,77.6250,77.6250,2500,0 +911015,0.0000,77.3750,77.1250,77.1250,1100,0 +911016,0.0000,77.3750,77.2500,77.2500,2200,0 +911017,0.0000,77.5000,77.3750,77.5000,2900,0 +911018,0.0000,78.3750,77.5000,77.5000,16900,0 +911021,0.0000,77.0000,76.1250,76.2500,9500,0 +911022,0.0000,76.1250,75.7500,76.0000,13200,0 +911023,0.0000,76.0000,75.2500,75.2500,6600,0 +911024,0.0000,75.7500,75.5000,75.5000,7800,0 +911025,0.0000,76.0000,75.7500,75.7500,3200,0 +911028,0.0000,75.7500,75.5000,75.7500,7000,0 +911029,0.0000,76.2500,75.7500,76.0000,24800,0 +911030,0.0000,76.2500,76.1250,76.2500,8300,0 +911031,0.0000,77.0000,76.6250,76.8750,18100,0 +911101,0.0000,77.0000,76.7500,76.7500,12000,0 +911104,0.0000,77.2500,77.1250,77.2500,1400,0 +911105,0.0000,77.2500,76.7500,76.8750,5400,0 +911106,0.0000,77.0000,76.6250,76.8750,3500,0 +911107,0.0000,77.2500,76.7500,76.7500,18100,0 +911108,0.0000,76.2500,75.5000,75.7500,9800,0 +911111,0.0000,75.2500,75.0000,75.2500,1400,0 +911112,0.0000,75.3750,75.2500,75.2500,4400,0 +911113,0.0000,75.0000,74.7500,75.0000,2400,0 +911114,0.0000,73.0000,72.6250,72.8750,8500,0 +911115,0.0000,72.2500,70.7500,70.8750,31300,0 +911118,0.0000,72.5000,71.6250,72.5000,18900,0 +911119,0.0000,71.2500,70.5000,70.8750,14300,0 +911120,0.0000,71.0000,70.7500,71.0000,5400,0 +911121,0.0000,70.2500,69.5000,70.0000,5600,0 +911122,0.0000,70.0000,69.5000,69.7500,15100,0 +911125,0.0000,70.7500,70.5000,70.5000,15400,0 +911126,0.0000,70.2500,69.7500,70.0000,21500,0 +911127,0.0000,68.6250,67.5000,67.7500,28700,0 +911129,0.0000,69.1250,67.6250,68.5000,30300,0 +911202,0.0000,69.8750,68.3750,69.8750,6900,0 +911203,0.0000,71.0000,70.5000,70.5000,13000,0 +911204,0.0000,73.0000,72.0000,73.0000,20900,0 +911205,0.0000,72.3750,71.8750,72.2500,6500,0 +911206,0.0000,71.7500,71.5000,71.5000,5000,0 +911209,0.0000,71.7500,71.0000,71.1250,3600,0 +911210,0.0000,70.6250,70.0000,70.1250,5400,0 +911211,0.0000,70.0000,69.7500,69.7500,2600,0 +911212,0.0000,71.2500,71.0000,71.2500,9200,0 +911213,0.0000,71.3750,70.3750,70.3750,13400,0 +911216,0.0000,71.2500,70.8750,71.0000,8800,0 +911217,0.0000,70.8750,70.5000,70.7500,2200,0 +911218,0.0000,70.5000,69.7500,70.1250,6500,0 +911219,0.0000,69.3750,68.6250,68.7500,13600,0 +911220,0.0000,68.8750,68.2500,68.2500,22100,0 +911223,0.0000,69.0000,68.0000,68.7500,13700,0 +911224,0.0000,69.0000,68.7500,69.0000,2600,0 +911226,0.0000,71.2500,70.7500,70.7500,17800,0 +911227,0.0000,70.3750,69.7500,69.7500,5100,0 +911230,0.0000,73.5000,71.2500,73.5000,9500,0 +911231,0.0000,75.0000,73.5000,74.5000,15500,0 +920102,0.0000,75.0000,74.2500,75.0000,4800,0 +920103,0.0000,76.3750,74.7500,76.3750,17900,0 +920106,0.0000,76.0000,75.6250,75.6250,16000,0 +920107,0.0000,75.6250,75.2500,75.2500,3500,0 +920108,0.0000,74.0000,73.3750,73.5000,11400,0 +920109,0.0000,73.5000,72.3750,72.5000,4700,0 +920110,0.0000,72.2500,71.5000,71.5000,1200,0 +920113,0.0000,70.7500,70.5000,70.5000,2000,0 +920114,0.0000,72.5000,71.0000,71.7500,38000,0 +920115,0.0000,72.0000,71.2500,71.8750,8900,0 +920116,0.0000,72.0000,71.5000,71.6250,4900,0 +920117,0.0000,73.0000,69.8750,73.0000,4400,0 +920120,0.0000,73.2500,72.8750,73.1250,7100,0 +920121,0.0000,74.7500,74.0000,74.5000,9900,0 +920122,0.0000,76.3750,75.7500,75.7500,4200,0 +920123,0.0000,75.7500,75.2500,75.5000,8700,0 +920124,0.0000,74.0000,73.2500,74.0000,3800,0 +920127,0.0000,73.5000,72.7500,73.1250,7700,0 +920128,0.0000,73.2500,73.0000,73.2500,3500,0 +920129,0.0000,73.3750,72.7500,72.7500,9500,0 +920130,0.0000,73.8750,73.6250,73.8750,5100,0 +920131,0.0000,74.3750,73.8750,73.8750,2400,0 +920203,0.0000,73.8750,73.5000,73.5000,1700,0 +920204,0.0000,73.8750,73.6250,73.8750,12600,0 +920205,0.0000,73.7500,73.5000,73.5000,1000,0 +920206,0.0000,72.8750,72.5000,72.7500,8500,0 +920207,0.0000,72.2500,72.0000,72.1250,8200,0 +920210,0.0000,71.7500,71.0000,71.0000,11700,0 +920211,0.0000,70.2500,69.7500,69.7500,15500,0 +920212,0.0000,69.3750,69.1250,69.3750,5800,0 +920213,0.0000,69.2500,69.1250,69.2500,2400,0 +920214,0.0000,68.6250,68.0000,68.5000,8500,0 +920218,0.0000,67.5000,67.0000,67.1250,20200,0 +920219,0.0000,66.6250,65.7500,66.1250,19200,0 +920220,0.0000,66.6250,65.5000,66.6250,9900,0 +920221,0.0000,67.1250,66.1250,66.7500,18400,0 +920224,0.0000,66.5000,66.0000,66.3750,5300,0 +920225,0.0000,65.7500,65.5000,65.6250,4900,0 +920226,0.0000,66.0000,65.2500,66.0000,4000,0 +920227,0.0000,65.7500,65.1250,65.1250,17700,0 +920228,0.0000,65.0000,64.5000,64.6250,19100,0 +920302,0.0000,64.7500,64.2500,64.5000,7300,0 +920303,0.0000,63.2500,62.7500,63.0000,20200,0 +920304,0.0000,62.0000,61.5000,62.0000,10900,0 +920305,0.0000,60.5000,60.2500,60.5000,22200,0 +920306,0.0000,60.0000,59.6250,59.8750,26100,0 +920309,0.0000,59.0000,58.5000,59.0000,12500,0 +920310,0.0000,58.5000,57.7500,58.0000,27500,0 +920311,0.0000,57.0000,56.2500,56.5000,10000,0 +920312,0.0000,58.7500,57.0000,58.7500,14400,0 +920313,0.0000,58.1250,57.7500,57.7500,4300,0 +920316,0.0000,57.2500,56.6250,57.0000,10000,0 +920317,0.0000,57.7500,56.7500,57.7500,6600,0 +920318,0.0000,58.5000,57.6250,58.0000,25000,0 +920319,0.0000,58.7500,58.0000,58.7500,28400,0 +920320,0.0000,58.2500,58.0000,58.2500,14100,0 +920323,0.0000,58.2500,58.0000,58.1250,7900,0 +920324,0.0000,58.7500,57.7500,58.7500,14200,0 +920325,0.0000,59.5000,59.0000,59.2500,12300,0 +920326,0.0000,59.7500,59.0000,59.0000,5700,0 +920327,0.0000,59.0000,58.3750,58.6250,13300,0 +920330,0.0000,58.8750,58.0000,58.8750,8500,0 +920331,0.0000,58.7500,58.5000,58.7500,8000,0 +920401,0.0000,57.2500,56.7500,57.1250,33000,0 +920402,0.0000,58.0000,56.8750,58.0000,8700,0 +920403,0.0000,57.6250,57.2500,57.6250,8100,0 +920406,0.0000,59.2500,58.6250,59.0000,7500,0 +920407,0.0000,59.0000,58.2500,58.7500,10000,0 +920408,0.0000,58.6250,58.0000,58.3750,11900,0 +920409,0.0000,60.8750,58.5000,60.8750,38400,0 +920410,0.0000,62.2500,61.2500,61.6250,31300,0 +920413,0.0000,61.0000,60.5000,60.7500,13500,0 +920414,0.0000,62.7500,61.0000,62.2500,23800,0 +920415,0.0000,62.7500,62.2500,62.7500,33100,0 +920416,0.0000,62.8750,62.5000,62.6250,21400,0 +920420,0.0000,61.6250,61.0000,61.1250,6300,0 +920421,0.0000,61.6250,60.8750,61.2500,4100,0 +920422,0.0000,61.8750,61.5000,61.8750,4600,0 +920423,0.0000,62.6250,62.2500,62.5000,13000,0 +920424,0.0000,62.8750,62.2500,62.5000,3300,0 +920427,0.0000,63.3750,63.1250,63.3750,5800,0 +920428,0.0000,64.1250,63.2500,64.1250,22100,0 +920429,0.0000,64.0000,63.5000,63.8750,12000,0 +920430,0.0000,64.2500,63.5000,64.2500,7600,0 +920501,0.0000,64.0000,63.5000,64.0000,8100,0 +920504,0.0000,64.6250,63.6250,64.2500,15800,0 +920505,0.0000,64.1250,64.0000,64.0000,7100,0 +920506,0.0000,64.3750,64.0000,64.3750,33200,0 +920507,0.0000,65.6250,65.0000,65.1250,28800,0 +920508,0.0000,65.3750,64.7500,65.2500,14600,0 +920511,0.0000,64.8750,64.5000,64.7500,17400,0 +920512,0.0000,64.7500,64.5000,64.5000,2500,0 +920513,0.0000,64.8750,64.5000,64.7500,7200,0 +920514,0.0000,64.5000,63.7500,64.2500,14900,0 +920515,0.0000,63.0000,62.8750,63.0000,9200,0 +920518,0.0000,64.7500,64.0000,64.6250,9600,0 +920519,0.0000,65.6250,65.0000,65.5000,29400,0 +920520,0.0000,64.8750,64.6250,64.6250,7000,0 +920521,0.0000,63.8750,63.7500,63.8750,4400,0 +920522,0.0000,63.5000,63.1250,63.5000,6300,0 +920526,0.0000,63.6250,63.2500,63.3750,13900,0 +920527,0.0000,62.1250,61.7500,61.8750,18900,0 +920528,0.0000,62.5000,62.1250,62.5000,11600,0 +920529,0.0000,63.0000,62.6250,62.8750,8100,0 +920601,0.0000,63.0000,62.0000,63.0000,4700,0 +920602,0.0000,63.1250,62.7500,63.1250,9900,0 +920603,0.0000,63.1250,62.6250,62.6250,5100,0 +920604,0.0000,62.2500,61.5000,62.0000,11900,0 +920605,0.0000,62.7500,62.1250,62.6250,10300,0 +920608,0.0000,62.6250,62.3750,62.6250,2700,0 +920609,0.0000,62.8750,62.3750,62.3750,2100,0 +920610,0.0000,62.1250,61.8750,62.0000,12100,0 +920611,0.0000,62.3750,62.1250,62.2500,13200,0 +920612,0.0000,62.1250,61.8750,62.1250,3900,0 +920615,0.0000,61.0000,60.5000,61.0000,11900,0 +920616,0.0000,60.8750,60.3750,60.8750,15500,0 +920617,0.0000,60.3750,60.1250,60.1250,24200,0 +920618,0.0000,61.0000,59.8750,60.7500,26600,0 +920619,0.0000,61.3750,60.7500,61.0000,3700,0 +920622,0.0000,60.2500,59.5000,60.0000,21700,0 +920623,0.0000,60.2500,59.8750,60.1250,6100,0 +920624,0.0000,59.8750,59.6250,59.6250,9600,0 +920625,0.0000,61.5000,60.2500,61.2500,8600,0 +920626,0.0000,59.7500,59.2500,59.5000,24400,0 +920629,0.0000,59.8750,59.2500,59.7500,13400,0 +920630,0.0000,60.1250,59.7500,60.0000,6700,0 +920701,0.0000,62.6250,62.1250,62.2500,28600,0 +920702,0.0000,64.8750,64.0000,64.6250,47600,0 +920706,0.0000,63.7500,63.1250,63.3750,14900,0 +920707,0.0000,63.0000,62.7500,62.8750,15300,0 +920708,0.0000,63.6250,63.0000,63.6250,18700,0 +920709,0.0000,64.2500,63.6250,63.8750,11300,0 +920710,0.0000,64.0000,63.7500,64.0000,26600,0 +920713,0.0000,65.1250,64.7500,65.0000,8200,0 +920714,0.0000,64.5000,64.2500,64.5000,2700,0 +920715,0.0000,64.5000,64.0000,64.2500,4200,0 +920716,0.0000,64.0000,63.8750,64.0000,6000,0 +920717,0.0000,63.1250,62.5000,62.7500,13700,0 +920720,0.0000,61.2500,60.8750,61.2500,21500,0 +920721,0.0000,60.7500,60.3750,60.5000,17500,0 +920722,0.0000,59.2500,59.0000,59.2500,27900,0 +920723,0.0000,59.6250,59.3750,59.6250,29500,0 +920724,0.0000,58.7500,58.2500,58.6250,31400,0 +920727,0.0000,58.5000,57.8750,58.3750,39700,0 +920728,0.0000,58.2500,57.7500,58.2500,41200,0 +920729,0.0000,57.3750,56.0000,57.3750,82000,0 +920730,0.0000,56.8750,56.5000,56.7500,63500,0 +920731,0.0000,57.3750,56.8750,57.1250,45100,0 +920803,0.0000,57.1250,56.8750,57.0000,23900,0 +920804,0.0000,58.2500,57.3750,57.8750,28800,0 +920805,0.0000,59.2500,58.6250,58.8750,37300,0 +920806,0.0000,59.7500,59.0000,59.5000,51400,0 +920807,0.0000,58.7500,58.3750,58.7500,55900,0 +920810,0.0000,58.6250,58.0000,58.6250,36000,0 +920811,0.0000,58.1250,57.8750,58.1250,57100,0 +920812,0.0000,58.1250,57.8750,58.1250,30100,0 +920813,0.0000,58.3750,58.0000,58.2500,31200,0 +920814,0.0000,59.0000,58.3750,58.3750,23700,0 +920817,0.0000,59.5000,59.2500,59.5000,6300,0 +920818,0.0000,57.8750,57.5000,57.8750,57400,0 +920819,0.0000,58.6250,58.0000,58.5000,19300,0 +920820,0.0000,60.2500,59.7500,60.2500,14200,0 +920821,0.0000,63.5000,62.3750,62.7500,62100,0 +920824,0.0000,65.0000,63.2500,63.2500,70300,0 +920825,0.0000,63.8750,63.3750,63.8750,24100,0 +920826,0.0000,63.7500,63.1250,63.3750,9100,0 +920827,0.0000,64.8750,64.2500,64.8750,21400,0 +920828,0.0000,65.0000,64.5000,64.7500,40700,0 +920831,0.0000,64.8750,64.6250,64.7500,10800,0 +920901,0.0000,64.2500,63.2500,63.7500,32000,0 +920902,0.0000,63.2500,62.7500,63.1250,15000,0 +920903,0.0000,66.2500,65.0000,66.2500,100500,0 +920904,0.0000,66.6250,66.0000,66.0000,20900,0 +920908,0.0000,65.2500,64.6250,65.2500,41800,0 +920909,0.0000,65.7500,65.5000,65.7500,21800,0 +920910,0.0000,65.6250,65.1250,65.3750,15100,0 +920911,0.0000,63.8750,63.3750,63.5000,13800,0 +920914,0.0000,64.1250,63.5000,64.0000,9300,0 +920915,0.0000,64.5000,64.0000,64.1250,12500,0 +920916,0.0000,63.3750,62.7500,63.1250,13000,0 +920917,0.0000,63.5000,62.8750,63.0000,13500,0 +920918,0.0000,63.3750,63.1250,63.3750,7500,0 +920921,0.0000,63.1250,63.0000,63.0000,14200,0 +920922,0.0000,63.5000,63.0000,63.2500,9600,0 +920923,0.0000,63.5000,63.1250,63.3750,11100,0 +920924,0.0000,63.3750,63.1250,63.2500,900,0 +920925,0.0000,63.2500,62.6250,63.0000,12000,0 +920928,0.0000,62.8750,62.5000,62.8750,8600,0 +920929,0.0000,62.6250,62.1250,62.2500,5000,0 +920930,0.0000,61.2500,60.8750,61.0000,11500,0 +921001,0.0000,61.5000,60.8750,61.5000,19800,0 +921002,0.0000,61.2500,61.1250,61.2500,700,0 +921005,0.0000,61.5000,59.7500,60.7500,57900,0 +921006,0.0000,61.7500,61.2500,61.7500,5400,0 +921007,0.0000,61.8750,61.7500,61.7500,2800,0 +921008,0.0000,61.7500,61.5000,61.6250,4100,0 +921009,0.0000,61.3750,61.2500,61.2500,1700,0 +921012,0.0000,62.3750,62.1250,62.2500,3900,0 +921013,0.0000,62.5000,62.0000,62.5000,9800,0 +921014,0.0000,62.7500,62.3750,62.7500,12700,0 +921015,0.0000,62.8750,62.7500,62.8750,5200,0 +921016,0.0000,62.5000,62.1250,62.2500,11300,0 +921019,0.0000,61.1250,61.0000,61.1250,14500,0 +921020,0.0000,60.0000,59.6250,59.6250,18000,0 +921021,0.0000,59.8750,59.5000,59.7500,43100,0 +921022,0.0000,59.8750,59.5000,59.7500,15700,0 +921023,0.0000,59.1250,59.0000,59.1250,13800,0 +921026,0.0000,58.5000,58.1250,58.1250,19000,0 +921027,0.0000,59.2500,58.5000,59.2500,32700,0 +921028,0.0000,58.7500,58.5000,58.7500,14400,0 +921029,0.0000,58.1250,57.6250,58.0000,17500,0 +921030,0.0000,58.0000,57.7500,58.0000,28300,0 +921102,58.2500,58.6250,58.1250,58.6250,18000,0 +921103,59.2500,59.3750,58.5000,59.3750,32100,0 +921104,59.5000,59.8750,59.5000,59.7500,7700,0 +921105,59.3750,59.6250,59.2500,59.5000,25800,0 +921106,58.7500,59.0000,58.6250,59.0000,33200,0 +921109,58.1250,58.3750,58.0000,58.3750,25100,0 +921110,58.2500,58.3750,58.2500,58.3750,7600,0 +921111,57.8750,58.0000,57.8750,58.0000,20500,0 +921112,57.8750,57.8750,57.7500,57.8750,9700,0 +921113,57.2500,57.3750,57.0000,57.3750,11100,0 +921116,56.2500,56.5000,56.2500,56.5000,9700,0 +921117,56.3750,56.6250,56.3750,56.5000,19300,0 +921118,58.2500,58.8750,58.2500,58.7500,28400,0 +921119,58.7500,58.7500,58.0000,58.2500,3100,0 +921120,57.3750,57.6250,57.3750,57.5000,5500,0 +921123,57.5000,57.5000,57.2500,57.3750,8600,0 +921124,57.0000,57.7500,56.8750,56.8750,12600,0 +921125,57.1250,57.2500,56.6250,56.7500,23700,0 +921127,57.6250,58.0000,57.6250,57.8750,15100,0 +921130,58.7500,58.7500,58.3750,58.7500,41500,0 +921201,58.0000,58.3750,57.7500,58.3750,28300,0 +921202,58.3750,58.3750,58.1250,58.2500,21600,0 +921203,58.1250,58.3750,58.1250,58.2500,7100,0 +921204,58.1250,58.1250,57.8750,58.1250,7300,0 +921207,58.2500,58.7500,58.1250,58.7500,20900,0 +921208,59.1250,59.2500,59.0000,59.2500,11000,0 +921209,58.8750,59.0000,58.8750,58.8750,11800,0 +921210,60.1250,60.1250,59.7500,59.8750,81500,0 +921211,59.7500,60.0000,59.7500,59.8750,5600,0 +921214,59.8750,60.1250,59.7500,59.7500,16400,0 +921215,59.8750,60.1250,59.8750,59.8750,13300,0 +921216,59.8750,60.0000,59.7500,60.0000,2900,0 +921217,60.5000,60.6250,60.3750,60.6250,10900,0 +921218,61.1250,61.1250,60.7500,60.8750,33500,0 +921221,60.7500,61.0000,60.7500,60.7500,7100,0 +921222,60.5000,61.0000,60.5000,61.0000,23100,0 +921223,61.0000,61.0000,60.7500,60.8750,39900,0 +921224,60.7500,61.0000,60.7500,60.8750,9600,0 +921228,60.2500,60.3750,59.8750,59.8750,25400,0 +921229,59.8750,60.0000,59.8750,59.8750,18600,0 +921230,60.0000,60.2500,60.0000,60.1250,23500,0 +921231,60.1250,60.2500,59.8750,59.8750,14900,0 +930104,60.0000,60.5000,60.0000,60.3750,5200,0 +930105,60.3750,60.6250,60.3750,60.6250,6100,0 +930106,60.5000,60.6250,60.5000,60.5000,28800,0 +930107,60.7500,60.7500,60.5000,60.5000,25800,0 +930108,60.0000,60.3750,60.0000,60.2500,16800,0 +930111,60.2500,60.6250,60.2500,60.5000,21200,0 +930112,60.3750,60.3750,60.1250,60.1250,23000,0 +930113,58.8750,59.0000,58.8750,58.8750,10000,0 +930114,58.7500,58.7500,58.5000,58.5000,11400,0 +930115,58.5000,58.8750,58.5000,58.8750,22100,0 +930118,58.7500,58.7500,58.6250,58.7500,4800,0 +930119,58.6250,58.8750,58.5000,58.5000,4000,0 +930120,58.2500,58.2500,58.0000,58.1250,1600,0 +930121,57.8750,57.8750,57.6250,57.6250,3400,0 +930122,56.7500,57.2500,56.2500,57.1250,14600,0 +930125,56.2500,57.2500,56.2500,57.2500,14100,0 +930126,56.5000,56.6250,56.5000,56.5000,11400,0 +930127,56.3750,56.3750,55.5000,55.7500,19800,0 +930128,57.0000,57.0000,56.7500,56.7500,47000,0 +930129,57.8750,58.0000,57.5000,57.5000,17200,0 +930201,57.5000,57.5000,57.2500,57.2500,9400,0 +930202,56.8750,57.0000,56.7500,56.8750,21900,0 +930203,57.2500,57.7500,57.2500,57.5000,29000,0 +930204,57.5000,57.7500,57.3750,57.7500,4000,0 +930205,57.6250,57.6250,57.1250,57.3750,13500,0 +930208,57.7500,57.7500,57.6250,57.7500,14600,0 +930209,57.7500,57.8750,57.6250,57.7500,6900,0 +930210,57.7500,57.7500,57.7500,57.7500,4000,0 +930211,58.0000,58.0000,57.7500,57.7500,5900,0 +930212,57.6250,57.7500,56.7500,56.7500,21700,0 +930216,56.7500,56.7500,56.3750,56.3750,30600,0 +930217,56.5000,56.5000,56.2500,56.3750,1800,0 +930218,56.3750,56.7500,56.3750,56.7500,4300,0 +930219,56.6250,56.8750,56.6250,56.8750,2500,0 +930222,57.5000,57.7500,57.5000,57.7500,7200,0 +930223,57.5000,57.5000,57.2500,57.2500,3900,0 +930224,57.0000,57.0000,57.0000,57.0000,5200,0 +930225,57.3750,57.3750,57.1250,57.1250,6700,0 +930226,58.0000,58.0000,57.7500,57.7500,11100,0 +930301,57.7500,58.0000,57.7500,57.7500,9200,0 +930302,58.0000,58.2500,58.0000,58.1250,4100,0 +930303,58.1250,58.3750,58.1250,58.3750,3800,0 +930304,58.2500,58.3750,58.2500,58.3750,5200,0 +930305,59.1250,59.2500,58.7500,58.8750,18600,0 +930308,61.1250,61.1250,60.7500,61.0000,53100,0 +930309,62.8750,62.8750,62.2500,62.2500,43600,0 +930310,62.3750,62.5000,62.2500,62.5000,10700,0 +930311,63.0000,63.5000,63.0000,63.3750,24900,0 +930312,63.6250,63.6250,62.3750,63.1250,31800,0 +930315,63.2500,63.5000,63.2500,63.2500,14200,0 +930316,64.0000,64.3750,64.0000,64.1250,13300,0 +930317,64.3750,64.7500,64.3750,64.6250,12600,0 +930318,65.7500,66.0000,65.7500,66.0000,31000,0 +930319,66.3750,66.5000,66.2500,66.2500,12400,0 +930322,66.5000,66.7500,66.3750,66.7500,27700,0 +930323,66.0000,66.0000,65.3750,65.5000,14500,0 +930324,64.2500,64.3750,64.1250,64.3750,15000,0 +930325,66.3750,66.3750,66.1250,66.3750,15300,0 +930326,70.6250,70.6250,70.5000,70.5000,42000,0 +930329,72.0000,72.3750,71.7500,72.3750,48400,0 +930330,72.3750,72.3750,71.7500,72.0000,15300,0 +930331,72.2500,73.3750,72.2500,73.3750,29300,0 +930401,74.6250,74.8750,74.5000,74.7500,21800,0 +930402,74.6250,74.6250,74.2500,74.2500,22200,0 +930405,77.2500,77.7500,77.0000,77.7500,42200,0 +930406,77.5000,77.6250,77.0000,77.2500,11400,0 +930407,78.5000,79.8750,78.5000,79.8750,27400,0 +930408,79.3750,79.3750,77.0000,77.7500,57100,0 +930412,76.8750,77.1250,76.5000,76.8750,19900,0 +930413,79.1250,79.5000,79.0000,79.5000,20000,0 +930414,79.1250,79.2500,79.1250,79.2500,7700,0 +930415,79.2500,79.2500,79.0000,79.1250,11000,0 +930416,77.5000,77.5000,77.0000,77.2500,8300,0 +930419,76.2500,76.2500,75.6250,75.6250,15900,0 +930420,74.2500,74.5000,74.0000,74.0000,23700,0 +930421,74.6250,75.2500,74.6250,75.1250,13500,0 +930422,74.5000,74.7500,74.3750,74.3750,7300,0 +930423,73.8750,73.8750,73.5000,73.5000,3400,0 +930426,76.0000,76.0000,75.5000,76.0000,17400,0 +930427,77.5000,78.3750,77.5000,78.3750,37200,0 +930428,79.2500,79.7500,79.1250,79.1250,26700,0 +930429,79.5000,80.1250,79.3750,80.1250,14200,0 +930430,83.0000,84.0000,82.8750,84.0000,42700,0 +930503,83.6250,83.6250,83.5000,83.6250,13100,0 +930504,83.6250,84.1250,83.6250,84.0000,16900,0 +930505,84.2500,84.7500,84.0000,84.6250,32700,0 +930506,82.7500,83.2500,82.7500,83.0000,28300,0 +930507,83.0000,83.0000,82.0000,82.0000,24700,0 +930510,82.8750,83.5000,82.8750,83.2500,12300,0 +930511,81.3750,82.1250,81.3750,82.0000,14800,0 +930512,79.7500,80.0000,79.2500,80.0000,21000,0 +930513,79.0000,79.5000,79.0000,79.5000,6700,0 +930514,79.2500,79.7500,79.2500,79.7500,8200,0 +930517,79.5000,79.7500,79.0000,79.0000,9100,0 +930518,78.0000,78.0000,77.7500,78.0000,6900,0 +930519,78.7500,79.3750,78.6250,79.3750,28600,0 +930520,79.1250,79.2500,79.1250,79.2500,3600,0 +930521,79.8750,79.8750,79.6250,79.6250,20400,0 +930524,79.6250,80.0000,79.6250,79.8750,5800,0 +930525,79.5000,80.0000,79.1250,79.7500,16000,0 +930526,79.5000,79.7500,79.2500,79.5000,5200,0 +930527,79.2500,79.3750,79.1250,79.3750,11300,0 +930528,79.3750,79.6250,79.3750,79.5000,4200,0 +930601,79.1250,79.3750,78.7500,79.1250,16000,0 +930602,79.8750,80.0000,79.7500,79.7500,10200,0 +930603,82.2500,82.2500,82.0000,82.1250,21800,0 +930604,81.7500,82.0000,81.7500,81.8750,2300,0 +930607,81.8750,81.8750,81.6250,81.8750,10800,0 +930608,81.0000,81.0000,80.3750,80.6250,3800,0 +930609,80.3750,80.6250,80.1250,80.6250,6900,0 +930610,80.5000,80.5000,79.2500,79.5000,21200,0 +930611,81.0000,81.2500,80.7500,80.8750,7400,0 +930614,81.5000,81.5000,81.2500,81.2500,11800,0 +930615,79.6250,79.7500,79.2500,79.7500,18400,0 +930616,79.5000,79.7500,79.3750,79.5000,26000,0 +930617,78.7500,78.8750,77.7500,77.8750,12600,0 +930618,76.5000,76.5000,74.6250,74.6250,25800,0 +930621,72.0000,72.0000,70.5000,70.5000,59600,0 +930622,71.7500,72.0000,70.7500,71.5000,55200,0 +930623,72.5000,73.1250,72.2500,72.2500,53300,0 +930624,73.1250,73.5000,73.1250,73.3750,6100,0 +930625,74.5000,75.2500,74.5000,75.0000,16100,0 +930628,75.6250,76.0000,75.2500,76.0000,12700,0 +930629,74.8750,75.5000,74.8750,75.5000,7700,0 +930630,75.5000,75.5000,75.0000,75.1250,3800,0 +930701,75.6250,75.7500,75.5000,75.7500,4300,0 +930702,75.1250,75.1250,74.1250,74.1250,4200,0 +930706,76.0000,76.0000,75.6250,75.6250,5500,0 +930707,76.7500,76.8750,76.5000,76.5000,10800,0 +930708,76.0000,76.0000,75.7500,75.7500,600,0 +930709,76.7500,76.7500,76.0000,76.0000,18300,0 +930712,76.7500,77.0000,76.6250,77.0000,6400,0 +930713,78.7500,78.7500,78.2500,78.3750,25300,0 +930714,78.6250,79.3750,78.5000,79.3750,10800,0 +930715,80.2500,80.2500,79.5000,79.5000,6300,0 +930716,80.5000,81.6250,80.5000,81.6250,15000,0 +930719,81.3750,81.3750,80.8750,81.0000,4400,0 +930720,80.6250,80.8750,80.6250,80.8750,1400,0 +930721,79.2500,79.6250,79.0000,79.5000,6800,0 +930722,79.2500,79.7500,79.2500,79.7500,8400,0 +930723,78.0000,78.0000,77.8750,77.8750,13700,0 +930726,77.8750,78.1250,77.7500,77.7500,8000,0 +930727,77.7500,78.5000,77.7500,78.5000,7100,0 +930728,79.2500,79.6250,79.2500,79.3750,900,0 +930729,80.7500,80.7500,80.5000,80.6250,6100,0 +930730,81.2500,81.6250,81.2500,81.2500,13900,0 +930802,81.3750,81.6250,81.3750,81.6250,7000,0 +930803,80.6250,80.6250,80.2500,80.5000,6300,0 +930804,80.5000,80.7500,80.5000,80.5000,900,0 +930805,81.2500,81.2500,80.8750,81.0000,1900,0 +930806,81.0000,81.0000,80.5000,80.5000,1500,0 +930809,80.5000,81.2500,80.2500,81.2500,10900,0 +930810,82.0000,82.2500,81.8750,81.8750,13700,0 +930811,82.6250,83.0000,82.6250,82.8750,33700,0 +930812,82.7500,83.3750,82.6250,83.3750,12200,0 +930813,83.5000,83.5000,83.0000,83.0000,2400,0 +930816,84.0000,84.5000,84.0000,84.3750,7700,0 +930817,83.0000,84.3750,83.0000,84.3750,12400,0 +930818,83.0000,83.7500,82.8750,83.7500,19500,0 +930819,83.5000,83.5000,81.2500,81.5000,17300,0 +930820,80.8750,80.8750,80.1250,80.7500,10900,0 +930823,80.7500,81.2500,80.7500,81.2500,10800,0 +930824,81.0000,81.0000,80.5000,81.0000,1800,0 +930825,80.5000,80.5000,80.1250,80.3750,3500,0 +930826,80.3750,80.8750,80.3750,80.8750,1500,0 +930827,81.3750,81.6250,81.2500,81.2500,4200,0 +930830,81.1250,81.5000,81.1250,81.5000,2100,0 +930831,81.0000,81.0000,80.3750,80.6250,7100,0 +930901,80.7500,80.7500,80.5000,80.5000,3000,0 +930902,81.0000,81.2500,81.0000,81.1250,2500,0 +930903,83.2500,83.6250,83.2500,83.2500,18500,0 +930907,83.7500,83.8750,83.3750,83.3750,11300,0 +930908,82.3750,82.3750,82.0000,82.0000,900,0 +930909,82.0000,82.5000,82.0000,82.2500,4900,0 +930910,82.2500,82.2500,82.0000,82.2500,7800,0 +930913,82.7500,83.0000,82.7500,83.0000,7100,0 +930914,82.3750,82.6250,82.3750,82.6250,31300,0 +930915,82.3750,82.6250,82.3750,82.3750,9900,0 +930916,80.6250,80.7500,80.6250,80.7500,5300,0 +930917,79.6250,79.8750,79.5000,79.6250,7700,0 +930920,78.1250,78.5000,78.0000,78.2500,12400,0 +930921,78.0000,78.0000,77.0000,77.0000,11600,0 +930922,77.5000,78.5000,77.5000,78.0000,11400,0 +930923,78.0000,78.6250,78.0000,78.5000,8600,0 +930924,78.3750,79.3750,78.3750,78.7500,7300,0 +930927,78.6250,78.6250,78.0000,78.2500,7700,0 +930928,78.1250,78.5000,78.1250,78.2500,2900,0 +930929,77.3750,77.7500,77.3750,77.7500,6900,0 +930930,77.5000,77.5000,77.3750,77.3750,3200,0 +931001,76.7500,78.0000,76.7500,77.7500,13400,0 +931004,78.0000,78.0000,77.7500,77.7500,6300,0 +931005,78.5000,79.0000,78.1250,78.1250,23800,0 +931006,79.8750,80.3750,79.7500,79.7500,23800,0 +931007,79.7500,80.0000,79.7500,79.7500,6700,0 +931008,80.0000,80.2500,80.0000,80.0000,23000,0 +931011,80.2500,80.5000,79.7500,79.7500,14400,0 +931012,79.0000,79.5000,78.7500,79.0000,7100,0 +931013,79.0000,79.0000,78.5000,79.0000,9600,0 +931014,78.0000,78.0000,77.2500,77.7500,10600,0 +931015,78.5000,78.7500,77.7500,78.5000,15500,0 +931018,78.5000,78.5000,77.3750,78.0000,23000,0 +931019,78.5000,78.5000,78.0000,78.5000,6200,0 +931020,78.6250,79.2500,78.6250,78.7500,5000,0 +931021,78.5000,79.0000,78.3750,78.3750,3400,0 +931022,79.5000,79.7500,79.5000,79.5000,5100,0 +931025,79.0000,79.5000,79.0000,79.5000,6800,0 +931026,78.5000,78.8750,78.3750,78.5000,8400,0 +931027,78.0000,78.0000,77.6250,77.6250,2900,0 +931028,77.1250,77.2500,76.7500,77.0000,7500,0 +931029,78.7500,79.2500,78.7500,79.2500,6300,0 +931101,78.7500,79.1250,78.5000,78.8750,6100,0 +931102,78.3750,79.0000,78.3750,78.7500,4200,0 +931103,79.0000,79.0000,78.1250,78.5000,12600,0 +931104,77.5000,77.5000,76.0000,76.5000,22100,0 +931105,75.8750,75.8750,74.7500,75.5000,47600,0 +931108,75.6250,76.0000,75.6250,75.6250,10000,0 +931109,74.5000,74.5000,73.7500,74.0000,9800,0 +931110,74.6250,74.8750,74.6250,74.8750,3400,0 +931111,75.0000,75.5000,74.8750,75.2500,4700,0 +931112,76.0000,76.7500,76.0000,76.5000,5900,0 +931115,75.8750,75.8750,75.0000,75.2500,6700,0 +931116,75.0000,75.7500,75.0000,75.0000,4500,0 +931117,75.0000,75.0000,74.2500,74.2500,4900,0 +931118,75.5000,76.0000,75.5000,76.0000,5000,0 +931119,74.2500,74.5000,74.0000,74.3750,7500,0 +931122,72.7500,73.2500,72.2500,73.2500,14500,0 +931123,73.0000,73.0000,72.5000,73.0000,4600,0 +931124,72.1250,72.7500,72.1250,72.2500,13200,0 +931126,70.0000,70.0000,69.8750,69.8750,7400,0 +931129,67.5000,68.0000,67.0000,67.7500,27500,0 +931130,69.5000,70.2500,69.5000,70.1250,12800,0 +931201,72.7500,73.1250,72.6250,73.1250,7100,0 +931202,73.1250,73.8750,73.1250,73.1250,15000,0 +931203,72.5000,72.6250,72.1250,72.3750,9200,0 +931206,71.2500,71.5000,71.0000,71.0000,6300,0 +931207,70.8750,71.3750,70.8750,71.2500,5900,0 +931208,70.5000,72.0000,70.5000,72.0000,10700,0 +931209,72.7500,72.8750,72.5000,72.5000,14000,0 +931210,74.5000,74.5000,74.2500,74.3750,7000,0 +931213,76.3750,77.0000,76.1250,77.0000,22400,0 +931214,75.1250,75.1250,74.6250,74.8750,5700,0 +931215,75.6250,76.7500,75.6250,76.2500,6700,0 +931216,76.3750,76.3750,75.6250,75.8750,4600,0 +931217,75.7500,76.1250,75.6250,76.1250,4600,0 +931220,74.0000,74.6250,73.3750,73.3750,6200,0 +931221,73.6250,73.7500,73.3750,73.6250,4700,0 +931222,73.0000,73.1250,72.7500,72.8750,3000,0 +931223,73.3750,73.5000,72.5000,72.5000,8000,0 +931227,71.1250,71.6250,70.8750,71.6250,3900,0 +931228,72.7500,72.8750,72.5000,72.5000,8300,0 +931229,72.2500,72.7500,72.2500,72.7500,3300,0 +931230,72.6250,73.0000,72.2500,72.5000,10800,0 +931231,73.3750,73.5000,73.3750,73.5000,1700,0 +940103,73.2500,73.3750,72.6250,72.6250,7000,0 +940104,72.0000,72.5000,72.0000,72.5000,17000,0 +940105,74.2500,74.2500,73.7500,74.2500,41700,0 +940106,73.0000,73.6250,73.0000,73.0000,5200,0 +940107,74.0000,74.8750,73.8750,74.6250,12600,0 +940110,75.2500,76.5000,75.0000,76.5000,40800,0 +940111,74.6250,75.3750,74.6250,75.3750,51300,0 +940112,75.3750,76.3750,75.3750,76.3750,34100,0 +940113,75.7500,76.5000,75.5000,76.2500,21200,0 +940114,76.5000,77.6250,76.5000,77.5000,41500,0 +940117,77.1250,77.2500,76.7500,77.1250,40300,0 +940118,76.5000,76.8750,76.3750,76.7500,4900,0 +940119,77.2500,77.8750,77.2500,77.8750,7200,0 +940120,77.1250,77.3750,76.7500,77.3750,10400,0 +940121,74.5000,75.2500,74.1250,74.8750,17600,0 +940124,73.1250,73.7500,73.0000,73.7500,23500,0 +940125,75.0000,75.5000,75.0000,75.5000,15600,0 +940126,76.5000,76.8750,76.5000,76.7500,8400,0 +940127,76.8750,76.8750,76.0000,76.6250,3500,0 +940128,77.3750,80.7500,77.3750,80.7500,38200,0 +940131,83.0000,84.2500,83.0000,84.2500,42200,0 +940201,82.7500,83.5000,82.0000,83.2500,34700,0 +940202,82.8750,83.7500,82.3750,83.5000,18000,0 +940203,80.5000,81.5000,80.2500,81.2500,18000,0 +940204,81.3750,81.3750,80.2500,80.3750,5700,0 +940207,80.0000,81.8750,80.0000,81.7500,27800,0 +940208,83.0000,83.0000,82.2500,82.2500,8200,0 +940209,82.3750,83.1250,82.3750,82.6250,8000,0 +940210,82.7500,83.1250,82.7500,83.0000,8200,0 +940211,83.0000,83.6250,83.0000,83.2500,6500,0 +940215,84.7500,85.2500,84.7500,85.0000,20500,0 +940216,84.0000,84.5000,83.8750,84.0000,22400,0 +940217,84.5000,84.8750,84.1250,84.3750,10100,0 +940218,84.5000,85.3750,84.5000,85.3750,10800,0 +940222,84.7500,85.3750,84.6250,85.0000,14600,0 +940301,91.2500,91.7500,90.2500,90.3750,26000,0 +940302,90.3750,90.3750,89.0000,89.7500,16600,0 +940303,89.7500,90.0000,89.5000,90.0000,20000,0 +940304,88.5000,88.8750,87.7500,87.7500,13500,0 +940307,87.8750,88.5000,87.8750,88.1250,14700,0 +940308,87.5000,88.3750,87.5000,88.1250,28200,0 +940309,87.2500,87.5000,86.5000,86.7500,11600,0 +940310,87.7500,88.0000,87.3750,87.8750,15400,0 +940311,88.6250,89.0000,87.5000,89.0000,35300,0 +940314,89.8750,90.0000,89.5000,89.8750,16400,0 +940315,89.8750,90.1250,89.3750,90.1250,18700,0 +940316,90.7500,91.0000,90.1250,90.8750,36100,0 +940317,91.8750,92.1250,91.5000,92.1250,18500,0 +940318,91.0000,91.8750,91.0000,91.7500,18600,0 +940321,91.0000,91.1250,90.7500,91.1250,11200,0 +940322,91.3750,91.3750,90.6250,91.3750,3600,0 +940323,89.8750,90.1250,89.3750,90.0000,9000,0 +940324,89.3750,89.7500,89.0000,89.3750,13600,0 +940325,91.0000,91.3750,90.0000,90.0000,17100,0 +940328,91.6250,92.0000,91.0000,91.0000,44000,0 +940329,91.5000,91.7500,91.0000,91.3750,27700,0 +940330,90.7500,91.1250,89.8750,90.1250,17300,0 +940331,89.3750,89.3750,88.0000,88.8750,24100,0 +940404,87.7500,88.2500,87.3750,87.6250,16200,0 +940405,90.3750,91.0000,89.7500,90.8750,26300,0 +940406,90.5000,90.5000,90.0000,90.3750,19000,0 +940407,90.5000,91.0000,90.5000,90.6250,10700,0 +940408,90.3750,90.5000,90.0000,90.5000,10500,0 +940411,92.3750,93.1250,92.2500,92.5000,20000,0 +940412,91.8750,92.8750,91.8750,92.8750,12000,0 +940413,93.3750,94.0000,92.8750,93.0000,31300,0 +940414,93.0000,93.6250,93.0000,93.6250,5600,0 +940415,94.1250,94.8750,94.1250,94.5000,50200,0 +940418,95.2500,95.6250,95.0000,95.6250,10200,0 +940419,95.0000,95.0000,94.2500,94.2500,10900,0 +940420,93.5000,93.5000,92.6250,92.6250,6900,0 +940421,92.0000,92.7500,91.7500,92.0000,15500,0 +940422,92.6250,92.6250,92.3750,92.6250,3300,0 +940425,92.7500,93.3750,92.5000,92.7500,30700,0 +940426,93.0000,93.1250,92.5000,92.8750,13800,0 +940428,93.7500,93.7500,92.5000,93.6250,14900,0 +940429,93.5000,94.8750,93.5000,94.8750,16200,0 +940502,94.0000,94.0000,93.2500,93.2500,2100,0 +940503,93.1250,93.7500,93.1250,93.7500,11000,0 +940504,93.5000,93.6250,93.5000,93.6250,3500,0 +940505,93.2500,93.2500,92.2500,92.5000,11600,0 +940506,92.8750,93.5000,92.5000,92.8750,16200,0 +940509,92.8750,93.3750,92.8750,93.2500,10600,0 +940510,93.0000,93.0000,92.3750,92.8750,14800,0 +940511,93.2500,93.5000,93.2500,93.5000,3900,0 +940512,93.2500,93.8750,93.2500,93.8750,9100,0 +940513,95.0000,95.2500,95.0000,95.0000,5200,0 +940516,95.0000,95.8750,95.0000,95.7500,36500,0 +940517,95.7500,95.7500,95.5000,95.7500,17900,0 +940518,96.3750,97.0000,96.2500,96.8750,18400,0 +940519,96.5000,96.5000,95.7500,96.2500,10300,0 +940520,96.3750,96.5000,96.0000,96.5000,9000,0 +940523,96.7500,97.1250,96.3750,97.1250,22800,0 +940524,97.2500,97.3750,97.0000,97.1250,51500,0 +940525,97.3750,97.5000,97.1250,97.5000,16600,0 +940526,97.2500,97.6250,97.2500,97.6250,9000,0 +940527,100.2500,101.2500,100.2500,101.2500,17700,0 +940531,103.3750,104.2500,102.8750,104.2500,6600,0 +940601,104.5000,105.3750,104.3750,104.6250,32400,0 +940602,102.7500,103.2500,102.7500,103.2500,4100,0 +940603,103.2500,103.5000,103.1250,103.2500,21700,0 +940606,101.0000,101.3750,101.0000,101.0000,10300,0 +940607,102.0000,102.7500,101.6250,102.7500,11400,0 +940608,105.0000,105.5000,105.0000,105.0000,28600,0 +940609,106.2500,106.2500,105.2500,105.7500,7600,0 +940610,105.7500,106.1250,105.7500,106.1250,2900,0 +940613,107.5000,107.6250,107.1250,107.3750,9400,0 +940614,106.3750,107.0000,106.1250,107.0000,5100,0 +940615,106.0000,106.0000,105.6250,105.7500,1700,0 +940616,105.0000,105.5000,105.0000,105.5000,8600,0 +940617,105.3750,105.8750,105.2500,105.2500,3300,0 +940620,103.8750,103.8750,102.2500,102.2500,13700,0 +940621,101.2500,101.5000,100.5000,100.8750,7400,0 +940622,101.0000,103.0000,101.0000,102.5000,14500,0 +940623,102.5000,102.8750,101.6250,102.2500,18200,0 +940624,102.2500,102.8750,101.6250,102.0000,24600,0 +940627,101.2500,101.3750,100.6250,101.3750,38300,0 +940628,101.3750,101.6250,101.0000,101.1250,35800,0 +940629,102.8750,103.0000,102.3750,102.5000,36000,0 +940630,104.2500,104.2500,104.0000,104.0000,10900,0 +940701,105.0000,105.1250,104.3750,104.8750,3100,0 +940705,110.6250,110.8750,110.5000,110.6250,4900,0 +940706,108.0000,109.3750,108.0000,109.3750,18100,0 +940707,109.0000,109.0000,107.5000,107.5000,7400,0 +940708,106.7500,107.1250,106.7500,106.7500,17800,0 +940711,105.5000,105.6250,104.8750,105.6250,6600,0 +940712,104.2500,104.3750,104.0000,104.1250,17800,0 +940713,103.2500,103.8750,102.8750,103.8750,17500,0 +940714,103.8750,104.3750,103.7500,104.1250,23900,0 +940715,104.0000,104.2500,103.6250,104.1250,36700,0 +940718,103.8750,103.8750,102.8750,103.0000,25600,0 +940719,103.6250,104.1250,103.6250,104.1250,26200,0 +940720,103.5000,103.5000,102.6250,102.6250,13100,0 +940721,102.7500,103.0000,102.2500,103.0000,9500,0 +940722,101.3750,101.8750,101.1250,101.8750,8300,0 +940725,100.0000,100.2500,99.5000,99.6250,14000,0 +940726,99.7500,99.7500,98.5000,99.0000,10700,0 +940727,98.0000,98.0000,97.2500,97.7500,25500,0 +940728,97.7500,97.7500,97.0000,97.7500,20900,0 +940729,97.7500,97.7500,97.1250,97.5000,15900,0 +940801,98.0000,98.7500,97.5000,98.7500,18000,0 +940802,101.2500,101.2500,100.6250,100.7500,13100,0 +940803,100.7500,101.0000,100.3750,100.8750,6400,0 +940804,101.6250,101.6250,101.0000,101.0000,4100,0 +940805,99.6250,99.7500,99.1250,99.1250,9300,0 +940808,99.7500,100.6250,99.7500,100.5000,6500,0 +940809,100.2500,100.2500,99.7500,99.8750,5500,0 +940810,99.8750,100.5000,99.7500,100.5000,8400,0 +940811,98.6250,100.3750,98.5000,99.7500,20700,0 +940812,99.3750,99.3750,99.0000,99.1250,2800,0 +940815,99.5000,100.7500,98.7500,99.8750,12200,0 +940816,99.6250,99.8750,99.1250,99.8750,3100,0 +940817,99.7500,100.6250,99.7500,100.6250,10700,0 +940818,101.5000,101.5000,100.7500,100.7500,9500,0 +940819,100.2500,100.3750,99.3750,100.0000,18500,0 +940822,99.6250,99.7500,99.1250,99.1250,3700,0 +940823,98.7500,99.5000,98.7500,99.5000,7400,0 +940824,99.6250,99.8750,99.0000,99.3750,5200,0 +940825,98.2500,98.2500,97.7500,97.7500,5500,0 +940826,97.0000,98.2500,97.0000,98.1250,6300,0 +940829,97.0000,97.8750,97.0000,97.8750,4600,0 +940830,98.0000,98.5000,97.7500,98.5000,8500,0 +940831,98.5000,99.5000,98.5000,99.3750,10600,0 +940901,99.3750,100.1250,99.3750,99.7500,6700,0 +940902,101.2500,101.3750,100.2500,101.2500,7300,0 +940906,100.2500,100.2500,99.7500,99.8750,2000,0 +940907,99.3750,99.6250,99.1250,99.5000,6400,0 +940908,98.5000,98.6250,98.2500,98.2500,4500,0 +940909,97.7500,98.0000,96.7500,96.8750,37700,0 +940912,97.5000,98.2500,97.5000,97.7500,4600,0 +940913,98.2500,98.6250,98.2500,98.2500,3200,0 +940914,98.2500,98.2500,98.2500,98.2500,200,0 +940915,98.2500,98.3750,98.0000,98.1250,11900,0 +940916,96.0000,97.2500,96.0000,97.2500,7600,0 +940919,96.0000,96.2500,96.0000,96.2500,2300,0 +940920,96.7500,96.7500,95.8750,95.8750,44500,0 +940921,97.5000,98.1250,97.0000,97.0000,15200,0 +940922,98.0000,98.2500,97.7500,98.0000,23400,0 +940923,98.0000,98.1250,98.0000,98.1250,1900,0 +940926,97.6250,98.5000,97.6250,98.5000,9700,0 +940927,97.6250,98.0000,97.1250,98.0000,6200,0 +940928,98.0000,98.0000,97.5000,97.5000,8300,0 +940929,97.6250,97.6250,96.8750,97.2500,8100,0 +940930,97.3750,97.7500,97.0000,97.2500,15500,0 +941003,96.8750,97.0000,96.6250,96.7500,1900,0 +941004,97.0000,97.2500,95.5000,95.8750,9400,0 +941005,96.7500,96.7500,96.3750,96.5000,11900,0 +941006,97.3750,97.5000,97.0000,97.0000,13300,0 +941007,98.1250,98.8750,98.1250,98.5000,16300,0 +941010,98.5000,98.5000,98.1250,98.5000,3400,0 +941011,99.5000,99.6250,98.8750,99.1250,18900,0 +941012,99.3750,99.3750,98.8750,98.8750,10100,0 +941013,100.2500,100.2500,99.8750,100.0000,3800,0 +941014,100.0000,100.3750,100.0000,100.1250,2600,0 +941017,101.1250,101.3750,101.1250,101.1250,7000,0 +941018,102.0000,102.2500,101.8750,102.1250,5800,0 +941019,101.8750,102.5000,101.7500,102.5000,14400,0 +941020,102.2500,102.3750,102.2500,102.3750,2700,0 +941021,101.8750,101.8750,101.2500,101.2500,2600,0 +941024,101.5000,102.6250,101.5000,102.2500,16200,0 +941025,102.0000,102.1250,101.5000,101.6250,6400,0 +941026,101.6250,102.5000,101.6250,102.1250,4000,0 +941027,102.6250,103.0000,102.5000,102.5000,12900,0 +941028,102.6250,102.6250,101.7500,101.7500,4300,0 +941031,102.5000,102.5000,102.1250,102.2500,5500,0 +941102,103.5000,103.5000,102.7500,102.7500,1400,0 +941103,102.2500,102.7500,102.2500,102.6250,5500,0 +941104,101.2500,102.0000,101.2500,101.7500,12100,0 +941107,100.6250,100.7500,100.2500,100.7500,11300,0 +941108,100.5000,100.5000,99.7500,99.8750,1400,0 +941109,99.2500,100.0000,98.5000,99.2500,22600,0 +941110,98.7500,98.8750,98.7500,98.8750,5800,0 +941111,98.7500,99.3750,98.7500,98.7500,9300,0 +941114,98.3750,99.0000,98.3750,99.0000,3800,0 +941115,98.8750,99.6250,98.8750,99.0000,13300,0 +941116,99.1250,99.5000,99.0000,99.5000,9600,0 +941117,99.5000,99.5000,99.3750,99.5000,1700,0 +941118,99.5000,99.5000,99.3750,99.5000,3300,0 +941121,97.5000,98.2500,97.5000,98.0000,4000,0 +941122,97.2500,97.2500,96.3750,96.7500,15500,0 +941123,96.7500,96.7500,96.2500,96.2500,1300,0 +941125,96.2500,96.2500,96.2500,96.2500,200,0 +941128,96.1250,96.3750,95.7500,96.3750,4300,0 +941129,96.8750,97.0000,96.2500,96.6250,3100,0 +941130,97.7500,97.7500,97.1250,97.5000,23100,0 +941201,98.2500,98.3750,97.3750,97.5000,5300,0 +941202,98.0000,98.1250,97.6250,98.1250,3400,0 +941205,98.6250,98.7500,98.2500,98.5000,8300,0 +941206,98.0000,98.7500,98.0000,98.7500,4500,0 +941207,97.8750,97.8750,97.8750,97.8750,500,0 +941208,98.0000,98.0000,98.0000,98.0000,200,0 +941209,96.7500,97.6250,96.2500,97.3750,18100,0 +941212,97.5000,97.5000,97.3750,97.5000,900,0 +941213,96.5000,96.8750,96.5000,96.5000,1800,0 +941214,96.5000,96.6250,96.2500,96.6250,18000,0 +941215,96.8750,96.8750,96.1250,96.2500,12500,0 +941216,95.6250,96.2500,95.6250,96.2500,10200,0 +941219,95.8750,96.2500,95.8750,96.1250,4400,0 +941220,96.7500,97.0000,96.5000,96.5000,10300,0 +941221,95.7500,96.6250,95.7500,96.2500,2800,0 +941222,96.1250,96.7500,96.0000,96.2500,4300,0 +941223,96.1250,96.6250,96.1250,96.5000,14000,0 +941227,97.7500,97.7500,97.2500,97.2500,800,0 +941228,97.2500,98.0000,97.2500,97.6250,10200,0 +941229,98.5000,98.7500,98.3750,98.7500,8700,0 +941230,98.5000,99.2500,98.5000,98.7500,2800,0 +950103,98.5000,98.6250,98.1250,98.6250,8900,0 +950104,98.0000,98.1250,97.8750,97.8750,1600,0 +950105,98.1250,98.1250,97.7500,98.0000,6900,0 +950106,98.2500,98.2500,97.8750,97.8750,1200,0 +950109,97.6250,98.7500,97.6250,98.5000,7900,0 +950110,98.5000,98.7500,98.3750,98.3750,3000,0 +950111,98.6250,98.6250,98.0000,98.2500,2300,0 +950112,98.0000,98.0000,97.7500,97.7500,2300,0 +950113,97.2500,97.2500,97.0000,97.1250,5600,0 +950116,97.6250,98.5000,97.6250,98.3750,31200,0 +950117,96.0000,96.0000,95.7500,95.7500,4200,0 +950118,94.2500,94.2500,93.3750,93.5000,7900,0 +950119,91.5000,92.3750,91.5000,92.3750,5200,0 +950120,91.7500,92.1250,91.7500,92.0000,2900,0 +950123,87.0000,87.8750,87.0000,87.7500,20600,0 +950124,88.2500,88.8750,88.2500,88.7500,25600,0 +950125,89.5000,90.6250,89.5000,90.2500,10400,0 +950126,89.5000,89.5000,89.1250,89.1250,2400,0 +950127,89.5000,89.5000,89.0000,89.0000,1100,0 +950130,89.2500,90.0000,89.1250,89.6250,6400,0 +950131,87.5000,88.0000,87.2500,87.8750,14700,0 +950201,87.2500,87.2500,86.7500,87.0000,6700,0 +950202,87.0000,87.2500,87.0000,87.2500,1800,0 +950203,86.3750,86.8750,86.3750,86.6250,7100,0 +950206,87.0000,87.0000,86.5000,86.6250,20500,0 +950207,85.8750,86.2500,85.7500,85.7500,5700,0 +950208,85.2500,86.0000,85.0000,85.8750,6200,0 +950209,86.0000,86.5000,85.8750,86.5000,7200,0 +950210,87.0000,87.5000,87.0000,87.5000,2100,0 +950213,87.3750,88.5000,87.3750,88.5000,5500,0 +950214,86.5000,86.6250,86.5000,86.5000,12200,0 +950215,85.2500,85.5000,85.2500,85.5000,2000,0 +950216,84.0000,84.0000,82.8750,82.8750,11000,0 +950217,86.5000,86.6250,86.2500,86.3750,6600,0 +950221,86.5000,86.7500,86.5000,86.7500,6400,0 +950222,87.0000,87.8750,87.0000,87.8750,7400,0 +950223,85.3750,87.2500,85.3750,87.0000,13300,0 +950224,86.5000,86.5000,86.5000,86.5000,2900,0 +950227,85.7500,86.2500,85.3750,85.6250,13600,0 +950228,87.1250,87.1250,86.5000,86.8750,5500,0 +950301,87.8750,87.8750,87.3750,87.5000,8200,0 +950302,91.0000,91.0000,90.0000,90.0000,18100,0 +950303,92.5000,93.6250,92.5000,93.3750,14600,0 +950306,94.5000,94.5000,93.5000,94.5000,10600,0 +950307,93.7500,94.3750,93.7500,94.3750,29100,0 +950308,93.2500,93.2500,93.0000,93.0000,7400,0 +950309,93.2500,93.5000,92.8750,93.0000,4100,0 +950310,91.0000,92.7500,91.0000,92.7500,2200,0 +950313,92.5000,92.6250,92.2500,92.6250,1600,0 +950314,92.2500,93.0000,92.2500,92.6250,4400,0 +950315,93.5000,94.1250,93.2500,93.6250,8000,0 +950316,93.8750,93.8750,93.3750,93.8750,2600,0 +950317,93.7500,94.0000,93.1250,93.1250,4000,0 +950320,93.5000,93.5000,91.5000,92.7500,11500,0 +950321,92.5000,93.0000,92.2500,92.2500,4000,0 +950322,92.0000,92.6250,92.0000,92.6250,2400,0 +950323,92.2500,92.6250,92.0000,92.0000,3700,0 +950324,91.7500,93.7500,91.7500,93.7500,3500,0 +950327,95.0000,95.5000,95.0000,95.5000,5300,0 +950328,98.2500,99.5000,98.0000,98.6250,13600,0 +950329,98.6250,98.7500,98.0000,98.0000,5600,0 +950330,99.2500,99.5000,98.8750,99.5000,3800,0 +950331,100.5000,101.7500,100.0000,101.6250,15000,0 +950403,99.5000,99.5000,98.5000,98.5000,11900,0 +950404,100.0000,100.5000,99.7500,99.7500,5700,0 +950405,100.3750,100.3750,100.0000,100.2500,4600,0 +950406,100.0000,100.0000,98.5000,99.1250,7400,0 +950407,100.0000,100.6250,99.2500,99.2500,7700,0 +950410,101.5000,101.8750,100.2500,100.2500,32500,0 +950411,100.5000,100.8750,100.2500,100.2500,27100,0 +950412,101.0000,102.0000,101.0000,102.0000,4700,0 +950413,103.0000,103.7500,103.0000,103.7500,4300,0 +950417,104.5000,105.2500,104.5000,104.6250,6100,0 +950418,104.1250,104.7500,104.1250,104.3750,8000,0 +950419,104.3750,104.7500,104.2500,104.7500,6600,0 +950420,105.2500,106.3750,105.2500,106.3750,5200,0 +950421,107.2500,107.6250,106.7500,107.0000,3400,0 +950424,107.0000,107.0000,106.2500,106.6250,8700,0 +950425,106.5000,106.6250,106.0000,106.0000,5300,0 +950426,104.0000,104.5000,103.6250,103.7500,6900,0 +950427,103.7500,104.5000,103.7500,104.2500,6800,0 +950428,103.0000,103.2500,102.7500,102.7500,4700,0 +950501,102.3750,103.0000,102.3750,103.0000,2900,0 +950502,103.3750,105.0000,103.3750,105.0000,7900,0 +950503,104.5000,105.2500,104.5000,105.2500,3700,0 +950504,105.0000,106.5000,105.0000,106.1250,17200,0 +950505,105.5000,107.0000,104.8750,107.0000,35100,0 +950508,105.5000,107.5000,105.2500,106.7500,25700,0 +950509,104.5000,104.5000,102.5000,102.5000,6900,0 +950510,100.7500,101.1250,100.2500,101.0000,25700,0 +950511,98.0000,98.2500,96.2500,98.2500,17200,0 +950512,96.7500,99.2500,96.5000,98.7500,38100,0 +950515,96.2500,97.5000,96.2500,97.0000,32000,0 +950516,96.0000,98.0000,95.8750,97.7500,61300,0 +950517,97.8750,99.0000,97.0000,98.5000,18700,0 +950518,97.7500,98.7500,97.5000,98.0000,41300,0 +950519,97.5000,98.0000,97.0000,97.5000,10700,0 +950522,95.2500,96.0000,95.0000,96.0000,23200,0 +950523,94.7500,95.3750,94.5000,95.3750,14100,0 +950524,95.3750,96.1250,95.3750,96.1250,9500,0 +950525,96.1250,97.2500,96.1250,97.2500,7600,0 +950526,99.7500,100.6250,99.7500,100.2500,16000,0 +950530,100.0000,100.1250,99.3750,99.3750,9300,0 +950531,97.2500,98.2500,97.2500,98.2500,9100,0 +950601,97.7500,97.8750,97.0000,97.6250,9200,0 +950602,99.0000,99.0000,98.6250,98.6250,3000,0 +950605,98.8750,100.0000,98.5000,100.0000,9800,0 +950606,99.0000,99.0000,98.0000,98.6250,10100,0 +950607,98.6250,100.2500,98.6250,99.8750,14800,0 +950608,98.0000,100.0000,98.0000,99.8750,9000,0 +950609,95.5000,96.2500,95.3750,96.0000,22800,0 +950612,94.5000,95.8750,94.5000,95.5000,13200,0 +950613,95.2500,95.3750,94.2500,94.6250,14400,0 +950614,94.1250,95.5000,94.1250,95.5000,8700,0 +950615,95.5000,97.6250,95.5000,97.3750,13900,0 +950616,96.0000,96.8750,96.0000,96.8750,13600,0 +950619,96.6250,97.1250,96.3750,97.1250,12400,0 +950620,96.7500,97.0000,96.5000,96.5000,12400,0 +950621,97.3750,97.5000,97.1250,97.5000,23500,0 +950622,97.5000,98.5000,97.1250,98.3750,11200,0 +950623,99.5000,99.5000,98.5000,99.0000,8500,0 +950626,99.2500,100.8750,99.2500,100.8750,13100,0 +950627,100.2500,101.5000,100.2500,101.0000,14500,0 +950628,99.2500,102.0000,98.8750,102.0000,35300,0 +950629,100.1250,100.1250,98.8750,98.8750,12400,0 +950630,100.1250,100.2500,99.6250,100.2500,3400,0 +950703,101.0000,101.0000,100.5000,101.0000,4200,0 +950705,100.0000,101.5000,99.7500,101.5000,10700,0 +950706,102.0000,102.3750,101.0000,102.3750,20000,0 +950707,103.1250,106.0000,102.6250,106.0000,53800,0 +950710,105.7500,107.5000,105.7500,107.1250,57800,0 +950711,108.5000,109.3750,108.5000,109.3750,26500,0 +950712,109.3750,110.5000,108.8750,110.5000,27700,0 +950713,110.0000,110.0000,109.8750,110.0000,25800,0 +950714,108.5000,111.0000,107.7500,110.5000,29900,0 +950717,109.2500,110.0000,109.0000,110.0000,24500,0 +950718,108.0000,108.2500,107.5000,108.2500,20200,0 +950719,106.6250,107.2500,105.5000,106.0000,17100,0 +950720,105.7500,106.0000,105.0000,106.0000,34000,0 +950721,104.2500,106.0000,104.2500,106.0000,14900,0 +950724,107.0000,109.7500,107.0000,109.7500,15600,0 +950725,108.0000,108.0000,106.8750,107.3750,14600,0 +950726,106.7500,107.0000,106.0000,107.0000,9600,0 +950727,107.0000,108.5000,107.0000,108.5000,18800,0 +950728,106.7500,107.3750,106.5000,107.3750,12600,0 +950731,106.5000,107.8750,106.5000,107.3750,17700,0 +950801,106.2500,106.2500,105.6250,106.1250,15300,0 +950802,106.5000,109.7500,106.5000,109.7500,43400,0 +950803,110.0000,114.1250,110.0000,114.0000,60200,0 +950804,111.5000,112.0000,111.0000,111.5000,26800,0 +950807,110.2500,112.3750,110.0000,112.0000,15300,0 +950808,112.2500,112.5000,112.0000,112.3750,10600,0 +950809,111.0000,111.8750,110.5000,111.5000,15600,0 +950810,109.5000,111.2500,109.5000,111.0000,19300,0 +950811,109.8750,111.2500,109.1250,110.5000,41100,0 +950814,109.0000,112.2500,109.0000,112.1250,74100,0 +950815,110.0000,112.5000,109.7500,112.1250,79700,0 +950816,111.8750,112.0000,111.2500,111.5000,51900,0 +950817,109.8750,110.1250,108.7500,110.1250,48800,0 +950818,109.7500,110.2500,109.5000,109.5000,55200,0 +950821,109.5000,110.5000,109.3750,110.0000,53100,0 +950822,108.5000,109.0000,107.6250,107.6250,46400,0 +950823,107.5000,108.1250,107.5000,108.1250,24100,0 +950824,108.1250,108.1250,107.2500,107.6250,31200,0 +950825,106.0000,106.3750,105.2500,106.0000,17100,0 +950828,106.0000,107.0000,106.0000,106.3750,23700,0 +950829,107.5000,110.1250,107.5000,110.0000,24400,0 +950830,107.5000,108.0000,106.5000,106.6250,21800,0 +950831,109.0000,109.5000,108.3750,108.7500,16500,0 +950901,110.0000,110.2500,109.6250,110.2500,9800,0 +950905,110.5000,111.3750,110.0000,111.3750,16500,0 +950906,110.2500,111.0000,110.2500,110.7500,15800,0 +950907,111.0000,111.1250,110.1250,110.7500,9300,0 +950908,110.5000,110.5000,109.5000,109.6250,11600,0 +950911,113.5000,113.5000,112.0000,113.1250,18400,0 +950912,110.7500,111.3750,110.5000,110.8750,50400,0 +950913,109.7500,109.7500,108.5000,109.2500,29000,0 +950914,109.2500,110.1250,109.0000,110.1250,19600,0 +950915,109.0000,109.0000,108.1250,108.7500,13000,0 +950918,105.5000,105.5000,103.7500,103.7500,27400,0 +950919,104.0000,104.8750,103.7500,104.0000,25200,0 +950920,103.2500,103.2500,102.3750,102.6250,28500,0 +950921,102.6250,105.5000,101.7500,105.2500,31100,0 +950922,104.8750,105.6250,104.1250,105.2500,17300,0 +950925,105.2500,106.1250,104.6250,105.2500,28000,0 +950926,105.6250,106.3750,105.6250,106.0000,16700,0 +950927,106.7500,107.7500,106.7500,107.0000,20700,0 +950928,108.0000,109.3750,108.0000,108.7500,28800,0 +950929,109.5000,110.7500,109.5000,110.2500,17400,0 +951002,105.1250,106.0000,105.1250,106.0000,24500,0 +951003,106.7500,108.0000,106.7500,108.0000,5500,0 +951004,108.2500,108.3750,107.6250,108.0000,5400,0 +951005,109.0000,109.0000,108.2500,108.7500,10100,0 +951006,109.2500,109.2500,108.3750,108.5000,11000,0 +951009,108.0000,109.5000,108.0000,108.7500,22600,0 +951010,107.7500,107.7500,106.2500,106.2500,12700,0 +951011,105.5000,105.5000,105.0000,105.1250,6100,0 +951012,105.5000,108.0000,105.5000,107.3750,20700,0 +951013,106.0000,106.8750,105.2500,106.6250,18600,0 +951016,105.7500,106.1250,105.7500,106.0000,10500,0 +951017,105.3750,105.5000,105.1250,105.3750,6900,0 +951018,104.7500,105.0000,104.1250,104.1250,13700,0 +951019,104.0000,106.3750,104.0000,105.6250,14700,0 +951020,106.5000,106.5000,105.7500,105.8750,3500,0 +951023,107.0000,108.0000,106.5000,107.2500,24400,0 +951024,106.7500,106.7500,106.3750,106.7500,5800,0 +951025,105.2500,105.8750,104.0000,105.0000,13600,0 +951026,105.0000,105.1250,104.2500,104.8750,13300,0 +951027,104.2500,104.2500,103.5000,103.6250,10900,0 +951030,103.6250,104.2500,102.5000,104.2500,15700,0 +951031,103.5000,104.8750,103.2500,104.6250,25100,0 +951101,103.7500,104.2500,103.6250,104.2500,12200,0 +951102,104.8750,105.0000,104.8750,105.0000,9400,0 +951103,105.5000,105.5000,105.0000,105.0000,11400,0 +951106,105.0000,105.5000,104.3750,105.3750,7400,0 +951107,103.2500,104.0000,103.1250,103.8750,5700,0 +951108,101.7500,102.7500,101.7500,102.3750,17700,0 +951109,102.7500,104.0000,102.7500,103.5000,11700,0 +951110,103.0000,103.2500,102.3750,103.0000,9400,0 +951113,102.7500,103.2500,102.5000,103.2500,19300,0 +951114,102.3750,102.6250,102.0000,102.0000,23000,0 +951115,100.0000,100.7500,99.6250,100.5000,28700,0 +951116,102.5000,102.5000,101.7500,102.1250,8700,0 +951117,102.1250,102.8750,102.0000,102.3750,6100,0 +951120,101.7500,102.0000,100.5000,102.0000,34600,0 +951121,102.2500,102.6250,101.6250,102.6250,24700,0 +951122,100.7500,101.6250,100.2500,100.5000,14000,0 +951124,100.0000,100.0000,99.2500,99.2500,5100,0 +951127,99.2500,102.5000,98.5000,102.0000,28300,0 +951128,102.2500,102.2500,100.6250,101.0000,10600,0 +951129,101.0000,102.0000,100.5000,101.0000,35900,0 +951130,101.5000,102.7500,101.5000,102.2500,5900,0 +951201,102.0000,102.7500,102.0000,102.5000,21700,0 +951204,101.7500,103.2500,101.0000,103.0000,25400,0 +951205,101.0000,101.7500,101.0000,101.3750,12800,0 +951206,101.8750,102.6250,101.6250,101.6250,21700,0 +951207,104.3750,104.3750,103.1250,103.3750,17300,0 +951208,103.0000,103.5000,102.5000,103.5000,6700,0 +951211,103.0000,104.2500,103.0000,104.0000,6500,0 +951212,101.0000,102.0000,101.0000,101.5000,11700,0 +951213,100.5000,101.1250,100.2500,100.5000,10600,0 +951214,100.5000,100.5000,100.0000,100.0000,7300,0 +951215,97.5000,97.5000,95.5000,96.0000,15700,0 +951218,96.0000,96.0000,95.0000,95.0000,37400,0 +951219,95.2500,96.0000,94.2500,95.2500,39600,0 +951220,96.0000,96.5000,95.7500,95.7500,24600,0 +951221,95.7500,97.3750,95.7500,97.0000,20700,0 +951222,96.0000,97.5000,96.0000,97.3750,19200,0 +951226,98.5000,100.7500,98.3750,100.5000,15000,0 +951227,100.6250,101.6250,100.5000,100.8750,15800,0 +951228,100.8750,101.6250,100.8750,101.5000,8100,0 +951229,101.2500,101.5000,100.5000,100.5000,14900,0 +960102,100.7500,102.0000,100.3750,102.0000,13400,0 +960103,102.0000,104.2500,102.0000,104.0000,21900,0 +960104,104.2500,107.5000,103.8750,107.5000,72900,0 +960105,105.7500,106.3750,105.0000,106.2500,26300,0 +960108,104.2500,104.7500,103.5000,104.5000,12400,0 +960109,103.3750,103.5000,102.5000,102.5000,25000,0 +960110,101.5000,101.8750,100.5000,101.7500,23800,0 +960111,100.8750,101.7500,100.5000,101.0000,18800,0 +960112,96.1250,98.2500,96.1250,98.1250,25900,0 +960115,98.0000,98.0000,97.2500,97.5000,27500,0 +960116,98.0000,99.8750,98.0000,99.8750,16200,0 +960117,98.3750,98.7500,98.0000,98.7500,17000,0 +960118,98.7500,99.2500,98.3750,99.0000,7800,0 +960119,98.5000,98.5000,97.7500,97.8750,11400,0 +960122,98.0000,99.0000,97.3750,98.8750,30400,0 +960123,97.5000,97.6250,97.2500,97.2500,16000,0 +960124,96.7500,97.2500,96.5000,96.7500,27900,0 +960125,96.8750,97.0000,96.6250,96.6250,13600,0 +960126,96.2500,97.0000,96.1250,97.0000,83600,0 +960129,97.0000,98.2500,96.6250,98.0000,27000,0 +960130,97.7500,100.1250,97.7500,100.1250,14800,0 +960131,101.0000,101.2500,100.5000,101.1250,16100,0 +960201,101.1250,101.3750,100.7500,101.3750,4500,0 +960202,101.2500,101.2500,100.0000,100.0000,9000,0 +960205,100.8750,102.3750,100.7500,102.3750,20500,0 +960206,101.8750,102.2500,100.7500,101.0000,19900,0 +960207,102.0000,102.8750,101.8750,102.8750,12000,0 +960208,102.3750,102.5000,101.6250,102.5000,41400,0 +960209,102.0000,102.0000,100.5000,101.2500,24100,0 +960212,101.2500,101.8750,101.2500,101.7500,15700,0 +960213,100.5000,100.5000,99.1250,99.1250,19300,0 +960214,99.1250,99.2500,98.8750,98.8750,20600,0 +960215,98.7500,98.7500,98.2500,98.5000,31400,0 +960216,97.5000,99.8750,97.5000,99.0000,28900,0 +960220,99.0000,99.0000,98.0000,98.1250,9900,0 +960221,98.6250,98.8750,98.0000,98.7500,19300,0 +960222,99.0000,99.8750,99.0000,99.7500,21900,0 +960223,99.7500,99.8750,99.0000,99.2500,20100,0 +960226,99.5000,100.7500,99.5000,100.3750,32200,0 +960227,100.3750,100.3750,98.6250,99.1250,17900,0 +960228,99.1250,99.5000,98.6250,98.8750,29300,0 +960229,98.7500,100.7500,98.7500,100.7500,11300,0 +960301,100.5000,102.2500,100.5000,102.2500,21600,0 +960304,101.5000,101.7500,100.6250,100.6250,13500,0 +960305,101.0000,101.1250,100.8750,101.1250,15800,0 +960306,100.0000,100.8750,100.0000,100.3750,19400,0 +960307,97.5000,98.5000,97.5000,98.5000,10500,0 +960308,97.7500,97.7500,96.2500,96.8750,14600,0 +960311,96.0000,97.5000,95.7500,97.1250,24800,0 +960312,96.5000,97.2500,96.0000,97.0000,36800,0 +960313,96.0000,97.0000,95.0000,95.5000,31800,0 +960314,95.7500,95.8750,95.2500,95.8750,16000,0 +960315,95.7500,96.0000,95.7500,96.0000,10100,0 +960318,95.5000,95.7500,95.2500,95.6250,16100,0 +960319,95.6250,95.6250,93.5000,94.0000,24000,0 +960320,94.0000,96.0000,94.0000,96.0000,27500,0 +960321,95.5000,95.7500,95.2500,95.2500,4800,0 +960322,94.2500,94.8750,94.2500,94.8750,21800,0 +960325,95.2500,96.7500,95.2500,96.7500,11200,0 +960326,96.3750,97.1250,96.2500,97.0000,14900,0 +960327,97.6250,97.7500,97.2500,97.3750,17000,0 +960328,97.1250,97.1250,96.2500,96.8750,6900,0 +960329,96.7500,97.7500,96.5000,97.6250,14600,0 +960401,97.6250,98.1250,97.6250,98.0000,12400,0 +960402,98.5000,98.5000,98.0000,98.1250,11900,0 +960403,98.3750,98.5000,98.1250,98.3750,6900,0 +960404,98.3750,98.6250,98.0000,98.3750,9000,0 +960408,97.1250,97.5000,96.0000,96.0000,12300,0 +960409,97.6250,97.8750,97.6250,97.8750,9500,0 +960410,97.8750,98.6250,97.8750,97.8750,9600,0 +960411,98.6250,99.8750,98.6250,99.7500,14400,0 +960412,99.7500,100.5000,99.2500,100.0000,24200,0 +960415,100.6250,100.6250,100.1250,100.6250,9300,0 +960416,100.3750,100.3750,99.7500,99.7500,11500,0 +960417,100.0000,100.7500,99.8750,100.6250,16400,0 +960418,100.3750,100.6250,100.3750,100.6250,6300,0 +960419,102.0000,102.2500,101.0000,101.3750,19700,0 +960422,102.7500,102.7500,102.2500,102.5000,11400,0 +960423,103.0000,104.8750,103.0000,104.7500,27500,0 +960424,105.5000,106.3750,105.5000,106.3750,316500,0 +960425,106.3750,107.5000,106.1250,107.2500,28100,0 +960426,106.2500,106.5000,106.0000,106.5000,20200,0 +960429,106.2500,107.0000,106.2500,107.0000,12200,0 +960430,106.8750,107.8750,106.8750,107.6250,6500,0 +960501,107.1250,107.1250,106.2500,106.2500,8800,0 +960502,105.8750,106.1250,105.5000,106.0000,8700,0 +960503,105.8750,106.5000,105.3750,105.8750,5900,0 +960506,105.5000,105.7500,105.3750,105.3750,4300,0 +960507,105.1250,105.7500,104.8750,105.0000,6600,0 +960508,105.0000,105.3750,105.0000,105.0000,3100,0 +960509,104.0000,104.0000,102.5000,102.6250,14500,0 +960510,102.0000,102.2500,101.5000,102.1250,17600,0 +960513,100.0000,101.0000,100.0000,100.8750,12600,0 +960514,100.5000,101.1250,100.5000,101.0000,16000,0 +960515,102.6250,103.0000,102.5000,102.5000,9500,0 +960516,102.5000,103.5000,102.5000,103.5000,10000,0 +960517,102.0000,102.1250,101.2500,101.6250,8400,0 +960520,100.0000,101.2500,100.0000,101.0000,9700,0 +960521,99.5000,100.0000,99.0000,99.0000,25900,0 +960522,97.2500,98.0000,97.2500,97.7500,23700,0 +960523,95.7500,95.7500,95.2500,95.5000,31100,0 +960524,95.0000,95.5000,94.2500,95.0000,24400,0 +960528,94.7500,95.5000,94.7500,95.0000,19100,0 +960529,94.2500,94.5000,93.8750,94.2500,24400,0 +960530,93.2500,93.2500,91.5000,92.8750,30300,0 +960531,92.8750,93.7500,92.8750,93.7500,17500,0 +960603,93.3750,93.6250,93.1250,93.3750,21600,0 +960604,93.1250,93.6250,92.3750,93.6250,21000,0 +960605,93.6250,94.0000,92.6250,93.5000,9400,0 +960606,93.6250,93.7500,93.2500,93.6250,7300,0 +960607,93.1250,93.5000,93.1250,93.3750,18300,0 +960610,93.2500,93.2500,92.8750,93.0000,5100,0 +960611,93.2500,93.3750,92.8750,92.8750,9300,0 +960612,95.1250,95.3750,94.7500,94.8750,11700,0 +960613,95.8750,96.5000,95.6250,96.5000,8600,0 +960614,97.5000,97.8750,97.3750,97.6250,8400,0 +960617,97.6250,97.6250,97.0000,97.3750,7000,0 +960618,98.0000,98.0000,97.3750,97.6250,6000,0 +960619,95.3750,96.0000,95.3750,96.0000,15300,0 +960620,96.2500,96.5000,95.7500,96.3750,8200,0 +960621,95.2500,96.3750,95.2500,95.7500,14800,0 +960624,95.5000,96.5000,95.5000,96.5000,5400,0 +960625,96.5000,96.8750,95.7500,95.7500,11600,0 +960626,95.2500,95.2500,93.7500,94.0000,18300,0 +960627,94.0000,94.3750,93.2500,93.7500,18900,0 +960628,93.3750,94.1250,92.5000,93.7500,31200,0 +960701,93.7500,94.1250,93.0000,93.5000,7900,0 +960702,93.1250,93.7500,93.0000,93.7500,10000,0 +960703,92.6250,93.0000,92.2500,92.5000,14600,0 +960705,94.5000,94.5000,93.5000,94.0000,7900,0 +960708,93.7500,93.7500,93.0000,93.6250,10900,0 +960709,92.3750,94.1250,92.3750,94.1250,14800,0 +960710,93.3750,94.1250,93.1250,94.1250,12000,0 +960711,94.1250,94.3750,93.5000,93.6250,25900,0 +960712,93.7500,94.1250,93.2500,94.1250,9500,0 +960715,92.7500,92.7500,92.0000,92.3750,9400,0 +960716,91.5000,91.5000,89.6250,90.0000,11200,0 +960717,90.0000,90.7500,89.8750,90.3750,14200,0 +960718,91.0000,92.6250,91.0000,91.7500,11400,0 +960719,91.0000,91.2500,90.5000,90.6250,28300,0 +960722,90.1250,90.5000,90.0000,90.5000,3600,0 +960723,91.2500,91.2500,90.6250,90.6250,9300,0 +960724,89.2500,90.0000,89.0000,89.7500,19300,0 +960725,90.0000,91.8750,89.6250,91.3750,11800,0 +960726,91.0000,91.2500,90.2500,90.7500,7700,0 +960729,90.1250,90.1250,89.6250,89.6250,11700,0 +960730,89.5000,89.7500,89.3750,89.3750,8200,0 +960731,89.3750,91.0000,89.3750,90.7500,16900,0 +960801,91.3750,91.8750,90.7500,91.6250,4200,0 +960802,92.8750,93.0000,92.3750,93.0000,17100,0 +960805,93.0000,93.3750,92.5000,93.3750,6500,0 +960806,92.7500,93.0000,92.5000,92.5000,5100,0 +960807,92.5000,93.5000,92.2500,93.5000,10400,0 +960808,92.7500,93.5000,92.7500,93.5000,8100,0 +960809,93.6250,94.3750,93.6250,94.3750,4200,0 +960812,94.1250,94.8750,94.0000,94.5000,6000,0 +960813,94.5000,94.5000,94.3750,94.5000,4300,0 +960814,94.8750,95.1250,93.8750,94.0000,9700,0 +960815,94.5000,94.5000,93.5000,94.0000,8000,0 +960816,94.0000,95.3750,94.0000,95.3750,6700,0 +960819,93.5000,95.3750,93.5000,95.3750,16700,0 +960820,95.6250,95.6250,95.0000,95.3750,5700,0 +960821,95.3750,95.3750,94.5000,94.5000,1600,0 +960822,94.7500,94.8750,94.0000,94.0000,3300,0 +960823,93.7500,93.7500,93.3750,93.3750,3000,0 +960826,93.1250,93.5000,93.1250,93.5000,300,0 +960827,92.7500,93.7500,92.7500,93.7500,2200,0 +960828,92.2500,92.2500,91.7500,91.7500,7600,0 +960829,91.0000,91.3750,91.0000,91.2500,3900,0 +960830,91.5000,92.5000,91.5000,91.7500,7000,0 +960903,91.1250,91.8750,91.1250,91.2500,1600,0 +960904,91.2500,91.2500,90.0000,90.7500,6000,0 +960905,91.0000,91.0000,90.2500,90.6250,4300,0 +960906,90.6250,91.2500,90.6250,91.2500,2000,0 +960909,90.5000,90.6250,90.5000,90.6250,2300,0 +960910,91.6250,91.6250,90.0000,90.0000,10100,0 +960911,90.0000,90.0000,89.5000,90.0000,2300,0 +960912,90.0000,90.5000,89.7500,90.5000,6200,0 +960913,92.2500,92.2500,91.0000,91.0000,4400,0 +960916,91.5000,91.6250,91.0000,91.6250,4400,0 +960917,92.3750,92.5000,92.0000,92.0000,9000,0 +960918,92.1250,92.1250,91.5000,92.1250,5200,0 +960919,92.8750,93.0000,92.8750,93.0000,7100,0 +960920,92.7500,93.3750,92.3750,93.3750,16200,0 +960923,93.2500,93.3750,92.5000,93.3750,5200,0 +960924,93.2500,93.5000,92.0000,92.0000,8900,0 +960925,94.5000,95.7500,94.5000,95.0000,15500,0 +960926,96.2500,96.2500,95.5000,95.6250,12800,0 +960927,97.0000,97.3750,96.0000,96.0000,21600,0 +960930,96.2500,96.8750,96.2500,96.2500,4600,0 +961001,97.0000,97.0000,96.2500,97.0000,10700,0 +961002,97.2500,98.7500,97.2500,98.5000,25400,0 +961003,97.6250,97.6250,97.0000,97.2500,8700,0 +961004,96.2500,96.2500,95.0000,95.3750,15900,0 +961007,95.6250,95.8750,95.0000,95.0000,13500,0 +961008,95.0000,95.1250,95.0000,95.0000,4400,0 +961009,94.2500,94.2500,93.6250,94.0000,7500,0 +961010,94.0000,94.7500,93.1250,94.5000,8800,0 +961011,94.7500,95.2500,94.7500,94.7500,6900,0 +961014,94.0000,95.2500,94.0000,95.0000,7900,0 +961015,94.6250,95.0000,94.6250,94.7500,4400,0 +961016,94.7500,94.7500,94.5000,94.5000,4900,0 +961017,94.5000,95.0000,94.2500,94.6250,5400,0 +961018,94.7500,94.8750,94.3750,94.3750,26000,0 +961021,93.2500,93.5000,93.0000,93.0000,9100,0 +961022,92.5000,92.6250,92.2500,92.3750,11100,0 +961023,92.0000,92.0000,91.3750,91.7500,10000,0 +961024,91.6250,91.6250,91.0000,91.1250,7700,0 +961025,90.8750,91.0000,90.2500,90.2500,4900,0 +961028,90.1250,90.1250,89.0000,89.1250,16600,0 +961029,90.0000,90.1250,89.7500,90.1250,9500,0 +961030,90.1250,90.2500,89.7500,90.2500,13200,0 +961031,89.7500,89.7500,89.3750,89.3750,6600,0 +961101,89.7500,90.3750,89.7500,90.3750,5300,0 +961104,91.0000,91.0000,90.2500,90.6250,7000,0 +961105,90.0000,90.7500,90.0000,90.7500,8700,0 +961106,90.6250,91.5000,90.6250,91.5000,4400,0 +961107,91.7500,92.1250,91.1250,91.8750,15700,0 +961108,92.8750,93.2500,92.5000,93.1250,12600,0 +961111,93.1250,93.7500,93.0000,93.1250,3800,0 +961112,93.2500,94.1250,93.2500,93.7500,8800,0 +961113,92.0000,92.5000,92.0000,92.2500,11300,0 +961114,92.5000,92.8750,92.2500,92.5000,4100,0 +961115,92.0000,92.5000,92.0000,92.2500,8100,0 +961118,91.8750,91.8750,90.3750,90.7500,11700,0 +961119,90.6250,91.3750,90.5000,90.7500,13700,0 +961120,91.7500,92.2500,91.3750,92.1250,15500,0 +961121,92.7500,93.5000,92.6250,93.5000,5900,0 +961122,94.0000,95.0000,94.0000,94.7500,11700,0 +961125,95.2500,95.5000,95.0000,95.3750,11500,0 +961126,95.1250,95.1250,93.5000,93.5000,19500,0 +961127,94.2500,95.0000,94.0000,94.6250,8400,0 +961129,93.5000,94.6250,93.5000,94.6250,4200,0 +961202,92.7500,93.8750,92.5000,93.8750,17000,0 +961203,92.0000,92.7500,92.0000,92.7500,14200,0 +961204,94.0000,95.0000,93.7500,95.0000,12300,0 +961205,95.0000,96.0000,95.0000,95.5000,13900,0 +961206,94.2500,95.0000,93.8750,94.7500,7700,0 +961209,94.3750,95.1250,94.3750,95.0000,37800,0 +961210,96.0000,97.0000,96.0000,96.0000,25900,0 +961211,94.6250,94.7500,93.2500,94.3750,16200,0 +961212,94.2500,94.8750,94.0000,94.2500,27900,0 +961213,94.0000,94.1250,93.0000,93.0000,8800,0 +961216,94.1250,94.1250,92.7500,92.7500,30100,0 +961217,94.0000,94.0000,93.0000,93.0000,7400,0 +961218,93.3750,93.3750,92.2500,92.3750,21300,0 +961219,91.7500,91.7500,90.7500,91.1250,18400,0 +961220,92.5000,92.5000,90.7500,91.6250,19400,0 +961223,91.5000,91.6250,90.5000,90.5000,26300,0 +961224,90.1250,92.0000,90.1250,91.8750,12500,0 +961226,91.7500,92.0000,91.2500,91.7500,5900,0 +961227,91.8750,93.1250,91.6250,92.3750,15100,0 +961230,93.0000,93.6250,92.2500,92.2500,13600,0 +961231,92.2500,92.8750,91.7500,92.5000,12300,0 +970102,92.7500,93.2500,92.5000,93.2500,4500,0 +970103,93.0000,93.0000,91.8750,92.1250,6900,0 +970106,95.0000,95.2500,94.5000,94.8750,31700,0 +970107,94.8750,94.8750,93.6250,94.1250,17500,0 +970108,94.2500,94.2500,93.7500,94.0000,5400,0 +970109,93.7500,93.7500,93.2500,93.7500,15900,0 +970110,92.0000,92.0000,91.1250,91.6250,19000,0 +970113,91.6250,92.0000,90.0000,90.5000,19400,0 +970114,90.7500,91.0000,90.3750,90.8750,7700,0 +970115,90.6250,91.8750,90.5000,91.8750,13700,0 +970116,91.0000,92.0000,90.5000,92.0000,9900,0 +970117,90.6250,91.3750,89.5000,90.0000,28200,0 +970120,87.7500,87.8750,87.5000,87.7500,19600,0 +970121,87.7500,89.0000,87.7500,88.8750,24700,0 +970122,87.7500,88.0000,87.0000,87.1250,29900,0 +970123,87.1250,87.2500,86.1250,86.6250,15500,0 +970124,86.8750,87.6250,86.5000,87.6250,18700,0 +970127,87.5000,87.5000,86.1250,86.5000,18800,0 +970128,86.7500,89.0000,86.6250,88.6250,30200,0 +970129,87.6250,88.0000,87.3750,88.0000,10600,0 +970130,86.8750,87.5000,86.7500,87.5000,13600,0 +970131,88.7500,90.0000,88.7500,89.7500,10000,0 +970203,88.5000,89.7500,88.5000,89.6250,10300,0 +970204,88.7500,90.5000,88.7500,90.5000,19900,0 +970205,89.3750,89.7500,89.3750,89.5000,15300,0 +970206,88.0000,88.8750,88.0000,88.7500,13600,0 +970207,88.5000,89.2500,88.1250,89.2500,17200,0 +970210,88.7500,89.5000,88.7500,89.3750,6900,0 +970211,89.3750,89.5000,89.0000,89.5000,11500,0 +970212,89.7500,89.7500,89.2500,89.2500,27300,0 +970213,90.7500,93.0000,89.7500,92.5000,30700,0 +970214,92.7500,92.7500,91.5000,92.6250,14000,0 +970218,92.8750,93.7500,92.5000,93.7500,32400,0 +970219,92.1250,92.5000,92.0000,92.5000,13100,0 +970220,92.5000,92.7500,92.3750,92.7500,10000,0 +970221,92.5000,92.6250,92.0000,92.0000,23600,0 +970224,90.5000,91.0000,90.3750,91.0000,15000,0 +970225,89.7500,90.8750,89.7500,90.7500,17300,0 +970226,90.0000,90.1250,89.5000,90.0000,19500,0 +970227,89.2500,89.5000,89.2500,89.5000,10900,0 +970228,86.7500,87.7500,86.3750,87.7500,37200,0 +970303,87.2500,88.0000,87.0000,88.0000,12700,0 +970304,87.5000,88.2500,87.5000,88.2500,8600,0 +970305,87.1250,88.0000,87.0000,87.7500,32700,0 +970306,86.7500,86.8750,86.3750,86.8750,23400,0 +970307,87.5000,87.8750,87.2500,87.7500,23300,0 +970310,87.5000,88.2500,87.5000,88.2500,14800,0 +970311,86.8750,86.8750,86.0000,86.7500,18200,0 +970312,87.0000,88.8750,87.0000,88.8750,15300,0 +970313,87.8750,87.8750,87.2500,87.5000,22900,0 +970314,86.5000,87.3750,86.3750,87.1250,9700,0 +970317,87.3750,88.0000,87.3750,88.0000,8800,0 +970318,88.0000,88.2500,87.5000,88.2500,5200,0 +970319,87.8750,87.8750,87.2500,87.7500,6000,0 +970320,87.2500,87.8750,87.0000,87.3750,6800,0 +970321,86.7500,87.2500,86.6250,86.7500,9400,0 +970324,86.6250,87.6250,86.6250,87.6250,18500,0 +970325,86.1250,86.5000,86.1250,86.1250,22100,0 +970326,86.2500,86.6250,86.0000,86.6250,25300,0 +970327,86.6250,87.8750,86.6250,87.8750,19900,0 +970331,87.8750,88.2500,87.5000,87.8750,13100,0 +970401,88.0000,88.6250,88.0000,88.6250,6900,0 +970402,90.0000,90.6250,89.5000,90.0000,18400,0 +970403,91.3750,91.8750,91.1250,91.3750,24400,0 +970404,91.2500,91.5000,91.1250,91.5000,14900,0 +970407,90.0000,90.0000,89.2500,90.0000,19900,0 +970408,90.2500,91.5000,90.1250,91.3750,13800,0 +970409,89.8750,90.0000,89.5000,89.6250,16300,0 +970410,89.5000,89.5000,89.0000,89.1250,11500,0 +970411,90.0000,90.0000,89.0000,89.1250,3300,0 +970414,88.8750,89.2500,88.5000,88.6250,6900,0 +970415,88.6250,88.8750,88.0000,88.3750,20000,0 +970416,88.6250,89.5000,88.0000,89.5000,7300,0 +970417,89.7500,90.0000,89.6250,90.0000,16000,0 +970418,90.2500,90.3750,90.0000,90.3750,17900,0 +970421,90.6250,91.0000,90.2500,90.7500,20600,0 +970422,90.6250,90.6250,89.5000,89.7500,6700,0 +970423,90.6250,90.6250,90.0000,90.2500,5600,0 +970424,90.8750,91.1250,90.3750,90.8750,13800,0 +970425,89.2500,90.6250,89.2500,90.2500,8700,0 +970428,90.5000,91.0000,90.5000,90.7500,3200,0 +970429,90.5000,91.7500,90.5000,91.5000,5700,0 +970430,91.5000,91.7500,90.8750,91.7500,5300,0 +970501,94.2500,96.0000,94.1250,95.7500,38300,0 +970502,96.1250,97.2500,96.1250,97.2500,20400,0 +970505,97.7500,98.1250,97.2500,98.1250,11700,0 +970506,102.5000,102.6250,101.7500,102.0000,19800,0 +970507,102.2500,102.2500,99.5000,100.2500,25100,0 +970508,101.5000,102.6250,101.1250,101.3750,12000,0 +970509,101.3750,101.3750,100.7500,101.3750,4000,0 +970512,102.0000,103.0000,102.0000,103.0000,14600,0 +970513,103.3750,105.0000,103.2500,105.0000,23200,0 +970514,104.5000,105.8750,104.2500,105.6250,10000,0 +970515,104.8750,104.8750,104.0000,104.5000,27600,0 +970516,105.7500,105.7500,105.3750,105.3750,7100,0 +970519,106.5000,107.5000,106.5000,106.7500,6700,0 +970520,109.2500,110.1250,109.2500,110.1250,18400,0 +970521,108.3750,108.8750,108.3750,108.6250,15800,0 +970522,105.8750,105.8750,104.5000,104.7500,24600,0 +970523,105.2500,108.0000,105.1250,108.0000,12700,0 +970527,106.8750,106.8750,105.5000,106.3750,9100,0 +970528,108.0000,108.3750,107.5000,107.5000,10500,0 +970529,110.5000,111.2500,110.5000,111.0000,11100,0 +970530,106.0000,108.5000,106.0000,108.5000,30600,0 +970602,108.3750,109.5000,108.3750,109.3750,14800,0 +970603,109.3750,110.2500,109.3750,109.6250,7200,0 +970604,111.0000,111.0000,110.1250,111.0000,11900,0 +970605,110.2500,110.2500,109.0000,109.6250,9600,0 +970606,109.0000,110.7500,109.0000,110.6250,8400,0 +970609,111.7500,111.8750,111.0000,111.8750,12000,0 +970610,111.6250,112.8750,111.3750,112.3750,8400,0 +970611,112.8750,113.0000,112.2500,112.3750,12000,0 +970612,111.2500,112.5000,111.2500,112.3750,14600,0 +970613,111.0000,111.6250,110.5000,111.3750,23100,0 +970616,113.0000,113.7500,113.0000,113.7500,7300,0 +970617,113.2500,114.0000,113.2500,113.7500,13900,0 +970618,113.7500,114.0000,113.3750,113.6250,18700,0 +970619,114.2500,115.1250,114.1250,115.0000,16700,0 +970620,115.5000,116.1250,115.1250,115.8750,9400,0 +970623,115.8750,116.3750,114.8750,115.7500,23600,0 +970624,115.2500,116.0000,114.7500,115.9375,11500,0 +970625,116.7500,116.7500,116.5000,116.5000,7300,0 +970626,115.2500,117.5000,114.5000,117.1250,14500,0 +970627,114.2500,116.0000,113.5000,115.5000,23600,0 +970630,113.1250,113.3750,112.5000,112.8125,14600,0 +970701,112.3750,113.0000,111.7500,112.6875,13600,0 +970702,112.6250,114.0000,112.3750,113.7500,8800,0 +970703,114.0000,114.5000,114.0000,114.5000,1100,0 +970707,113.0000,114.7500,113.0000,114.5000,9100,0 +970708,113.6250,114.3750,113.0000,114.2500,7000,0 +970709,112.5000,113.7500,112.2500,113.7500,9800,0 +970710,113.5000,114.0000,113.1250,114.0000,2900,0 +970711,113.0000,113.0000,112.5625,112.8125,6300,0 +970714,112.6250,113.1875,112.5000,113.0000,10300,0 +970715,112.7500,113.2500,112.7500,113.2500,5500,0 +970716,114.8750,117.0000,114.6875,117.0000,22200,0 +970717,117.0000,117.0000,115.7500,116.2500,12100,0 +970718,114.7500,115.0000,114.0000,114.6250,6800,0 +970721,114.0000,114.3125,113.7500,114.1875,4100,0 +970722,111.7500,113.0000,111.5000,113.0000,15000,0 +970723,112.6250,112.8750,112.0625,112.2500,9900,0 +970724,112.2500,112.6875,111.5625,112.6875,7600,0 +970725,112.0000,112.0000,111.5000,112.0000,3800,0 +970728,111.5000,112.9375,111.5000,112.7500,5100,0 +970729,112.5000,112.7500,112.5000,112.7500,2400,0 +970730,111.5625,113.0000,111.5000,113.0000,9200,0 +970731,112.8125,113.6875,112.6250,112.6250,4500,0 +970801,113.9375,114.1250,113.3125,113.9375,9900,0 +970804,114.0000,114.6250,114.0000,114.6250,9000,0 +970805,113.0000,113.0000,112.0000,112.1250,12600,0 +970806,112.1250,113.0625,112.1250,112.7500,5200,0 +970807,110.8750,113.0000,110.8750,112.7500,23900,0 +970808,112.3750,114.2500,112.3750,114.2500,11000,0 +970811,112.2500,112.2500,111.6250,112.2500,8300,0 +970812,112.2500,112.3125,111.1250,112.1250,20600,0 +970813,109.2500,109.2500,108.5000,108.5000,13600,0 +970814,108.3750,108.7500,106.5000,108.7500,15000,0 +970815,107.0000,107.6250,107.0000,107.3125,8400,0 +970818,105.3750,106.0000,105.3125,106.0000,13300,0 +970819,102.7500,103.1250,102.6875,103.0000,13100,0 +970820,103.7500,106.5000,103.7500,106.3750,22800,0 +970821,104.5000,106.0000,104.4375,106.0000,12600,0 +970822,103.5000,104.0000,103.0000,103.9375,16400,0 +970825,100.8750,101.7500,100.7500,101.6875,19000,0 +970826,101.1250,102.6250,101.1250,101.6875,21500,0 +970827,98.1875,98.1875,97.0625,97.5625,16300,0 +970828,96.1250,96.1250,93.2500,93.7500,50200,0 +970829,94.0000,94.0000,91.9375,93.2500,27800,0 +970902,90.3750,92.8750,90.1250,92.8750,25900,0 +970903,93.0625,95.7500,93.0625,95.0000,42200,0 +970904,93.9375,93.9375,93.0000,93.0000,13200,0 +970905,91.3750,92.1250,91.0000,91.6250,45400,0 +970908,89.5000,90.0000,89.5000,89.8750,70800,0 +970909,89.6875,90.5000,89.6250,90.3750,39300,0 +970910,89.5000,90.3750,89.5000,89.7500,20600,0 +970911,88.1250,88.7500,87.5000,88.0000,41100,0 +970912,86.0625,87.0000,85.5000,87.0000,48900,0 +970915,87.0000,88.5000,87.0000,88.1250,35400,0 +970916,85.3750,86.2500,84.5000,85.9375,41400,0 +970917,86.0000,86.0000,85.1875,85.5000,26400,0 +970918,86.2500,88.3750,86.1250,88.0625,38500,0 +970919,88.1250,88.1250,87.5000,87.6250,44400,0 +970922,90.5000,91.5000,90.0000,91.5000,24800,0 +970923,91.1875,91.2500,89.7500,91.2500,23800,0 +970924,91.2500,92.8750,91.2500,92.7500,23700,0 +970925,89.5000,89.7500,89.0625,89.0625,34600,0 +970926,88.0000,88.0000,87.0000,87.2500,48400,0 +970929,87.0000,88.1875,87.0000,88.1250,33200,0 +970930,88.1250,88.4375,87.8750,88.1875,29200,0 +971001,86.9375,87.9375,86.5000,86.6875,38500,0 +971002,86.8125,88.7500,86.8125,88.0000,10200,0 +971003,91.5000,92.0000,89.6875,90.9375,69200,0 +971006,93.2500,94.0000,93.0625,93.1875,37100,0 +971007,94.3750,94.3750,92.2500,93.5625,49600,0 +971008,93.6250,94.5000,93.1250,93.8125,66500,0 +971009,92.2500,92.5000,91.7500,92.5000,23700,0 +971010,92.3125,93.5000,92.0000,93.5000,21800,0 +971013,92.3125,92.3125,90.5000,90.5000,20600,0 +971014,91.0000,91.3750,90.5625,90.9375,16300,0 +971015,90.9375,91.0000,90.4375,90.6875,18000,0 +971016,90.3125,91.6875,90.3125,90.5000,24200,0 +971017,90.2500,90.2500,89.0000,89.6250,25200,0 +971020,88.0000,88.7500,87.5000,88.6875,26400,0 +971021,86.5000,87.2500,86.5000,87.1875,49400,0 +971022,87.0000,87.2500,86.6250,87.0625,28100,0 +971023,85.5000,87.5000,84.7500,87.3750,31100,0 +971024,86.5000,86.5625,85.5000,86.1250,35700,0 +971027,83.0000,83.0000,79.7500,79.7500,58900,0 +971028,79.5000,83.5000,78.0000,83.1875,70000,0 +971029,83.1875,83.8750,82.0000,83.2500,31000,0 +971030,81.4375,81.5000,80.4375,80.4375,21500,0 +971031,77.9375,80.0000,77.6875,80.0000,61700,0 +971103,79.7500,83.1250,79.7500,83.0625,32400,0 +971104,79.6250,80.6250,79.6250,80.6250,66900,0 +971105,78.8125,79.2500,78.5000,79.2500,40100,0 +971106,77.9375,78.1875,77.0000,77.9375,55200,0 +971107,73.3125,74.1250,73.0000,73.6250,78700,0 +971110,72.9375,72.9375,71.5000,71.6875,64200,0 +971111,71.4375,72.2500,71.1250,72.0000,36100,0 +971112,71.5000,71.9375,70.5000,70.5000,30100,0 +971113,71.5000,73.2500,71.5000,73.1875,33300,0 +971114,70.6250,73.0000,70.0000,72.9375,56900,0 +971117,75.0000,76.3125,75.0000,75.6250,56700,0 +971118,75.0000,75.2500,74.0000,74.3125,17700,0 +971119,71.6250,72.2500,71.2500,71.6250,42300,0 +971120,71.8750,73.5000,71.8750,72.8750,44000,0 +971121,74.1250,74.4375,72.0000,73.4375,27400,0 +971124,73.5000,73.5000,70.3125,71.2500,38200,0 +971125,71.7500,73.2500,71.7500,72.8750,40900,0 +971126,72.9375,72.9375,72.0000,72.3750,31200,0 +971128,71.6875,72.1250,71.4375,71.7500,18900,0 +971201,72.0000,73.5000,72.0000,73.1250,30100,0 +971202,74.0000,74.0000,73.2500,73.7500,31800,0 +971203,74.0000,74.3750,73.8125,74.3125,38700,0 +971204,73.1875,74.0000,73.1875,73.3125,47000,0 +971205,73.9375,75.0000,73.8750,74.0000,49300,0 +971208,73.0000,73.3750,72.3125,72.6875,23700,0 +971209,72.6250,74.1250,72.6250,73.5000,25000,0 +971210,73.5000,74.1875,72.6250,73.0000,21600,0 +971211,71.7500,74.1250,71.7500,72.2500,39500,0 +971212,72.9375,73.1875,71.8125,71.8125,34200,0 +971215,73.6250,73.6250,72.8750,73.1250,41900,0 +971216,73.1250,73.1875,72.3750,72.3750,25000,0 +971217,75.0000,76.1250,74.8125,74.8750,48700,0 +971218,73.9375,73.9375,71.5000,73.0000,45500,0 +971219,71.7500,71.7500,70.0000,71.0000,50300,0 +971222,68.7500,70.7500,68.7500,69.5000,40100,0 +971223,69.5000,69.6250,68.5000,68.5000,66900,0 +971224,68.7500,68.7500,67.5000,68.0000,31300,0 +971226,69.1250,69.1250,68.0000,68.8750,24900,0 +971229,69.1250,69.8750,68.6250,69.6250,51500,0 +971230,71.3750,71.7500,70.3750,70.6875,55400,0 +971231,70.5000,70.7500,68.8750,69.1250,34600,0 +980102,68.8750,71.2500,68.8750,71.1250,29500,0 +980105,72.2500,73.0000,72.0625,72.3125,27400,0 +980106,73.1250,73.3750,72.5625,72.5625,30900,0 +980107,72.2500,73.3750,72.2500,73.3125,33000,0 +980108,72.7500,72.9375,71.8750,71.8750,12900,0 +980109,69.5000,70.1250,68.2500,68.3125,26200,0 +980112,67.5000,69.8750,67.5000,69.8125,28600,0 +980113,70.6250,71.1250,70.3125,71.0000,29400,0 +980114,71.5000,72.0000,71.3125,71.3750,31200,0 +980115,71.6250,71.9375,71.4375,71.9375,17900,0 +980116,77.1250,77.2500,76.5000,77.1250,51100,0 +980120,78.0000,79.0000,78.0000,78.3750,27200,0 +980121,80.1250,80.6250,79.8750,80.2500,35800,0 +980122,81.8750,83.8750,81.7500,83.0000,58200,0 +980123,83.6875,83.7500,82.8125,83.5000,36600,0 +980126,83.8750,84.3125,83.7500,83.8750,21700,0 +980127,84.1250,84.6875,83.7500,84.6250,23400,0 +980128,81.2500,82.3750,81.0000,81.6875,57500,0 +980129,79.5000,82.0000,78.6250,80.7500,71300,0 +980130,79.4375,80.9375,79.4375,80.0625,64300,0 +980202,81.6875,83.3750,81.6250,83.0000,41000,0 +980203,82.5000,84.1250,82.1250,84.0625,25600,0 +980204,81.8750,83.5000,81.5000,82.7500,38100,0 +980205,82.6250,82.6250,82.0000,82.2500,12800,0 +980206,82.0000,83.5000,81.6250,83.4375,24600,0 +980209,82.3750,82.7500,82.0000,82.6875,14900,0 +980210,81.8125,82.3750,81.2500,82.0000,18400,0 +980211,81.5000,82.3750,81.1875,81.8750,21100,0 +980212,81.1250,81.2500,80.2500,80.5000,23700,0 +980213,79.8750,80.9375,79.5000,80.4375,24600,0 +980217,78.8750,78.9375,78.3750,78.5000,39800,0 +980218,77.1250,77.3750,76.6250,77.0000,43700,0 +980219,77.0625,77.0625,76.4375,76.9375,24500,0 +980220,76.1250,76.3125,75.6250,75.8750,30000,0 +980223,75.8750,76.1875,75.5000,76.1250,34500,0 +980224,74.0000,74.0000,73.1250,73.3750,56200,0 +980225,72.7500,72.8125,72.3125,72.7500,68400,0 +980226,73.0625,75.5000,73.0625,75.2500,60900,0 +980227,75.5000,75.7500,74.9375,75.7500,31300,0 +980302,77.7500,79.4375,77.6875,79.0000,47800,0 +980303,78.2500,78.3750,77.3125,78.1875,22400,0 +980304,77.5000,78.0000,77.4375,77.6875,33800,0 +980305,75.6250,76.6875,75.0000,76.2500,38000,0 +980306,76.5000,77.5000,76.5000,77.4375,16800,0 +980309,76.0000,76.2500,75.7500,76.1875,18600,0 +980310,75.7500,76.3750,75.7500,76.3125,19500,0 +980311,74.6250,75.7500,74.6250,75.5000,43500,0 +980312,73.5000,73.6250,72.8750,73.5000,50700,0 +980313,74.2500,75.7500,74.2500,75.3750,46200,0 +980316,73.7500,74.1250,73.5000,74.1250,40200,0 +980317,73.5000,74.0000,73.3750,74.0000,36500,0 +980318,72.5000,72.7500,72.2500,72.4375,30200,0 +980319,71.8125,72.6875,71.7500,72.6875,65700,0 +980320,72.6875,74.5000,72.5625,73.7500,124700,0 +980323,72.8750,73.5000,72.5000,73.1250,107700,0 +980324,72.2500,72.5000,71.0000,72.0000,133000,0 +980325,72.3750,73.5000,72.2500,73.1250,89700,0 +980326,74.8750,76.5000,74.5625,75.8750,58800,0 +980327,76.5000,76.5000,75.0625,75.7500,55700,0 +980330,74.2500,74.2500,73.5000,74.0000,77900,0 +980331,73.6250,73.6250,73.0000,73.5000,33800,0 +980401,73.9375,75.0000,73.7500,74.7500,36600,0 +980402,73.5000,74.3750,72.8750,74.2500,37700,0 +980403,70.8750,71.2500,70.5625,70.6250,80300,0 +980406,70.3125,71.7500,70.3125,71.3750,93000,0 +980407,70.8750,71.1875,70.5000,70.6250,56400,0 +980408,72.5000,73.1875,71.5625,72.6250,63200,0 +980409,73.7500,75.4375,73.7500,74.3750,69400,0 +980413,75.1250,75.1875,74.3125,74.3750,47200,0 +980414,75.5000,76.7500,75.0000,76.7500,51800,0 +980415,76.7500,77.0000,76.4375,76.6875,39100,0 +980416,75.0000,75.0000,74.2500,74.6250,33300,0 +980417,74.3750,75.2500,74.0625,75.0000,27300,0 +980420,74.0625,74.3750,74.0625,74.2500,46800,0 +980421,74.1875,74.8750,73.8750,74.7500,27500,0 +980422,74.1250,74.4375,73.6250,74.4375,49800,0 +980423,73.5000,73.5000,72.6250,73.3125,50200,0 +980424,73.3125,73.7500,73.0000,73.6250,29800,0 +980427,71.7500,71.7500,70.5625,70.9375,80200,0 +980428,70.8750,72.5000,70.8125,71.3750,50300,0 +980429,71.1250,71.6250,71.0000,71.3750,46700,0 +980430,71.6250,72.8750,71.6250,72.2500,39700,0 +980501,70.5625,71.5000,70.3750,71.3750,36400,0 +980504,71.0000,72.3125,71.0000,72.0000,33200,0 +980505,71.7500,72.1250,71.5000,71.8125,54500,0 +980506,71.8750,71.8750,70.6250,70.9375,16600,0 +980507,70.9375,70.9375,70.3750,70.3750,15300,0 +980508,70.1875,71.0000,70.1875,70.9375,21600,0 +980511,72.8750,73.5000,72.5625,73.2500,47800,0 +980512,73.3125,74.0000,72.8750,73.6875,82100,0 +980513,73.6875,74.4375,73.2500,74.1875,96300,0 +980514,73.1250,73.6250,73.0625,73.5625,54600,0 +980515,73.1875,73.6875,73.0625,73.5000,39300,0 +980518,73.8125,74.3750,73.5625,74.1250,76500,0 +980519,74.2500,74.9375,74.1250,74.8750,39900,0 +980520,74.0000,74.2500,73.1875,73.2500,72000,0 +980521,72.6875,73.2500,72.3750,73.2500,79200,0 +980522,72.6250,72.8750,72.5000,72.8750,26200,0 +980526,70.5000,71.0000,70.0625,70.6875,81200,0 +980527,69.9375,70.2500,69.2500,70.2500,54300,0 +980528,68.7500,68.7500,67.0625,67.7500,94400,0 +980529,66.7500,66.7500,65.7500,66.3750,92300,0 +980601,64.0625,64.7500,63.5000,64.0625,100700,0 +980602,64.0625,64.8750,64.0000,64.7500,57400,0 +980603,64.5000,64.6875,63.8750,64.3125,47300,0 +980604,64.3125,65.0000,64.0000,65.0000,47400,0 +980605,64.3750,64.8750,64.2500,64.8125,50800,0 +980608,63.7500,63.8125,63.0000,63.2500,57300,0 +980609,64.7500,65.0000,64.5000,64.5000,40000,0 +980610,64.6250,64.9375,64.2500,64.3750,33700,0 +980611,62.8750,62.8750,61.5000,61.6875,110400,0 +980612,61.6875,61.6875,61.0000,61.0000,110900,0 +980615,60.7500,60.9375,59.3125,60.0000,129500,0 +980616,60.2500,62.3750,60.1250,62.1875,73400,0 +980617,63.5000,66.1250,63.3750,65.5000,162300,0 +980618,63.8750,63.8750,63.0625,63.3750,34300,0 +980619,65.0000,66.5000,65.0000,65.1875,104200,0 +980622,64.9375,64.9375,64.5625,64.5625,45200,0 +980623,62.8750,63.1875,62.4375,63.1250,112900,0 +980624,63.0000,63.1875,62.5000,62.8750,73400,0 +980625,61.7500,61.8125,61.1875,61.5000,91900,0 +980626,60.0000,61.7500,59.7500,61.1250,191400,0 +980629,61.3750,62.2500,61.2500,62.1250,46000,0 +980630,64.2500,64.8750,63.8750,64.5000,73300,0 +980701,67.1875,68.4375,66.7500,68.2500,108200,0 +980702,66.5000,66.8125,66.2500,66.6875,51200,0 +980706,64.0000,64.0000,63.5625,64.0000,55600,0 +980707,64.2500,65.2500,63.5000,64.8750,77800,0 +980708,64.1250,64.5000,64.0625,64.5000,50000,0 +980709,64.5000,65.1250,64.5000,65.0000,36600,0 +980710,63.3750,63.3750,62.7500,63.3750,73900,0 +980713,63.2500,64.1875,63.2500,63.8750,43600,0 +980714,63.6250,64.0000,63.5625,64.0000,46300,0 +980715,64.7500,64.8750,64.3125,64.8750,68000,0 +980716,64.6250,64.8125,63.6250,64.5625,102600,0 +980717,64.2500,65.3750,64.1250,65.3750,53800,0 +980720,65.6250,65.8750,65.5000,65.8125,90600,0 +980721,64.7500,64.8125,64.0000,64.2500,73600,0 +980722,63.3750,63.3750,62.5000,62.9375,62200,0 +980723,62.0000,62.0000,61.6250,61.8125,93200,0 +980724,62.5000,63.2500,62.5000,62.9375,63100,0 +980727,61.7500,61.7500,61.0625,61.5625,123000,0 +980728,61.5000,61.5000,60.8750,61.0000,42500,0 +980729,61.2500,61.3125,60.6250,60.7500,20000,0 +980730,62.1250,63.2500,62.0625,63.1250,87000,0 +980731,63.1875,63.1875,62.5625,62.5625,46200,0 +980803,62.0000,62.1875,61.5000,62.0000,48000,0 +980804,61.7500,61.9375,60.6250,60.8750,36100,0 +980805,60.9375,61.5000,60.5000,61.5000,62900,0 +980806,60.3750,60.3750,60.0625,60.3750,41900,0 +980807,60.0000,60.0000,58.3750,58.6875,93700,0 +980810,57.4375,57.6875,57.3750,57.6250,71100,0 +980811,56.0625,56.0625,55.0000,55.1250,52300,0 +980812,55.1250,55.5000,54.6250,54.8750,31500,0 +980813,55.7500,56.3750,55.5000,55.7500,66700,0 +980814,55.7500,55.7500,55.5000,55.5625,61800,0 +980817,53.7500,54.6875,53.6250,54.2500,71200,0 +980818,55.2500,56.2500,55.0625,56.1875,83800,0 +980819,55.1250,55.1250,54.3125,54.3750,97900,0 +980820,53.6250,53.6250,52.7500,53.4375,81300,0 +980821,52.3125,52.5000,51.5625,52.4375,62500,0 +980824,52.4375,52.4375,51.2500,51.8750,115900,0 +980825,51.9375,52.0000,51.6250,51.7500,74800,0 +980826,50.6250,50.6250,50.0000,50.0000,173500,0 +980827,49.5000,50.0000,48.8750,50.0000,177900,0 +980828,49.2500,49.3125,47.5000,48.7500,95300,0 +980831,49.7500,49.7500,47.8750,49.3750,98500,0 +980901,51.0000,52.6250,50.6250,52.2500,117000,0 +980902,54.1250,55.5625,54.0000,54.7500,76200,0 +980903,51.1250,51.1250,48.7500,49.2500,167600,0 +980904,48.3750,48.3750,47.0000,47.5000,81700,0 +980908,47.6250,48.2500,46.5000,47.1875,92100,0 +980909,46.3750,47.0000,46.0000,46.3750,51500,0 +980910,46.0625,46.6250,45.5000,46.0000,47700,0 +980911,45.0000,46.1875,44.7500,45.5625,93000,0 +980914,45.3750,46.3125,45.1250,46.3125,52500,0 +980915,45.6250,46.0000,44.5000,44.5000,49000,0 +980916,43.3750,43.7500,43.2500,43.3750,45900,0 +980917,42.5000,42.5000,41.6250,41.6875,58000,0 +980918,41.6875,42.1875,41.0000,41.5000,48300,0 +980921,40.5000,41.3750,40.1875,40.5000,40300,0 +980922,41.4375,42.0000,41.4375,41.6250,32200,0 +980923,42.5000,42.7500,41.5625,42.7500,86800,0 +980924,43.8125,45.0000,43.8125,44.1875,55400,0 +980925,44.9375,44.9375,44.0000,44.1875,43800,0 +980928,44.8750,45.6875,44.8750,45.6250,40500,0 +980929,45.8125,45.8125,44.5000,45.0000,31000,0 +980930,44.7500,45.0000,43.1250,43.3750,30800,0 +981001,42.5000,42.5000,40.3750,40.8750,56200,0 +981002,44.0000,44.6250,43.0000,44.1250,72500,0 +981005,43.0000,43.0000,40.3125,41.0625,41800,0 +981006,42.9375,44.0000,42.5000,43.0000,60100,0 +981008,47.0625,47.0625,42.2500,43.2500,59500,0 +981009,46.7500,46.8125,45.2500,46.2500,105100,0 +981012,47.5625,47.5625,46.3750,46.5000,48900,0 +981012,47.5625,47.5625,46.3750,46.5000,48900,0 +981013,46.5000,46.5000,45.5000,45.5000,13900,0 +981014,45.2500,46.0000,45.1250,45.1250,46600,0 +981015,45.2500,47.2500,45.1875,47.0000,68700,0 +981016,46.9375,48.5000,46.7500,47.0625,65700,0 +981019,47.6250,49.1250,47.5625,48.6250,40700,0 +981020,48.6250,50.1250,48.6250,49.5000,87400,0 +981021,50.6250,50.8750,50.0625,50.4375,33500,0 +981022,50.5000,51.5000,50.2500,51.0000,43600,0 +981023,51.5000,52.8125,51.5000,52.3750,28400,0 +981026,52.4375,52.4375,51.1250,51.2500,22100,0 +981027,50.2500,50.7500,49.3750,49.8750,42100,0 +981027,50.2500,50.7500,49.3750,49.8750,42100,0 +981028,50.5000,51.5000,49.7500,51.0000,38200,0 +981029,49.7500,50.5000,49.3750,49.7500,37300,0 +981030,50.5000,51.6875,50.3750,51.0000,37800,0 +981102,54.5000,56.7500,54.5000,56.0000,57200,0 +981103,55.0625,56.4375,55.0000,55.8750,50900,0 +981104,58.7500,60.3750,58.5000,59.8125,90300,0 +981105,59.8750,60.6250,59.8125,60.5000,51200,0 +981106,57.5000,58.9375,57.5000,58.5000,37300,0 +981109,56.0000,56.4375,54.0000,54.1250,56200,0 +981110,53.8750,53.8750,52.9375,53.4375,36700,0 +981111,55.4375,56.1250,54.5000,54.5625,35900,0 +981112,53.1250,53.6250,52.7500,53.2500,52000,0 +981113,53.1875,53.9375,53.1875,53.6875,26000,0 +981116,56.6250,56.7500,55.5000,56.3125,47100,0 +981118,56.5000,56.6250,55.5000,56.5000,42600,0 +981119,56.5625,57.2500,56.3750,56.7500,122700,0 +981120,58.6250,59.7500,58.5000,59.7500,66500,0 +981123,59.7500,60.7500,59.3125,60.7500,50600,0 +981124,64.2500,64.2500,62.9375,62.9375,68500,0 +981125,62.8750,63.0000,61.0625,61.0625,38500,0 +981125,62.8750,63.0000,61.0625,61.0625,38500,0 +981127,63.0000,64.0000,63.0000,63.5000,54600,0 +981130,61.6250,61.6250,59.0000,59.0000,58700,0 +981201,58.8750,59.9375,58.5000,59.2500,62300,0 +981202,61.5000,62.1250,61.1875,61.7500,51400,0 +981203,61.3750,61.9375,60.3750,60.3750,44700,0 +981204,61.5000,61.5000,60.7500,61.2500,47000,0 +981207,58.5000,59.3750,58.1250,58.4375,49500,0 +981208,60.0000,60.2500,59.0000,59.3125,59700,0 +981209,61.2500,61.6250,60.7500,61.3125,164100,0 +981210,61.9375,61.9375,60.7500,60.8750,113900,0 +981211,60.6250,60.6250,59.6250,60.0625,82600,0 +981211,60.6250,60.6250,59.6250,60.0625,82600,0 +981214,59.5000,60.2500,58.6250,58.7500,84900,0 +981215,57.8750,58.5000,57.7500,58.1875,101300,0 +981216,60.5625,60.8750,59.7500,60.1250,88500,0 +981217,62.0000,62.7500,61.9375,62.6875,101600,0 +981218,64.0625,64.9375,64.0625,64.5000,85300,0 +981221,65.0000,65.5625,65.0000,65.0000,74600,0 +981222,63.0625,63.0625,61.3125,62.0000,73300,0 +981223,62.0000,62.3750,61.2500,62.1875,34100,0 +981224,61.8750,62.1875,61.0000,61.1250,29800,0 +981224,61.8750,62.1875,61.0000,61.1250,29800,0 +981228,61.1250,61.8750,60.1250,60.5000,97000,0 +981228,61.1250,61.8750,60.1250,60.5000,97000,0 +981229,61.2500,61.8750,61.0000,61.1875,54000,0 +981230,61.0000,61.0000,58.8750,59.0000,61900,0 +981231,60.0000,60.9375,60.0000,60.4375,41600,0 +981231,60.0000,60.9375,60.0000,60.4375,41600,0 +990104,60.5000,62.6250,60.5000,62.5000,36800,0 +990105,62.3125,63.6250,62.3125,63.0000,73700,0 +990106,63.0000,64.2500,62.7500,63.6875,57600,0 +990107,64.5000,65.6250,64.5000,65.5625,98000,0 +990108,66.0000,66.8125,66.0000,66.5000,44100,0 +990111,67.1250,67.6250,66.5625,67.0625,61200,0 +990112,66.5625,67.2500,66.0000,66.8125,38700,0 diff --git a/Robust/src/Benchmarks/oooJava/monte/makefile b/Robust/src/Benchmarks/oooJava/monte/makefile new file mode 100644 index 00000000..d5dc79d7 --- /dev/null +++ b/Robust/src/Benchmarks/oooJava/monte/makefile @@ -0,0 +1,31 @@ +PROGRAM=JGFMonteCarloBench + +SOURCE_FILES=JGFMonteCarloBench.java + +BUILDSCRIPT=../../../buildscript + +#USEOOO= -ooojava 8 2 -ooodebug +#BSFLAGS= -32bit -nooptimize -mainclass $(PROGRAM) -garbagestats -debug -joptimize +USEOOO= -ooojava 24 2 -ooodebug +BSFLAGS= -64bit -mainclass $(PROGRAM) -garbagestats -joptimize +DISJOINT= -disjoint -disjoint-k 1 -enable-assertions + +default: + $(BUILDSCRIPT) -nojava $(USEOOO) $(BSFLAGS) $(DISJOINT) -o $(PROGRAM)p $(SOURCE_FILES) -builddir par + +single: + $(BUILDSCRIPT) $(BSFLAGS) -o $(PROGRAM)s -builddir sing $(SOURCE_FILES) + +ooo: + $(BUILDSCRIPT) $(USEOOO) $(BSFLAGS) $(DISJOINT) -o $(PROGRAM)p -builddir par $(SOURCE_FILES) + +clean: + rm -f $(PROGRAM)p.bin $(PROGRAM)s.bin + rm -fr par sing + rm -f *~ + rm -f *.dot + rm -f *.png + rm -f *.txt + rm -f aliases.txt + rm -f mlpReport*txt + rm -f results*txt