add Monte Carlo benchmark ported from Java Grande Benchmark suite
authoryeom <yeom>
Fri, 23 Jul 2010 03:44:00 +0000 (03:44 +0000)
committeryeom <yeom>
Fri, 23 Jul 2010 03:44:00 +0000 (03:44 +0000)
15 files changed:
Robust/src/Benchmarks/oooJava/monte/AppDemo.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/CallAppDemo.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/JGFMonteCarloBench.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/MonteCarloPath.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/PathId.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/PriceStock.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/RatePath.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/ReturnPath.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/ToInitAllTasks.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/ToResult.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/ToTask.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/Universal.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/Utilities.java [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/hitData [new file with mode: 0644]
Robust/src/Benchmarks/oooJava/monte/makefile [new file with mode: 0644]

diff --git a/Robust/src/Benchmarks/oooJava/monte/AppDemo.java b/Robust/src/Benchmarks/oooJava/monte/AppDemo.java
new file mode 100644 (file)
index 0000000..7ac31ef
--- /dev/null
@@ -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.
+ * 
+ * <p>
+ * To do:
+ * <ol>
+ * <li>Very long delay prior to connecting to the server.</li>
+ * <li>Some text output seem to struggle to get out, without the user tapping
+ * ENTER on the keyboard!</li>
+ * </ol>
+ * 
+ * @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 <code>hostname</code> 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;iRun<nMC;iRun=iRun+lworkload){      
+      
+      int ilow=iRun;
+      int iupper=iRun+lworkload;
+      if(iupper>nMC){
+        iupper=nMC;
+      }
+      
+      int l_size=iupper-ilow;
+      PriceStock psArray[]=new PriceStock[l_size];      
+      sese parallel{
+        for(int idx=ilow;idx<iupper;idx++){
+          PriceStock ps = new PriceStock();
+          ps.setInitAllTasks(initAllTasks);
+          ps.setTask(tasks.elementAt(idx));
+          ps.run();
+          psArray[idx-ilow]=ps;
+        }
+      }
+      
+      sese serial{
+        for(int idx=ilow;idx<iupper;idx++){
+          ToResult returnMC = (ToResult)psArray[idx-ilow].getResult();
+          avgMCrate.inc_pathValue(returnMC.get_pathValue());
+          avgExpectedReturnRateMC += returnMC.get_expectedReturnRate();
+          avgVolatilityMC += returnMC.get_volatility();
+          runAvgExpectedReturnRateMC = avgExpectedReturnRateMC / ((double) (idx + 1));
+          runAvgVolatilityMC = avgVolatilityMC / ((double) (idx + 1));
+        }
+    }
+    
+  }
+  avgMCrate.inc_pathValue((double) 1.0 / ((double) nRunsMC));
+  avgExpectedReturnRateMC /= nRunsMC;
+  avgVolatilityMC /= nRunsMC;
+  JGFavgExpectedReturnRateMC = avgExpectedReturnRateMC;
+  
+      /*
+      sese serial{
+        for(int idx=ilow;idx<iupper;idx++){
+          results.addElement(psArray[idx-ilow].getResult());
+        }
+      }
+      
+    }
+
+    // process serial
+    ToResult returnMC;
+    if (nRunsMC != results.size()) {
+      errPrintln("Fatal: TaskRunner managed to finish with no all the results gathered in!");
+      System.exit(-1);
+    }
+    // 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 i = 0; i < nRunsMC; i++) {
+      // First, create an instance which is supposed to generate a
+      // particularly simple MC path.
+      returnMC = (ToResult) results.elementAt(i);
+      avgMCrate.inc_pathValue(returnMC.get_pathValue());
+      avgExpectedReturnRateMC += returnMC.get_expectedReturnRate();
+      avgVolatilityMC += returnMC.get_volatility();
+      runAvgExpectedReturnRateMC = avgExpectedReturnRateMC / ((double) (i + 1));
+      runAvgVolatilityMC = avgVolatilityMC / ((double) (i + 1));
+    } // for i;
+    avgMCrate.inc_pathValue((double) 1.0 / ((double) nRunsMC));
+    avgExpectedReturnRateMC /= nRunsMC;
+    avgVolatilityMC /= nRunsMC;
+    JGFavgExpectedReturnRateMC = avgExpectedReturnRateMC;
+      */
+    
+  }
+
+  // ------------------------------------------------------------------------idx
+  /**
+   * Generates the parameters for the given Monte Carlo simulation.
+   * 
+   * @param nRunsMC
+   *          the number of tasks, and hence Monte Carlo paths to produce.
+   */
+  private void initTasks(int nRunsMC) {
+    tasks = new Vector(nRunsMC);
+    for (int i = 0; i < nRunsMC; i++) {
+      String header = "MC run " + String.valueOf(i);
+      ToTask toTask = new ToTask(header, (long) i * 11);
+      tasks.addElement((Object) toTask);
+    }
+  }
+
+  /**
+   * Method for doing something with the Monte Carlo simulations. It's probably
+   * not mathematically correct, but shall take an average over all the
+   * simulated rate paths.
+   * 
+   * @exception DemoException
+   *              thrown if there is a problem with reading in any values.
+   */
+  private void processResults() {
+    /*
+     * double avgExpectedReturnRateMC = 0.0; double avgVolatilityMC = 0.0;
+     * double runAvgExpectedReturnRateMC = 0.0; double runAvgVolatilityMC = 0.0;
+     * ToResult returnMC; if (nRunsMC != results.size()) {errPrintln(
+     * "Fatal: TaskRunner managed to finish with no all the results gathered in!"
+     * ); System.exit(-1); } // // 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 i = 0; i < nRunsMC; i++) { // First, create an instance which is
+     * supposed to generate a // particularly simple MC path. returnMC =
+     * (ToResult) results.elementAt(i);
+     * avgMCrate.inc_pathValue(returnMC.get_pathValue());
+     * avgExpectedReturnRateMC += returnMC.get_expectedReturnRate();
+     * avgVolatilityMC += returnMC.get_volatility(); runAvgExpectedReturnRateMC
+     * = avgExpectedReturnRateMC / ((double) (i + 1)); runAvgVolatilityMC =
+     * avgVolatilityMC / ((double) (i + 1)); } // for i;
+     * avgMCrate.inc_pathValue((double) 1.0 / ((double) nRunsMC));
+     * avgExpectedReturnRateMC /= nRunsMC; avgVolatilityMC /= nRunsMC;
+     * JGFavgExpectedReturnRateMC = avgExpectedReturnRateMC;
+     */
+  }
+
+  //
+  // ------------------------------------------------------------------------
+  // Accessor methods for class AppDemo.
+  // Generated by 'makeJavaAccessor.pl' script. HWY. 20th January 1999.
+  // ------------------------------------------------------------------------
+  /**
+   * Accessor method for private instance variable <code>dataDirname</code>.
+   * 
+   * @return Value of instance variable <code>dataDirname</code>.
+   */
+  public String get_dataDirname() {
+    return (this.dataDirname);
+  }
+
+  /**
+   * Set method for private instance variable <code>dataDirname</code>.
+   * 
+   * @param dataDirname
+   *          the value to set for the instance variable
+   *          <code>dataDirname</code>.
+   */
+  public void set_dataDirname(String dataDirname) {
+    this.dataDirname = dataDirname;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>dataFilename</code>.
+   * 
+   * @return Value of instance variable <code>dataFilename</code>.
+   */
+  public String get_dataFilename() {
+    return (this.dataFilename);
+  }
+
+  /**
+   * Set method for private instance variable <code>dataFilename</code>.
+   * 
+   * @param dataFilename
+   *          the value to set for the instance variable
+   *          <code>dataFilename</code>.
+   */
+  public void set_dataFilename(String dataFilename) {
+    this.dataFilename = dataFilename;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>nTimeStepsMC</code>.
+   * 
+   * @return Value of instance variable <code>nTimeStepsMC</code>.
+   */
+  public int get_nTimeStepsMC() {
+    return (this.nTimeStepsMC);
+  }
+
+  /**
+   * Set method for private instance variable <code>nTimeStepsMC</code>.
+   * 
+   * @param nTimeStepsMC
+   *          the value to set for the instance variable
+   *          <code>nTimeStepsMC</code>.
+   */
+  public void set_nTimeStepsMC(int nTimeStepsMC) {
+    this.nTimeStepsMC = nTimeStepsMC;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>nRunsMC</code>.
+   * 
+   * @return Value of instance variable <code>nRunsMC</code>.
+   */
+  public int get_nRunsMC() {
+    return (this.nRunsMC);
+  }
+
+  /**
+   * Set method for private instance variable <code>nRunsMC</code>.
+   * 
+   * @param nRunsMC
+   *          the value to set for the instance variable <code>nRunsMC</code>.
+   */
+  public void set_nRunsMC(int nRunsMC) {
+    this.nRunsMC = nRunsMC;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>tasks</code>.
+   * 
+   * @return Value of instance variable <code>tasks</code>.
+   */
+  public Vector get_tasks() {
+    return (this.tasks);
+  }
+
+  /**
+   * Set method for private instance variable <code>tasks</code>.
+   * 
+   * @param tasks
+   *          the value to set for the instance variable <code>tasks</code>.
+   */
+  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 (file)
index 0000000..6081561
--- /dev/null
@@ -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 (file)
index 0000000..c2f813d
--- /dev/null
@@ -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 (file)
index 0000000..98047b9
--- /dev/null
@@ -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.
+ * 
+ * <p>
+ * To do list:
+ * <ol>
+ * <li><code>double[] pathDate</code> is not simulated.</li>
+ * </ol>
+ * 
+ * @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 <code>setInitAllTasks()</code> method.
+   */
+  public MonteCarloPath() {
+    super();
+    initFields();
+    set_prompt(prompt);
+    set_DEBUG(DEBUG);
+  }
+
+  /**
+   * Constructor, using the <code>ReturnPath</code> 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 <code>PathId</code> 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 <code>ReturnPath</code>'s two class variables
+   *          <code>COMPOUNDED</code> and <code>NONCOMPOUNDED</code>.
+   * @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 <code>ReturnPath</code>'s two class variables
+   *          <code>COMPOUNDED</code> and <code>NONCOMPOUNDED</code>.
+   * @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 <code>fluctuations</code>.
+   * 
+   * @return Value of instance variable <code>fluctuations</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>fluctuations</code> 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 <code>fluctuations</code>.
+   * 
+   * @param fluctuations
+   *          the value to set for the instance variable
+   *          <code>fluctuations</code>.
+   */
+  public void set_fluctuations(double[] fluctuations) {
+    this.fluctuations = fluctuations;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>pathValue</code>.
+   * 
+   * @return Value of instance variable <code>pathValue</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>pathValue</code> 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 <code>pathValue</code>.
+   * 
+   * @param pathValue
+   *          the value to set for the instance variable <code>pathValue</code>.
+   */
+  public void set_pathValue(double[] pathValue) {
+    this.pathValue = pathValue;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>returnDefinition</code>
+   * .
+   * 
+   * @return Value of instance variable <code>returnDefinition</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>returnDefinition</code> 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 <code>returnDefinition</code>.
+   * 
+   * @param returnDefinition
+   *          the value to set for the instance variable
+   *          <code>returnDefinition</code>.
+   */
+  public void set_returnDefinition(int returnDefinition) {
+    this.returnDefinition = returnDefinition;
+  }
+
+  /**
+   * Accessor method for private instance variable
+   * <code>expectedReturnRate</code>.
+   * 
+   * @return Value of instance variable <code>expectedReturnRate</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>expectedReturnRate</code> 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 <code>expectedReturnRate</code>.
+   * 
+   * @param expectedReturnRate
+   *          the value to set for the instance variable
+   *          <code>expectedReturnRate</code>.
+   */
+  public void set_expectedReturnRate(double expectedReturnRate) {
+    this.expectedReturnRate = expectedReturnRate;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>volatility</code>.
+   * 
+   * @return Value of instance variable <code>volatility</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>volatility</code> 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 <code>volatility</code>.
+   * 
+   * @param volatility
+   *          the value to set for the instance variable <code>volatility</code>
+   *          .
+   */
+  public void set_volatility(double volatility) {
+    this.volatility = volatility;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>nTimeSteps</code>.
+   * 
+   * @return Value of instance variable <code>nTimeSteps</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>nTimeSteps</code> 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 <code>nTimeSteps</code>.
+   * 
+   * @param nTimeSteps
+   *          the value to set for the instance variable <code>nTimeSteps</code>
+   *          .
+   */
+  public void set_nTimeSteps(int nTimeSteps) {
+    this.nTimeSteps = nTimeSteps;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>pathStartValue</code>.
+   * 
+   * @return Value of instance variable <code>pathStartValue</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>pathStartValue</code> 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 <code>pathStartValue</code>.
+   * 
+   * @param pathStartValue
+   *          the value to set for the instance variable
+   *          <code>pathStartValue</code>.
+   */
+  public void set_pathStartValue(double pathStartValue) {
+    this.pathStartValue = pathStartValue;
+  }
+
+  // ------------------------------------------------------------------------
+  /**
+   * Method for copying the suitable instance variable from a
+   * <code>ReturnPath</code> 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 <code>RatePath</code> 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 (file)
index 0000000..751c514
--- /dev/null
@@ -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 <code>name</code>.
+   * 
+   * @return Value of instance variable <code>name</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>name</code> 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 <code>name</code>.
+   * 
+   * @param name
+   *          the value to set for the instance variable <code>name</code>.
+   */
+  public void set_name(String name) {
+    this.name = name;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>startDate</code>.
+   * 
+   * @return Value of instance variable <code>startDate</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>startDate</code> 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 <code>startDate</code>.
+   * 
+   * @param startDate
+   *          the value to set for the instance variable <code>startDate</code>.
+   */
+  public void set_startDate(int startDate) {
+    this.startDate = startDate;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>endDate</code>.
+   * 
+   * @return Value of instance variable <code>endDate</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>endDate</code> 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 <code>endDate</code>.
+   * 
+   * @param endDate
+   *          the value to set for the instance variable <code>endDate</code>.
+   */
+  public void set_endDate(int endDate) {
+    this.endDate = endDate;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>dTime</code>.
+   * 
+   * @return Value of instance variable <code>dTime</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>dTime</code> 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 <code>dTime</code>.
+   * 
+   * @param dTime
+   *          the value to set for the instance variable <code>dTime</code>.
+   */
+  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 (file)
index 0000000..397240d
--- /dev/null
@@ -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 (file)
index 0000000..95985ae
--- /dev/null
@@ -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.
+ * 
+ * <p>
+ * To Do list:
+ * <ol>
+ * <li><i>None!</i>
+ * </ol>
+ * 
+ * @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 <code>pathValue</code>.
+   * 
+   * @return Value of instance variable <code>pathValue</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>pathValue</code> 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 <code>pathValue</code>.
+   * 
+   * @param pathValue
+   *          the value to set for the instance variable <code>pathValue</code>.
+   */
+  public void set_pathValue(double[] pathValue) {
+    this.pathValue = pathValue;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>pathDate</code>.
+   * 
+   * @return Value of instance variable <code>pathDate</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>pathDate</code> 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 <code>pathDate</code>.
+   * 
+   * @param pathDate
+   *          the value to set for the instance variable <code>pathDate</code>.
+   */
+  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. <i>One
+   * may want to index this in a more user friendly manner!</i>
+   * 
+   * @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:
+   * 
+   * <pre>
+   * 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
+   * </pre>
+   * <p>
+   * Where the fields represent, one believes, the following:
+   * <ol>
+   * <li>The date in 'YYMMDD' format</li>
+   * <li>Open</li>
+   * <li>High</li>
+   * <li>Low</li>
+   * <li>Last</li>
+   * <li>Volume</li>
+   * <li>Open Interest</li>
+   * </ol>
+   * One will probably make use of the closing price, but this can be redefined
+   * via the class variable <code>DATUMFIELD</code>. 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 (file)
index 0000000..7f13ee6
--- /dev/null
@@ -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.
+ * 
+ * <p>
+ * To do list:
+ * <ol>
+ * <li>Define a window over which the mean drift and volatility are calculated.</li>
+ * <li>Hash table to reference {DATE}->{pathValue-index}.</li>
+ * </ol>
+ * 
+ * @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 <code>nPathArray-1</code>.
+   * @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 <code>pathValue</code>.
+   * 
+   * @return Value of instance variable <code>pathValue</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>pathValue</code> 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 <code>pathValue</code>.
+   * 
+   * @param pathValue
+   *          the value to set for the instance variable <code>pathValue</code>.
+   */
+  public void set_pathValue(double[] pathValue) {
+    this.pathValue = pathValue;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>nPathValue</code>.
+   * 
+   * @return Value of instance variable <code>nPathValue</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>nPathValue</code> 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 <code>nPathValue</code>.
+   * 
+   * @param nPathValue
+   *          the value to set for the instance variable <code>nPathValue</code>
+   *          .
+   */
+  public void set_nPathValue(int nPathValue) {
+    this.nPathValue = nPathValue;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>returnDefinition</code>
+   * .
+   * 
+   * @return Value of instance variable <code>returnDefinition</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>returnDefinition</code> 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 <code>returnDefinition</code>.
+   * 
+   * @param returnDefinition
+   *          the value to set for the instance variable
+   *          <code>returnDefinition</code>.
+   */
+  public void set_returnDefinition(int returnDefinition) {
+    this.returnDefinition = returnDefinition;
+  }
+
+  /**
+   * Accessor method for private instance variable
+   * <code>expectedReturnRate</code>.
+   * 
+   * @return Value of instance variable <code>expectedReturnRate</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>expectedReturnRate</code> 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 <code>expectedReturnRate</code>.
+   * 
+   * @param expectedReturnRate
+   *          the value to set for the instance variable
+   *          <code>expectedReturnRate</code>.
+   */
+  public void set_expectedReturnRate(double expectedReturnRate) {
+    this.expectedReturnRate = expectedReturnRate;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>volatility</code>.
+   * 
+   * @return Value of instance variable <code>volatility</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>volatility</code> 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 <code>volatility</code>.
+   * 
+   * @param volatility
+   *          the value to set for the instance variable <code>volatility</code>
+   *          .
+   */
+  public void set_volatility(double volatility) {
+    this.volatility = volatility;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>volatility2</code>.
+   * 
+   * @return Value of instance variable <code>volatility2</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>volatility2</code> 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 <code>volatility2</code>.
+   * 
+   * @param volatility2
+   *          the value to set for the instance variable
+   *          <code>volatility2</code>.
+   */
+  public void set_volatility2(double volatility2) {
+    this.volatility2 = volatility2;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>mean</code>.
+   * 
+   * @return Value of instance variable <code>mean</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>mean</code> 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 <code>mean</code>.
+   * 
+   * @param mean
+   *          the value to set for the instance variable <code>mean</code>.
+   */
+  public void set_mean(double mean) {
+    this.mean = mean;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>variance</code>.
+   * 
+   * @return Value of instance variable <code>variance</code>.
+   * @exception DemoException
+   *              thrown if instance variable <code>variance</code> 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 <code>variance</code>.
+   * 
+   * @param variance
+   *          the value to set for the instance variable <code>variance</code>.
+   */
+  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 <code>volatility</code> and <code>volatility2</code>
+   * from the return path data, using the relationship, based on the precomputed
+   * <code>variance</code>. \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 <code>nPathValue</code> 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 <code>mean</code> or <code>nPathValue</code>
+   *              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 (file)
index 0000000..6658bc1
--- /dev/null
@@ -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 <code>ReturnPath</code>'s two class variables
+   *          <code>COMPOUNDED</code> and <code>NONCOMPOUNDED</code>.
+   * @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 <code>header</code>.
+   * 
+   * @return Value of instance variable <code>header</code>.
+   */
+  public String get_header() {
+    return (this.header);
+  }
+
+  /**
+   * Set method for private instance variable <code>header</code>.
+   * 
+   * @param header
+   *          the value to set for the instance variable <code>header</code>.
+   */
+  public void set_header(String header) {
+    this.header = header;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>name</code>.
+   * 
+   * @return Value of instance variable <code>name</code>.
+   */
+  public String get_name() {
+    return (this.name);
+  }
+
+  /**
+   * Set method for private instance variable <code>name</code>.
+   * 
+   * @param name
+   *          the value to set for the instance variable <code>name</code>.
+   */
+  public void set_name(String name) {
+    this.name = name;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>startDate</code>.
+   * 
+   * @return Value of instance variable <code>startDate</code>.
+   */
+  public int get_startDate() {
+    return (this.startDate);
+  }
+
+  /**
+   * Set method for private instance variable <code>startDate</code>.
+   * 
+   * @param startDate
+   *          the value to set for the instance variable <code>startDate</code>.
+   */
+  public void set_startDate(int startDate) {
+    this.startDate = startDate;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>endDate</code>.
+   * 
+   * @return Value of instance variable <code>endDate</code>.
+   */
+  public int get_endDate() {
+    return (this.endDate);
+  }
+
+  /**
+   * Set method for private instance variable <code>endDate</code>.
+   * 
+   * @param endDate
+   *          the value to set for the instance variable <code>endDate</code>.
+   */
+  public void set_endDate(int endDate) {
+    this.endDate = endDate;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>dTime</code>.
+   * 
+   * @return Value of instance variable <code>dTime</code>.
+   */
+  public double get_dTime() {
+    return (this.dTime);
+  }
+
+  /**
+   * Set method for private instance variable <code>dTime</code>.
+   * 
+   * @param dTime
+   *          the value to set for the instance variable <code>dTime</code>.
+   */
+  public void set_dTime(double dTime) {
+    this.dTime = dTime;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>returnDefinition</code>
+   * .
+   * 
+   * @return Value of instance variable <code>returnDefinition</code>.
+   */
+  public int get_returnDefinition() {
+    return (this.returnDefinition);
+  }
+
+  /**
+   * Set method for private instance variable <code>returnDefinition</code>.
+   * 
+   * @param returnDefinition
+   *          the value to set for the instance variable
+   *          <code>returnDefinition</code>.
+   */
+  public void set_returnDefinition(int returnDefinition) {
+    this.returnDefinition = returnDefinition;
+  }
+
+  /**
+   * Accessor method for private instance variable
+   * <code>expectedReturnRate</code>.
+   * 
+   * @return Value of instance variable <code>expectedReturnRate</code>.
+   */
+  public double get_expectedReturnRate() {
+    return (this.expectedReturnRate);
+  }
+
+  /**
+   * Set method for private instance variable <code>expectedReturnRate</code>.
+   * 
+   * @param expectedReturnRate
+   *          the value to set for the instance variable
+   *          <code>expectedReturnRate</code>.
+   */
+  public void set_expectedReturnRate(double expectedReturnRate) {
+    this.expectedReturnRate = expectedReturnRate;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>volatility</code>.
+   * 
+   * @return Value of instance variable <code>volatility</code>.
+   */
+  public double get_volatility() {
+    return (this.volatility);
+  }
+
+  /**
+   * Set method for private instance variable <code>volatility</code>.
+   * 
+   * @param volatility
+   *          the value to set for the instance variable <code>volatility</code>
+   *          .
+   */
+  public void set_volatility(double volatility) {
+    this.volatility = volatility;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>nTimeSteps</code>.
+   * 
+   * @return Value of instance variable <code>nTimeSteps</code>.
+   */
+  public int get_nTimeSteps() {
+    return (this.nTimeSteps);
+  }
+
+  /**
+   * Set method for private instance variable <code>nTimeSteps</code>.
+   * 
+   * @param nTimeSteps
+   *          the value to set for the instance variable <code>nTimeSteps</code>
+   *          .
+   */
+  public void set_nTimeSteps(int nTimeSteps) {
+    this.nTimeSteps = nTimeSteps;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>pathStartValue</code>.
+   * 
+   * @return Value of instance variable <code>pathStartValue</code>.
+   */
+  public double get_pathStartValue() {
+    return (this.pathStartValue);
+  }
+
+  /**
+   * Set method for private instance variable <code>pathStartValue</code>.
+   * 
+   * @param pathStartValue
+   *          the value to set for the instance variable
+   *          <code>pathStartValue</code>.
+   */
+  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 (file)
index 0000000..4dc207f
--- /dev/null
@@ -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 <code>header</code>.
+   * 
+   * @return Value of instance variable <code>header</code>.
+   */
+  public String get_header() {
+    return (this.header);
+  }
+
+  /**
+   * Set method for private instance variable <code>header</code>.
+   * 
+   * @param header
+   *          the value to set for the instance variable <code>header</code>.
+   */
+  public void set_header(String header) {
+    this.header = header;
+  }
+
+  /**
+   * Accessor method for private instance variable
+   * <code>expectedReturnRate</code>.
+   * 
+   * @return Value of instance variable <code>expectedReturnRate</code>.
+   */
+  public double get_expectedReturnRate() {
+    return (this.expectedReturnRate);
+  }
+
+  /**
+   * Set method for private instance variable <code>expectedReturnRate</code>.
+   * 
+   * @param expectedReturnRate
+   *          the value to set for the instance variable
+   *          <code>expectedReturnRate</code>.
+   */
+  public void set_expectedReturnRate(double expectedReturnRate) {
+    this.expectedReturnRate = expectedReturnRate;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>volatility</code>.
+   * 
+   * @return Value of instance variable <code>volatility</code>.
+   */
+  public double get_volatility() {
+    return (this.volatility);
+  }
+
+  /**
+   * Set method for private instance variable <code>volatility</code>.
+   * 
+   * @param volatility
+   *          the value to set for the instance variable <code>volatility</code>
+   *          .
+   */
+  public void set_volatility(double volatility) {
+    this.volatility = volatility;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>volatility2</code>.
+   * 
+   * @return Value of instance variable <code>volatility2</code>.
+   */
+  public double get_volatility2() {
+    return (this.volatility2);
+  }
+
+  /**
+   * Set method for private instance variable <code>volatility2</code>.
+   * 
+   * @param volatility2
+   *          the value to set for the instance variable
+   *          <code>volatility2</code>.
+   */
+  public void set_volatility2(double volatility2) {
+    this.volatility2 = volatility2;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>finalStockPrice</code>.
+   * 
+   * @return Value of instance variable <code>finalStockPrice</code>.
+   */
+  public double get_finalStockPrice() {
+    return (this.finalStockPrice);
+  }
+
+  /**
+   * Set method for private instance variable <code>finalStockPrice</code>.
+   * 
+   * @param finalStockPrice
+   *          the value to set for the instance variable
+   *          <code>finalStockPrice</code>.
+   */
+  public void set_finalStockPrice(double finalStockPrice) {
+    this.finalStockPrice = finalStockPrice;
+  }
+
+  /**
+   * Accessor method for private instance variable <code>pathValue</code>.
+   * 
+   * @return Value of instance variable <code>pathValue</code>.
+   */
+  public double[] get_pathValue() {
+    return (this.pathValue);
+  }
+
+  /**
+   * Set method for private instance variable <code>pathValue</code>.
+   * 
+   * @param pathValue
+   *          the value to set for the instance variable <code>pathValue</code>.
+   */
+  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 (file)
index 0000000..a190051
--- /dev/null
@@ -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 <code>header</code>.
+    *
+    * @return Value of instance variable <code>header</code>.
+    */
+  public String get_header() {
+    return(this.header);
+  }
+  /**
+    * Set method for private instance variable <code>header</code>.
+    *
+    * @param header the value to set for the instance variable <code>header</code>.
+    */
+  public void set_header(String header) {
+    this.header = header;
+  }
+  /**
+    * Accessor method for private instance variable <code>randomSeed</code>.
+    *
+    * @return Value of instance variable <code>randomSeed</code>.
+    */
+  public long get_randomSeed() {
+    return(this.randomSeed);
+  }
+  /**
+    * Set method for private instance variable <code>randomSeed</code>.
+    *
+    * @param randomSeed the value to set for the instance variable <code>randomSeed</code>.
+    */
+  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 (file)
index 0000000..7b328a0
--- /dev/null
@@ -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 <code>DEBUG</code>.
+    *
+    * @return Value of instance variable <code>DEBUG</code>.
+    */
+  public boolean get_DEBUG() {
+    return(this.DEBUG);
+  }
+  /**
+    * Set method for private instance variable <code>DEBUG</code>.
+    *
+    * @param DEBUG the value to set for the instance variable <code>DEBUG</code>.
+    */
+  public void set_DEBUG(boolean DEBUG) {
+    this.DEBUG = DEBUG;
+  }
+  /**
+    * Accessor method for private instance variable <code>UNIVERSAL_DEBUG</code>.
+    *
+    * @return Value of instance variable <code>UNIVERSAL_DEBUG</code>.
+    */
+  public boolean get_UNIVERSAL_DEBUG() {
+    return(this.UNIVERSAL_DEBUG);
+  }
+  /**
+    * Set method for private instance variable <code>DEBUG</code>.
+    *
+    * @param UNIVERSAL_DEBUG the value to set for the instance
+    *        variable <code>UNIVERSAL_DEBUG</code>.
+    */
+  public void set_UNIVERSAL_DEBUG(boolean UNIVERSAL_DEBUG) {
+    this.UNIVERSAL_DEBUG = UNIVERSAL_DEBUG;
+  }
+  /**
+    * Accessor method for private instance variable <code>prompt</code>.
+    *
+    * @return Value of instance variable <code>prompt</code>.
+    */
+  public String get_prompt() {
+    return(this.prompt);
+  }
+  /**
+    * Set method for private instance variable <code>prompt</code>.
+    *
+    * @param prompt the value to set for the instance variable <code>prompt</code>.
+    */
+  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 (file)
index 0000000..e210a13
--- /dev/null
@@ -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 "<executable> 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<paths.length; i++ ) {
+//      if( paths[i].length() > 0 ) {
+//     java.io.File pathFile=new java.io.File(paths[i]);
+//     if( pathFile.isDirectory() ) {
+//       String filesInDirectory[];
+//       filesInDirectory=pathFile.list();
+//       for(int j=0; j<filesInDirectory.length; j++ ) {
+//         if( DEBUG ) {
+//           System.out.println("DBG: Matching "+filesInDirectory[j]);
+//         }
+//         if( filesInDirectory[j].equals(executable) ) {
+//           executablePath=paths[i]+System.getProperty("file.separator")+executable;
+//           return executablePath;
+//         }
+//       }
+//     } else {
+//       if( DEBUG ) {
+//         System.out.println("DBG: path "+paths[i]+" is not a directory!");
+//       }
+//     }
+//      }
+//    } /* for i */
+//    executablePath=executable+" not found.";
+//    return executablePath;
+//  }
+
+  /**
+    * Static method which behaves like the Perl join() function.
+    *
+    * @param joinChar    The character on which to join.
+    * @param stringArray The array of strings to join.
+    * @return            A string of the joined string array.
+    */
+  /*
+  public static String joinString(String joinChar,String stringArray[]) {
+    return joinString(joinChar,stringArray,0);
+  }
+  */
+  /**
+    * Static method which behaves like the Perl join() function.
+    *
+    * @param joinChar    The character on which to join.
+    * @param stringArray The array of strings to join.
+    * @param index       The array index on which to start joining.
+    * @return            A string of the joined string array.
+    */
+  /*
+  public static String joinString(String joinChar,String stringArray[],int index) {
+    String methodName="join";
+    StringBuffer tmpString;
+
+    int nStrings = java.lang.reflect.Array.getLength(stringArray);
+    if( nStrings <= index ) {
+      tmpString = new StringBuffer();
+    } else {
+      tmpString = new StringBuffer(stringArray[index]);
+      for(int i=(index+1); i < nStrings; i++) {
+       tmpString.append(joinChar).append(stringArray[i]);
+      }
+    }
+    return tmpString.toString();
+  }
+  */
+  /**
+    * Static method which behaves like the Perl split() function.
+    *
+    * @param splitChar The character on which to split.
+    * @param arg       The string to be split.
+    * @return          A string array of the split string.
+    */
+  public static String[] splitString(String splitChar,String arg) {
+    String methodName="split";
+
+    String myArgs[];
+    int nArgs=0;
+    int foundIndex=0, fromIndex=0;
+    
+    while( (foundIndex=arg.indexOf(splitChar,fromIndex)) > -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 (file)
index 0000000..a7b5e90
--- /dev/null
@@ -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 (file)
index 0000000..d5dc79d
--- /dev/null
@@ -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