├── .gitignore ├── README.md ├── core └── src │ ├── main │ ├── R │ │ └── prices.R │ ├── resources │ │ ├── logback.xml │ │ ├── price │ │ │ ├── A.csv │ │ │ ├── AA.csv │ │ │ ├── AAPL.csv │ │ │ ├── ABBV.csv │ │ │ ├── ABC.csv │ │ │ ├── ABT.csv │ │ │ ├── ACE.csv │ │ │ ├── ACN.csv │ │ │ ├── ACT.csv │ │ │ ├── ADBE.csv │ │ │ ├── ADI.csv │ │ │ ├── ADM.csv │ │ │ ├── ADP.csv │ │ │ ├── ADSK.csv │ │ │ ├── ADT.csv │ │ │ ├── AEE.csv │ │ │ ├── AEP.csv │ │ │ ├── AES.csv │ │ │ ├── AET.csv │ │ │ ├── AFL.csv │ │ │ ├── AGN.csv │ │ │ ├── AIG.csv │ │ │ ├── AIV.csv │ │ │ ├── AIZ.csv │ │ │ ├── AKAM.csv │ │ │ ├── ALL.csv │ │ │ ├── ALTR.csv │ │ │ ├── ALXN.csv │ │ │ ├── AMAT.csv │ │ │ ├── AMD.csv │ │ │ ├── AMGN.csv │ │ │ ├── AMP.csv │ │ │ ├── AMT.csv │ │ │ ├── AMZN.csv │ │ │ ├── AN.csv │ │ │ ├── ANF.csv │ │ │ ├── AON.csv │ │ │ ├── APA.csv │ │ │ ├── APC.csv │ │ │ ├── APD.csv │ │ │ ├── APH.csv │ │ │ ├── APOL.csv │ │ │ ├── ARG.csv │ │ │ ├── ATI.csv │ │ │ ├── AVB.csv │ │ │ ├── AVP.csv │ │ │ ├── AVY.csv │ │ │ ├── AXP.csv │ │ │ ├── AZO.csv │ │ │ ├── BA.csv │ │ │ ├── BAC.csv │ │ │ ├── BAX.csv │ │ │ ├── BBBY.csv │ │ │ ├── BBT.csv │ │ │ ├── BBY.csv │ │ │ ├── BCR.csv │ │ │ ├── BDX.csv │ │ │ ├── BEAM.csv │ │ │ ├── BEN.csv │ │ │ ├── BF.B.csv │ │ │ ├── BHI.csv │ │ │ ├── BIIB.csv │ │ │ ├── BK.csv │ │ │ ├── BLK.csv │ │ │ ├── BLL.csv │ │ │ ├── BMC.csv │ │ │ ├── BMS.csv │ │ │ ├── BMY.csv │ │ │ ├── BRCM.csv │ │ │ ├── BRK.B.csv │ │ │ ├── BSX.csv │ │ │ ├── BTU.csv │ │ │ ├── BWA.csv │ │ │ ├── BXP.csv │ │ │ ├── C.csv │ │ │ ├── CA.csv │ │ │ ├── CAG.csv │ │ │ ├── CAH.csv │ │ │ ├── CAM.csv │ │ │ ├── CAT.csv │ │ │ ├── CB.csv │ │ │ ├── CBG.csv │ │ │ ├── CBS.csv │ │ │ ├── CCE.csv │ │ │ ├── CCI.csv │ │ │ ├── CCL.csv │ │ │ ├── CELG.csv │ │ │ ├── CERN.csv │ │ │ ├── CF.csv │ │ │ ├── CFN.csv │ │ │ ├── CHK.csv │ │ │ ├── CHRW.csv │ │ │ ├── CI.csv │ │ │ ├── CINF.csv │ │ │ ├── CL.csv │ │ │ ├── CLF.csv │ │ │ ├── CLX.csv │ │ │ ├── CMA.csv │ │ │ ├── CMCSA.csv │ │ │ ├── CME.csv │ │ │ ├── CMG.csv │ │ │ ├── CMI.csv │ │ │ ├── CMS.csv │ │ │ ├── CNP.csv │ │ │ ├── CNX.csv │ │ │ ├── COF.csv │ │ │ ├── COG.csv │ │ │ ├── COH.csv │ │ │ ├── COL.csv │ │ │ ├── COP.csv │ │ │ ├── COST.csv │ │ │ ├── COV.csv │ │ │ ├── CPB.csv │ │ │ ├── CRM.csv │ │ │ ├── CSC.csv │ │ │ ├── CSCO.csv │ │ │ ├── CSX.csv │ │ │ ├── CTAS.csv │ │ │ ├── CTL.csv │ │ │ ├── CTSH.csv │ │ │ ├── CTXS.csv │ │ │ ├── CVC.csv │ │ │ ├── CVH.csv │ │ │ ├── CVS.csv │ │ │ ├── CVX.csv │ │ │ ├── D.csv │ │ │ ├── DD.csv │ │ │ ├── DE.csv │ │ │ ├── DELL.csv │ │ │ ├── DF.csv │ │ │ ├── DFS.csv │ │ │ ├── DG.csv │ │ │ ├── DGX.csv │ │ │ ├── DHI.csv │ │ │ ├── DHR.csv │ │ │ ├── DIS.csv │ │ │ ├── DISCA.csv │ │ │ ├── DLPH.csv │ │ │ ├── DLTR.csv │ │ │ ├── DNB.csv │ │ │ ├── DNR.csv │ │ │ ├── DO.csv │ │ │ ├── DOV.csv │ │ │ ├── DOW.csv │ │ │ ├── DPS.csv │ │ │ ├── DRI.csv │ │ │ ├── DTE.csv │ │ │ ├── DTV.csv │ │ │ ├── DUK.csv │ │ │ ├── DVA.csv │ │ │ ├── DVN.csv │ │ │ ├── EA.csv │ │ │ ├── EBAY.csv │ │ │ ├── ECL.csv │ │ │ ├── ED.csv │ │ │ ├── EFX.csv │ │ │ ├── EIX.csv │ │ │ ├── EL.csv │ │ │ ├── EMC.csv │ │ │ ├── EMN.csv │ │ │ ├── EMR.csv │ │ │ ├── EOG.csv │ │ │ ├── EQR.csv │ │ │ ├── EQT.csv │ │ │ ├── ESRX.csv │ │ │ ├── ESV.csv │ │ │ ├── ETFC.csv │ │ │ ├── ETN.csv │ │ │ ├── ETR.csv │ │ │ ├── EW.csv │ │ │ ├── EXC.csv │ │ │ ├── EXPD.csv │ │ │ ├── EXPE.csv │ │ │ ├── F.csv │ │ │ ├── FAST.csv │ │ │ ├── FCX.csv │ │ │ ├── FDO.csv │ │ │ ├── FDX.csv │ │ │ ├── FE.csv │ │ │ ├── FFIV.csv │ │ │ ├── FHN.csv │ │ │ ├── FIS.csv │ │ │ ├── FISV.csv │ │ │ ├── FITB.csv │ │ │ ├── FLIR.csv │ │ │ ├── FLR.csv │ │ │ ├── FLS.csv │ │ │ ├── FMC.csv │ │ │ ├── FOSL.csv │ │ │ ├── FRX.csv │ │ │ ├── FSLR.csv │ │ │ ├── FTI.csv │ │ │ ├── FTR.csv │ │ │ ├── GAS.csv │ │ │ ├── GCI.csv │ │ │ ├── GD.csv │ │ │ ├── GE.csv │ │ │ ├── GILD.csv │ │ │ ├── GIS.csv │ │ │ ├── GLW.csv │ │ │ ├── GME.csv │ │ │ ├── GNW.csv │ │ │ ├── GOOG.csv │ │ │ ├── GPC.csv │ │ │ ├── GPS.csv │ │ │ ├── GRMN.csv │ │ │ ├── GS.csv │ │ │ ├── GT.csv │ │ │ ├── GWW.csv │ │ │ ├── HAL.csv │ │ │ ├── HAR.csv │ │ │ ├── HAS.csv │ │ │ ├── HBAN.csv │ │ │ ├── HCBK.csv │ │ │ ├── HCN.csv │ │ │ ├── HCP.csv │ │ │ ├── HD.csv │ │ │ ├── HES.csv │ │ │ ├── HIG.csv │ │ │ ├── HNZ.csv │ │ │ ├── HOG.csv │ │ │ ├── HON.csv │ │ │ ├── HOT.csv │ │ │ ├── HP.csv │ │ │ ├── HPQ.csv │ │ │ ├── HRB.csv │ │ │ ├── HRL.csv │ │ │ ├── HRS.csv │ │ │ ├── HSP.csv │ │ │ ├── HST.csv │ │ │ ├── HSY.csv │ │ │ ├── HUM.csv │ │ │ ├── IBM.csv │ │ │ ├── ICE.csv │ │ │ ├── IFF.csv │ │ │ ├── IGT.csv │ │ │ ├── INTC.csv │ │ │ ├── INTU.csv │ │ │ ├── IP.csv │ │ │ ├── IPG.csv │ │ │ ├── IR.csv │ │ │ ├── IRM.csv │ │ │ ├── ISRG.csv │ │ │ ├── ITW.csv │ │ │ ├── IVZ.csv │ │ │ ├── JBL.csv │ │ │ ├── JCI.csv │ │ │ ├── JCP.csv │ │ │ ├── JDSU.csv │ │ │ ├── JEC.csv │ │ │ ├── JNJ.csv │ │ │ ├── JNPR.csv │ │ │ ├── JOY.csv │ │ │ ├── JPM.csv │ │ │ ├── JWN.csv │ │ │ ├── K.csv │ │ │ ├── KEY.csv │ │ │ ├── KIM.csv │ │ │ ├── KLAC.csv │ │ │ ├── KMB.csv │ │ │ ├── KMI.csv │ │ │ ├── KMX.csv │ │ │ ├── KO.csv │ │ │ ├── KR.csv │ │ │ ├── KRFT.csv │ │ │ ├── KSS.csv │ │ │ ├── L.csv │ │ │ ├── LEG.csv │ │ │ ├── LEN.csv │ │ │ ├── LH.csv │ │ │ ├── LIFE.csv │ │ │ ├── LLL.csv │ │ │ ├── LLTC.csv │ │ │ ├── LLY.csv │ │ │ ├── LM.csv │ │ │ ├── LMT.csv │ │ │ ├── LNC.csv │ │ │ ├── LO.csv │ │ │ ├── LOW.csv │ │ │ ├── LRCX.csv │ │ │ ├── LSI.csv │ │ │ ├── LTD.csv │ │ │ ├── LUK.csv │ │ │ ├── LUV.csv │ │ │ ├── LYB.csv │ │ │ ├── M.csv │ │ │ ├── MA.csv │ │ │ ├── MAR.csv │ │ │ ├── MAS.csv │ │ │ ├── MAT.csv │ │ │ ├── MCD.csv │ │ │ ├── MCHP.csv │ │ │ ├── MCK.csv │ │ │ ├── MCO.csv │ │ │ ├── MDLZ.csv │ │ │ ├── MDT.csv │ │ │ ├── MET.csv │ │ │ ├── MJN.csv │ │ │ ├── MKC.csv │ │ │ ├── MMC.csv │ │ │ ├── MMM.csv │ │ │ ├── MNST.csv │ │ │ ├── MO.csv │ │ │ ├── MOLX.csv │ │ │ ├── MON.csv │ │ │ ├── MOS.csv │ │ │ ├── MPC.csv │ │ │ ├── MRK.csv │ │ │ ├── MRO.csv │ │ │ ├── MS.csv │ │ │ ├── MSFT.csv │ │ │ ├── MSI.csv │ │ │ ├── MTB.csv │ │ │ ├── MU.csv │ │ │ ├── MUR.csv │ │ │ ├── MWV.csv │ │ │ ├── MYL.csv │ │ │ ├── NBL.csv │ │ │ ├── NBR.csv │ │ │ ├── NDAQ.csv │ │ │ ├── NE.csv │ │ │ ├── NEE.csv │ │ │ ├── NEM.csv │ │ │ ├── NFLX.csv │ │ │ ├── NFX.csv │ │ │ ├── NI.csv │ │ │ ├── NKE.csv │ │ │ ├── NOC.csv │ │ │ ├── NOV.csv │ │ │ ├── NRG.csv │ │ │ ├── NSC.csv │ │ │ ├── NTAP.csv │ │ │ ├── NTRS.csv │ │ │ ├── NU.csv │ │ │ ├── NUE.csv │ │ │ ├── NVDA.csv │ │ │ ├── NWL.csv │ │ │ ├── NWSA.csv │ │ │ ├── NYX.csv │ │ │ ├── OI.csv │ │ │ ├── OKE.csv │ │ │ ├── OMC.csv │ │ │ ├── ORCL.csv │ │ │ ├── ORLY.csv │ │ │ ├── OXY.csv │ │ │ ├── PAYX.csv │ │ │ ├── PBCT.csv │ │ │ ├── PBI.csv │ │ │ ├── PCAR.csv │ │ │ ├── PCG.csv │ │ │ ├── PCL.csv │ │ │ ├── PCLN.csv │ │ │ ├── PCP.csv │ │ │ ├── PDCO.csv │ │ │ ├── PEG.csv │ │ │ ├── PEP.csv │ │ │ ├── PETM.csv │ │ │ ├── PFE.csv │ │ │ ├── PFG.csv │ │ │ ├── PG.csv │ │ │ ├── PGR.csv │ │ │ ├── PH.csv │ │ │ ├── PHM.csv │ │ │ ├── PKI.csv │ │ │ ├── PLD.csv │ │ │ ├── PLL.csv │ │ │ ├── PM.csv │ │ │ ├── PNC.csv │ │ │ ├── PNR.csv │ │ │ ├── PNW.csv │ │ │ ├── POM.csv │ │ │ ├── PPG.csv │ │ │ ├── PPL.csv │ │ │ ├── PRGO.csv │ │ │ ├── PRU.csv │ │ │ ├── PSA.csv │ │ │ ├── PSX.csv │ │ │ ├── PVH.csv │ │ │ ├── PWR.csv │ │ │ ├── PX.csv │ │ │ ├── PXD.csv │ │ │ ├── QCOM.csv │ │ │ ├── QEP.csv │ │ │ ├── R.csv │ │ │ ├── RAI.csv │ │ │ ├── RDC.csv │ │ │ ├── RF.csv │ │ │ ├── RHI.csv │ │ │ ├── RHT.csv │ │ │ ├── RL.csv │ │ │ ├── ROK.csv │ │ │ ├── ROP.csv │ │ │ ├── ROST.csv │ │ │ ├── RRC.csv │ │ │ ├── RSG.csv │ │ │ ├── RTN.csv │ │ │ ├── S.csv │ │ │ ├── SAI.csv │ │ │ ├── SBUX.csv │ │ │ ├── SCG.csv │ │ │ ├── SCHW.csv │ │ │ ├── SE.csv │ │ │ ├── SEE.csv │ │ │ ├── SHW.csv │ │ │ ├── SIAL.csv │ │ │ ├── SJM.csv │ │ │ ├── SLB.csv │ │ │ ├── SLM.csv │ │ │ ├── SNA.csv │ │ │ ├── SNDK.csv │ │ │ ├── SNI.csv │ │ │ ├── SO.csv │ │ │ ├── SPG.csv │ │ │ ├── SPLS.csv │ │ │ ├── SRCL.csv │ │ │ ├── SRE.csv │ │ │ ├── STI.csv │ │ │ ├── STJ.csv │ │ │ ├── STT.csv │ │ │ ├── STX.csv │ │ │ ├── STZ.csv │ │ │ ├── SWK.csv │ │ │ ├── SWN.csv │ │ │ ├── SWY.csv │ │ │ ├── SYK.csv │ │ │ ├── SYMC.csv │ │ │ ├── SYY.csv │ │ │ ├── T.csv │ │ │ ├── TAP.csv │ │ │ ├── TDC.csv │ │ │ ├── TE.csv │ │ │ ├── TEG.csv │ │ │ ├── TEL.csv │ │ │ ├── TER.csv │ │ │ ├── TGT.csv │ │ │ ├── THC.csv │ │ │ ├── TIF.csv │ │ │ ├── TJX.csv │ │ │ ├── TMK.csv │ │ │ ├── TMO.csv │ │ │ ├── TRIP.csv │ │ │ ├── TROW.csv │ │ │ ├── TRV.csv │ │ │ ├── TSN.csv │ │ │ ├── TSO.csv │ │ │ ├── TSS.csv │ │ │ ├── TWC.csv │ │ │ ├── TWX.csv │ │ │ ├── TXN.csv │ │ │ ├── TXT.csv │ │ │ ├── TYC.csv │ │ │ ├── UNH.csv │ │ │ ├── UNM.csv │ │ │ ├── UNP.csv │ │ │ ├── UPS.csv │ │ │ ├── URBN.csv │ │ │ ├── USB.csv │ │ │ ├── UTX.csv │ │ │ ├── V.csv │ │ │ ├── VAR.csv │ │ │ ├── VFC.csv │ │ │ ├── VIAB.csv │ │ │ ├── VLO.csv │ │ │ ├── VMC.csv │ │ │ ├── VNO.csv │ │ │ ├── VRSN.csv │ │ │ ├── VTR.csv │ │ │ ├── VZ.csv │ │ │ ├── WAG.csv │ │ │ ├── WAT.csv │ │ │ ├── WDC.csv │ │ │ ├── WEC.csv │ │ │ ├── WFC.csv │ │ │ ├── WFM.csv │ │ │ ├── WHR.csv │ │ │ ├── WIN.csv │ │ │ ├── WLP.csv │ │ │ ├── WM.csv │ │ │ ├── WMB.csv │ │ │ ├── WMT.csv │ │ │ ├── WPO.csv │ │ │ ├── WPX.csv │ │ │ ├── WU.csv │ │ │ ├── WY.csv │ │ │ ├── WYN.csv │ │ │ ├── WYNN.csv │ │ │ ├── X.csv │ │ │ ├── XEL.csv │ │ │ ├── XL.csv │ │ │ ├── XLNX.csv │ │ │ ├── XOM.csv │ │ │ ├── XRAY.csv │ │ │ ├── XRX.csv │ │ │ ├── XYL.csv │ │ │ ├── YHOO.csv │ │ │ ├── YUM.csv │ │ │ ├── ZION.csv │ │ │ └── ZMH.csv │ │ └── sp500.csv │ └── scala │ │ └── kkalc │ │ ├── model │ │ ├── HistoricalPrice.scala │ │ ├── Instrument.scala │ │ └── Portfolio.scala │ │ ├── pricing │ │ ├── MarketFactors.scala │ │ ├── MarketFactorsGenerator.scala │ │ ├── PortfolioPricer.scala │ │ └── Pricer.scala │ │ └── service │ │ ├── MarketDataModule.scala │ │ ├── MarketFactorsModule.scala │ │ ├── MarketRiskCalculator.scala │ │ ├── historical │ │ ├── HistoricalMarketData.scala │ │ └── HistoricalMarketFactors.scala │ │ └── simulation │ │ ├── ClusterPortfolioValueSimulation.scala │ │ ├── MonteCarloMarketRiskCalculator.scala │ │ ├── SingleNodePortfolioValueSimulation.scala │ │ └── package.scala │ └── test │ └── scala │ └── kkalc │ ├── pricing │ ├── OptionPricerSpec.scala │ └── PortfolioPricerSpec.scala │ └── service │ ├── HistoricalMarketDataSpec.scala │ ├── HistoricalMarketFactorsSpec.scala │ └── OneDayMarketFactorsSpec.scala ├── example └── src │ └── main │ ├── resources │ ├── calculator-node.conf │ └── simulation-node.conf │ └── scala │ └── kkalc │ └── example │ ├── ClusterMarketRiskCalculation.scala │ └── SingleNodeMarketRiskCalculation.scala └── project ├── ProjectBuild.scala ├── build.properties └── dependency-graph.sbt /.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | project/project 3 | project/target 4 | project/boot 5 | target 6 | tmp 7 | assets/chartReport.txt 8 | .history 9 | dist 10 | .idea/ 11 | .idea_modules/ 12 | .DS_Store 13 | *.swp 14 | *.swo 15 | *.pyc 16 | *.iml 17 | xcuserdata/ 18 | bin/tmp-desktop.styl 19 | lui-current.js 20 | lui-desktop-current.js 21 | RUNNING_PID 22 | 23 | # eclipse 24 | .classpath 25 | .project 26 | .scala_dependencies 27 | .settings 28 | .buildpath 29 | .target 30 | 31 | # vim 32 | .lvimrc 33 | 34 | # temp file 35 | .~* 36 | *~ 37 | *.orig -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Akka Cluster for Value at Risk calculation 2 | 3 | Source code for blog posts: 4 | 5 | - [Akka Cluster for Value at Risk calculation (Part 1/2)](http://eugenezhulenev.com/blog/2014/05/01/akka-cluster-for-value-at-risk-calculation-1/) 6 | - [Akka Cluster for Value at Risk calculation (Part 2/2)](http://eugenezhulenev.com/blog/2014/05/01/akka-cluster-for-value-at-risk-calculation-2/) 7 | -------------------------------------------------------------------------------- /core/src/main/R/prices.R: -------------------------------------------------------------------------------- 1 | require(quantmod) 2 | 3 | sp500Symbols <- read.csv("sp500.csv", header = F, stringsAsFactors = F)[,1] 4 | 5 | getSymbols(sp500Symbols[310:397]) 6 | 7 | invisible(lapply(sp500Symbols, function(s) { 8 | if (exists(s)) { 9 | xts <- get(s) 10 | csv <- paste(s, ".csv", sep = "") 11 | write.csv(as.data.frame(xts), csv) 12 | } 13 | })) 14 | -------------------------------------------------------------------------------- /core/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /core/src/main/resources/price/ABBV.csv: -------------------------------------------------------------------------------- 1 | "","ABBV.Open","ABBV.High","ABBV.Low","ABBV.Close","ABBV.Volume","ABBV.Adjusted" 2 | "2013-01-02",34.92,35.4,34.1,35.12,13767900,33.51 3 | "2013-01-03",35,35,34.16,34.83,16739300,33.23 4 | "2013-01-04",34.62,34.89,34.25,34.39,21372100,32.81 5 | "2013-01-07",34.15,35.45,34.15,34.46,17897100,32.88 6 | "2013-01-08",34.29,34.64,33.36,33.71,17863300,32.16 7 | "2013-01-09",33.61,33.95,33.61,33.9,18800400,32.34 8 | "2013-01-10",33.66,34,33.33,34,15658100,32.44 9 | "2013-01-11",33.59,33.9,33.35,33.85,11191500,32.68 10 | "2013-01-14",34.01,34.25,33.8,34.09,11584900,32.91 11 | "2013-01-15",33.71,34.72,33.71,34.6,13040200,33.4 12 | "2013-01-16",34.47,35.54,34.45,35.54,16512700,34.31 13 | "2013-01-17",35.75,36.7,35.75,36.42,14424800,35.16 14 | "2013-01-18",36.43,37.32,36.04,37.32,17842200,36.03 15 | "2013-01-22",36.98,37.25,35.93,36.42,15809700,35.16 16 | "2013-01-23",36.91,37.84,36.5,37.8,10981600,36.49 17 | "2013-01-24",37.79,38.52,37.23,37.46,11327100,36.16 18 | "2013-01-25",37.52,37.84,36.64,37.6,8934600,36.3 19 | "2013-01-28",37.65,37.87,36.71,36.89,7140100,35.61 20 | "2013-01-29",36.71,37.46,36.25,37.31,8838500,36.02 21 | "2013-01-30",36.81,37.53,36.81,36.93,10841800,35.65 22 | "2013-01-31",36.84,36.93,36.27,36.69,10720700,35.42 23 | "2013-02-01",36.84,37.2,36.52,37.18,9527500,35.89 24 | "2013-02-04",36.64,37.3,36.55,37.28,6348000,35.99 25 | "2013-02-05",37.42,37.73,37.18,37.2,7284400,35.91 26 | "2013-02-06",36.96,37.28,36.86,37.14,5738900,35.85 27 | "2013-02-07",37.57,37.57,35.8,36.42,9872500,35.16 28 | "2013-02-08",36.37,36.42,35.83,36.25,13858700,35 29 | "2013-02-11",36.13,36.18,35.75,35.85,6032100,34.61 30 | "2013-02-12",35.77,35.9,35.2,35.42,7473800,34.19 31 | "2013-02-13",35.42,35.57,35.15,35.27,4859800,34.05 32 | "2013-02-14",35.05,36.73,35.01,36.57,7570100,35.3 33 | "2013-02-15",36.93,37.81,36.93,37.58,13296300,36.28 34 | "2013-02-19",37.54,38.33,37.11,38.19,8292700,36.87 35 | "2013-02-20",38.16,39.13,37.61,38.61,8096400,37.27 36 | "2013-02-21",38.49,39.03,38.19,38.78,7260900,37.44 37 | "2013-02-22",38.79,38.85,38.14,38.46,4490400,37.13 38 | "2013-02-25",38.54,38.61,37.37,37.37,4665600,36.08 39 | "2013-02-26",37.6,37.6,36.96,37.09,4463000,35.81 40 | "2013-02-27",36.97,36.98,36.4,36.73,12238400,35.46 41 | "2013-02-28",36.66,37.14,36.5,36.92,10321000,35.64 42 | "2013-03-01",36.8,38.07,36.55,37.81,8929400,36.5 43 | "2013-03-04",37.53,38.25,37.53,38.24,5420800,36.92 44 | "2013-03-05",38.45,38.57,37.29,37.51,6650400,36.21 45 | "2013-03-06",37.56,37.86,37.37,37.74,5489500,36.43 46 | "2013-03-07",37.65,38.01,37.44,37.49,4442500,36.19 47 | "2013-03-08",37.64,37.65,37.16,37.34,4114500,36.05 48 | "2013-03-11",37.25,38.15,37.08,37.67,4614400,36.37 49 | "2013-03-12",37.7,38.3,37.05,37.17,6523900,35.88 50 | "2013-03-13",37.2,37.59,37.04,37.17,3710600,35.88 51 | "2013-03-14",37.43,37.59,36.86,37.56,9859700,36.26 52 | "2013-03-15",37.44,38.54,37.28,38.5,12208300,37.17 53 | "2013-03-18",38.05,38.49,37.99,38.16,5178700,36.84 54 | "2013-03-19",38.25,38.4,37.84,38.36,5108400,37.03 55 | "2013-03-20",38.5,39.19,38.41,39.06,7072900,37.71 56 | "2013-03-21",38.82,38.97,38.48,38.49,4736100,37.16 57 | "2013-03-22",38.57,38.97,38.3,38.97,3323400,37.62 58 | "2013-03-25",39.12,39.52,38.93,39.32,6065000,37.96 59 | "2013-03-26",39.57,40.52,39.57,40.21,7249500,38.82 60 | "2013-03-27",40.22,40.29,39.66,40.15,4274800,38.76 61 | "2013-03-28",40.26,40.8,39.78,40.78,7263400,39.37 62 | "2013-04-01",39.96,41.14,39.96,41.12,5740000,39.7 63 | "2013-04-02",41.22,41.22,40.52,40.71,5510700,39.3 64 | "2013-04-03",40.75,41.45,40.35,40.57,4122100,39.17 65 | "2013-04-04",40.77,41.78,40.62,41.6,20687600,40.16 66 | "2013-04-05",41.31,41.5,41.09,41.31,14089800,39.88 67 | "2013-04-08",41.27,41.87,41.07,41.77,16449200,40.32 68 | "2013-04-09",41.96,43.56,41.8,42.55,8673900,41.08 69 | "2013-04-10",42.65,43.77,42.5,43.62,7809200,42.11 70 | "2013-04-11",43.42,43.71,43.11,43.2,6494100,42.09 71 | "2013-04-12",42.97,43.29,42.62,43.09,4199800,41.98 72 | "2013-04-15",42.87,43.03,41.41,41.44,7152500,40.38 73 | "2013-04-16",41.67,42.53,41.13,42.45,6998000,41.36 74 | "2013-04-17",42.14,42.43,41.42,42.24,5046200,41.16 75 | "2013-04-18",42.37,42.64,41.89,42.32,5009000,41.23 76 | "2013-04-19",42.51,42.58,42.2,42.39,6493200,41.3 77 | "2013-04-22",43,44.83,42.88,44.2,8531300,43.07 78 | "2013-04-23",44.61,46.32,44.4,45.14,9378100,43.98 79 | "2013-04-24",45.14,45.34,43.94,44.32,5541300,43.18 80 | "2013-04-25",44.75,44.79,43.76,44.24,5236900,43.1 81 | "2013-04-26",44.95,46.31,44.75,45.84,10096800,44.66 82 | "2013-04-29",45.83,45.93,45.05,45.23,6024700,44.07 83 | "2013-04-30",45.05,46.23,45.01,46.05,6798600,44.87 84 | "2013-05-01",45.74,46.09,45.55,45.55,6398100,44.38 85 | "2013-05-02",45.68,45.68,43.86,43.99,9649400,42.86 86 | "2013-05-03",44.31,44.77,43.83,44.68,4641200,43.53 87 | "2013-05-06",44.95,44.95,44.15,44.59,4085700,43.45 88 | "2013-05-07",44.5,45,44.42,44.91,3745600,43.76 89 | "2013-05-08",45.01,45.05,43.39,43.49,6973200,42.37 90 | "2013-05-09",43.34,44.45,43.25,44.24,5046900,43.1 91 | "2013-05-10",44.21,45.01,44.2,45.01,4455800,43.85 92 | "2013-05-13",44.79,44.79,44.17,44.54,3738400,43.4 93 | "2013-05-14",44.09,45.52,44.09,45.35,5760300,44.19 94 | "2013-05-15",45.72,46.93,45.48,46.03,6702500,44.85 95 | "2013-05-16",46.06,46.9,46.01,46.21,4605300,45.02 96 | "2013-05-17",46.03,47.34,45.85,47.17,5244800,45.96 97 | "2013-05-20",47.12,47.14,46.07,46.26,3537800,45.07 98 | "2013-05-21",46.19,46.96,46.17,46.54,4708800,45.35 99 | "2013-05-22",46.46,48,45.85,46.76,5203500,45.56 100 | "2013-05-23",46.12,46.95,46.02,46.59,3306200,45.39 101 | "2013-05-24",46.25,46.48,45.31,45.44,4511700,44.27 102 | "2013-05-28",45.89,46.04,44.7,45.39,6181800,44.22 103 | "2013-05-29",44.89,45.18,43.79,43.88,6908400,42.75 104 | "2013-05-30",44.07,45.12,44.07,44.55,4852200,43.41 105 | "2013-05-31",44.27,44.69,42.68,42.69,9308800,41.59 106 | "2013-06-03",42.88,43.58,42.75,43.36,7176800,42.25 107 | "2013-06-04",43.42,44.47,43.38,43.63,4528400,42.51 108 | "2013-06-05",43.49,43.9,42.69,43.04,4801300,41.94 109 | "2013-06-06",43.22,43.57,42.65,43.5,4261300,42.38 110 | "2013-06-07",43.72,44.27,43.5,44,5463200,42.87 111 | "2013-06-10",44.33,44.33,43.22,43.92,4702700,42.79 112 | "2013-06-11",43.31,44.05,43.05,43.59,3574800,42.47 113 | "2013-06-12",43.91,44,42.72,42.77,3742600,41.67 114 | "2013-06-13",42.42,43.2,40.1,43.15,6096500,42.04 115 | "2013-06-14",42.98,43.5,42.5,43.21,4078500,42.1 116 | "2013-06-17",43.4,43.5,42.68,43.01,3457700,41.91 117 | "2013-06-18",42.97,43.56,42.63,43.54,3644900,42.42 118 | "2013-06-19",43.56,43.83,43.01,43.04,3663300,41.94 119 | "2013-06-20",42.65,42.78,40.91,41.06,7474900,40.01 120 | "2013-06-21",41.66,42.71,41.2,42.62,9825700,41.53 121 | "2013-06-24",42.07,42.4,41.32,41.89,6042400,40.81 122 | "2013-06-25",42.15,42.77,41.61,42.63,4686900,41.54 123 | "2013-06-26",43.1,43.61,43.03,43.38,4733700,42.27 124 | "2013-06-27",43.56,43.98,42.74,43.13,5163900,42.02 125 | "2013-06-28",42.53,42.97,41.32,41.34,10753100,40.28 126 | "2013-07-01",41.4,41.93,41.07,41.61,4588200,40.54 127 | "2013-07-02",41.58,42.57,41.58,42.21,4365900,41.13 128 | "2013-07-03",41.88,42.31,41.61,42.23,2417500,41.15 129 | "2013-07-05",42.45,42.83,42.31,42.72,2743700,41.62 130 | "2013-07-08",42.9,43.69,42.82,43.68,3978300,42.56 131 | "2013-07-09",44,44.23,43.25,43.32,3805700,42.21 132 | "2013-07-10",43.36,44.12,43.36,43.91,3080100,42.78 133 | "2013-07-11",43.94,44.11,43.33,43.78,4061400,43.05 134 | "2013-07-12",43.93,45.11,43.8,45.05,5693900,44.3 135 | "2013-07-15",44.95,44.97,44.54,44.62,3265800,43.87 136 | "2013-07-16",44.54,44.77,43.7,43.81,3714500,43.08 137 | "2013-07-17",43.97,44.15,43.74,43.96,3645400,43.23 138 | "2013-07-18",43.96,44.56,43.81,44.32,3043700,43.58 139 | "2013-07-19",44.49,44.91,44.12,44.52,4317900,43.78 140 | "2013-07-22",44.3,45.1,43.8,44.97,3810500,44.22 141 | "2013-07-23",44.92,45.09,44.23,44.31,3535100,43.57 142 | "2013-07-24",44.28,44.37,43.39,43.64,3088100,42.91 143 | "2013-07-25",43.41,44.43,43.35,44.24,4088500,43.5 144 | "2013-07-26",45.01,45.12,44.17,44.79,4491100,44.04 145 | "2013-07-29",44.72,45.45,44.47,45.06,4326200,44.31 146 | "2013-07-30",45.08,45.23,44.2,44.7,3619700,43.95 147 | "2013-07-31",44.84,45.91,44.81,45.48,6020600,44.72 148 | "2013-08-01",45.14,45.9,45.04,45.25,3652400,44.49 149 | "2013-08-02",45.11,45.42,44.81,45.32,3190700,44.56 150 | "2013-08-05",45.05,45.37,44.48,44.71,2953500,43.96 151 | "2013-08-06",44.42,44.99,44.42,44.88,4980600,44.13 152 | "2013-08-07",44.7,44.86,44.22,44.57,3299400,43.83 153 | "2013-08-08",44.86,45.18,44.61,45.06,2892400,44.31 154 | "2013-08-09",44.9,45,44.47,44.71,3290800,43.96 155 | "2013-08-12",44.71,45.2,44.39,45.04,3826400,44.29 156 | "2013-08-13",45.12,45.18,44.68,44.93,2791800,44.18 157 | "2013-08-14",44.85,45.23,44.45,44.58,2990500,43.83 158 | "2013-08-15",44.6,44.62,43.13,43.21,4363100,42.49 159 | "2013-08-16",42.94,43.14,42.42,43,6093300,42.28 160 | "2013-08-19",43.01,43.81,42.95,43.37,3326900,42.65 161 | "2013-08-20",43.29,43.48,42.85,42.97,2803000,42.25 162 | "2013-08-21",42.82,42.88,42.25,42.31,4118800,41.6 163 | "2013-08-22",42.4,43.1,42.29,42.92,4077700,42.2 164 | "2013-08-23",43.01,43.5,42.85,43.43,2738100,42.7 165 | "2013-08-26",43.43,43.74,43.19,43.45,3493400,42.72 166 | "2013-08-27",43.02,43.09,42.6,42.63,4473000,41.92 167 | "2013-08-28",42.53,42.81,42.35,42.56,3009700,41.85 168 | "2013-08-29",42.32,43.09,42.26,42.62,2788900,41.91 169 | "2013-08-30",42.76,43.03,42.3,42.61,3170700,41.9 170 | "2013-09-03",43,43.28,42.31,42.59,2925600,41.88 171 | "2013-09-04",42.6,43.14,42.59,43.13,3190700,42.41 172 | "2013-09-05",43.03,43.66,43,43.51,3355500,42.78 173 | "2013-09-06",43.53,44.35,42.89,43.89,3992200,43.16 174 | "2013-09-09",43.88,44.44,43.5,44.43,3287500,43.69 175 | "2013-09-10",44.58,44.81,44.1,44.78,4282300,44.03 176 | "2013-09-11",44.81,44.97,44.39,44.95,3441700,44.2 177 | "2013-09-12",44.84,44.95,44.5,44.7,2597900,43.95 178 | "2013-09-13",44.71,44.89,44.43,44.89,2273500,44.14 179 | "2013-09-16",45.32,45.95,45.19,45.82,3531700,45.05 180 | "2013-09-17",45.92,47.7,45.86,47.6,7293800,46.8 181 | "2013-09-18",47.19,48.42,46.88,47.92,6689400,47.12 182 | "2013-09-19",48.21,48.23,47.31,47.4,5326500,46.61 183 | "2013-09-20",47.44,48,47.33,47.84,10495300,47.04 184 | "2013-09-23",47.56,47.56,46.93,47.1,3179500,46.31 185 | "2013-09-24",46.95,46.95,45.94,45.98,7162700,45.21 186 | "2013-09-25",46.09,46.16,45.02,45.33,4571900,44.57 187 | "2013-09-26",45.33,45.62,44.81,45,5033900,44.25 188 | "2013-09-27",44.87,44.9,44.02,44.33,6617300,43.59 189 | "2013-09-30",44.52,44.95,44.03,44.73,5818400,43.98 190 | "2013-10-01",44.81,45.9,44.81,45.8,4159700,45.03 191 | "2013-10-02",45.34,45.97,45.12,45.95,4056800,45.18 192 | "2013-10-03",45.6,46.34,45.1,46.01,7020800,45.24 193 | "2013-10-04",46.18,46.88,46,46.8,4141400,46.02 194 | "2013-10-07",46.12,46.98,46.09,46.09,4703700,45.32 195 | "2013-10-08",46.29,46.32,44.39,44.52,7091500,43.78 196 | "2013-10-09",44.72,45.31,44.32,44.81,5113000,44.06 197 | "2013-10-10",45.1,45.68,44.51,45.68,3967500,45.32 198 | "2013-10-11",45.7,45.7,44.96,45.65,2985700,45.29 199 | "2013-10-14",45.21,46.45,45.07,46.33,3377300,45.97 200 | "2013-10-15",46.05,46.38,45.75,46.08,3533300,45.72 201 | "2013-10-16",46.31,47.27,46.2,47.06,4399900,46.69 202 | "2013-10-17",46.95,48.32,46.95,48.17,7242400,47.79 203 | "2013-10-18",48.38,48.95,47.77,48.33,9212900,47.95 204 | "2013-10-21",48.08,48.55,47.76,48.35,4713200,47.97 205 | "2013-10-22",48.39,49.31,48.11,49,6937500,48.61 206 | "2013-10-23",48.76,48.86,48.28,48.33,4130300,47.95 207 | "2013-10-24",48.63,48.98,47.74,47.93,5077900,47.55 208 | "2013-10-25",49.1,49.83,48.56,49.3,6956800,48.91 209 | "2013-10-28",49.13,49.97,48.97,49.42,5555000,49.03 210 | "2013-10-29",49.48,50.2,49.48,49.79,5022900,49.4 211 | "2013-10-30",49.57,49.57,48.72,48.8,4011600,48.42 212 | "2013-10-31",48.68,49,48.44,48.45,4563700,48.07 213 | "2013-11-01",48.64,49.33,48.5,48.96,3866900,48.58 214 | "2013-11-04",49.19,49.19,48,48.76,4095600,48.38 215 | "2013-11-05",48.59,48.76,48.03,48.17,4095400,47.79 216 | "2013-11-06",48.5,48.74,48,48.05,4308100,47.67 217 | "2013-11-07",48.17,48.36,47.18,47.24,4444900,46.87 218 | "2013-11-08",47.13,48.1,46.83,48.03,5190900,47.65 219 | "2013-11-11",48.23,48.67,48.19,48.57,2282900,48.19 220 | "2013-11-12",48.45,48.48,47.28,47.48,5351100,47.11 221 | "2013-11-13",47.36,47.93,47.29,47.85,3745100,47.47 222 | "2013-11-14",47.99,48.47,47.69,48.04,3411800,47.66 223 | "2013-11-15",48.03,48.75,48,48.44,6257100,48.06 224 | "2013-11-18",48.89,49.96,48.73,48.87,8585700,48.49 225 | "2013-11-19",48.73,49,48.37,48.46,4050700,48.08 226 | "2013-11-20",48.42,48.54,47.83,47.95,3120300,47.57 227 | "2013-11-21",48.28,48.67,47.99,48.57,4459800,48.19 228 | "2013-11-22",48.65,49.14,48.57,48.94,5810100,48.56 229 | "2013-11-25",49,49.28,48.32,48.41,3343200,48.03 230 | "2013-11-26",48.38,49.18,48.31,48.6,4732300,48.22 231 | "2013-11-27",48.83,48.95,48.24,48.25,3414900,47.87 232 | "2013-11-29",48.43,48.93,48.07,48.45,4044300,48.07 233 | "2013-12-02",48.49,48.68,48.02,48.39,4321900,48.01 234 | "2013-12-03",49.13,50.26,48.97,49.97,9480100,49.58 235 | "2013-12-04",49.75,50.29,49.3,49.67,5309200,49.28 236 | "2013-12-05",49.42,50.07,49.05,49.76,5449100,49.37 237 | "2013-12-06",50.17,51.5,50.05,51.35,7285800,50.95 238 | "2013-12-09",51.45,51.81,50.77,51.21,5470800,50.81 239 | "2013-12-10",51.25,54.13,50.72,52.14,14906900,51.73 240 | "2013-12-11",52.67,53.25,52.02,52.67,10775500,52.26 241 | "2013-12-12",52.56,52.62,51.8,52.39,7766400,51.98 242 | "2013-12-13",52.3,52.6,51.84,52.37,6465300,51.96 243 | "2013-12-16",53.42,54.78,52.98,53.37,9846300,52.95 244 | "2013-12-17",53.43,53.92,53,53.63,7987300,53.21 245 | "2013-12-18",52.78,54.43,52.22,54.32,9635600,53.89 246 | "2013-12-19",53.21,53.21,52.02,52.63,8383400,52.22 247 | "2013-12-20",52.77,53.01,52.29,52.59,12471800,52.18 248 | "2013-12-23",52.73,52.94,52.24,52.58,4957700,52.17 249 | "2013-12-24",52.78,52.79,52.28,52.36,1747000,51.95 250 | "2013-12-26",52.59,53.06,52.34,52.99,2401500,52.57 251 | "2013-12-27",52.92,53.05,52.38,52.55,2354100,52.14 252 | "2013-12-30",52.73,53.03,52.6,53.01,2898800,52.59 253 | "2013-12-31",52.99,53.06,52.36,52.81,3019700,52.39 254 | "2014-01-02",52.12,52.33,51.52,51.98,4569100,51.57 255 | "2014-01-03",52.25,52.67,51.97,52.3,4794300,51.89 256 | "2014-01-06",52.7,52.7,50.03,50.39,11871100,49.99 257 | "2014-01-07",50.84,51.21,50.3,50.49,9719900,50.09 258 | "2014-01-08",50.63,51.11,50.24,50.36,6811100,49.96 259 | "2014-01-09",50.59,51.65,49.87,51.22,6960300,50.82 260 | "2014-01-10",51.27,51.49,50.76,50.9,5517700,50.5 261 | "2014-01-13",50.66,50.74,49.64,49.83,7055200,49.83 262 | "2014-01-14",49.94,50.88,49.63,50.6,6610800,50.6 263 | "2014-01-15",50.65,50.67,50.07,50.11,4728400,50.11 264 | "2014-01-16",50.1,50.62,50.02,50.5,4972300,50.5 265 | "2014-01-17",50.64,50.66,50.01,50.06,8606800,50.06 266 | "2014-01-21",50.26,50.92,49.91,50,5823000,50 267 | "2014-01-22",49.98,50,48.62,49.08,8181700,49.08 268 | "2014-01-23",48.74,49.06,48.39,48.87,7270500,48.87 269 | "2014-01-24",48.42,49.1,47.77,47.79,9197900,47.79 270 | "2014-01-27",47.79,47.83,46.42,46.83,10749800,46.83 271 | "2014-01-28",47.08,48.47,47.08,47.69,12298600,47.69 272 | "2014-01-29",47.15,47.84,46.98,47.61,7608500,47.61 273 | "2014-01-30",47.97,48.88,47.9,48.31,7669500,48.31 274 | "2014-01-31",49.94,50.55,49.07,49.23,12863500,49.23 275 | "2014-02-03",49.4,49.49,47.06,47.35,10314600,47.35 276 | "2014-02-04",47.18,47.97,46.95,47.95,9606100,47.95 277 | "2014-02-05",47.76,48.07,47.16,47.73,6987100,47.73 278 | "2014-02-06",47.89,48.18,47.45,47.93,4957800,47.93 279 | "2014-02-07",48,49.03,47.66,48.89,6979500,48.89 280 | "2014-02-10",48.75,50.19,48.72,49.55,7907500,49.55 281 | "2014-02-11",49.41,49.97,49.04,49.66,7217600,49.66 282 | "2014-02-12",49.63,50.93,49.59,50.56,6534500,50.56 283 | "2014-02-13",50.3,50.52,49.88,50.35,4946000,50.35 284 | "2014-02-14",50.56,50.91,50.17,50.73,4118700,50.73 285 | "2014-02-18",50.64,51.56,50.56,51.46,4984900,51.46 286 | "2014-02-19",51.17,51.86,50.64,51.19,5242800,51.19 287 | "2014-02-20",51.19,52.11,50.73,51.86,6078900,51.86 288 | "2014-02-21",51.82,51.97,51.01,51.04,5842700,51.04 289 | "2014-02-24",51.01,51.56,50.83,50.85,5693000,50.85 290 | "2014-02-25",50.93,51.13,50.5,50.72,5425000,50.72 291 | "2014-02-26",49.95,50.97,49.93,50.74,5710700,50.74 292 | "2014-02-27",50.6,50.92,50.47,50.91,5052900,50.91 293 | "2014-02-28",50.84,51.96,50.51,50.91,7095600,50.91 294 | "2014-03-03",50.34,50.86,49.79,50.09,6817700,50.09 295 | "2014-03-04",50.73,51.73,50.53,51.59,6198000,51.59 296 | "2014-03-05",51.68,52.12,51.3,51.7,5251100,51.7 297 | "2014-03-06",52.04,52.77,51.97,52.04,6529000,52.04 298 | "2014-03-07",52.25,52.5,51.01,51.46,5860700,51.46 299 | "2014-03-10",51.9,51.9,50.86,51.66,3086000,51.66 300 | "2014-03-11",51.68,52.14,51.5,51.75,3629800,51.75 301 | "2014-03-12",51.46,51.74,51.07,51.64,3924800,51.64 302 | "2014-03-13",51.89,52.1,51.14,51.32,4839400,51.32 303 | "2014-03-14",51.25,51.42,50.8,51.21,5466700,51.21 304 | "2014-03-17",51.47,52.19,51.26,51.98,3875500,51.98 305 | -------------------------------------------------------------------------------- /core/src/main/resources/price/ADT.csv: -------------------------------------------------------------------------------- 1 | "","ADT.Open","ADT.High","ADT.Low","ADT.Close","ADT.Volume","ADT.Adjusted" 2 | "2012-10-02",37.18,38.55,36.3,38.33,9899000,37.7 3 | "2012-10-03",38.56,40.35,38.56,39.09,6480600,38.45 4 | "2012-10-04",39.09,39.38,38.39,38.57,3147300,37.94 5 | "2012-10-05",38.7,38.99,36.97,38.24,7520000,37.61 6 | "2012-10-08",36.64,38.54,36.56,38.23,3698600,37.6 7 | "2012-10-09",38.09,38.58,37.24,37.5,3872400,36.88 8 | "2012-10-10",36.97,37.64,36.73,37.06,4325900,36.45 9 | "2012-10-11",37.15,37.21,35.75,36.45,5293000,35.85 10 | "2012-10-12",36.23,36.5,35.98,36.48,2703100,35.88 11 | "2012-10-15",35.78,36.58,35.38,36.55,2831300,35.95 12 | "2012-10-16",36.99,38,36.55,37.84,3530900,37.22 13 | "2012-10-17",37.91,39,37.82,38.82,3869800,38.18 14 | "2012-10-18",37.26,39,36.91,38.56,3614600,37.93 15 | "2012-10-19",38.76,39.1,38.22,38.8,1514300,38.16 16 | "2012-10-22",38.6,38.97,38.35,38.9,1435300,38.26 17 | "2012-10-23",38.16,38.61,37.93,38.09,1848600,37.46 18 | "2012-10-24",38.15,38.57,37.55,38.32,2251600,37.69 19 | "2012-10-25",39.75,42.45,39.75,41.16,7659600,40.48 20 | "2012-10-26",40.98,42.58,40.92,41.86,3076600,41.17 21 | "2012-10-31",41.76,42,40.77,41.51,2729900,40.83 22 | "2012-11-01",41.51,41.83,40.97,41.28,2295400,40.6 23 | "2012-11-02",42.19,43,41.35,41.5,1864100,40.82 24 | "2012-11-05",41.5,42.51,41.17,41.88,1663900,41.19 25 | "2012-11-06",42.52,42.79,41.66,41.72,2102000,41.03 26 | "2012-11-07",41.6,41.83,40.85,40.98,2292200,40.31 27 | "2012-11-08",40.98,42.34,40.39,41.76,1589400,41.07 28 | "2012-11-09",42.09,43.35,41.87,43.06,3040300,42.35 29 | "2012-11-12",43.06,44.97,42.7,42.85,1072700,42.15 30 | "2012-11-13",42.41,43.19,42.2,42.83,1392100,42.13 31 | "2012-11-14",42.77,42.77,41.39,41.51,1523400,40.83 32 | "2012-11-15",41.5,41.97,40.99,41.4,2118000,40.72 33 | "2012-11-16",41.5,41.64,40.94,41.03,2192300,40.36 34 | "2012-11-19",41.46,42.28,41.2,41.74,1741100,41.05 35 | "2012-11-20",41.79,42.34,41.7,42.25,1526200,41.56 36 | "2012-11-21",42.3,42.7,42.11,42.66,796400,41.96 37 | "2012-11-23",42.73,42.91,42.43,42.86,364900,42.16 38 | "2012-11-26",42.65,43.27,42.61,43.1,1697200,42.39 39 | "2012-11-27",45,45,43.45,43.57,6803800,42.85 40 | "2012-11-28",42.38,44.27,42.38,44.15,3446300,43.42 41 | "2012-11-29",44.3,45.21,44.16,44.79,1909000,44.05 42 | "2012-11-30",44.83,45.98,44.73,45.9,2852600,45.15 43 | "2012-12-03",45.81,45.88,44.28,44.72,2737400,43.99 44 | "2012-12-04",44.31,45,43.95,44,1392800,43.28 45 | "2012-12-05",44.04,44.32,43.75,44.07,1065400,43.35 46 | "2012-12-06",43.83,44.19,43.25,43.88,2269300,43.28 47 | "2012-12-07",44,45.97,43.98,45.55,4140200,44.93 48 | "2012-12-10",45.56,45.88,45.07,45.25,1026300,44.63 49 | "2012-12-11",45.49,45.59,44.85,45.03,1050800,44.42 50 | "2012-12-12",45.27,45.64,44.85,45.22,1218200,44.6 51 | "2012-12-13",45.02,45.53,44.6,45,1064900,44.39 52 | "2012-12-14",45,46.09,44.7,45.9,2476600,45.27 53 | "2012-12-17",46.06,46.74,45.36,46.33,2063600,45.7 54 | "2012-12-18",46.33,47,45.32,45.73,3918900,45.11 55 | "2012-12-19",45.62,45.62,44.84,44.96,1314900,44.35 56 | "2012-12-20",44.99,45.72,44.71,45.37,1821000,44.75 57 | "2012-12-21",44.86,45.1,44.35,44.73,2796800,44.12 58 | "2012-12-24",44.61,45.42,44.42,45.12,474200,44.51 59 | "2012-12-26",45.23,45.23,44.28,45.06,1354100,44.45 60 | "2012-12-27",45.33,46.48,45.12,46.23,2266200,45.6 61 | "2012-12-28",45.74,46.28,45.25,45.35,1599400,44.73 62 | "2012-12-31",45,46.65,44.6,46.49,1980000,45.86 63 | "2013-01-02",47.06,47.31,45.93,46.02,2444500,45.39 64 | "2013-01-03",46.04,46.65,45.53,46.11,1998700,45.48 65 | "2013-01-04",46.23,46.8,45.86,46.75,1671900,46.11 66 | "2013-01-07",46.26,47.17,46.25,46.66,1597300,46.02 67 | "2013-01-08",47.01,47.5,45.83,46.47,2234200,45.84 68 | "2013-01-09",46.59,46.69,45.63,46,2016600,45.37 69 | "2013-01-10",46.34,46.66,45.69,46.5,2739700,45.87 70 | "2013-01-11",46.66,46.95,46.13,46.84,1180000,46.2 71 | "2013-01-14",46.97,47.5,46.5,47.38,1701900,46.73 72 | "2013-01-15",47.01,47.5,46.55,47.25,1729400,46.61 73 | "2013-01-16",47.18,47.9,46.96,47.79,2200800,47.14 74 | "2013-01-17",47.99,48.16,47.71,47.99,1620700,47.34 75 | "2013-01-18",48.54,48.91,47.67,47.98,2667700,47.33 76 | "2013-01-22",48.23,48.25,47.25,47.98,1319000,47.33 77 | "2013-01-23",47.86,48.18,47.19,47.36,1543300,46.71 78 | "2013-01-24",47.42,47.81,46.6,46.81,1848200,46.17 79 | "2013-01-25",47.04,47.3,46.63,47.18,1443200,46.54 80 | "2013-01-28",47.25,47.47,46.47,46.97,952900,46.45 81 | "2013-01-29",46.97,47,46.45,46.51,1960600,46 82 | "2013-01-30",49,49.1,47.4,48,5990300,47.47 83 | "2013-01-31",47.76,48.31,47.41,47.5,2835400,46.98 84 | "2013-02-01",47.89,47.89,47.09,47.59,2978600,47.07 85 | "2013-02-04",47.31,47.52,47.15,47.15,2189800,46.63 86 | "2013-02-05",47.49,48.05,47.01,48.01,2436000,47.48 87 | "2013-02-06",47.63,48.39,47.6,47.92,1735900,47.39 88 | "2013-02-07",48.12,48.47,47.93,48.15,2067000,47.62 89 | "2013-02-08",48.05,48.25,47.45,47.67,1368300,47.15 90 | "2013-02-11",47.75,47.96,47.59,47.63,965300,47.11 91 | "2013-02-12",47.7,47.88,47.03,47.29,1520900,46.77 92 | "2013-02-13",47.51,47.69,47.2,47.4,1261700,46.88 93 | "2013-02-14",47.47,47.57,46.65,46.73,1771600,46.22 94 | "2013-02-15",46.96,47.27,46.1,46.4,1908300,45.89 95 | "2013-02-19",46.4,47.51,46.35,47.27,2831300,46.75 96 | "2013-02-20",47.75,47.89,47.11,47.36,2823200,46.84 97 | "2013-02-21",47.2,47.31,45.92,46.39,2271700,45.88 98 | "2013-02-22",46.58,47.34,46.41,46.98,1480400,46.46 99 | "2013-02-25",47.47,47.95,46.13,46.24,1926500,45.73 100 | "2013-02-26",46.35,46.72,46.35,46.57,1396600,46.06 101 | "2013-02-27",46.31,48.3,46.31,47.99,3015600,47.46 102 | "2013-02-28",47.93,48.4,47.3,47.89,2128100,47.36 103 | "2013-03-01",47.5,48.2,47.3,47.93,1444200,47.4 104 | "2013-03-04",47.95,48.73,47.94,48.71,1533200,48.17 105 | "2013-03-05",48.83,49.66,48.8,48.98,1689800,48.44 106 | "2013-03-06",49.27,49.36,48.31,48.35,1268100,47.82 107 | "2013-03-07",48.29,48.66,47.92,48.04,1419900,47.51 108 | "2013-03-08",48.24,48.85,47.76,47.88,1339200,47.35 109 | "2013-03-11",47.81,49.29,47.76,48.45,1244000,47.92 110 | "2013-03-12",48.52,48.96,48.52,48.74,1716500,48.2 111 | "2013-03-13",48.67,50.2,48.67,49.73,1725600,49.18 112 | "2013-03-14",49.73,50.37,49.08,49.23,1612300,48.69 113 | "2013-03-15",48.94,49.55,48.76,49.41,1408400,48.87 114 | "2013-03-18",49.05,49.57,48.5,49.16,991400,48.62 115 | "2013-03-19",49.17,49.68,48.85,49.1,1075700,48.56 116 | "2013-03-20",49.39,49.61,48.9,49.02,1173000,48.48 117 | "2013-03-21",48.87,50.35,48.8,48.88,2613500,48.34 118 | "2013-03-22",48.95,49.48,48.27,48.83,2031700,48.29 119 | "2013-03-25",49.16,49.38,48.32,48.47,1284500,47.94 120 | "2013-03-26",48.72,48.95,48.24,48.35,1448100,47.82 121 | "2013-03-27",48.23,49.25,48.23,48.59,1464000,48.06 122 | "2013-03-28",48.7,48.99,48.33,48.94,2289900,48.4 123 | "2013-04-01",48.85,48.86,47.54,48,3179500,47.47 124 | "2013-04-02",47.24,47.72,46.28,46.47,9261300,45.96 125 | "2013-04-03",45,46.24,44.57,45.95,11209700,45.44 126 | "2013-04-04",46.1,46.2,44.52,44.83,6295100,44.34 127 | "2013-04-05",44.21,46.64,43.26,46.32,4863900,45.81 128 | "2013-04-08",46.13,46.6,45.64,46.58,2375800,46.07 129 | "2013-04-09",46.6,46.71,44.94,45.01,3354000,44.51 130 | "2013-04-10",45.35,45.77,43.86,45.61,6183900,45.11 131 | "2013-04-11",45.75,45.78,44.97,45.07,2470600,44.57 132 | "2013-04-12",45,46.05,44.99,45.98,4546800,45.47 133 | "2013-04-15",45.94,45.96,44.02,44.02,3515700,43.54 134 | "2013-04-16",44.32,44.58,42.75,43.39,5261200,42.91 135 | "2013-04-17",43.25,44.06,42.92,43.93,2953400,43.45 136 | "2013-04-18",43.9,43.96,43.18,43.66,1520000,43.18 137 | "2013-04-19",43.47,44,43.11,43.84,1355300,43.36 138 | "2013-04-22",43.78,44.12,43.06,43.84,1421900,43.48 139 | "2013-04-23",43.88,44.61,43.59,43.76,1416000,43.4 140 | "2013-04-24",43.89,44.12,43.22,43.43,1636300,43.07 141 | "2013-04-25",43.58,44.46,43.46,44.04,1022400,43.68 142 | "2013-04-26",43.99,44.22,43.06,43.91,2674700,43.55 143 | "2013-04-29",44.07,44.8,43.53,43.64,2003800,43.28 144 | "2013-04-30",43.65,43.98,42.95,43.64,3230800,43.28 145 | "2013-05-01",41.3,42.64,40.19,40.64,9157600,40.31 146 | "2013-05-02",40.96,42.5,40.94,42.45,3901100,42.1 147 | "2013-05-03",42.83,43.95,42.75,43.5,4355900,43.14 148 | "2013-05-06",43.76,44.46,43.36,44.36,3038000,44 149 | "2013-05-07",44.44,44.88,44.15,44.4,2737100,44.04 150 | "2013-05-08",44.4,44.99,43.93,44.47,2576500,44.11 151 | "2013-05-09",44.48,45.04,44.43,44.7,1596400,44.33 152 | "2013-05-10",44.87,44.92,44.04,44.13,1855200,43.77 153 | "2013-05-13",44.01,44.11,42.65,42.81,3298800,42.46 154 | "2013-05-14",43.01,43.31,42.52,42.88,2290500,42.53 155 | "2013-05-15",42.92,42.92,42.04,42.4,2929600,42.05 156 | "2013-05-16",42.39,42.54,41.78,41.83,2255800,41.49 157 | "2013-05-17",41.83,43.43,41.83,43.3,2700600,42.95 158 | "2013-05-20",42.75,43,41.86,41.88,4689600,41.54 159 | "2013-05-21",41.84,42.67,41.84,42.35,2441900,42 160 | "2013-05-22",42.27,42.44,41.07,41.17,3118600,40.83 161 | "2013-05-23",40.95,42.18,40.76,42.1,2675400,41.76 162 | "2013-05-24",41.78,42.65,41.74,42.33,2219000,41.98 163 | "2013-05-28",42.73,42.8,42.24,42.32,2184300,41.97 164 | "2013-05-29",41.93,42.11,41.62,42,3533000,41.66 165 | "2013-05-30",41.94,42.05,41.17,41.21,3086200,40.87 166 | "2013-05-31",41.18,41.51,40.56,40.59,3041300,40.26 167 | "2013-06-03",40.98,41.7,40.05,41.05,3896700,40.71 168 | "2013-06-04",40.89,41.19,39.93,40.4,4389200,40.07 169 | "2013-06-05",40.11,40.19,39.66,39.74,4412800,39.41 170 | "2013-06-06",39.76,40.25,39.43,40,3988000,39.67 171 | "2013-06-07",40.18,40.67,40.01,40.21,3439600,39.88 172 | "2013-06-10",40.18,40.23,39.84,40.01,4273700,39.68 173 | "2013-06-11",39.67,40.11,39.63,39.92,3273300,39.59 174 | "2013-06-12",40.11,40.15,39.03,39.15,3174500,38.83 175 | "2013-06-13",39.06,39.3,38.09,38.77,8204700,38.45 176 | "2013-06-14",38.83,39.49,38.73,39.41,4755000,39.09 177 | "2013-06-17",39.54,40.07,39.24,39.62,3908600,39.3 178 | "2013-06-18",39.84,40.79,39.69,40.77,2668600,40.44 179 | "2013-06-19",40.85,41.4,40.48,40.55,3077600,40.22 180 | "2013-06-20",40.3,40.3,39.23,39.42,3818800,39.1 181 | "2013-06-21",39.74,39.77,39.06,39.37,3805000,39.05 182 | "2013-06-24",39.09,39.31,38.63,39.14,2706900,38.82 183 | "2013-06-25",39.46,40.18,39.38,40.03,2636700,39.7 184 | "2013-06-26",40.47,41.08,40.41,40.95,2833000,40.62 185 | "2013-06-27",41.17,41.28,40.16,40.35,2368900,40.02 186 | "2013-06-28",40.33,40.63,39.8,39.85,4006800,39.52 187 | "2013-07-01",39.99,40.76,39.99,40.43,2547400,40.1 188 | "2013-07-02",40.35,40.61,39.49,39.59,3925200,39.27 189 | "2013-07-03",39.43,39.53,39.2,39.24,1821900,38.92 190 | "2013-07-05",39.49,39.62,39.28,39.61,1778700,39.29 191 | "2013-07-08",39.84,40.22,39.7,39.95,4096000,39.62 192 | "2013-07-09",40.2,42.75,40.12,42.02,6988200,41.68 193 | "2013-07-10",42.13,42.34,41.21,41.88,4244100,41.54 194 | "2013-07-11",42.23,42.89,42.22,42.69,2651200,42.34 195 | "2013-07-12",42.63,43.06,42.47,43.02,2068300,42.67 196 | "2013-07-15",43.2,44.56,43.15,43.86,3481400,43.5 197 | "2013-07-16",43.78,43.84,42.9,42.96,2257800,42.61 198 | "2013-07-17",43.08,43.45,42.54,42.7,1467700,42.35 199 | "2013-07-18",42.89,42.95,42.43,42.49,1460900,42.14 200 | "2013-07-19",42.48,42.65,42.04,42.17,1775100,41.83 201 | "2013-07-22",42.18,42.39,41.81,42,1950800,41.66 202 | "2013-07-23",42.23,42.65,41.86,42.32,1152100,41.97 203 | "2013-07-24",42.42,42.54,41.81,42.09,842100,41.75 204 | "2013-07-25",42.08,42.46,41.37,41.6,2065100,41.26 205 | "2013-07-26",41.47,41.62,40.94,41.16,1307200,40.82 206 | "2013-07-29",40.92,41.37,40.87,41.16,1003100,40.95 207 | "2013-07-30",41.38,42.55,41.32,42.09,3280200,41.87 208 | "2013-07-31",43.12,44,40,40.08,9357600,39.87 209 | "2013-08-01",40,40.42,39.6,39.75,6364400,39.54 210 | "2013-08-02",39.84,40.69,39.7,40.6,3732100,40.39 211 | "2013-08-05",40.5,41.29,40.17,41.25,2307800,41.04 212 | "2013-08-06",41.16,41.18,40.1,40.21,3153100,40 213 | "2013-08-07",40.27,40.46,39.92,40.34,2177200,40.13 214 | "2013-08-08",40.4,41.1,40.28,41.05,1930600,40.84 215 | "2013-08-09",41.04,41.56,40.84,41.2,1645800,40.99 216 | "2013-08-12",41.08,41.41,40.93,40.96,2048900,40.75 217 | "2013-08-13",41.12,41.21,40.89,41,1691400,40.79 218 | "2013-08-14",40.93,41.24,40.87,40.88,1426000,40.67 219 | "2013-08-15",40.65,40.71,40,40.12,3019700,39.91 220 | "2013-08-16",40,41.14,39.95,41.06,2059300,40.85 221 | "2013-08-19",40.93,41.15,40.62,40.85,1902200,40.64 222 | "2013-08-20",40.85,41.3,40.67,41.25,1791900,41.04 223 | "2013-08-21",41.08,41.15,40.71,40.87,2871600,40.66 224 | "2013-08-22",40.83,41.62,40.67,41.51,1463200,41.3 225 | "2013-08-23",41.52,41.59,41.12,41.25,1063300,41.04 226 | "2013-08-26",41.24,41.45,41.1,41.26,1249100,41.05 227 | "2013-08-27",40.75,41,40.45,40.47,1700700,40.26 228 | "2013-08-28",40.46,40.73,40.28,40.45,1568400,40.24 229 | "2013-08-29",40.35,41.28,40.25,40.71,1576800,40.5 230 | "2013-08-30",40.71,40.77,39.71,39.83,2303400,39.62 231 | "2013-09-03",40,40.23,39.04,39.14,3995800,38.94 232 | "2013-09-04",39.05,39.56,38.91,39.11,3309100,38.91 233 | "2013-09-05",39.07,40.2,39.05,39.95,2387200,39.74 234 | "2013-09-06",40.09,40.1,39.17,39.48,2630400,39.28 235 | "2013-09-09",39.63,40.09,39.38,39.97,1510100,39.76 236 | "2013-09-10",40.27,40.73,40.1,40.5,1699600,40.29 237 | "2013-09-11",40.51,40.57,39.72,40.14,1861000,39.93 238 | "2013-09-12",40.01,40.2,39.66,39.7,1497800,39.5 239 | "2013-09-13",39.82,40.21,39.38,40.03,1105900,39.82 240 | "2013-09-16",40.55,41.66,40.47,41.48,3323200,41.27 241 | "2013-09-17",41.53,41.74,41.12,41.33,2747600,41.12 242 | "2013-09-18",41.27,41.95,41.04,41.93,2192000,41.71 243 | "2013-09-19",42,42.79,41.85,42.69,4199100,42.47 244 | "2013-09-20",42.61,42.65,41.96,42.32,5268800,42.1 245 | "2013-09-23",42.32,43.02,41.91,42.88,2648100,42.66 246 | "2013-09-24",42.8,42.92,42.05,42.7,3255200,42.48 247 | "2013-09-25",42.61,42.88,41.9,41.95,2463800,41.73 248 | "2013-09-26",41.88,42.42,41.88,42.13,1612100,41.91 249 | "2013-09-27",41.8,41.83,41.15,41.26,2145700,41.05 250 | "2013-09-30",41.04,41.15,40.63,40.66,2321300,40.45 251 | "2013-10-01",40.72,41.04,40.44,40.48,2494200,40.27 252 | "2013-10-02",40.35,40.69,39.94,40.68,1823100,40.47 253 | "2013-10-03",40.45,40.62,39.8,39.88,2452200,39.67 254 | "2013-10-04",39.88,40.1,39.64,40.06,1675900,39.85 255 | "2013-10-07",39.63,39.98,39.58,39.61,1712900,39.41 256 | "2013-10-08",39.54,39.7,38.94,39,2182900,38.8 257 | "2013-10-09",39.15,39.45,38.83,39.33,2208700,39.13 258 | "2013-10-10",39.71,40.46,39.65,39.73,2710300,39.53 259 | "2013-10-11",39.72,39.79,39.22,39.34,3553300,39.14 260 | "2013-10-14",39.24,40.23,39.11,40.01,3208600,39.8 261 | "2013-10-15",40.01,40.56,39.15,39.15,3056700,38.95 262 | "2013-10-16",39.18,39.86,38.37,39.86,3179000,39.65 263 | "2013-10-17",39.74,40.33,39.58,40.3,2584600,40.09 264 | "2013-10-18",40.54,41.2,40.5,40.99,3703500,40.78 265 | "2013-10-21",40.94,41.09,40.5,40.83,2443000,40.62 266 | "2013-10-22",40.84,41.47,40.7,41.45,2161200,41.24 267 | "2013-10-23",41.39,41.7,41.13,41.58,2271600,41.37 268 | "2013-10-24",41.65,42.24,41.62,42.18,2753700,41.96 269 | "2013-10-25",42.19,42.32,41.98,42.17,2177200,41.95 270 | "2013-10-28",42.07,42.19,41.66,41.78,1753100,41.56 271 | "2013-10-29",41.95,42.78,41.81,42.6,2605000,42.38 272 | "2013-10-30",42.6,43.28,42.49,42.97,4399200,42.75 273 | "2013-10-31",42.86,43.96,42.81,43.37,2903500,43.15 274 | "2013-11-01",43.39,44,43.04,43.46,1946000,43.24 275 | "2013-11-04",43.53,43.67,42.29,43.18,2058100,42.96 276 | "2013-11-05",43.06,43.39,42.75,43.15,1509500,42.93 277 | "2013-11-06",43.24,43.83,43.16,43.26,1299200,43.04 278 | "2013-11-07",43.46,43.82,42.44,42.63,2304600,42.41 279 | "2013-11-08",42.57,42.76,42.14,42.4,2170700,42.18 280 | "2013-11-11",42.58,42.94,42.48,42.68,1573300,42.46 281 | "2013-11-12",42.47,42.86,42.29,42.59,1943800,42.37 282 | "2013-11-13",42.39,42.89,42.23,42.74,1935100,42.52 283 | "2013-11-14",42.83,43.46,42.26,43.37,2278400,43.15 284 | "2013-11-15",43.5,43.62,43.01,43.25,1896400,43.03 285 | "2013-11-18",43.12,43.2,42.57,42.77,2574600,42.55 286 | "2013-11-19",42.66,43.27,42.65,42.81,2670000,42.59 287 | "2013-11-20",45,46.05,43.05,43.84,7999900,43.61 288 | "2013-11-21",43.78,44.34,43.22,43.35,4725800,43.13 289 | "2013-11-22",43.5,44.4,43.5,44.01,2997000,43.78 290 | "2013-11-25",42.34,42.37,39.71,41.46,20415200,41.25 291 | "2013-11-26",41.42,41.95,40.82,40.85,4504200,40.64 292 | "2013-11-27",40.88,41.34,40.67,40.85,2418900,40.64 293 | "2013-11-29",40.95,41.01,40.5,40.56,1470500,40.35 294 | "2013-12-02",40.77,41.16,40.25,40.35,3093100,40.14 295 | "2013-12-03",40.07,40.78,39.82,40.47,3286000,40.26 296 | "2013-12-04",40.3,41.12,40.15,40.63,1941700,40.42 297 | "2013-12-05",40.47,40.88,40.28,40.74,2443000,40.53 298 | "2013-12-06",41.03,41.63,40.42,40.52,3388700,40.31 299 | "2013-12-09",40.53,40.94,39.62,39.69,3518100,39.49 300 | "2013-12-10",39.71,40.08,39.31,39.82,3608500,39.61 301 | "2013-12-11",39.85,40.45,39.54,39.7,2339300,39.5 302 | "2013-12-12",39.6,39.75,39.17,39.25,3188700,39.05 303 | "2013-12-13",39.19,39.28,38.4,38.8,4722600,38.6 304 | "2013-12-16",38.99,39.62,38.94,39.51,3671000,39.31 305 | "2013-12-17",39.67,40,39.46,39.5,2348000,39.3 306 | "2013-12-18",39.6,40.24,39.28,40.15,4132500,39.94 307 | "2013-12-19",40.2,40.43,39.89,39.95,2110000,39.74 308 | "2013-12-20",40.15,40.15,39.43,39.69,3475000,39.49 309 | "2013-12-23",39.78,40.1,39.72,40.01,2000400,39.8 310 | "2013-12-24",39.97,40.22,39.97,40.16,548000,39.95 311 | "2013-12-26",40.2,41.03,40.19,40.94,2475400,40.73 312 | "2013-12-27",40.89,41.26,40.88,41.15,2162900,40.94 313 | "2013-12-30",41.15,41.39,40.43,40.58,1985300,40.37 314 | "2013-12-31",40.59,40.85,40.17,40.47,2587900,40.26 315 | "2014-01-02",40.4,40.6,39.38,39.62,3834400,39.42 316 | "2014-01-03",39.77,39.9,39.41,39.5,2134200,39.3 317 | "2014-01-06",39.67,40.02,39.48,39.65,2448200,39.45 318 | "2014-01-07",39.7,40.31,39.68,40.2,2390900,39.99 319 | "2014-01-08",40.13,40.49,39.31,39.46,2971500,39.26 320 | "2014-01-09",39.6,39.86,39.05,39.22,3492900,39.02 321 | "2014-01-10",39.34,39.7,38.99,39.08,2250800,38.88 322 | "2014-01-13",39.09,39.58,38.84,39.01,2462300,38.81 323 | "2014-01-14",38.92,39.37,38.1,38.94,4698600,38.74 324 | "2014-01-15",38.94,39.01,38.58,38.95,3415200,38.75 325 | "2014-01-16",38.96,39.49,38.9,39.19,1935500,38.99 326 | "2014-01-17",39.27,40.07,39.14,39.66,2882800,39.46 327 | "2014-01-21",39.89,40.44,39.52,39.58,4397400,39.38 328 | "2014-01-22",39.58,39.8,39.46,39.56,2224600,39.36 329 | "2014-01-23",39.32,39.48,38.99,39.02,2901900,38.82 330 | "2014-01-24",38.89,39.17,38.76,38.78,4630500,38.58 331 | "2014-01-27",39.22,39.22,37.77,38.14,4235500,38.14 332 | "2014-01-28",38.13,38.52,37.84,38.28,2978600,38.28 333 | "2014-01-29",37.93,38.21,37.61,37.81,4651800,37.81 334 | "2014-01-30",31.5,33.13,29.56,31.4,36645400,31.4 335 | "2014-01-31",30.47,30.86,29.96,30.04,13857900,30.04 336 | "2014-02-03",30.05,30.4,28.65,28.83,9806400,28.83 337 | "2014-02-04",28.86,30.32,28.69,30.2,8335000,30.2 338 | "2014-02-05",29.95,30.25,29.63,29.75,4767200,29.75 339 | "2014-02-06",29.85,30.4,29.74,29.96,5775500,29.96 340 | "2014-02-07",30.24,31.6,30.07,31.53,12644900,31.53 341 | "2014-02-10",31.19,32.27,30.44,30.93,6970700,30.93 342 | "2014-02-11",30.84,31.15,30.5,30.71,4151300,30.71 343 | "2014-02-12",30.81,31.21,30.43,30.55,3931100,30.55 344 | "2014-02-13",30.49,31.56,30.39,31.3,5330300,31.3 345 | "2014-02-14",31.16,31.65,31.03,31.61,3940900,31.61 346 | "2014-02-18",31.56,31.68,31.08,31.3,2924700,31.3 347 | "2014-02-19",31.25,31.97,31.13,31.45,4315400,31.45 348 | "2014-02-20",31.24,31.61,30.85,30.86,3881200,30.86 349 | "2014-02-21",30.84,31.08,30.49,30.57,5542600,30.57 350 | "2014-02-24",30.68,31.56,30.44,31.27,5092700,31.27 351 | "2014-02-25",31.24,31.78,31.24,31.7,5407100,31.7 352 | "2014-02-26",31.57,31.67,30.76,30.9,3784600,30.9 353 | "2014-02-27",30.94,31.45,30.88,31.34,3209300,31.34 354 | "2014-02-28",31.43,31.5,30.49,30.71,4458300,30.71 355 | "2014-03-03",30.45,30.68,30.12,30.48,2804600,30.48 356 | "2014-03-04",30.81,31.09,30.49,30.69,2813400,30.69 357 | "2014-03-05",30.77,31.58,30.65,31.24,2691600,31.24 358 | "2014-03-06",31.22,31.56,30.91,30.93,2127000,30.93 359 | "2014-03-07",31.12,31.15,30.72,30.85,2700200,30.85 360 | "2014-03-10",30.57,30.69,29.85,29.98,5923500,29.98 361 | "2014-03-11",29.92,30.04,29.32,29.73,4770900,29.73 362 | "2014-03-12",29.48,29.64,28.72,28.75,5516300,28.75 363 | "2014-03-13",28.94,29.07,28.06,28.23,5675400,28.23 364 | "2014-03-14",28.11,28.49,27.93,28.08,3097300,28.08 365 | "2014-03-17",28.12,28.81,28.12,28.69,2703000,28.69 366 | -------------------------------------------------------------------------------- /core/src/main/resources/price/KIM.csv: -------------------------------------------------------------------------------- 1 | "","KIM.Open","KIM.High","KIM.Low","KIM.Close","KIM.Volume","KIM.Adjusted" 2 | "2012-11-30",24.62,24.8,24.5,24.65,1420700,23 3 | "2012-12-03",24.55,24.9,24.55,24.65,516900,23 4 | "2012-12-04",24.6,24.8,24.55,24.7,528400,23.04 5 | "2012-12-05",24.7,24.75,24.5,24.67,354800,23.01 6 | "2012-12-06",24.7,24.8,24.62,24.79,612100,23.13 7 | "2012-12-07",24.85,24.85,24.65,24.74,174100,23.08 8 | "2012-12-10",24.7,25.05,24.25,24.95,172400,23.28 9 | "2012-12-11",24.76,24.95,24.75,24.9,369200,23.23 10 | "2012-12-12",24.78,24.9,24.7,24.75,123700,23.09 11 | "2012-12-13",25.05,25.05,24.73,24.75,112300,23.09 12 | "2012-12-14",24.8,24.8,24.66,24.75,57000,23.09 13 | "2012-12-17",24.76,24.76,24.68,24.71,28400,23.05 14 | "2012-12-18",24.8,24.8,24.7,24.78,442100,23.12 15 | "2012-12-19",24.8,24.8,24.71,24.75,31000,23.09 16 | "2012-12-20",24.8,24.85,24.71,24.71,38500,23.05 17 | "2012-12-21",24.75,24.75,24.71,24.73,82800,23.07 18 | "2012-12-24",24.75,24.77,24.71,24.75,19100,23.09 19 | "2012-12-26",24.8,24.8,24.72,24.72,62700,23.06 20 | "2012-12-27",24.75,24.79,24.7,24.79,41600,23.13 21 | "2012-12-28",24.75,24.8,24.7,24.79,57100,23.13 22 | "2012-12-31",24.79,24.87,24.75,24.87,27600,23.2 23 | "2013-01-02",24.87,25.04,24.87,25,54900,23.32 24 | "2013-01-03",25,25.17,24.98,25.03,85500,23.35 25 | "2013-01-04",25.07,25.14,25,25.14,76700,23.45 26 | "2013-01-07",25.18,25.19,25.1,25.13,97300,23.44 27 | "2013-01-08",25.15,25.16,25.06,25.15,52900,23.46 28 | "2013-01-09",25.15,25.23,25.12,25.22,115100,23.53 29 | "2013-01-10",25.22,25.34,25.19,25.34,34400,23.64 30 | "2013-01-11",25.33,25.44,25.3,25.42,51300,23.71 31 | "2013-01-14",25.39,25.39,25.28,25.32,43400,23.62 32 | "2013-01-15",25.34,25.34,25.18,25.23,50800,23.54 33 | "2013-01-16",25.21,25.33,25.15,25.33,89400,23.63 34 | "2013-01-17",25.3,25.3,25.2,25.24,176700,23.55 35 | "2013-01-18",25.27,25.28,25.13,25.28,113200,23.58 36 | "2013-01-22",25.16,25.24,25.1,25.15,31500,23.46 37 | "2013-01-23",25.1,25.2,25.03,25.05,31100,23.37 38 | "2013-01-24",25.08,25.11,24.99,24.99,33300,23.31 39 | "2013-01-25",25.05,25.07,24.95,25,80000,23.32 40 | "2013-01-28",25.05,25.06,24.9,24.99,39100,23.31 41 | "2013-01-29",24.95,24.97,24.85,24.95,41700,23.28 42 | "2013-01-30",24.99,24.99,24.87,24.9,18700,23.23 43 | "2013-01-31",24.88,25,24.86,24.86,34400,23.19 44 | "2013-02-01",24.95,25.05,24.89,25.04,29600,23.36 45 | "2013-02-04",25.06,25.06,24.92,24.96,27000,23.29 46 | "2013-02-05",24.94,25.17,24.94,25.1,65000,23.42 47 | "2013-02-06",25.1,25.1,24.88,24.95,72800,23.28 48 | "2013-02-07",24.99,25.06,24.95,25.04,51900,23.36 49 | "2013-02-08",25.09,25.09,25.02,25.08,36000,23.4 50 | "2013-02-11",25.1,25.15,25,25,56400,23.32 51 | "2013-02-12",25.1,25.13,25.01,25.06,39700,23.38 52 | "2013-02-13",25.14,25.14,25.03,25.11,25200,23.43 53 | "2013-02-14",25.12,25.17,25.04,25.17,21700,23.48 54 | "2013-02-15",25.16,25.2,25.15,25.2,25500,23.51 55 | "2013-02-19",25.19,25.24,25.19,25.24,68900,23.55 56 | "2013-02-20",25.24,25.25,25.09,25.25,55100,23.56 57 | "2013-02-21",25.18,25.22,25.14,25.22,29600,23.53 58 | "2013-02-22",25.23,25.38,25.21,25.35,42400,23.65 59 | "2013-02-25",25.39,25.47,25.35,25.39,33700,23.69 60 | "2013-02-26",25.47,25.47,25.27,25.44,42000,23.73 61 | "2013-02-27",25.46,25.61,25.32,25.32,43100,23.62 62 | "2013-02-28",25.31,25.44,25.2,25.37,110700,23.67 63 | "2013-03-01",25.35,25.45,25.35,25.45,16200,23.74 64 | "2013-03-04",25.5,25.53,25.46,25.53,16100,23.82 65 | "2013-03-05",25.5,25.69,25.36,25.68,49000,23.96 66 | "2013-03-06",25.51,25.62,25.51,25.55,67300,23.84 67 | "2013-03-07",25.6,25.8,25.52,25.65,57200,23.93 68 | "2013-03-08",25.63,25.65,25.42,25.42,29800,23.71 69 | "2013-03-11",25.51,25.51,25.35,25.42,83200,23.71 70 | "2013-03-12",25.43,25.52,25.39,25.41,52700,23.7 71 | "2013-03-13",25.47,25.59,25.44,25.52,16000,23.81 72 | "2013-03-14",25.54,25.65,25.45,25.65,11500,23.93 73 | "2013-03-15",25.51,25.6,25.45,25.56,31700,23.84 74 | "2013-03-18",25.59,25.62,25.5,25.55,43100,23.84 75 | "2013-03-19",25.58,25.6,25.5,25.59,20700,23.87 76 | "2013-03-20",25.55,25.65,25.55,25.58,54300,23.86 77 | "2013-03-21",25.62,25.63,25.47,25.61,9400,23.89 78 | "2013-03-22",25.61,25.63,25.58,25.58,9000,23.86 79 | "2013-03-25",25.59,25.61,25.45,25.55,18800,23.84 80 | "2013-03-26",25.58,25.61,25.55,25.57,10100,23.85 81 | "2013-03-27",25.55,25.65,25.55,25.65,54600,23.93 82 | "2013-03-28",25.4,25.41,25.3,25.31,8400,24.08 83 | "2013-04-01",25.45,25.45,25.3,25.3,26800,24.07 84 | "2013-04-02",25.35,25.38,25.3,25.35,28100,24.12 85 | "2013-04-03",25.32,25.44,25.3,25.3,42100,24.07 86 | "2013-04-04",25.37,25.45,25.34,25.34,10800,24.11 87 | "2013-04-05",25.39,25.39,25.3,25.3,45100,24.07 88 | "2013-04-08",25.38,25.39,25.32,25.32,15100,24.09 89 | "2013-04-09",25.36,25.4,25.32,25.4,27400,24.17 90 | "2013-04-10",25.4,25.45,25.36,25.4,21100,24.17 91 | "2013-04-11",25.45,25.49,25.4,25.45,11300,24.21 92 | "2013-04-12",25.45,25.59,25.41,25.59,6700,24.35 93 | "2013-04-15",25.6,25.6,25.54,25.6,7400,24.36 94 | "2013-04-16",25.6,25.63,25.52,25.59,16900,24.35 95 | "2013-04-17",25.6,25.69,25.55,25.62,16200,24.38 96 | "2013-04-18",25.66,25.66,25.49,25.49,9000,24.25 97 | "2013-04-19",25.49,25.7,25.49,25.7,6900,24.45 98 | "2013-04-22",25.68,25.69,25.42,25.69,67500,24.44 99 | "2013-04-23",25.69,25.69,25.57,25.68,31300,24.43 100 | "2013-04-24",25.7,25.7,25.62,25.68,8800,24.43 101 | "2013-04-25",25.7,25.7,25.63,25.7,4400,24.45 102 | "2013-04-26",25.7,25.7,25.66,25.7,3400,24.45 103 | "2013-04-29",25.79,25.79,25.66,25.74,29700,24.49 104 | "2013-04-30",25.77,25.89,25.7,25.82,10400,24.57 105 | "2013-05-01",25.92,26.03,25.77,25.93,27700,24.67 106 | "2013-05-02",25.98,26.11,25.86,25.97,20800,24.71 107 | "2013-05-03",26.05,26.14,25.82,25.92,19800,24.66 108 | "2013-05-06",25.92,26.1,25.79,25.92,17300,24.66 109 | "2013-05-07",25.8,25.98,25.79,25.98,20000,24.72 110 | "2013-05-08",25.95,26,25.89,25.9,29000,24.64 111 | "2013-05-09",25.98,26,25.92,25.97,10300,24.71 112 | "2013-05-10",25.97,26,25.87,26,15300,24.74 113 | "2013-05-13",26,26.04,25.89,25.96,20200,24.7 114 | "2013-05-14",25.91,25.96,25.79,25.81,25000,24.56 115 | "2013-05-15",25.78,25.81,25.74,25.74,9700,24.49 116 | "2013-05-16",25.75,25.87,25.75,25.82,4900,24.57 117 | "2013-05-17",25.83,25.92,25.78,25.92,8800,24.66 118 | "2013-05-20",25.88,26.06,25.83,25.9,13200,24.64 119 | "2013-05-21",25.98,26.01,25.87,25.94,28100,24.68 120 | "2013-05-22",25.98,26.01,25.88,26,21400,24.74 121 | "2013-05-23",26,26.01,25.84,25.89,12800,24.63 122 | "2013-05-24",25.94,25.96,25.75,25.77,23000,24.52 123 | "2013-05-28",25.98,25.99,25.77,25.79,9200,24.54 124 | "2013-05-29",25.96,25.96,25.46,25.84,35600,24.59 125 | "2013-05-30",25.95,25.95,25.63,25.7,3800,24.45 126 | "2013-05-31",25.8,25.8,25.21,25.21,42700,23.99 127 | "2013-06-03",25.58,25.58,24.78,24.78,19500,23.58 128 | "2013-06-04",24.98,25.06,24.6,24.72,24700,23.52 129 | "2013-06-05",24.62,24.72,24.54,24.66,31500,23.46 130 | "2013-06-06",24.76,24.97,24.6,24.97,23300,23.76 131 | "2013-06-07",24.98,25.08,24.88,25.04,9000,23.82 132 | "2013-06-10",25.09,25.09,24.85,24.94,9900,23.73 133 | "2013-06-11",24.7,24.92,24.24,24.24,45900,23.06 134 | "2013-06-12",24.26,24.53,23.2,23.44,64300,22.3 135 | "2013-06-13",23.44,23.86,22.82,23.73,39800,22.58 136 | "2013-06-14",23.97,24.2,23.7,24.07,30700,22.9 137 | "2013-06-17",24.31,24.62,24.26,24.34,17300,23.16 138 | "2013-06-18",24.16,24.3,23.96,24.21,36100,23.03 139 | "2013-06-19",24.33,24.34,23.82,23.84,16800,22.68 140 | "2013-06-20",23.8,23.8,23.05,23.55,43600,22.41 141 | "2013-06-21",23.59,23.77,23.23,23.55,19400,22.41 142 | "2013-06-24",23.55,23.55,22.69,22.93,42500,21.82 143 | "2013-06-25",23.06,23.38,22.95,23.32,11500,22.19 144 | "2013-06-26",23.54,24.21,23.43,23.65,24500,22.5 145 | "2013-06-27",23.8,24.01,23.6,24,12300,22.83 146 | "2013-06-28",23.87,24.08,23.76,23.98,9700,23.16 147 | "2013-07-01",24.13,24.29,23.85,23.85,11600,23.03 148 | "2013-07-02",23.99,24.08,23.67,23.93,10400,23.11 149 | "2013-07-03",23.91,23.91,23.66,23.66,10200,22.85 150 | "2013-07-05",23.56,23.93,23.24,23.33,31500,22.53 151 | "2013-07-08",23.5,23.5,23.17,23.36,26400,22.56 152 | "2013-07-09",23.31,23.31,23.19,23.25,16500,22.45 153 | "2013-07-10",23.37,23.37,23.2,23.23,9500,22.43 154 | "2013-07-11",23.39,23.66,23.36,23.61,8300,22.8 155 | "2013-07-12",23.59,23.83,23.54,23.6,35600,22.79 156 | "2013-07-15",23.68,23.81,23.58,23.72,7700,22.9 157 | "2013-07-16",23.63,23.81,23.58,23.58,11500,22.77 158 | "2013-07-17",23.73,23.73,23.41,23.43,12800,22.62 159 | "2013-07-18",23.5,23.67,23.36,23.49,19800,22.68 160 | "2013-07-19",23.56,23.56,23.21,23.42,26200,22.61 161 | "2013-07-22",23.4,23.42,23.23,23.31,19800,22.51 162 | "2013-07-23",23.38,23.49,23.2,23.28,15400,22.48 163 | "2013-07-24",23.26,23.4,23.19,23.3,19700,22.5 164 | "2013-07-25",23.31,23.31,23.01,23.25,25800,22.45 165 | "2013-07-26",23.22,23.36,23.22,23.23,8000,22.43 166 | "2013-07-29",23.3,23.3,23.17,23.23,8200,22.43 167 | "2013-07-30",23.28,23.28,23.06,23.06,7600,22.27 168 | "2013-07-31",23.14,23.17,22.5,23.11,19400,22.32 169 | "2013-08-01",23.19,23.21,22.99,23.15,40800,22.35 170 | "2013-08-02",23.14,23.14,22.72,22.91,22400,22.12 171 | "2013-08-05",23,23.07,22.78,22.83,9300,22.04 172 | "2013-08-06",22.72,22.78,22.46,22.6,31000,21.82 173 | "2013-08-07",22.6,22.6,22.37,22.54,17400,21.76 174 | "2013-08-08",22.6,22.7,22.58,22.66,35900,21.88 175 | "2013-08-09",22.69,22.8,22.62,22.75,28800,21.97 176 | "2013-08-12",22.71,22.8,22.66,22.69,12900,21.91 177 | "2013-08-13",22.69,22.69,22.29,22.44,22100,21.67 178 | "2013-08-14",22.45,22.45,22.07,22.19,72300,21.43 179 | "2013-08-15",22.02,22.02,21.51,21.75,17500,21 180 | "2013-08-16",21.33,21.63,21.33,21.52,20300,20.78 181 | "2013-08-19",21.53,21.53,20.24,20.34,21200,19.64 182 | "2013-08-20",20.45,21,20.4,20.69,33900,19.98 183 | "2013-08-21",20.55,20.82,20.46,20.63,58600,19.92 184 | "2013-08-22",20.6,20.88,20.6,20.85,21800,20.13 185 | "2013-08-23",20.85,21.16,20.85,21.07,12100,20.35 186 | "2013-08-26",21.56,21.56,20.88,20.89,31400,20.17 187 | "2013-08-27",20.87,20.95,20.77,20.81,19000,20.09 188 | "2013-08-28",20.92,20.98,20.81,20.9,23500,20.18 189 | "2013-08-29",20.9,21.1,20.88,20.89,16800,20.17 190 | "2013-08-30",21.01,21.06,20.91,21.01,13600,20.29 191 | "2013-09-03",21.03,21.03,20.65,20.67,8200,19.96 192 | "2013-09-04",20.66,20.78,20.64,20.7,18900,19.99 193 | "2013-09-05",20.78,20.78,20.4,20.4,9500,19.7 194 | "2013-09-06",20.42,20.62,20.42,20.59,8900,19.88 195 | "2013-09-09",20.75,20.75,20.55,20.57,27700,19.86 196 | "2013-09-10",20.54,20.63,20.52,20.6,22100,19.89 197 | "2013-09-11",20.6,20.68,20.58,20.58,15400,19.87 198 | "2013-09-12",20.6,20.67,20.6,20.6,5600,19.89 199 | "2013-09-13",20.65,20.67,20.6,20.67,9900,19.96 200 | "2013-09-16",20.94,20.94,20.59,20.59,19100,19.88 201 | "2013-09-17",20.61,20.68,20.6,20.62,13600,19.91 202 | "2013-09-18",20.6,20.9,20.6,20.85,27000,20.13 203 | "2013-09-19",20.98,20.98,20.67,20.73,9300,20.02 204 | "2013-09-20",20.67,20.71,20.61,20.62,10300,19.91 205 | "2013-09-23",20.67,20.74,20.62,20.67,7400,19.96 206 | "2013-09-24",20.62,20.75,20.62,20.69,120200,19.98 207 | "2013-09-25",20.72,20.81,20.67,20.73,15800,20.02 208 | "2013-09-26",20.85,21,20.74,20.8,15400,20.08 209 | "2013-09-27",20.83,20.93,20.65,20.68,12700,19.97 210 | "2013-09-30",20.33,20.45,20.23,20.38,14000,20.02 211 | "2013-10-01",20.29,20.31,20.21,20.23,16900,19.87 212 | "2013-10-02",20.22,20.32,20.15,20.17,34500,19.81 213 | "2013-10-03",20.23,20.25,20.07,20.14,45800,19.78 214 | "2013-10-04",20.21,20.25,20.15,20.25,7300,19.89 215 | "2013-10-07",20.25,20.25,20.11,20.19,21200,19.83 216 | "2013-10-08",20.06,20.15,20.06,20.15,21300,19.79 217 | "2013-10-09",20.15,20.19,20.1,20.15,15800,19.79 218 | "2013-10-10",20.19,20.22,20.13,20.14,8500,19.78 219 | "2013-10-11",20.13,20.17,20.12,20.12,10600,19.76 220 | "2013-10-14",20.12,20.16,20.1,20.13,1900,19.77 221 | "2013-10-15",20.13,20.21,20.04,20.04,12000,19.69 222 | "2013-10-16",20.12,20.12,20,20.01,12800,19.66 223 | "2013-10-17",19.97,20.27,19.97,20.27,10100,19.91 224 | "2013-10-18",20.39,20.64,20.26,20.64,10400,20.28 225 | "2013-10-21",20.62,20.75,20.55,20.75,20200,20.38 226 | "2013-10-22",20.76,21,20.76,20.86,18700,20.49 227 | "2013-10-23",20.92,21.13,20.8,20.93,21100,20.56 228 | "2013-10-24",21.03,21.03,20.62,20.75,14000,20.38 229 | "2013-10-25",20.79,20.91,20.59,20.81,10000,20.44 230 | "2013-10-28",20.83,20.9,20.59,20.69,8500,20.32 231 | "2013-10-29",20.77,21.25,20.64,20.81,18000,20.44 232 | "2013-10-30",20.68,21.09,20.6,20.85,13800,20.48 233 | "2013-10-31",20.85,21,20.72,20.79,10500,20.42 234 | "2013-11-01",20.86,20.88,20.41,20.49,22400,20.13 235 | "2013-11-04",20.59,20.59,20.46,20.46,25300,20.1 236 | "2013-11-05",20.5,20.54,20.08,20.1,17000,19.74 237 | "2013-11-06",20.11,20.17,20.08,20.08,11500,19.73 238 | "2013-11-07",20.17,20.31,20.07,20.22,19400,19.86 239 | "2013-11-08",20.22,20.34,20.1,20.22,19700,19.86 240 | "2013-11-11",20.22,20.22,20.05,20.15,20800,19.79 241 | "2013-11-12",20.24,20.26,20.06,20.14,13400,19.78 242 | "2013-11-13",20.05,20.19,20.05,20.11,11400,19.75 243 | "2013-11-14",20.2,20.2,20.05,20.07,14600,19.72 244 | "2013-11-15",20.08,20.16,20.08,20.16,11100,19.8 245 | "2013-11-18",20.18,20.18,20.09,20.17,4500,19.81 246 | "2013-11-19",20.17,20.3,20.17,20.25,12800,19.89 247 | "2013-11-20",20.25,20.35,20.09,20.09,35100,19.73 248 | "2013-11-21",20,20.19,20,20.19,36300,19.83 249 | "2013-11-22",20.19,20.51,20.05,20.1,25900,19.74 250 | "2013-11-25",20.21,20.27,20.11,20.21,54600,19.85 251 | "2013-11-26",20.35,20.35,20.1,20.12,24000,19.76 252 | "2013-11-27",20.11,20.32,20.11,20.24,24600,19.88 253 | "2013-11-29",20.24,20.24,20.17,20.23,5700,19.87 254 | "2013-12-02",20.17,20.17,20.08,20.1,26200,19.74 255 | "2013-12-03",20.16,20.18,20.1,20.11,20200,19.75 256 | "2013-12-04",20.11,20.15,20,20.05,72300,19.7 257 | "2013-12-05",19.95,20.01,19.6,19.65,42300,19.3 258 | "2013-12-06",19.8,19.85,19.68,19.83,36600,19.48 259 | "2013-12-09",19.79,19.87,19.76,19.78,36300,19.43 260 | "2013-12-10",19.78,19.84,19.71,19.8,43800,19.45 261 | "2013-12-11",19.8,19.8,19.71,19.72,20300,19.37 262 | "2013-12-12",19.76,19.76,19.52,19.53,20800,19.18 263 | "2013-12-13",19.58,19.65,19.47,19.57,13300,19.22 264 | "2013-12-16",19.71,19.8,19.56,19.6,23800,19.25 265 | "2013-12-17",19.6,19.7,19.45,19.58,24100,19.23 266 | "2013-12-18",19.62,19.72,19.46,19.72,30400,19.37 267 | "2013-12-19",19.49,19.83,19.45,19.78,38500,19.43 268 | "2013-12-20",19.67,19.8,19.67,19.75,31500,19.4 269 | "2013-12-23",19.78,19.86,19.54,19.56,47800,19.21 270 | "2013-12-24",19.62,19.68,19.56,19.63,7700,19.28 271 | "2013-12-26",19.55,19.79,19.55,19.75,109700,19.4 272 | "2013-12-27",19.75,20.05,19.75,19.92,41400,19.57 273 | "2013-12-30",19.73,19.73,19.36,19.69,59300,19.69 274 | "2013-12-31",19.79,19.79,19.55,19.65,39100,19.65 275 | "2014-01-02",19.64,20.23,19.64,19.94,5600,19.94 276 | "2014-01-03",19.95,20.23,19.95,20.11,9500,20.11 277 | "2014-01-06",20.23,20.43,20.05,20.18,37900,20.18 278 | "2014-01-07",20.11,20.2,19.92,20.06,23600,20.06 279 | "2014-01-08",20.04,20.1,20,20.07,45900,20.07 280 | "2014-01-09",20.05,20.28,20.05,20.23,67100,20.23 281 | "2014-01-10",20.39,20.62,20.39,20.52,94400,20.52 282 | "2014-01-13",20.61,20.97,20.61,20.88,22900,20.88 283 | "2014-01-14",20.76,20.9,20.75,20.81,17800,20.81 284 | "2014-01-15",20.89,20.97,20.85,20.85,26400,20.85 285 | "2014-01-16",20.94,21.11,20.93,21,33800,21 286 | "2014-01-17",20.95,21.09,20.95,21,28500,21 287 | "2014-01-21",21.03,21.15,21.03,21.14,17800,21.14 288 | "2014-01-22",21.29,21.29,21.02,21.06,18000,21.06 289 | "2014-01-23",21.04,21.16,21.02,21.02,14500,21.02 290 | "2014-01-24",21.02,21.07,20.9,20.97,40900,20.97 291 | "2014-01-27",21.02,21.03,20.88,20.9,6200,20.9 292 | "2014-01-28",20.91,21,20.89,21,50400,21 293 | "2014-01-29",21.03,21.03,20.88,20.95,11300,20.95 294 | "2014-01-30",21.02,21.02,20.9,21,33800,21 295 | "2014-01-31",21,21.03,20.92,20.97,6600,20.97 296 | "2014-02-03",21.02,21.02,20.68,20.83,10900,20.83 297 | "2014-02-04",20.76,20.8,20.73,20.74,8900,20.74 298 | "2014-02-05",20.8,20.86,20.7,20.86,5400,20.86 299 | "2014-02-06",20.83,20.91,20.82,20.83,16100,20.83 300 | "2014-02-07",20.88,21,20.86,20.95,67500,20.95 301 | "2014-02-10",21.02,21.09,20.92,21.05,18300,21.05 302 | "2014-02-11",21.09,21.1,21.01,21.09,101600,21.09 303 | "2014-02-12",21.1,21.14,21.02,21.07,21900,21.07 304 | "2014-02-13",21.1,21.13,21.06,21.11,9100,21.11 305 | "2014-02-14",21.17,21.21,21.1,21.21,52200,21.21 306 | "2014-02-18",21.37,21.4,21.25,21.34,17200,21.34 307 | "2014-02-19",21.34,21.5,21.2,21.26,70100,21.26 308 | "2014-02-20",21.26,21.26,21.06,21.15,18200,21.15 309 | "2014-02-21",21.12,21.23,21.12,21.16,7300,21.16 310 | "2014-02-24",21.15,21.24,21.15,21.18,7700,21.18 311 | "2014-02-25",21.18,21.21,21.11,21.21,12200,21.21 312 | "2014-02-26",21.16,21.37,21.16,21.25,10900,21.25 313 | "2014-02-27",21.3,21.42,21.3,21.36,9500,21.36 314 | "2014-02-28",21.35,21.47,21.35,21.44,10200,21.44 315 | "2014-03-03",21.43,21.43,21.2,21.29,15500,21.29 316 | "2014-03-04",21.38,21.44,21.32,21.44,6500,21.44 317 | "2014-03-05",21.45,21.45,21.36,21.39,4500,21.39 318 | "2014-03-06",21.45,21.48,21.38,21.48,3700,21.48 319 | "2014-03-07",21.5,21.61,21.38,21.61,14700,21.61 320 | "2014-03-10",21.63,21.63,21.49,21.57,15000,21.57 321 | "2014-03-11",21.59,21.59,21.4,21.4,6700,21.4 322 | "2014-03-12",21.35,21.56,21.35,21.45,20100,21.45 323 | "2014-03-13",21.48,21.53,21.44,21.49,12800,21.49 324 | "2014-03-14",21.49,21.61,21.49,21.52,5300,21.52 325 | "2014-03-17",21.52,21.65,21.52,21.53,11100,21.53 326 | -------------------------------------------------------------------------------- /core/src/main/resources/price/KRFT.csv: -------------------------------------------------------------------------------- 1 | "","KRFT.Open","KRFT.High","KRFT.Low","KRFT.Close","KRFT.Volume","KRFT.Adjusted" 2 | "2012-09-17",44,45.57,43.06,45.1,1300600,42.9 3 | "2012-09-18",45.82,45.99,45,45.67,1161500,43.44 4 | "2012-09-19",45.74,46.38,45.5,46,2803500,43.76 5 | "2012-09-20",45.94,46.9,45.5,46.45,4425700,44.19 6 | "2012-09-21",47.3,47.3,45.16,45.98,3876800,43.74 7 | "2012-09-24",46.5,46.5,45.08,46,1702400,43.76 8 | "2012-09-25",46,46.13,45.2,45.25,1135400,43.04 9 | "2012-09-26",45.8,45.91,44.75,44.75,1608500,42.57 10 | "2012-09-27",44.94,45.14,44.01,44.78,2144200,42.6 11 | "2012-09-28",45.05,46.5,44.2,44.63,3148600,42.45 12 | "2012-10-01",45.57,45.62,42,44.1,12031400,41.95 13 | "2012-10-02",44.45,46.14,44.44,45.42,12314500,43.21 14 | "2012-10-03",45.55,47.76,44.83,44.87,26426900,42.68 15 | "2012-10-04",45.5,46.68,45.5,46.63,7550100,44.36 16 | "2012-10-05",46.55,47.76,46.5,47.57,8998600,45.25 17 | "2012-10-08",47.92,48,46.5,46.59,6450000,44.32 18 | "2012-10-09",46.7,47.29,45.95,47,7724400,44.71 19 | "2012-10-10",47.28,47.53,46.2,46.35,9671700,44.09 20 | "2012-10-11",47,47.04,45.44,46.46,12664700,44.2 21 | "2012-10-12",46.67,47.41,46.05,47.1,7384000,44.8 22 | "2012-10-15",47.17,47.68,46.78,46.96,7890200,44.67 23 | "2012-10-16",46.9,47.26,46.32,47.25,5934900,44.95 24 | "2012-10-17",47.4,47.74,46.55,46.65,3948700,44.38 25 | "2012-10-18",46.67,46.78,45.91,46.4,5681500,44.14 26 | "2012-10-19",46.42,46.5,45.9,46.03,4863600,43.79 27 | "2012-10-22",46.2,46.85,46.15,46.62,4607700,44.35 28 | "2012-10-23",46.22,46.43,45.94,46.21,4141800,43.96 29 | "2012-10-24",46.08,46.62,45.21,45.52,4924400,43.3 30 | "2012-10-25",45.84,46.17,45.42,45.91,2825100,43.67 31 | "2012-10-26",45.84,45.84,45.11,45.3,3235900,43.09 32 | "2012-10-31",45.62,46.2,44.8,45.46,3979000,43.24 33 | "2012-11-01",45.38,45.65,45.02,45.13,3277400,42.93 34 | "2012-11-02",45.22,45.39,44.53,44.56,3751300,42.39 35 | "2012-11-05",44.47,44.82,44.4,44.77,2746300,42.59 36 | "2012-11-06",45.2,45.29,44.69,44.7,3821300,42.52 37 | "2012-11-07",45.5,45.57,44.31,44.57,4212600,42.4 38 | "2012-11-08",44.8,45.09,43.69,43.77,4163500,41.64 39 | "2012-11-09",43.82,44.28,43.4,43.66,3350200,41.53 40 | "2012-11-12",43.62,44.28,43.25,43.94,3004800,41.8 41 | "2012-11-13",43.81,44.26,43.65,43.96,3198800,41.82 42 | "2012-11-14",44.15,44.96,43.67,44.34,4481900,42.18 43 | "2012-11-15",44.08,44.46,43.5,43.92,2993300,41.78 44 | "2012-11-16",43.81,44.31,43.46,44.19,3576800,42.04 45 | "2012-11-19",44.47,45,44.28,44.89,2864400,42.7 46 | "2012-11-20",44.9,44.9,44.45,44.88,1751500,42.69 47 | "2012-11-21",44.81,45.14,44.4,44.51,1885600,42.34 48 | "2012-11-23",44.41,45.3,44.41,45.28,806000,43.07 49 | "2012-11-26",45,45.18,44.06,44.31,3627800,42.15 50 | "2012-11-27",44.31,45.47,44.1,45.33,3829900,43.12 51 | "2012-11-28",44.92,45.91,44.27,45.82,3388800,43.59 52 | "2012-11-29",45.96,46.01,45.5,45.94,2938300,43.7 53 | "2012-11-30",45.13,46.37,45.11,45.24,6090300,43.03 54 | "2012-12-03",45.26,45.87,45.1,45.69,3715400,43.46 55 | "2012-12-04",45.65,45.89,45.36,45.7,3727000,43.47 56 | "2012-12-05",45.91,46.6,45.67,45.78,3685500,43.55 57 | "2012-12-06",45.64,45.99,45.12,45.15,3546800,42.95 58 | "2012-12-07",45.39,45.4,44.46,44.67,3143400,42.49 59 | "2012-12-10",44.52,45.21,44.27,44.32,2144100,42.16 60 | "2012-12-11",44.32,44.99,44.32,44.83,4059500,42.64 61 | "2012-12-12",44.91,46.08,44.9,45.7,4532000,43.47 62 | "2012-12-13",46.13,46.24,45.7,46.01,3084600,43.77 63 | "2012-12-14",46.22,46.63,46.11,46.62,2688700,44.35 64 | "2012-12-17",46.64,46.65,45.99,46.33,3182900,44.07 65 | "2012-12-18",46.44,46.63,46.1,46.55,3283100,44.28 66 | "2012-12-19",46.4,46.6,46.05,46.36,2989200,44.1 67 | "2012-12-20",46.54,46.65,46.3,46.43,2879100,44.17 68 | "2012-12-21",46,46.43,45.49,45.53,4946400,43.31 69 | "2012-12-24",45.66,45.86,45.34,45.45,1289900,43.23 70 | "2012-12-26",45.41,45.44,44.61,44.65,2234200,42.47 71 | "2012-12-27",44.43,44.51,44.08,44.39,3377700,42.7 72 | "2012-12-28",44.36,44.6,44.15,44.41,2344800,42.72 73 | "2012-12-31",44.18,45.48,44.16,45.47,3517500,43.74 74 | "2013-01-02",46.49,46.5,45.38,45.76,4343500,44.02 75 | "2013-01-03",45.7,45.74,45.21,45.58,2841700,43.85 76 | "2013-01-04",45.66,46.05,45.16,45.37,3283100,43.65 77 | "2013-01-07",45.2,46.07,45.15,46.03,3330100,44.28 78 | "2013-01-08",46.02,46.06,45.56,45.62,3346900,43.89 79 | "2013-01-09",45.61,46.5,45.61,46.39,2541900,44.63 80 | "2013-01-10",46.55,46.67,45.84,46.01,3333500,44.26 81 | "2013-01-11",46.2,46.44,45.86,46.37,2190000,44.61 82 | "2013-01-14",46.64,46.97,46.36,46.85,2330300,45.07 83 | "2013-01-15",46.78,46.94,46.18,46.71,2681300,44.94 84 | "2013-01-16",46.76,47.1,46.43,46.51,4238100,44.74 85 | "2013-01-17",46.8,47.11,46.73,46.92,2474900,45.14 86 | "2013-01-18",47,47.09,46.59,47.05,2591800,45.26 87 | "2013-01-22",47.11,47.43,46.28,47.09,3119600,45.3 88 | "2013-01-23",47.13,47.2,46.65,46.74,2155900,44.97 89 | "2013-01-24",46.89,46.98,46.48,46.91,2985600,45.13 90 | "2013-01-25",47.34,47.53,46.99,47.14,2430500,45.35 91 | "2013-01-28",47.5,47.59,46.89,47,2386500,45.22 92 | "2013-01-29",47.01,47.38,46.83,47.05,1634200,45.26 93 | "2013-01-30",47.14,47.31,46.66,46.72,2197200,44.95 94 | "2013-01-31",46.5,46.71,46.18,46.22,3676400,44.47 95 | "2013-02-01",46.62,46.85,46.16,46.6,2150500,44.83 96 | "2013-02-04",46.78,46.86,46.17,46.4,2706000,44.64 97 | "2013-02-05",46.54,47.44,46.48,47.02,2533500,45.23 98 | "2013-02-06",47,47.45,46.87,47.01,2315200,45.23 99 | "2013-02-07",47.07,47.23,46.42,46.66,2579200,44.89 100 | "2013-02-08",46.93,47.06,46.5,46.9,2068100,45.12 101 | "2013-02-11",46.94,47.4,46.91,47.29,1849200,45.49 102 | "2013-02-12",47.49,47.5,47.05,47.24,1682300,45.45 103 | "2013-02-13",47.2,47.2,46.56,46.77,2007200,44.99 104 | "2013-02-14",47.4,47.65,46.87,47.16,5690600,45.37 105 | "2013-02-15",47.3,47.45,47,47.17,6103000,45.38 106 | "2013-02-19",47.21,47.8,47.21,47.37,5348800,45.57 107 | "2013-02-20",47.58,47.61,47.17,47.23,4175400,45.44 108 | "2013-02-21",47.23,47.34,46.65,46.85,3304400,45.07 109 | "2013-02-22",47.05,47.54,46.85,47.46,3041800,45.66 110 | "2013-02-25",47.77,47.79,46.73,46.74,3112700,44.97 111 | "2013-02-26",46.92,47.4,46.8,47.27,3662500,45.48 112 | "2013-02-27",47.29,47.87,47.11,47.67,2741000,45.86 113 | "2013-02-28",47.81,48.91,47.73,48.48,4529100,46.64 114 | "2013-03-01",48.25,48.66,47.81,48.57,3231400,46.73 115 | "2013-03-04",48.4,49.17,48.4,49.15,3591500,47.28 116 | "2013-03-05",49.43,49.5,49,49.19,4323800,47.32 117 | "2013-03-06",49.57,49.75,49.11,49.19,2838600,47.32 118 | "2013-03-07",49.37,49.39,48.88,49.04,2681200,47.18 119 | "2013-03-08",49.37,50,49.23,49.71,3251200,47.82 120 | "2013-03-11",49.95,50.33,49.79,49.99,4027800,48.09 121 | "2013-03-12",50.11,50.63,49.93,50.55,4667100,48.63 122 | "2013-03-13",50.49,50.84,49.95,50.74,3736800,48.81 123 | "2013-03-14",50.79,50.85,50.27,50.47,3559100,48.55 124 | "2013-03-15",50.16,50.65,49.93,50.27,21024900,48.36 125 | "2013-03-18",49.94,50.83,49.85,50.65,3136200,48.73 126 | "2013-03-19",50.88,50.9,50.2,50.58,2762900,48.66 127 | "2013-03-20",51.05,51.57,50.93,51.51,4237600,49.55 128 | "2013-03-21",51.31,51.9,51.25,51.66,3650500,49.7 129 | "2013-03-22",51.85,52.29,51.03,51.19,13842000,49.25 130 | "2013-03-25",51.51,51.95,51,51.25,12234600,49.3 131 | "2013-03-26",51.07,51.38,50.86,51.36,2888400,49.9 132 | "2013-03-27",51.11,51.45,50.81,51.37,2593300,49.91 133 | "2013-03-28",51.31,51.7,51.14,51.53,3159500,50.06 134 | "2013-04-01",51.38,52.1,51.26,51.89,2814200,50.41 135 | "2013-04-02",51.99,52.51,51.64,52.37,3030300,50.88 136 | "2013-04-03",52.49,52.49,51.4,51.66,3133100,50.19 137 | "2013-04-04",51.66,52.01,51.53,51.85,1665700,50.37 138 | "2013-04-05",51.5,51.54,51.14,51.24,3207500,49.78 139 | "2013-04-08",51.41,51.8,51,51.73,3032400,50.26 140 | "2013-04-09",51.75,52.21,50.51,50.7,3074800,49.26 141 | "2013-04-10",50.95,51.43,50.93,51.36,2983500,49.9 142 | "2013-04-11",51.61,51.93,50.89,51,4265100,49.55 143 | "2013-04-12",51.22,52.11,50.97,52.07,3352700,50.59 144 | "2013-04-15",51.74,51.88,50.71,50.72,3783400,49.27 145 | "2013-04-16",51.04,51.56,50.75,51.49,2330500,50.02 146 | "2013-04-17",51.11,51.23,50.13,50.42,3009500,48.98 147 | "2013-04-18",50.5,50.78,49.79,50.09,2957600,48.66 148 | "2013-04-19",49.86,50.72,49.86,50.35,2228000,48.92 149 | "2013-04-22",50.59,50.81,50.03,50.64,2121100,49.2 150 | "2013-04-23",50.87,51.23,50.37,51.19,2325900,49.73 151 | "2013-04-24",51.25,51.52,50.63,50.68,2494900,49.24 152 | "2013-04-25",50.9,51.31,50.69,51.28,2325200,49.82 153 | "2013-04-26",51.46,51.7,50.77,50.92,2547100,49.47 154 | "2013-04-29",51.27,52.06,51.25,51.57,2589400,50.1 155 | "2013-04-30",51.4,51.73,51.08,51.49,2757600,50.02 156 | "2013-05-01",51.19,51.41,50.78,51.07,2059700,49.61 157 | "2013-05-02",51.16,51.89,50.04,50.53,4545000,49.09 158 | "2013-05-03",53,54.1,52.37,53.11,6136800,51.6 159 | "2013-05-06",53.07,53.65,52.61,53.39,3583200,51.87 160 | "2013-05-07",53.31,55.69,53.24,54.85,6666100,53.29 161 | "2013-05-08",54.93,55.13,54.24,55.02,4018800,53.45 162 | "2013-05-09",55.5,55.57,54.73,55.05,2787600,53.48 163 | "2013-05-10",55.19,55.54,55.05,55.22,3125700,53.65 164 | "2013-05-13",55.27,55.35,54.21,54.4,2899300,52.85 165 | "2013-05-14",54.3,54.81,53.95,54.77,2098400,53.21 166 | "2013-05-15",54.62,55.26,54.2,55.2,1588700,53.63 167 | "2013-05-16",55.82,55.82,54.97,55.52,2265900,53.94 168 | "2013-05-17",55.74,56.13,54.97,56.11,2762000,54.51 169 | "2013-05-20",56.13,56.27,55.39,56.24,2688000,54.64 170 | "2013-05-21",56.27,57.09,56.13,56.61,4148100,55 171 | "2013-05-22",56.56,57.26,56.25,56.95,5880400,55.33 172 | "2013-05-23",56.47,57.15,56.33,56.9,3383900,55.28 173 | "2013-05-24",56.38,57.14,56,57.01,1725500,55.39 174 | "2013-05-28",57.38,57.84,56.99,57.54,2341800,55.9 175 | "2013-05-29",57.3,57.54,56.61,56.71,2428900,55.09 176 | "2013-05-30",56.53,56.86,55.39,55.41,2712100,53.83 177 | "2013-05-31",55.47,55.69,54.8,55.13,4868200,53.56 178 | "2013-06-03",55.14,55.39,53.63,54.94,4384700,53.37 179 | "2013-06-04",55.13,55.47,53.71,54.4,4318400,52.85 180 | "2013-06-05",54.18,54.31,53.21,53.3,2809200,51.78 181 | "2013-06-06",53.48,54.04,52.94,53.74,2814400,52.21 182 | "2013-06-07",54.07,54.47,53.22,54.37,3110800,52.82 183 | "2013-06-10",54.48,54.52,53.68,54.51,2545600,52.96 184 | "2013-06-11",54.34,54.48,53.54,54.14,2292500,52.6 185 | "2013-06-12",54.5,54.6,53.44,53.45,2318200,51.93 186 | "2013-06-13",53.6,56.12,53.55,55.99,4916700,54.39 187 | "2013-06-14",55.79,56.48,55.27,55.68,2897500,54.09 188 | "2013-06-17",55.82,56.47,55.46,55.93,2012600,54.34 189 | "2013-06-18",55.9,56.73,55.88,56.65,1909500,55.04 190 | "2013-06-19",56.65,56.74,55.3,55.33,3301200,53.75 191 | "2013-06-20",55.1,55.15,52.91,52.99,4797800,51.48 192 | "2013-06-21",53.3,53.84,52.8,53.46,6135400,51.94 193 | "2013-06-24",53.33,54.22,52.91,53.82,3300400,52.29 194 | "2013-06-25",54.35,55.14,54.04,54.69,3547600,53.13 195 | "2013-06-26",54.65,55.13,53.67,54.34,3588900,53.28 196 | "2013-06-27",54.54,55.75,54.54,55.32,2224800,54.24 197 | "2013-06-28",54.89,56,54.89,55.87,11861400,54.78 198 | "2013-07-01",55.75,56.25,54.85,54.98,2478000,53.91 199 | "2013-07-02",55.26,56.07,54.9,55.53,2817500,54.45 200 | "2013-07-03",55.01,55.58,54.89,55.51,1141700,54.43 201 | "2013-07-05",56,56.05,55.08,55.24,2019700,54.16 202 | "2013-07-08",55.63,55.97,54.64,55.03,2973600,53.96 203 | "2013-07-09",55.68,56,55.28,55.38,2006300,54.3 204 | "2013-07-10",55.51,56.33,55.39,56.06,1667600,54.97 205 | "2013-07-11",56.73,56.87,56.46,56.68,2213100,55.57 206 | "2013-07-12",56.82,57.19,56.44,56.69,2164800,55.58 207 | "2013-07-15",56.5,57.75,56.48,57.63,1935100,56.5 208 | "2013-07-16",57.75,57.84,57.34,57.47,1763900,56.35 209 | "2013-07-17",57.45,57.71,57.25,57.35,2e+06,56.23 210 | "2013-07-18",57.35,58.05,56.67,57.18,2098600,56.06 211 | "2013-07-19",57.54,57.97,56.7,57.66,2281300,56.53 212 | "2013-07-22",58.44,58.76,57.93,58.29,2309200,57.15 213 | "2013-07-23",58.4,58.4,57.08,57.2,1935900,56.08 214 | "2013-07-24",57.35,57.68,56.07,56.44,2145100,55.34 215 | "2013-07-25",56.18,57.07,56.13,56.86,1749000,55.75 216 | "2013-07-26",56.44,56.7,55.68,56.45,2491100,55.35 217 | "2013-07-29",56.75,57,56.37,56.49,1944100,55.39 218 | "2013-07-30",56.51,57.13,56.49,56.64,1659200,55.53 219 | "2013-07-31",56.47,56.94,56.06,56.58,1819500,55.48 220 | "2013-08-01",57.08,57.48,56.78,57.14,2303300,56.02 221 | "2013-08-02",57.05,57.75,56.01,57.5,3352600,56.38 222 | "2013-08-05",56.71,57.05,56.35,56.45,2447300,55.35 223 | "2013-08-06",56.16,56.84,56.16,56.7,2249700,55.59 224 | "2013-08-07",56.25,56.5,55.13,55.2,2392000,54.12 225 | "2013-08-08",55.55,56.47,55.28,56.21,2664000,55.11 226 | "2013-08-09",56.41,56.41,55.76,56.26,1569800,55.16 227 | "2013-08-12",56,56.59,55.47,55.55,2284700,54.47 228 | "2013-08-13",55.77,56.37,55.45,56.04,1802400,54.95 229 | "2013-08-14",56.12,56.19,54.55,55.17,3755300,54.09 230 | "2013-08-15",54.62,54.69,53.37,53.5,3706600,52.46 231 | "2013-08-16",53.26,53.34,52.53,52.77,3824600,51.74 232 | "2013-08-19",52.42,52.5,51.91,52.11,4050000,51.09 233 | "2013-08-20",52.45,53.61,52.19,52.63,3293400,51.6 234 | "2013-08-21",52.58,52.76,51.99,52.27,2543800,51.25 235 | "2013-08-22",52.32,53.29,52.27,53.02,1946700,51.98 236 | "2013-08-23",52.99,53.38,52.77,52.82,2790600,51.79 237 | "2013-08-26",53.09,53.09,51.69,52.08,3153500,51.06 238 | "2013-08-27",51.67,52.31,51.53,51.94,3203400,50.93 239 | "2013-08-28",51.75,52,51.2,51.57,2697200,50.56 240 | "2013-08-29",51.23,52.29,51.22,51.93,2582400,50.92 241 | "2013-08-30",51.97,52.25,51.53,51.77,1966500,50.76 242 | "2013-09-03",52.49,53.13,52.01,52.36,2393800,51.34 243 | "2013-09-04",52.2,53.2,52.1,52.94,2591600,51.91 244 | "2013-09-05",52.84,53.26,52.68,52.89,1990000,51.86 245 | "2013-09-06",53.43,53.81,52.58,53.21,2791400,52.17 246 | "2013-09-09",53.51,54.44,53.24,54.23,3474000,53.17 247 | "2013-09-10",54.31,54.4,52.64,53.12,4583000,52.08 248 | "2013-09-11",53,53.73,53,53.64,2828100,52.59 249 | "2013-09-12",53.53,53.64,53.29,53.4,2077300,52.36 250 | "2013-09-13",53.74,54.28,53.33,54.24,1962700,53.18 251 | "2013-09-16",54.68,55.17,54.58,54.79,2053300,53.72 252 | "2013-09-17",54.8,55.2,54.58,55,1491800,53.93 253 | "2013-09-18",55.17,55.65,54.38,55.53,2434400,54.45 254 | "2013-09-19",55.5,55.51,53.8,53.98,3974600,52.93 255 | "2013-09-20",53.93,54.45,53.8,54.03,15053400,52.97 256 | "2013-09-23",54.1,54.28,53.57,53.98,1722200,52.93 257 | "2013-09-24",54.11,54.11,52.95,53.04,3026800,52 258 | "2013-09-25",53.1,53.32,52.44,52.64,2445100,51.61 259 | "2013-09-26",52.9,53.06,52.32,53.04,1944200,52 260 | "2013-09-27",52.88,53.1,52.25,52.88,1792300,51.85 261 | "2013-09-30",52.39,52.82,52.08,52.48,2637800,51.46 262 | "2013-10-01",52.46,53,52.28,52.96,2041000,51.93 263 | "2013-10-02",52.59,53.08,52.1,53.06,2565300,52.02 264 | "2013-10-03",52.86,53.03,52.12,52.46,2071000,51.44 265 | "2013-10-04",52.51,53.46,52.42,53.22,9195800,52.18 266 | "2013-10-07",52.71,54.36,52.71,53.85,8603200,52.8 267 | "2013-10-08",53.79,53.82,52.71,53.07,3671600,52.03 268 | "2013-10-09",52.55,52.79,51.77,51.88,3463000,51.38 269 | "2013-10-10",52.36,52.94,52.25,52.57,2955200,52.06 270 | "2013-10-11",52.42,52.89,52.29,52.34,3024500,51.83 271 | "2013-10-14",52.2,52.5,52.1,52.36,3085600,51.85 272 | "2013-10-15",52.1,52.32,51.72,52.11,3185900,51.6 273 | "2013-10-16",52.45,53.1,52.37,53.06,2611200,52.54 274 | "2013-10-17",52.61,53.88,52.61,53.78,2283400,53.26 275 | "2013-10-18",53.81,53.99,53.62,53.69,2282100,53.17 276 | "2013-10-21",53.71,54.03,53.24,54.01,1646100,53.48 277 | "2013-10-22",54.54,54.95,54.01,54.73,2024600,54.2 278 | "2013-10-23",54.35,54.98,54.16,54.42,1583600,53.89 279 | "2013-10-24",54.64,54.82,54.3,54.61,1464300,54.08 280 | "2013-10-25",54.91,54.97,54.52,54.96,1508600,54.43 281 | "2013-10-28",54.62,55.73,54.62,55.51,2705100,54.97 282 | "2013-10-29",55.68,55.8,55,55.79,2396700,55.25 283 | "2013-10-30",55.75,55.93,55.22,55.44,1804900,54.9 284 | "2013-10-31",54.79,54.79,53.08,54.38,5739700,53.85 285 | "2013-11-01",54.51,55.14,54.33,54.63,3638200,54.1 286 | "2013-11-04",54.66,55.03,54.45,54.58,2370000,54.05 287 | "2013-11-05",54.38,54.51,54.09,54.11,2137100,53.58 288 | "2013-11-06",54.3,54.5,54.07,54.37,2193200,53.84 289 | "2013-11-07",54.25,54.38,53.26,53.44,2959000,52.92 290 | "2013-11-08",53.5,53.55,52.37,52.73,6687700,52.22 291 | "2013-11-11",52.61,52.8,52.12,52.38,3177500,51.87 292 | "2013-11-12",52.39,52.5,51.84,51.96,4313600,51.45 293 | "2013-11-13",52.37,52.53,51.97,52.52,3175800,52.01 294 | "2013-11-14",52.71,53.18,52.58,53.02,2716400,52.5 295 | "2013-11-15",53.07,53.13,52.51,53.05,3306900,52.53 296 | "2013-11-18",53.31,53.94,52.8,52.94,2952600,52.42 297 | "2013-11-19",52.96,53.11,52.68,52.87,2975800,52.36 298 | "2013-11-20",53.59,53.59,52.29,52.59,3899400,52.08 299 | "2013-11-21",52.69,52.82,52.09,52.5,3584600,51.99 300 | "2013-11-22",52.13,52.9,52.12,52.72,2390900,52.21 301 | "2013-11-25",52.99,52.99,52.6,52.68,2034900,52.17 302 | "2013-11-26",52.97,53.59,52.8,53.17,3702800,52.65 303 | "2013-11-27",53.1,53.59,53,53.39,2600400,52.87 304 | "2013-11-29",53.39,53.69,53.03,53.12,1443100,52.6 305 | "2013-12-02",53.36,53.41,52.76,53.1,2398400,52.58 306 | "2013-12-03",52.91,53.32,52.86,53.03,2365500,52.51 307 | "2013-12-04",52.87,52.99,52.31,52.81,2522000,52.3 308 | "2013-12-05",52.88,52.98,52.45,52.66,2183400,52.15 309 | "2013-12-06",53.05,53.6,53.04,53.55,2363100,53.03 310 | "2013-12-09",54.58,54.92,54.3,54.5,3941000,53.97 311 | "2013-12-10",54.72,54.78,53.67,54.06,3160200,53.53 312 | "2013-12-11",53.86,54.14,53.63,53.73,2138500,53.21 313 | "2013-12-12",53.63,53.69,52.67,52.93,3206200,52.41 314 | "2013-12-13",53.25,53.27,52.47,52.61,3145200,52.1 315 | "2013-12-16",52.72,53.3,52.6,52.84,2000100,52.33 316 | "2013-12-17",52.7,52.75,52.3,52.44,2791800,51.93 317 | "2013-12-18",53.22,53.42,52.41,53.34,4538600,52.82 318 | "2013-12-19",53.42,53.5,52.91,53.18,4173500,52.66 319 | "2013-12-20",53.29,54.05,53.2,54,5544200,53.47 320 | "2013-12-23",53.65,54,53.51,53.95,2257000,53.43 321 | "2013-12-24",53.33,53.49,53.06,53.32,1103100,53.32 322 | "2013-12-26",53.34,53.71,53.22,53.63,1399800,53.63 323 | "2013-12-27",53.79,53.94,53.56,53.71,1490400,53.71 324 | "2013-12-30",53.67,54.12,53.6,53.94,1629100,53.94 325 | "2013-12-31",53.91,54.21,53.72,53.91,1720000,53.91 326 | "2014-01-02",53.8,53.89,53.43,53.73,1770300,53.73 327 | "2014-01-03",53.7,53.99,53.38,53.45,2055900,53.45 328 | "2014-01-06",53.94,53.94,53.11,53.43,2386600,53.43 329 | "2014-01-07",53.37,54.16,53.32,53.93,3334100,53.93 330 | "2014-01-08",54.32,54.48,52.81,53.25,5406700,53.25 331 | "2014-01-09",53.47,53.72,52.87,53.32,3363100,53.32 332 | "2014-01-10",53.41,53.82,53.12,53.8,2429200,53.8 333 | "2014-01-13",53.65,54.06,53.21,53.49,3619200,53.49 334 | "2014-01-14",53.66,54.71,53.51,54.42,4294500,54.42 335 | "2014-01-15",54.48,54.68,54,54.51,2612400,54.51 336 | "2014-01-16",54.34,54.85,54.11,54.69,2365500,54.69 337 | "2014-01-17",54.53,55.11,54.4,54.76,4169400,54.76 338 | "2014-01-21",55.2,55.2,54.05,54.24,3443400,54.24 339 | "2014-01-22",54.43,54.52,54.04,54.4,2794700,54.4 340 | "2014-01-23",54.14,54.25,53.31,53.49,3474100,53.49 341 | "2014-01-24",53.17,53.56,52.67,52.89,3286800,52.89 342 | "2014-01-27",53.04,53.21,52.73,52.84,3082900,52.84 343 | "2014-01-28",52.96,53.1,52.58,52.88,2216300,52.88 344 | "2014-01-29",52.55,52.88,52.06,52.19,2954000,52.19 345 | "2014-01-30",52.59,52.81,52.21,52.68,2982700,52.68 346 | "2014-01-31",52.01,52.6,51.99,52.35,3247600,52.35 347 | "2014-02-03",52.86,52.91,51.07,51.12,4699600,51.12 348 | "2014-02-04",51.24,51.46,50.59,51.06,3743100,51.06 349 | "2014-02-05",51,51.32,50.54,51.12,3396300,51.12 350 | "2014-02-06",51.38,51.71,51.25,51.65,2764700,51.65 351 | "2014-02-07",52.11,52.42,51.91,52.3,3058800,52.3 352 | "2014-02-10",52.35,53.29,52.11,53.19,3443500,53.19 353 | "2014-02-11",53.1,53.4,52.91,53.17,3885100,53.17 354 | "2014-02-12",53.45,53.62,53.08,53.42,3279800,53.42 355 | "2014-02-13",53.07,53.75,53.07,53.61,3388800,53.61 356 | "2014-02-14",54.85,55,52.56,53.76,8027200,53.76 357 | "2014-02-18",53.89,54.47,53.7,54.33,3582500,54.33 358 | "2014-02-19",54,54.69,53.99,54.56,3309500,54.56 359 | "2014-02-20",54.53,55.6,54.53,55.2,4253900,55.2 360 | "2014-02-21",54.97,55.57,54.75,55.09,3584200,55.09 361 | "2014-02-24",55,55.63,55,55.12,2891800,55.12 362 | "2014-02-25",55.04,55.75,55.04,55.49,2619600,55.49 363 | "2014-02-26",55.69,55.7,54.54,54.88,3626300,54.88 364 | "2014-02-27",54.76,55.18,54.53,55.17,4120200,55.17 365 | "2014-02-28",55.28,55.59,54.96,55.27,2930500,55.27 366 | "2014-03-03",54.88,55.2,54.48,55.1,2288400,55.1 367 | "2014-03-04",55.55,56.02,55.41,55.8,2628100,55.8 368 | "2014-03-05",55.52,55.67,55.32,55.63,2629900,55.63 369 | "2014-03-06",55.8,55.8,55.54,55.62,1537100,55.62 370 | "2014-03-07",55.97,55.99,55.2,55.65,1864600,55.65 371 | "2014-03-10",55.69,56.04,55.46,55.52,2082300,55.52 372 | "2014-03-11",55.54,55.76,55.19,55.42,2213000,55.42 373 | "2014-03-12",55,55.72,55,55.72,2482000,55.72 374 | "2014-03-13",55.26,56.1,55.14,55.67,2033600,55.67 375 | "2014-03-14",55.34,55.75,55.25,55.47,2922200,55.47 376 | "2014-03-17",55.89,56,55.52,55.92,2323600,55.92 377 | -------------------------------------------------------------------------------- /core/src/main/resources/price/NWSA.csv: -------------------------------------------------------------------------------- 1 | "","NWSA.Open","NWSA.High","NWSA.Low","NWSA.Close","NWSA.Volume","NWSA.Adjusted" 2 | "2013-06-19",15.28,16.25,15.2,15.8,31981500,15.8 3 | "2013-06-20",16.37,16.37,15.25,15.3,9274200,15.3 4 | "2013-06-21",15.7,15.8,15.4,15.62,8323500,15.62 5 | "2013-06-24",15.64,15.84,15.2,15.53,4279700,15.53 6 | "2013-06-25",15.55,15.74,15.35,15.72,3577300,15.72 7 | "2013-06-26",15.69,15.69,15.18,15.4,14755100,15.4 8 | "2013-06-27",15.34,15.87,14.85,15.5,12121700,15.5 9 | "2013-06-28",15.5,15.77,15.25,15.25,16988100,15.25 10 | "2013-07-01",14.79,15.59,14.75,14.79,25839400,14.79 11 | "2013-07-02",14.69,15.12,14.69,15,30520100,15 12 | "2013-07-03",14.95,15.09,14.73,14.87,8542600,14.87 13 | "2013-07-05",14.95,15.95,14.89,15.66,12427000,15.66 14 | "2013-07-08",15.63,16.04,15.5,15.96,15345100,15.96 15 | "2013-07-09",15.79,15.97,15.5,15.71,9936400,15.71 16 | "2013-07-10",15.5,15.57,15.15,15.39,16327000,15.39 17 | "2013-07-11",15.6,15.6,14.96,15.13,17029600,15.13 18 | "2013-07-12",15.07,15.12,14.9,14.93,10426300,14.93 19 | "2013-07-15",14.93,15.03,14.39,14.67,20636400,14.67 20 | "2013-07-16",14.57,15.34,14.57,15.28,9328500,15.28 21 | "2013-07-17",15.36,15.96,15.29,15.89,13411100,15.89 22 | "2013-07-18",15.94,16.1,15.33,15.47,10825700,15.47 23 | "2013-07-19",15.35,16.08,15.26,15.97,11658700,15.97 24 | "2013-07-22",16.09,16.13,15.61,15.73,6141600,15.73 25 | "2013-07-23",15.69,15.87,15.54,15.65,9298400,15.65 26 | "2013-07-24",15.65,15.89,15.42,15.71,6205200,15.71 27 | "2013-07-25",15.66,15.87,15.45,15.57,7069700,15.57 28 | "2013-07-26",15.54,15.97,15.31,15.89,5884800,15.89 29 | "2013-07-29",15.87,15.87,15.4,15.51,9020200,15.51 30 | "2013-07-31",16,16.21,15.83,15.93,7681500,15.93 31 | "2013-08-01",15.94,16.28,15.94,16.21,10303300,16.21 32 | "2013-08-02",16.15,16.47,16.12,16.34,8258600,16.34 33 | "2013-08-05",16.33,16.33,15.89,16,8754100,16 34 | "2013-08-06",15.99,16.25,15.82,16.18,6232000,16.18 35 | "2013-08-07",16.15,16.15,15.85,15.95,4755000,15.95 36 | "2013-08-08",16.07,16.31,15.91,16.13,7110400,16.13 37 | "2013-08-09",16.09,16.16,15.96,15.98,4293800,15.98 38 | "2013-08-12",15.88,16.06,15.74,15.92,4882400,15.92 39 | "2013-08-13",15.91,15.95,15.8,15.83,3615400,15.83 40 | "2013-08-14",15.83,16.01,15.66,15.9,3940500,15.9 41 | "2013-08-15",15.79,16.19,15.7,16.1,5160000,16.1 42 | "2013-08-16",16.04,16.25,15.96,15.98,6373200,15.98 43 | "2013-08-19",16.05,16.06,15.69,15.7,6123600,15.7 44 | "2013-08-20",15.83,15.83,15.52,15.7,4265600,15.7 45 | "2013-08-21",15.61,15.78,15.49,15.76,5040000,15.76 46 | "2013-08-22",15.76,15.82,15.63,15.71,3731700,15.71 47 | "2013-08-23",15.71,15.79,15.57,15.75,3981300,15.75 48 | "2013-08-26",15.79,15.9,15.71,15.86,4125000,15.86 49 | "2013-08-27",15.75,16,15.69,15.73,9059500,15.73 50 | "2013-08-28",15.76,15.81,15.68,15.76,11099300,15.76 51 | "2013-08-29",15.73,15.89,15.64,15.77,2795500,15.77 52 | "2013-08-30",15.75,15.78,15.59,15.7,5386300,15.7 53 | "2013-09-03",15.89,16.03,15.69,15.78,3783600,15.78 54 | "2013-09-04",15.79,16.08,15.76,16.03,4992000,16.03 55 | "2013-09-05",15.97,16.27,15.88,16.24,3521200,16.24 56 | "2013-09-06",16.31,16.34,16.08,16.19,3358700,16.19 57 | "2013-09-09",16.16,16.34,16.16,16.34,3668900,16.34 58 | "2013-09-10",16.38,16.57,16.25,16.55,4292100,16.55 59 | "2013-09-11",16.65,17.06,16.5,17.05,7562700,17.05 60 | "2013-09-12",17.12,17.26,16.94,17.11,4836500,17.11 61 | "2013-09-13",17.06,17.08,16.77,16.89,2717700,16.89 62 | "2013-09-16",17.12,17.2,16.78,16.96,5758300,16.96 63 | "2013-09-17",17.03,17.17,16.89,17,2538500,17 64 | "2013-09-18",16.99,17.18,16.84,17.05,3862600,17.05 65 | "2013-09-19",17.1,17.1,16.66,16.87,3286100,16.87 66 | "2013-09-20",16.92,17,16.47,16.64,4594000,16.64 67 | "2013-09-23",16.62,16.64,16.37,16.53,2360000,16.53 68 | "2013-09-24",16.53,17.2,16.5,17.04,5611800,17.04 69 | "2013-09-25",17.03,17.04,16.68,16.8,4389700,16.8 70 | "2013-09-26",16.77,16.87,16.1,16.29,12737900,16.29 71 | "2013-09-27",16.1,16.25,15.99,16.17,7098300,16.17 72 | "2013-09-30",16.2,16.26,15.91,16.06,6237900,16.06 73 | "2013-10-01",16.05,16.14,15.8,15.91,8815300,15.91 74 | "2013-10-02",15.85,16.27,15.7,16.14,17758200,16.14 75 | "2013-10-03",16.14,16.25,15.79,15.87,17833500,15.87 76 | "2013-10-04",15.84,16.01,15.79,15.84,13660000,15.84 77 | "2013-10-07",15.7,15.98,15.69,15.91,8663200,15.91 78 | "2013-10-08",15.51,15.98,15.51,15.8,4825300,15.8 79 | "2013-10-09",15.8,15.95,15.75,15.88,4210300,15.88 80 | "2013-10-10",15.98,16.25,15.94,16.22,5506700,16.22 81 | "2013-10-11",16.16,16.6,16.14,16.41,5085700,16.41 82 | "2013-10-14",16.31,16.62,16.23,16.56,3606300,16.56 83 | "2013-10-15",16.46,16.67,16.42,16.58,4406800,16.58 84 | "2013-10-16",16.72,16.79,16.57,16.78,4511900,16.78 85 | "2013-10-17",16.64,16.81,16.63,16.8,3972000,16.8 86 | "2013-10-18",16.85,16.9,16.75,16.85,5809100,16.85 87 | "2013-10-21",16.86,16.98,16.79,16.85,3107000,16.85 88 | "2013-10-22",16.89,17.06,16.79,17,7274300,17 89 | "2013-10-23",16.8,17.24,16.8,17.11,5145800,17.11 90 | "2013-10-24",17.07,17.4,17.02,17.29,4734900,17.29 91 | "2013-10-25",17.55,17.55,17.09,17.15,6197900,17.15 92 | "2013-10-28",17.12,17.32,17.03,17.29,4131800,17.29 93 | "2013-10-29",17.3,17.51,17.24,17.46,6582700,17.46 94 | "2013-10-30",17.46,17.51,17.31,17.35,8031100,17.35 95 | "2013-10-31",17.37,17.77,17.34,17.6,4697900,17.6 96 | "2013-11-01",17.62,17.81,17.45,17.77,3714000,17.77 97 | "2013-11-04",17.73,17.86,17.67,17.76,2870800,17.76 98 | "2013-11-05",17.57,17.85,17.48,17.68,3820200,17.68 99 | "2013-11-06",17.73,17.82,17.35,17.41,3922700,17.41 100 | "2013-11-07",17.51,17.62,17.25,17.26,3888200,17.26 101 | "2013-11-08",17.31,17.62,17.17,17.6,1787500,17.6 102 | "2013-11-11",17.6,17.65,17.35,17.42,5387300,17.42 103 | "2013-11-12",16.85,17.31,16.72,17.15,12944400,17.15 104 | "2013-11-13",17.02,17.29,16.95,17.22,3673400,17.22 105 | "2013-11-14",17.24,17.38,17.18,17.25,2920600,17.25 106 | "2013-11-15",17.32,17.81,17.32,17.76,4606300,17.76 107 | "2013-11-18",17.77,17.82,17.37,17.42,4431400,17.42 108 | "2013-11-19",17.43,17.66,17.38,17.48,2961800,17.48 109 | "2013-11-20",17.54,17.79,17.45,17.67,6256400,17.67 110 | "2013-11-21",17.71,17.75,17.54,17.56,4075000,17.56 111 | "2013-11-22",17.61,17.69,17.5,17.55,3624500,17.55 112 | "2013-11-25",17.63,17.68,17.36,17.48,3397600,17.48 113 | "2013-11-26",17.43,17.71,17.37,17.69,5585700,17.69 114 | "2013-11-27",17.66,17.94,17.51,17.86,5083300,17.86 115 | "2013-11-29",17.85,17.97,17.84,17.96,1506100,17.96 116 | "2013-12-02",17.92,17.97,17.6,17.65,4610200,17.65 117 | "2013-12-03",17.63,17.63,17.4,17.5,3120100,17.5 118 | "2013-12-04",17.44,17.62,17.38,17.58,2676000,17.58 119 | "2013-12-05",16.54,17.55,16.54,17.46,2562600,17.46 120 | "2013-12-06",17.66,17.86,17.52,17.78,4483700,17.78 121 | "2013-12-09",17.89,17.9,17.46,17.52,4088800,17.52 122 | "2013-12-10",17.49,17.72,17.44,17.64,2618000,17.64 123 | "2013-12-11",17.65,17.74,17.48,17.6,3255300,17.6 124 | "2013-12-12",17.64,17.66,17.49,17.49,4073000,17.49 125 | "2013-12-13",17.49,17.7,17.32,17.66,4320800,17.66 126 | "2013-12-16",17.77,17.8,17.58,17.77,1885100,17.77 127 | "2013-12-17",17.57,17.57,17.17,17.35,4023000,17.35 128 | "2013-12-18",17.3,17.53,17.07,17.5,2539200,17.5 129 | "2013-12-19",17.41,17.47,17.29,17.36,2475900,17.36 130 | "2013-12-20",17.43,17.97,17.31,17.75,7055200,17.75 131 | "2013-12-23",17.93,17.97,17.73,17.9,1974600,17.9 132 | "2013-12-24",17.96,18.01,17.78,17.9,683100,17.9 133 | "2013-12-26",17.99,18.07,17.65,17.77,2259900,17.77 134 | "2013-12-27",17.74,17.82,17.56,17.73,2691300,17.73 135 | "2013-12-30",17.78,17.93,17.7,17.91,1918400,17.91 136 | "2013-12-31",17.98,18.09,17.84,18.02,2612000,18.02 137 | "2014-01-02",18.05,18.17,17.82,17.95,3673400,17.95 138 | "2014-01-03",17.93,18.01,17.78,17.82,2016600,17.82 139 | "2014-01-06",17.88,17.96,17.48,17.58,3388300,17.58 140 | "2014-01-07",17.65,17.65,17.33,17.4,3266000,17.4 141 | "2014-01-08",17.35,17.4,17.15,17.29,4109600,17.29 142 | "2014-01-09",17.38,17.48,17.27,17.34,2852700,17.34 143 | "2014-01-10",17.41,17.52,17.28,17.4,2063700,17.4 144 | "2014-01-13",17.41,17.44,17.07,17.15,2655600,17.15 145 | "2014-01-14",17.2,17.35,17.13,17.3,1935000,17.3 146 | "2014-01-15",17.24,17.33,17.1,17.21,2209400,17.21 147 | "2014-01-16",17.2,17.26,17.05,17.08,2833400,17.08 148 | "2014-01-17",17.09,17.18,16.94,17.08,2102700,17.08 149 | "2014-01-21",17.15,17.15,16.69,16.76,4664700,16.76 150 | "2014-01-22",16.75,16.99,16.56,16.65,3109900,16.65 151 | "2014-01-23",16.5,16.58,16.36,16.53,3085400,16.53 152 | "2014-01-24",16.27,16.33,16.01,16.17,6995600,16.17 153 | "2014-01-27",16.25,16.56,16.19,16.39,6241000,16.39 154 | "2014-01-28",16.38,16.46,16.23,16.24,4468400,16.24 155 | "2014-01-29",16.09,16.28,16.01,16.22,5574400,16.22 156 | "2014-01-30",16.28,16.3,16.16,16.2,9436500,16.2 157 | "2014-01-31",16.14,16.24,15.95,15.96,3040200,15.96 158 | "2014-02-03",16,16.06,15.48,15.52,4729900,15.52 159 | "2014-02-04",15.55,15.72,15.44,15.52,8117500,15.52 160 | "2014-02-05",15.56,15.9,15.55,15.61,5805700,15.61 161 | "2014-02-06",15.64,16.11,15.61,16.02,4984700,16.02 162 | "2014-02-07",17.48,18,17.07,17.41,13191600,17.41 163 | "2014-02-10",17.03,17.59,16.97,17.51,6085100,17.51 164 | "2014-02-11",17.53,18,17.41,17.93,6908500,17.93 165 | "2014-02-12",17.93,18.05,17.6,17.65,3310200,17.65 166 | "2014-02-13",17.55,17.82,17.41,17.66,2168600,17.66 167 | "2014-02-14",17.62,17.84,17.54,17.68,1827600,17.68 168 | "2014-02-18",17.72,17.82,17.56,17.75,2359300,17.75 169 | "2014-02-19",17.7,17.86,17.56,17.59,2217500,17.59 170 | "2014-02-20",17.6,17.64,17.31,17.5,2549700,17.5 171 | "2014-02-21",17.45,17.76,17.44,17.68,3193600,17.68 172 | "2014-02-24",17.75,18.05,17.74,17.94,2473300,17.94 173 | "2014-02-25",17.93,18.11,17.9,17.96,2396900,17.96 174 | "2014-02-26",17.95,18.14,17.83,18.03,2275700,18.03 175 | "2014-02-27",17.95,18.06,17.86,18.02,2363300,18.02 176 | "2014-02-28",18.06,18.4,17.92,18.33,2515100,18.33 177 | "2014-03-03",18.19,18.34,17.95,18.12,3592200,18.12 178 | "2014-03-04",18.2,18.41,18.15,18.4,3160600,18.4 179 | "2014-03-05",18.43,18.53,18.13,18.3,2321700,18.3 180 | "2014-03-06",18.32,18.43,18.19,18.28,1897600,18.28 181 | "2014-03-07",18.3,18.36,17.84,17.91,2501200,17.91 182 | "2014-03-10",17.96,18,17.71,17.76,1937800,17.76 183 | "2014-03-11",17.76,17.81,17.52,17.71,1971000,17.71 184 | "2014-03-12",17.7,17.89,17.4,17.83,2782300,17.83 185 | "2014-03-13",17.82,17.91,17.31,17.34,2515200,17.34 186 | "2014-03-14",17.37,17.64,17.25,17.43,2372300,17.43 187 | "2014-03-17",17.55,17.81,17.29,17.39,1707100,17.39 188 | -------------------------------------------------------------------------------- /core/src/main/resources/price/PSX.csv: -------------------------------------------------------------------------------- 1 | "","PSX.Open","PSX.High","PSX.Low","PSX.Close","PSX.Volume","PSX.Adjusted" 2 | "2012-04-12",33.25,34.21,32,34,654700,32.76 3 | "2012-04-13",34,37.45,33.91,37,1685000,35.65 4 | "2012-04-16",37,37,35.99,36.55,550200,35.21 5 | "2012-04-17",36.4,36.75,36,36,179600,34.68 6 | "2012-04-18",36,36.44,34.5,36,207100,34.68 7 | "2012-04-19",36,37.22,35.8,36,598100,34.68 8 | "2012-04-20",36.1,37,36.1,36.32,149700,34.99 9 | "2012-04-23",36.24,36.24,35.42,35.68,95700,34.37 10 | "2012-04-24",36,36,34.68,34.75,124500,33.48 11 | "2012-04-25",34.8,35.5,34.5,34.75,266200,33.48 12 | "2012-04-26",34.61,34.99,34.44,34.95,183900,33.67 13 | "2012-04-27",35.25,35.25,33.97,34.11,536000,32.86 14 | "2012-04-30",34.34,34.9,34,34.05,4105700,32.8 15 | "2012-05-01",33.74,34.1,32.58,32.76,6878600,31.56 16 | "2012-05-02",32.6,32.67,31.63,32,11287600,30.83 17 | "2012-05-03",31.93,31.98,31.05,31.39,11800000,30.24 18 | "2012-05-04",30.85,31.09,30.12,30.16,10881000,29.06 19 | "2012-05-07",30.1,30.55,29.25,29.35,12257200,28.28 20 | "2012-05-08",29.09,30.41,28.75,30.1,14601300,29 21 | "2012-05-09",29.81,32.89,29.73,32.49,13990000,31.3 22 | "2012-05-10",33.05,33.35,31.52,32.48,8862000,31.29 23 | "2012-05-11",31.73,32.15,31.4,31.83,4460100,30.67 24 | "2012-05-14",31.19,31.58,30.77,31.32,6398200,30.17 25 | "2012-05-15",31.35,32.32,31.06,31.67,6362800,30.51 26 | "2012-05-16",31.46,32.39,31.25,32.1,6118600,30.93 27 | "2012-05-17",31.89,32,31.2,31.26,5850500,30.12 28 | "2012-05-18",31.43,31.69,30.99,31.38,7940800,30.23 29 | "2012-05-21",31.23,32.34,30.95,32.19,5480100,31.01 30 | "2012-05-22",31.88,32.27,31.33,31.63,5415000,30.47 31 | "2012-05-23",31.35,31.49,30.88,31.41,5268900,30.26 32 | "2012-05-24",31.42,31.44,30.75,31.13,4210400,29.99 33 | "2012-05-25",31.01,31.41,30.83,31.3,3217900,30.15 34 | "2012-05-29",31.28,31.72,30.86,31.01,3979600,29.88 35 | "2012-05-30",30.79,30.83,30.18,30.44,6000600,29.33 36 | "2012-05-31",30.26,30.35,29.72,30.03,8098000,28.93 37 | "2012-06-01",29.5,30.17,29.38,29.92,5701700,28.83 38 | "2012-06-04",29.3,30.19,29.25,29.53,4844900,28.45 39 | "2012-06-05",29.37,30.1,29.32,29.9,4046500,28.81 40 | "2012-06-06",30.03,32,29.82,31.53,8609400,30.38 41 | "2012-06-07",32.07,32.75,31.74,31.83,7694300,30.67 42 | "2012-06-08",31.66,32.35,31.51,32.12,4302100,30.94 43 | "2012-06-11",32.45,33.05,32.23,32.6,5999000,31.41 44 | "2012-06-12",32.56,33.74,32.49,33.49,6809900,32.26 45 | "2012-06-13",33.27,33.49,32.54,32.77,3696800,31.57 46 | "2012-06-14",32.77,33.64,32.31,33.53,4460000,32.3 47 | "2012-06-15",33.6,34.91,33.38,34.9,9892400,33.62 48 | "2012-06-18",34.38,34.5,33.83,33.86,4254400,32.62 49 | "2012-06-19",34.06,34.53,33.73,33.86,4873500,32.62 50 | "2012-06-20",33.79,34.85,33.48,34.66,4628400,33.39 51 | "2012-06-21",34.7,34.76,33.06,33.48,3489900,32.26 52 | "2012-06-22",33.65,34.71,33.03,34.16,4359500,32.91 53 | "2012-06-25",33.69,33.69,32.76,32.87,3518600,31.67 54 | "2012-06-26",32.81,33.98,32.4,32.58,3274700,31.39 55 | "2012-06-27",32.61,33.4,31.42,31.89,3615600,30.72 56 | "2012-06-28",31.54,32.4,31.29,32.31,3115900,31.13 57 | "2012-06-29",32.78,33.38,32.65,33.24,4599500,32.02 58 | "2012-07-02",33.59,34.32,33.37,34,3868500,32.76 59 | "2012-07-03",34.02,34.63,33.83,34.24,3647400,32.99 60 | "2012-07-05",33.83,34.24,33.54,33.8,2711300,32.56 61 | "2012-07-06",33.4,33.68,32.92,33.37,1907800,32.15 62 | "2012-07-09",33.08,33.76,32.65,33.25,2264600,32.03 63 | "2012-07-10",33.47,33.47,32.5,32.68,2972900,31.48 64 | "2012-07-11",32.66,33.64,32.35,33.48,2583000,32.26 65 | "2012-07-12",33.15,33.19,32.55,33.01,3505600,31.8 66 | "2012-07-13",33.61,35.08,33.51,34.94,4801300,33.66 67 | "2012-07-16",34.69,36.12,34.56,36.1,4895700,34.78 68 | "2012-07-17",36.16,36.8,35.86,36.69,3604100,35.35 69 | "2012-07-18",36.65,37.67,36.59,37.1,2839200,35.74 70 | "2012-07-19",36.92,37,35.5,35.6,3758600,34.48 71 | "2012-07-20",35.18,35.44,34.91,35.32,3290000,34.21 72 | "2012-07-23",34.79,35.28,34.5,35.02,3245900,33.92 73 | "2012-07-24",35.25,35.42,34.61,35.23,2351600,34.13 74 | "2012-07-25",35.6,35.89,34.87,35.4,3551300,34.29 75 | "2012-07-26",35.76,36.06,35.59,35.96,2951300,34.83 76 | "2012-07-27",36.23,36.91,35.9,36.52,6158600,35.37 77 | "2012-07-30",36.86,37.65,36.83,37.65,2830300,36.47 78 | "2012-07-31",37.74,38.36,37.51,37.6,6958400,36.42 79 | "2012-08-01",39.08,40.18,37.78,38.27,6639700,37.07 80 | "2012-08-02",37.94,39.07,37.84,38.3,4434800,37.1 81 | "2012-08-03",38.6,39.85,38.6,39.67,4516000,38.43 82 | "2012-08-06",39.94,40.35,39.77,40.07,3405100,38.81 83 | "2012-08-07",40.39,40.83,39.59,39.77,4636800,38.52 84 | "2012-08-08",39.6,40.2,39.46,40.15,4002600,38.89 85 | "2012-08-09",39.9,40.6,39.88,40.32,2888200,39.06 86 | "2012-08-10",40.26,40.43,39.75,40,2107700,38.75 87 | "2012-08-13",39.86,40.35,39.77,40.15,2213500,38.89 88 | "2012-08-14",40.19,40.45,39.8,39.93,2533900,38.68 89 | "2012-08-15",40.54,40.66,39.93,40.36,4009400,39.09 90 | "2012-08-16",40.53,41.26,40.37,41.18,3862100,39.89 91 | "2012-08-17",41.62,42.93,41.47,42.77,5536300,41.43 92 | "2012-08-20",42.87,43.45,42.75,43.07,3809500,41.72 93 | "2012-08-21",43.38,43.38,41.49,41.55,4469400,40.25 94 | "2012-08-22",41.36,41.53,40.42,41.48,4384500,40.18 95 | "2012-08-23",41.48,41.63,41.05,41.33,1996300,40.03 96 | "2012-08-24",41.15,41.54,40.74,41.36,2562300,40.06 97 | "2012-08-27",41.43,42.39,40.97,41.07,3779200,39.78 98 | "2012-08-28",40.9,42.47,40.9,41.96,3770300,40.64 99 | "2012-08-29",41.9,42.39,41.65,41.98,2674300,40.66 100 | "2012-08-30",41.79,42.7,41.62,42.48,2523800,41.15 101 | "2012-08-31",42.7,43,41.1,42,5791200,40.68 102 | "2012-09-04",42.07,42.45,41.48,42.41,2620700,41.08 103 | "2012-09-05",42.49,42.58,41.43,41.74,2881800,40.43 104 | "2012-09-06",42.16,43.74,42.16,43.42,4222200,42.06 105 | "2012-09-07",43.48,44.31,43.36,44.26,3458100,42.87 106 | "2012-09-10",43.93,44.85,43.93,44.54,4417300,43.14 107 | "2012-09-11",44.64,46.1,44.46,45.59,6304700,44.16 108 | "2012-09-12",46.14,47.41,46.04,46.28,5269800,44.83 109 | "2012-09-13",46.3,46.85,45.37,46.64,5292000,45.18 110 | "2012-09-14",47.16,48.22,46.01,46.73,6718600,45.26 111 | "2012-09-17",46.17,46.97,46,46.14,4833400,44.69 112 | "2012-09-18",45.53,45.78,44.44,45.52,6108200,44.09 113 | "2012-09-19",45.53,46.6,45.51,45.57,3505400,44.14 114 | "2012-09-20",45.39,46.31,45.17,45.78,3233500,44.34 115 | "2012-09-21",46.04,47.09,46.04,46.82,5960500,45.35 116 | "2012-09-24",46.69,46.92,46.26,46.74,2453800,45.27 117 | "2012-09-25",47,47.3,45.96,45.98,2912200,44.54 118 | "2012-09-26",45.69,46.33,45.23,45.53,3626000,44.1 119 | "2012-09-27",45.8,46.74,45.68,46.53,3180100,45.07 120 | "2012-09-28",46.43,46.53,46.02,46.37,3253700,44.92 121 | "2012-10-01",46.6,47.02,46.26,46.56,2785500,45.1 122 | "2012-10-02",46.68,46.96,46.27,46.42,2911900,44.96 123 | "2012-10-03",46.27,46.41,45,45.16,5392000,43.74 124 | "2012-10-04",45.59,45.66,45.08,45.39,6196000,43.97 125 | "2012-10-05",45.87,47.68,45.76,46.02,7658200,44.58 126 | "2012-10-08",45.96,46.57,45.56,45.93,3414600,44.49 127 | "2012-10-09",46.16,46.75,46.06,46.09,3667800,44.64 128 | "2012-10-10",46.02,46.33,44.69,45.15,5564600,43.73 129 | "2012-10-11",45.38,45.65,44.57,44.6,4600600,43.44 130 | "2012-10-12",44.33,44.62,42.45,43.92,6634300,42.78 131 | "2012-10-15",43.85,44.43,43.41,44.38,2722000,43.23 132 | "2012-10-16",44.77,46.79,44.6,46.49,5742000,45.28 133 | "2012-10-17",46.55,47.22,46.31,46.65,2842000,45.44 134 | "2012-10-18",46.62,46.63,45.39,45.56,3402300,44.38 135 | "2012-10-19",45.53,46.09,44.55,44.64,3002400,43.48 136 | "2012-10-22",44.73,45.73,44.73,45.58,3421700,44.4 137 | "2012-10-23",44.91,45.08,43.93,44.92,4079100,43.75 138 | "2012-10-24",45,45.65,44.66,44.78,3478700,43.62 139 | "2012-10-25",45.14,45.45,44.55,45.03,2903900,43.86 140 | "2012-10-26",45.57,47.62,44.82,47.5,6123800,46.27 141 | "2012-10-31",47.82,48.4,46.64,47.16,4791200,45.94 142 | "2012-11-01",47,47.65,46.39,47.38,4291500,46.15 143 | "2012-11-02",48.01,48.15,46.07,46.21,2826000,45.01 144 | "2012-11-05",46.23,47.9,46.23,47.76,3024100,46.52 145 | "2012-11-06",48,51,47.86,50.04,8220800,48.74 146 | "2012-11-07",49.23,50.08,48.75,49.46,6708500,48.18 147 | "2012-11-08",49.34,49.97,48.94,49,3699100,47.73 148 | "2012-11-09",48.11,48.56,47.17,47.41,5424200,46.18 149 | "2012-11-12",47.43,48.11,47.28,47.35,2699200,46.12 150 | "2012-11-13",47,47.76,46.56,46.86,3129100,45.64 151 | "2012-11-14",47.17,47.46,45.71,45.76,3542400,44.57 152 | "2012-11-15",45.53,46.19,44.94,45.34,3805000,44.16 153 | "2012-11-16",45.56,45.92,44.95,45.77,4591900,44.58 154 | "2012-11-19",46.4,48.25,46.38,48.12,4339700,46.87 155 | "2012-11-20",48.19,49.07,47.87,49.06,3492900,47.79 156 | "2012-11-21",49.32,49.65,48.84,49.39,3805700,48.11 157 | "2012-11-23",49.58,50,49.41,49.82,1698700,48.53 158 | "2012-11-26",49.55,49.98,49.07,49.56,2943300,48.27 159 | "2012-11-27",49.51,50.42,49.01,50.06,4638900,48.76 160 | "2012-11-28",49.66,51.27,49.25,51,5404800,49.68 161 | "2012-11-29",51.2,51.66,50.83,51.56,3951100,50.22 162 | "2012-11-30",51.68,52.53,51.45,52.37,5323100,51.01 163 | "2012-12-03",52.65,52.76,51.02,51.56,5670000,50.22 164 | "2012-12-04",51.48,52.24,51.48,51.56,3726600,50.22 165 | "2012-12-05",51.45,51.95,50.27,50.69,3332400,49.37 166 | "2012-12-06",50.69,51.21,50.3,50.97,3405700,49.65 167 | "2012-12-07",51.19,52.75,51.06,52.34,4854900,50.98 168 | "2012-12-10",52.21,54.32,52.2,53.58,7741300,52.19 169 | "2012-12-11",53.72,53.92,52.73,53.04,5205500,51.66 170 | "2012-12-12",53.33,53.5,52.94,53.05,8427100,51.67 171 | "2012-12-13",52.6,52.6,51.24,52.21,7136600,50.85 172 | "2012-12-14",52,53.54,51.8,53.47,5120800,52.08 173 | "2012-12-17",53.56,53.86,53.18,53.52,4292300,52.13 174 | "2012-12-18",53.44,53.7,53,53.17,3922800,51.79 175 | "2012-12-19",53.28,53.38,51.84,52.5,6409900,51.14 176 | "2012-12-20",52.58,52.72,51.7,52.42,4391700,51.06 177 | "2012-12-21",51.71,52.38,51.33,52.16,5053600,50.81 178 | "2012-12-24",52.22,52.4,51.9,51.97,975200,50.62 179 | "2012-12-26",52.16,52.62,51.32,51.36,2322700,50.03 180 | "2012-12-27",51.5,51.71,50.4,51.56,2885400,50.22 181 | "2012-12-28",51.06,51.5,50.52,50.57,2999100,49.26 182 | "2012-12-31",50.4,53.22,50.4,53.1,4233600,51.72 183 | "2013-01-02",54.25,55.31,53.23,55.26,5229900,53.82 184 | "2013-01-03",55.03,55.17,52.87,53.19,5291900,51.81 185 | "2013-01-04",53.12,53.68,52.29,53.14,4161100,51.76 186 | "2013-01-07",52.48,52.48,50.77,51.36,6884000,50.03 187 | "2013-01-08",51.2,51.78,51.08,51.59,3575600,50.25 188 | "2013-01-09",51.56,52.15,51.02,51.32,4429800,49.99 189 | "2013-01-10",51.64,51.84,51.22,51.51,3403400,50.17 190 | "2013-01-11",51.28,51.7,50.36,50.58,4615800,49.27 191 | "2013-01-14",50.67,51.42,50.12,51.35,5000100,50.02 192 | "2013-01-15",51.35,52.33,51.2,52.24,4499600,50.88 193 | "2013-01-16",52.13,54.55,52.07,54.52,8024800,53.1 194 | "2013-01-17",54.98,55.83,54.19,55.15,5976600,53.72 195 | "2013-01-18",55.21,55.74,54.58,55.07,5998800,53.64 196 | "2013-01-22",55.24,55.24,53.92,54.61,4462000,53.19 197 | "2013-01-23",54.72,56.19,54.2,55.52,4293900,54.08 198 | "2013-01-24",55.5,56.95,55.37,56.12,4702100,54.66 199 | "2013-01-25",56.5,56.89,56.11,56.81,3612300,55.33 200 | "2013-01-28",57.09,57.68,56.5,57.09,4055400,55.61 201 | "2013-01-29",58,60.45,57.96,59.88,8446300,58.32 202 | "2013-01-30",62.38,62.91,60.65,60.76,7922300,59.18 203 | "2013-01-31",60.37,61.05,59.91,60.57,5450400,59 204 | "2013-02-01",62,63.25,61.22,62.75,4709200,61.12 205 | "2013-02-04",62.13,62.25,61.16,61.22,3796500,59.63 206 | "2013-02-05",61.72,61.98,60.98,61.01,4578900,59.43 207 | "2013-02-06",60.79,62.5,60.71,61.72,5068700,60.12 208 | "2013-02-07",61.88,63.34,61,63.26,4392600,61.62 209 | "2013-02-08",63.41,65.24,63.22,64.02,4745800,62.36 210 | "2013-02-11",64,64.66,63.72,64.18,3097900,62.51 211 | "2013-02-12",64.62,64.78,63.78,64.43,3702400,62.76 212 | "2013-02-13",64.5,64.5,63.85,64.11,2777100,62.44 213 | "2013-02-14",63.77,64.92,63.75,64.83,3560000,63.15 214 | "2013-02-15",64.55,65.38,63.53,64.17,3787800,62.5 215 | "2013-02-19",63.67,64.88,63.66,64.76,3091700,63.39 216 | "2013-02-20",64.75,64.95,62.54,62.64,4847000,61.31 217 | "2013-02-21",62.32,62.92,61.22,62.29,5032600,60.97 218 | "2013-02-22",62.78,64.12,62.51,64.11,3049300,62.75 219 | "2013-02-25",64.49,64.74,61.31,61.34,4294800,60.04 220 | "2013-02-26",61.48,61.69,59.94,61.23,4346900,59.93 221 | "2013-02-27",61.3,63.12,61,62.99,2581500,61.65 222 | "2013-02-28",62.86,64.27,62,62.96,4226400,61.63 223 | "2013-03-01",62.71,63.93,62.19,63.9,3150000,62.55 224 | "2013-03-04",63.84,65.74,63.54,65.68,3758500,64.29 225 | "2013-03-05",66.04,66.05,64.52,65.77,3920300,64.38 226 | "2013-03-06",66,66.97,65.4,66.05,2929700,64.65 227 | "2013-03-07",65.89,66.12,64.79,65.87,3429800,64.47 228 | "2013-03-08",66.08,66.28,65.6,66.03,4045300,64.63 229 | "2013-03-11",65.9,66.08,63.94,65.69,4966800,64.3 230 | "2013-03-12",65.66,66.4,65.21,66.22,4134600,64.82 231 | "2013-03-13",65.88,66.04,64.2,64.55,4784800,63.18 232 | "2013-03-14",64.96,65.45,64.29,64.95,3832700,63.57 233 | "2013-03-15",64.49,65.24,64.11,64.15,5979000,62.79 234 | "2013-03-18",63.32,65.29,63.01,65.03,3643900,63.65 235 | "2013-03-19",64.88,66.35,64.66,65.41,4124400,64.02 236 | "2013-03-20",66,68.44,65.95,67.54,5087500,66.11 237 | "2013-03-21",67,67.84,66.11,66.82,3394800,65.4 238 | "2013-03-22",66.97,67.79,66.84,67.55,2650400,66.12 239 | "2013-03-25",67.94,68.7,66.65,66.86,3905300,65.44 240 | "2013-03-26",66.98,67.41,66.37,67.24,3243600,65.81 241 | "2013-03-27",67.13,68.29,66.46,68.27,3920600,66.82 242 | "2013-03-28",68.38,70.52,67.96,69.97,6211100,68.49 243 | "2013-04-01",70,70.19,68.73,69.36,3015200,67.89 244 | "2013-04-02",70.17,70.2,66.71,66.84,5679900,65.42 245 | "2013-04-03",66.84,66.88,61.47,62.46,14028500,61.14 246 | "2013-04-04",62.57,63.95,61.94,62.39,6139100,61.07 247 | "2013-04-05",61.26,62.97,60.2,62.31,5289600,60.99 248 | "2013-04-08",62.29,63.8,61.9,63.62,3969300,62.27 249 | "2013-04-09",63.95,65.23,62.86,64.66,4291500,63.29 250 | "2013-04-10",64.78,65.21,63.05,63.86,6005500,62.51 251 | "2013-04-11",63.81,63.86,61.81,62.01,6204800,60.7 252 | "2013-04-12",61.37,61.74,59.07,60.67,8305100,59.38 253 | "2013-04-15",59.18,59.99,57.08,57.52,7897200,56.3 254 | "2013-04-16",58.15,59.32,57.77,59.28,5644000,58.02 255 | "2013-04-17",58.55,58.79,57.16,57.99,4602100,56.76 256 | "2013-04-18",57.92,58.54,56.13,57.23,4270200,56.02 257 | "2013-04-19",58.14,58.14,56.46,57.84,5045100,56.61 258 | "2013-04-22",58.12,60.34,58.07,59.43,3659300,58.17 259 | "2013-04-23",59.59,61.42,59.36,61.15,5318500,59.85 260 | "2013-04-24",61.41,63.05,61.31,61.82,4771700,60.51 261 | "2013-04-25",62.04,63.09,61.78,61.9,4384100,60.59 262 | "2013-04-26",61.85,62.08,61.14,61.6,3034700,60.29 263 | "2013-04-29",61.97,62.3,61.48,61.8,3444900,60.49 264 | "2013-04-30",61.93,62.2,60.02,60.95,5457000,59.66 265 | "2013-05-01",61.11,61.94,59.55,59.67,5678600,58.41 266 | "2013-05-02",60.07,60.68,59.16,60.3,4212400,59.02 267 | "2013-05-03",60.8,62.66,60.49,62.18,4548900,60.86 268 | "2013-05-06",62.49,64.24,62.32,63.87,3682400,62.52 269 | "2013-05-07",64.25,65.34,64.02,64.48,4676600,63.11 270 | "2013-05-08",64.23,64.47,62.85,63.41,3664300,62.07 271 | "2013-05-09",63.23,63.27,61.88,62.13,3436900,60.81 272 | "2013-05-10",61.73,62.2,61,61.38,5059200,60.08 273 | "2013-05-13",61.13,62.28,60.39,61.97,3829500,60.66 274 | "2013-05-14",62.06,64.18,62,64.08,6212800,62.72 275 | "2013-05-15",63.73,65.48,63.73,64.95,5621700,63.57 276 | "2013-05-16",64.71,65.41,63.72,63.84,3994700,62.79 277 | "2013-05-17",64.2,65.92,64.18,65.46,5521600,64.38 278 | "2013-05-20",65.32,66.85,65.32,65.96,4531600,64.87 279 | "2013-05-21",66.1,66.71,64.89,65.42,4505200,64.34 280 | "2013-05-22",65.3,66.62,64.8,65.39,4482700,64.31 281 | "2013-05-23",64.44,65.56,63.9,65.25,2380300,64.18 282 | "2013-05-24",64.77,65.5,63.8,65.47,2518400,64.39 283 | "2013-05-28",66.39,66.98,65.92,66.52,2792000,65.43 284 | "2013-05-29",66.21,67.34,65.65,66.84,3135200,65.74 285 | "2013-05-30",66.35,67.11,65.68,66.77,2896400,65.67 286 | "2013-05-31",66.64,67.89,66.28,66.57,3506400,65.47 287 | "2013-06-03",67.04,67.09,64.28,66.08,4022900,64.99 288 | "2013-06-04",65.8,66.18,64.3,65.18,2890200,64.11 289 | "2013-06-05",64.94,65.35,63.53,63.61,3064900,62.56 290 | "2013-06-06",63.68,65.15,63.35,65,2637300,63.93 291 | "2013-06-07",65.44,66.2,65.18,65.87,2774600,64.79 292 | "2013-06-10",65.93,66.39,65.01,65.11,2372500,64.04 293 | "2013-06-11",64.05,64.73,63.7,63.96,3202200,62.91 294 | "2013-06-12",64.88,65.21,63.18,63.31,3967600,62.27 295 | "2013-06-13",63.09,64.82,62.37,64.51,3336300,63.45 296 | "2013-06-14",64.71,64.97,63.77,63.81,1833900,62.76 297 | "2013-06-17",64.2,64.69,63.98,64.26,3341200,63.2 298 | "2013-06-18",64.48,65,64.25,64.39,2336900,63.33 299 | "2013-06-19",64.27,64.87,63.51,63.63,3341500,62.58 300 | "2013-06-20",62.58,62.69,60.06,60.39,5087000,59.4 301 | "2013-06-21",61.02,61.23,58.06,59.25,6354700,58.27 302 | "2013-06-24",58.46,58.77,56.84,57.19,4938400,56.25 303 | "2013-06-25",58.29,59.71,58.29,59.41,3453600,58.43 304 | "2013-06-26",60.1,60.96,59.56,59.72,2706600,58.74 305 | "2013-06-27",60.32,60.41,58.45,59.22,3883300,58.25 306 | "2013-06-28",59.14,59.75,58.77,58.91,3573800,57.94 307 | "2013-07-01",59.24,60.24,58.67,58.9,3486700,57.93 308 | "2013-07-02",58.85,59.21,56.61,57.08,4998500,56.14 309 | "2013-07-03",56.75,57.71,54.8,57.68,6190900,56.73 310 | "2013-07-05",57.84,57.89,55.41,57.24,3653200,56.3 311 | "2013-07-08",57.71,59.17,57.64,58.75,3067800,57.78 312 | "2013-07-09",59.02,59.37,58.41,58.51,3271200,57.55 313 | "2013-07-10",58.41,58.63,55.94,56.09,5874000,55.17 314 | "2013-07-11",57.05,57.9,56.02,57.76,5355200,56.81 315 | "2013-07-12",56.9,59.64,56.9,59.09,6108800,58.12 316 | "2013-07-15",59.45,59.85,58.78,59.23,4202400,58.26 317 | "2013-07-16",59.21,59.42,57.15,57.64,6289800,56.69 318 | "2013-07-17",57.82,58.42,57.1,58.04,3527400,57.08 319 | "2013-07-18",58.19,58.28,56.71,56.92,4328100,55.98 320 | "2013-07-19",57.44,57.83,56.72,57.49,3960500,56.54 321 | "2013-07-22",57.88,58.45,57.18,57.96,4093500,57.01 322 | "2013-07-23",58.47,59.71,58.35,59.49,3938200,58.51 323 | "2013-07-24",59.65,59.65,57.7,58.84,4041900,57.87 324 | "2013-07-25",58.68,59.7,58.24,59.42,4551000,58.44 325 | "2013-07-26",59.25,59.84,58.71,59,2603600,58.03 326 | "2013-07-29",59,59.29,58.57,58.96,852400,57.99 327 | "2013-07-30",59.05,59.25,57.91,58.47,4076700,57.51 328 | "2013-07-31",57.32,61.97,57.13,61.5,8186700,60.49 329 | "2013-08-01",61.87,61.91,60.32,60.52,3918500,59.52 330 | "2013-08-02",60.13,60.13,58.07,58.41,5612800,57.45 331 | "2013-08-05",58.28,58.3,57.3,57.8,4125100,56.85 332 | "2013-08-06",57.64,59.15,57.64,58.31,4863300,57.35 333 | "2013-08-07",58.24,58.69,57.56,57.96,3824100,57.01 334 | "2013-08-08",58.02,59.36,57.9,59,3254800,58.03 335 | "2013-08-09",59,59.31,58.57,58.92,3178500,57.95 336 | "2013-08-12",58.44,58.98,57.72,58.17,3295100,57.21 337 | "2013-08-13",58.39,59.19,58,59.09,3180300,58.12 338 | "2013-08-14",59,59.18,58.38,58.79,2358500,58.13 339 | "2013-08-15",58.27,58.43,57.04,57.15,3495300,56.51 340 | "2013-08-16",56.89,56.99,56.07,56.3,3478700,55.67 341 | "2013-08-19",56.28,56.85,55.25,55.34,3212100,54.72 342 | "2013-08-20",55.23,57.69,54.9,57.01,3870800,56.37 343 | "2013-08-21",56.73,58.49,56.3,57.95,3784200,57.3 344 | "2013-08-22",57.98,58.87,57.52,58.11,3009300,57.46 345 | "2013-08-23",58.45,59.24,57.94,58.11,2951800,57.46 346 | "2013-08-26",58.17,59.09,57.88,58.13,2843800,57.48 347 | "2013-08-27",57.71,58,57.09,57.1,2979300,56.46 348 | "2013-08-28",57.2,58.3,57.2,58.03,2220300,57.38 349 | "2013-08-29",57.87,58.47,57.38,57.72,2119000,57.07 350 | "2013-08-30",57.95,58.5,56.95,57.1,2661100,56.46 351 | "2013-09-03",57.76,58.44,57.33,58.11,3045700,57.46 352 | "2013-09-04",57.92,59.32,57.58,59.03,4079400,58.37 353 | "2013-09-05",58.68,59.1,57.79,57.8,3849800,57.15 354 | "2013-09-06",57.91,58.11,56.9,57.42,2800400,56.78 355 | "2013-09-09",57.07,57.92,57.02,57.47,3102600,56.83 356 | "2013-09-10",57.44,57.44,56.68,56.79,3476500,56.15 357 | "2013-09-11",56.83,57.03,56.06,56.93,2597300,56.29 358 | "2013-09-12",56.99,57.34,56.33,56.45,2662700,55.82 359 | "2013-09-13",56.64,57.73,56.57,57.13,2420800,56.49 360 | "2013-09-16",57.62,57.7,56.71,56.83,2521900,56.19 361 | "2013-09-17",56.71,56.8,55.81,56.05,3885000,55.42 362 | "2013-09-18",56.05,57.5,56.02,57.25,3873300,56.61 363 | "2013-09-19",58.34,59.21,57.9,58.15,4667700,57.5 364 | "2013-09-20",58.21,59.3,57.69,57.93,4944400,57.28 365 | "2013-09-23",57.73,57.73,56.9,57.41,3067700,56.77 366 | "2013-09-24",57.24,58.55,57.03,57.77,3430500,57.12 367 | "2013-09-25",57.82,58.55,57.53,58.05,3049500,57.4 368 | "2013-09-26",58.01,59,58.01,58.48,2709400,57.82 369 | "2013-09-27",58.1,58.87,58.1,58.53,3027700,57.87 370 | "2013-09-30",58.01,58.09,56.88,57.82,4407300,57.17 371 | "2013-10-01",57.65,58.22,57.19,57.9,2600600,57.25 372 | "2013-10-02",57.59,59.31,57.33,59.18,4150400,58.52 373 | "2013-10-03",58.86,59.83,58.6,59.56,4244400,58.89 374 | "2013-10-04",59,59.35,58.39,59.17,3550700,58.51 375 | "2013-10-07",58.76,58.9,57.9,57.9,3345300,57.25 376 | "2013-10-08",57.92,58.09,56.5,56.89,4211400,56.25 377 | "2013-10-09",56.82,57.28,56.51,56.9,3466300,56.26 378 | "2013-10-10",57.67,58.79,57.62,58.57,4396700,57.91 379 | "2013-10-11",58.55,60.81,58.47,59.93,5680300,59.26 380 | "2013-10-14",59.57,60.72,59.25,60.48,2891900,59.8 381 | "2013-10-15",60.39,60.85,59.34,59.5,3602600,58.83 382 | "2013-10-16",60.02,60.75,59.86,60.73,2993300,60.05 383 | "2013-10-17",60.57,62.39,60.5,62.22,3405000,61.52 384 | "2013-10-18",62.51,63.5,62.25,63.48,3813800,62.77 385 | "2013-10-21",63.77,64.19,63.49,63.91,2985500,63.19 386 | "2013-10-22",64.34,65.24,64.16,64.88,4264700,64.15 387 | "2013-10-23",64.37,65.4,64.33,64.66,4215000,63.93 388 | "2013-10-24",64.54,64.6,62.7,63.23,4248900,62.52 389 | "2013-10-25",63.32,63.72,62.75,63.4,2206800,62.69 390 | "2013-10-28",63.77,64.42,63.14,63.28,3067700,62.57 391 | "2013-10-29",63.39,64.32,63.23,64.14,3213300,63.42 392 | "2013-10-30",64.1,65.64,63.05,65.23,4687500,64.5 393 | "2013-10-31",64.98,65.53,64.41,64.43,3786300,63.71 394 | "2013-11-01",64.47,64.83,63.29,64.13,2746900,63.41 395 | "2013-11-04",64.28,64.54,63.39,64.44,2728600,63.72 396 | "2013-11-05",64.25,64.81,63.62,64.27,3184100,63.55 397 | "2013-11-06",64.75,65.56,64.15,64.36,2979500,63.64 398 | "2013-11-07",64.28,64.86,63.62,63.84,3084200,63.12 399 | "2013-11-08",63.92,65.39,63.66,65.36,3252600,64.63 400 | "2013-11-11",65.15,65.58,64.79,65.49,2437700,64.76 401 | "2013-11-12",64.93,66.23,64.83,65.41,3229900,65.06 402 | "2013-11-13",65.28,66.06,64.53,66.05,3427000,65.7 403 | "2013-11-14",66.24,68.36,66.23,67.56,4088500,67.2 404 | "2013-11-15",67.3,67.62,66.52,67.1,4106300,66.74 405 | "2013-11-18",67.62,68.05,67.05,67.21,2723300,66.85 406 | "2013-11-19",67.14,68.54,66.92,67.77,3246100,67.41 407 | "2013-11-20",68.22,68.39,66.8,67.03,2923500,66.68 408 | "2013-11-21",67.06,67.64,65.84,67.5,2933400,67.14 409 | "2013-11-22",67.85,68.8,67.54,68.48,3108000,68.12 410 | "2013-11-25",68.48,69.35,68.13,68.64,2808300,68.28 411 | "2013-11-26",68.79,69.23,68.13,68.75,3094400,68.39 412 | "2013-11-27",68.6,71,68.4,70.12,4526400,69.75 413 | "2013-11-29",70.03,70.72,69.41,69.61,1688100,69.24 414 | "2013-12-02",70,71.75,69.67,71.36,3900900,70.98 415 | "2013-12-03",71.06,71.27,69.54,70.6,4299300,70.23 416 | "2013-12-04",69.7,70.48,68.33,69.59,5377100,69.22 417 | "2013-12-05",69.82,70.5,69.17,69.73,3978800,69.36 418 | "2013-12-06",70.33,72.5,70,71.24,5174200,70.86 419 | "2013-12-09",72.3,73.17,71.7,71.83,4297300,71.45 420 | "2013-12-10",71.25,72.44,69.54,71.61,4233700,71.23 421 | "2013-12-11",71.64,71.69,70.29,70.85,3890300,70.47 422 | "2013-12-12",70.8,71.69,70.44,71.22,2773000,70.84 423 | "2013-12-13",71.25,72.02,70.57,71.6,2711400,71.22 424 | "2013-12-16",71.68,73.26,71.53,72.61,2741600,72.23 425 | "2013-12-17",72.61,73.27,72.25,72.6,2438200,72.22 426 | "2013-12-18",72.56,74.12,72.21,73.98,3960900,73.59 427 | "2013-12-19",73.55,74.39,72.7,72.92,3505000,72.53 428 | "2013-12-20",73.2,74.53,73.05,74.03,4906800,73.64 429 | "2013-12-23",74.5,75.39,74.28,74.41,2556800,74.02 430 | "2013-12-24",74.74,74.97,74.29,74.74,1065000,74.34 431 | "2013-12-26",75,75.29,74.68,75.12,1187000,74.72 432 | "2013-12-27",75.14,75.18,74.19,74.75,1688800,74.35 433 | "2013-12-30",75.01,75.6,74.69,74.72,2252200,74.32 434 | "2013-12-31",75.27,77.29,75.18,77.13,2993900,76.72 435 | "2014-01-02",77.17,77.32,76.36,76.45,2846700,76.05 436 | "2014-01-03",76.36,76.99,76.15,76.29,1958200,75.89 437 | "2014-01-06",76.51,77.49,76.4,77.01,2815600,76.6 438 | "2014-01-07",77.07,77.83,76.67,77.02,4005700,76.61 439 | "2014-01-08",77.25,77.41,76.15,76.87,4492200,76.46 440 | "2014-01-09",77.01,78.25,76.88,78.13,4187400,77.72 441 | "2014-01-10",78.39,79,77.24,78,3019900,77.59 442 | "2014-01-13",78.2,78.2,75.49,75.81,3046300,75.41 443 | "2014-01-14",76.15,76.71,75.8,76.49,3359100,76.08 444 | "2014-01-15",76.5,76.53,74.75,75.54,3697800,75.14 445 | "2014-01-16",75.31,75.73,74.67,75.39,3231900,74.99 446 | "2014-01-17",74.87,76.62,74.85,76.02,3901600,75.62 447 | "2014-01-21",76.03,77.4,76.03,76.9,2792000,76.49 448 | "2014-01-22",77.3,77.6,76.09,77.1,2748300,76.69 449 | "2014-01-23",77.52,78.1,76.04,77.2,4105600,76.79 450 | "2014-01-24",76.22,76.35,73.6,74.44,4712700,74.05 451 | "2014-01-27",74.57,75.7,73.78,74.9,3408300,74.5 452 | "2014-01-28",73.92,75.46,73.92,75.08,2792000,74.68 453 | "2014-01-29",74.03,76.9,70.81,74.18,5942000,73.79 454 | "2014-01-30",74.44,74.97,73.37,73.56,4595300,73.17 455 | "2014-01-31",73.1,74.58,72.75,73.09,5799800,72.7 456 | "2014-02-03",73.12,73.58,71.14,71.36,5620300,70.98 457 | "2014-02-04",71.51,71.75,68.78,71.14,4647500,70.76 458 | "2014-02-05",70.75,71.55,69.11,70.67,6071000,70.3 459 | "2014-02-06",71.3,73.62,70.89,73.3,5388900,72.91 460 | "2014-02-07",73.7,74.43,72.91,74.28,3310400,73.89 461 | "2014-02-10",74.35,74.69,72.03,72.27,3743600,71.89 462 | "2014-02-11",72.3,74.26,72.24,74.09,3711500,73.7 463 | "2014-02-12",74.17,74.6,73.36,73.64,3045200,73.25 464 | "2014-02-13",72.75,74.92,72.63,74.65,3234400,74.65 465 | "2014-02-14",74.47,75.98,74.26,75.93,2408700,75.93 466 | "2014-02-18",76.21,76.99,75.27,75.38,2813700,75.38 467 | "2014-02-19",75.22,76.95,75.02,75.27,3700300,75.27 468 | "2014-02-20",75.02,75.76,74.75,75.29,3164800,75.29 469 | "2014-02-21",75.08,75.69,74.81,74.95,3210500,74.95 470 | "2014-02-24",75.01,77.77,75.01,76.25,3631400,76.25 471 | "2014-02-25",76.23,78.31,75.9,77.53,4201700,77.53 472 | "2014-02-26",77.44,77.93,76.45,76.76,3384100,76.76 473 | "2014-02-27",76.48,76.8,74.33,74.74,5635900,74.74 474 | "2014-02-28",74.78,78.89,74.38,74.86,4209000,74.86 475 | "2014-03-03",74.65,75.77,74.37,74.86,2672200,74.86 476 | "2014-03-04",75.55,76.2,74.9,76.08,2380300,76.08 477 | "2014-03-05",75.8,76.93,75.45,76.81,2815300,76.81 478 | "2014-03-06",76.98,78.79,76.95,78.14,3699300,78.14 479 | "2014-03-07",78.5,78.78,77.35,78.08,2243500,78.08 480 | "2014-03-10",78,79.2,77.82,78.66,2371900,78.66 481 | "2014-03-11",78.63,79.38,78.01,79.08,3068100,79.08 482 | "2014-03-12",79.09,80.29,79.06,80,3437700,80 483 | "2014-03-13",80.07,80.39,77.72,78.14,3433900,78.14 484 | "2014-03-14",78.03,79.41,78,78.69,2751000,78.69 485 | "2014-03-17",78.86,79.72,78.74,79.35,2640700,79.35 486 | -------------------------------------------------------------------------------- /core/src/main/resources/price/S.csv: -------------------------------------------------------------------------------- 1 | "","S.Open","S.High","S.Low","S.Close","S.Volume","S.Adjusted" 2 | "2013-07-11",6,6.31,5.91,6.28,40009800,6.28 3 | "2013-07-12",6.45,7.14,6.38,6.45,258055200,6.45 4 | "2013-07-15",6.64,6.75,6.47,6.72,43097300,6.72 5 | "2013-07-16",6.79,6.82,6.41,6.48,40198200,6.48 6 | "2013-07-17",6.46,6.48,6.2,6.25,64456300,6.25 7 | "2013-07-18",6.19,6.24,5.97,6.05,42165900,6.05 8 | "2013-07-19",6.01,6.14,6,6.07,23539600,6.07 9 | "2013-07-22",6.12,6.12,5.9,5.92,27979700,5.92 10 | "2013-07-23",5.95,5.96,5.61,5.85,45276500,5.85 11 | "2013-07-24",5.93,5.97,5.77,5.77,23980900,5.77 12 | "2013-07-25",5.8,5.84,5.7,5.82,16026200,5.82 13 | "2013-07-26",5.83,5.85,5.73,5.74,18111100,5.74 14 | "2013-07-29",5.8,5.84,5.65,5.74,19666800,5.74 15 | "2013-07-30",5.84,6.17,5.81,6.16,66848200,6.16 16 | "2013-07-31",6.13,6.17,5.96,5.96,32344400,5.96 17 | "2013-08-01",6.05,6.46,6,6.38,53852700,6.38 18 | "2013-08-02",6.41,6.77,6.4,6.67,42126800,6.67 19 | "2013-08-05",6.58,6.9,6.5,6.88,31059300,6.88 20 | "2013-08-06",6.9,7.04,6.89,6.97,43648500,6.97 21 | "2013-08-07",6.98,7.03,6.71,6.92,19844900,6.92 22 | "2013-08-08",6.95,6.98,6.8,6.94,12792400,6.94 23 | "2013-08-09",6.9,7.26,6.89,7.25,27076500,7.25 24 | "2013-08-12",7.21,7.21,7.04,7.11,13183000,7.11 25 | "2013-08-13",7.12,7.15,6.95,7.01,16162900,7.01 26 | "2013-08-14",7.07,7.1,6.96,7,11912100,7 27 | "2013-08-15",6.96,7.01,6.94,6.96,16386700,6.96 28 | "2013-08-16",6.95,7.04,6.91,6.92,16087100,6.92 29 | "2013-08-19",6.95,6.97,6.81,6.91,17064900,6.91 30 | "2013-08-20",6.89,6.98,6.89,6.97,9805700,6.97 31 | "2013-08-21",6.9,6.97,6.9,6.96,11752800,6.96 32 | "2013-08-22",6.95,7,6.9,6.92,6942200,6.92 33 | "2013-08-23",6.93,6.98,6.9,6.96,6136400,6.96 34 | "2013-08-26",6.93,6.98,6.89,6.91,8599100,6.91 35 | "2013-08-27",6.9,6.91,6.71,6.75,22131200,6.75 36 | "2013-08-28",6.69,6.74,6.65,6.66,13281900,6.66 37 | "2013-08-29",6.66,6.84,6.65,6.76,19073100,6.76 38 | "2013-08-30",6.82,6.82,6.54,6.71,15719900,6.71 39 | "2013-09-03",6.78,6.86,6.63,6.68,9261900,6.68 40 | "2013-09-04",6.66,6.72,6.58,6.65,9550600,6.65 41 | "2013-09-05",6.63,6.68,6.45,6.48,12664300,6.48 42 | "2013-09-06",6.57,6.57,6.4,6.47,14230000,6.47 43 | "2013-09-09",6.44,6.51,6.32,6.37,15189900,6.37 44 | "2013-09-10",6.38,6.42,6.26,6.33,28672600,6.33 45 | "2013-09-11",6.35,6.53,6.32,6.5,19568900,6.5 46 | "2013-09-12",6.42,6.83,6.42,6.69,24029000,6.69 47 | "2013-09-13",6.7,6.87,6.64,6.72,17339100,6.72 48 | "2013-09-16",6.74,6.83,6.61,6.64,15762100,6.64 49 | "2013-09-17",6.59,6.6,6.37,6.39,29793500,6.39 50 | "2013-09-18",6.37,6.45,6.25,6.44,24870300,6.44 51 | "2013-09-19",6.46,6.5,6.3,6.49,13184600,6.49 52 | "2013-09-20",6.48,6.49,6.18,6.26,28682200,6.26 53 | "2013-09-23",6.19,6.2,6.02,6.15,30035400,6.15 54 | "2013-09-24",6.14,6.24,6.05,6.19,12635500,6.19 55 | "2013-09-25",6.28,6.3,6.04,6.19,19995500,6.19 56 | "2013-09-26",6.18,6.33,6.18,6.3,11247900,6.3 57 | "2013-09-27",6.28,6.32,6.13,6.16,7341000,6.16 58 | "2013-09-30",6.09,6.27,6.04,6.22,19916300,6.22 59 | "2013-10-01",6.25,6.4,6.19,6.29,14919300,6.29 60 | "2013-10-02",6.26,6.35,6.22,6.35,9581400,6.35 61 | "2013-10-03",6.34,6.37,6.25,6.29,20216400,6.29 62 | "2013-10-04",6.29,6.44,6.26,6.44,10848500,6.44 63 | "2013-10-07",6.41,6.45,6.36,6.38,6762500,6.38 64 | "2013-10-08",6.38,6.43,6.11,6.13,19674700,6.13 65 | "2013-10-09",6.14,6.17,5.99,6,15925900,6 66 | "2013-10-10",6.04,6.08,5.92,5.97,23754400,5.97 67 | "2013-10-11",6.03,6.15,5.93,6,17832400,6 68 | "2013-10-14",6,6.09,6,6.03,8172900,6.03 69 | "2013-10-15",6.11,6.11,5.95,6.03,18542700,6.03 70 | "2013-10-16",6.1,6.35,6.09,6.3,23866000,6.3 71 | "2013-10-17",6.36,6.42,6.24,6.42,13360200,6.42 72 | "2013-10-18",6.46,6.55,6.3,6.4,15582400,6.4 73 | "2013-10-21",6.45,6.48,6.33,6.35,5440100,6.35 74 | "2013-10-22",6.39,6.46,6.3,6.39,10193700,6.39 75 | "2013-10-23",6.37,6.44,6.3,6.43,9675200,6.43 76 | "2013-10-24",6.39,6.53,6.36,6.52,13992900,6.52 77 | "2013-10-25",6.51,6.53,6.39,6.45,12521800,6.45 78 | "2013-10-28",6.48,6.68,6.46,6.61,21255800,6.61 79 | "2013-10-29",6.6,6.82,6.6,6.68,22954000,6.68 80 | "2013-10-30",6.76,7,6.41,6.93,52955100,6.93 81 | "2013-10-31",6.85,6.89,6.67,6.73,22001300,6.73 82 | "2013-11-01",6.73,6.87,6.73,6.87,13932700,6.87 83 | "2013-11-04",6.91,7.12,6.9,7.03,19481700,7.03 84 | "2013-11-05",7.07,7.36,6.9,7.19,49424900,7.19 85 | "2013-11-06",7.21,7.28,7.01,7.07,16777500,7.07 86 | "2013-11-07",7.09,7.12,6.81,6.99,18458100,6.99 87 | "2013-11-08",7,7.09,6.9,7.07,19935300,7.07 88 | "2013-11-11",7.09,7.09,6.94,6.98,7416500,6.98 89 | "2013-11-12",7.01,7.01,6.9,6.99,8642900,6.99 90 | "2013-11-13",6.94,7.06,6.93,7.06,6455600,7.06 91 | "2013-11-14",7.04,7.12,7,7.11,8674900,7.11 92 | "2013-11-15",7.1,7.43,7.07,7.42,22387600,7.42 93 | "2013-11-18",7.44,7.8,7.44,7.64,31637500,7.64 94 | "2013-11-19",7.67,7.69,7.44,7.49,11617700,7.49 95 | "2013-11-20",7.51,7.75,7.32,7.35,23069800,7.35 96 | "2013-11-21",7.37,8.19,7.36,7.95,43896000,7.95 97 | "2013-11-22",7.94,8.02,7.8,7.83,22482700,7.83 98 | "2013-11-25",7.78,7.88,7.66,7.82,9040700,7.82 99 | "2013-11-26",7.8,8.34,7.8,8.15,29810500,8.15 100 | "2013-11-27",8.27,8.47,8.13,8.36,13807700,8.36 101 | "2013-11-29",8.45,8.75,8.39,8.39,14733500,8.39 102 | "2013-12-02",8.3,8.38,8.05,8.2,16166000,8.2 103 | "2013-12-03",8.12,8.23,7.96,8.04,23796100,8.04 104 | "2013-12-04",8,8.12,7.81,7.95,18941100,7.95 105 | "2013-12-05",8.14,8.29,7.91,8,18852500,8 106 | "2013-12-06",8.02,8.07,7.87,7.89,18082700,7.89 107 | "2013-12-09",7.95,8.06,7.92,7.99,14513900,7.99 108 | "2013-12-10",7.94,7.98,7.83,7.98,17852900,7.98 109 | "2013-12-11",7.98,8.11,7.96,8.11,15242500,8.11 110 | "2013-12-12",8.13,8.17,7.99,8.15,16536200,8.15 111 | "2013-12-13",8.15,8.6,8.14,8.43,19442700,8.43 112 | "2013-12-16",8.68,8.88,8.16,8.31,36582900,8.31 113 | "2013-12-17",8.37,8.81,8.34,8.76,28911900,8.76 114 | "2013-12-18",8.72,8.99,8.67,8.95,22806400,8.95 115 | "2013-12-19",8.97,9.35,8.92,9.24,26805500,9.24 116 | "2013-12-20",9.39,9.87,9.39,9.86,42108900,9.86 117 | "2013-12-23",9.93,9.97,9.6,9.68,21853300,9.68 118 | "2013-12-24",9.68,9.73,9.55,9.66,9959200,9.66 119 | "2013-12-26",9.79,9.97,9.79,9.96,18323400,9.96 120 | "2013-12-27",10.17,11.47,10.14,10.79,50750000,10.79 121 | "2013-12-30",10.89,11,10.44,10.58,22530900,10.58 122 | "2013-12-31",10.65,10.85,10.53,10.75,12103100,10.75 123 | "2014-01-02",10.47,10.69,10.25,10.4,21180000,10.4 124 | "2014-01-03",10.03,10.16,9.73,9.94,25580700,9.94 125 | "2014-01-06",9.67,9.85,9.35,9.77,25470500,9.77 126 | "2014-01-07",9.76,10.19,9.72,9.87,17242500,9.87 127 | "2014-01-08",9.89,10.04,9.64,9.98,16259900,9.98 128 | "2014-01-09",9.88,9.88,9.33,9.42,34362700,9.42 129 | "2014-01-10",9.47,9.57,9.36,9.46,13895700,9.46 130 | "2014-01-13",9.36,9.4,9.01,9.09,14682800,9.09 131 | "2014-01-14",9.14,9.28,9.05,9.17,22453900,9.17 132 | "2014-01-15",9.18,9.31,9.08,9.08,12598600,9.08 133 | "2014-01-16",9.24,9.29,8.96,9.03,19218200,9.03 134 | "2014-01-17",9.23,9.25,8.93,8.97,24655600,8.97 135 | "2014-01-21",9.07,9.14,8.92,9.04,13309600,9.04 136 | "2014-01-22",9.1,9.13,9.05,9.07,12652700,9.07 137 | "2014-01-23",8.99,9.04,8.89,8.92,10185400,8.92 138 | "2014-01-24",8.87,8.92,8.37,8.4,21450200,8.4 139 | "2014-01-27",8.47,9.02,8.47,8.87,27742100,8.87 140 | "2014-01-28",8.91,9.01,8.86,8.86,13272900,8.86 141 | "2014-01-29",8.53,8.68,8.25,8.65,23988800,8.65 142 | "2014-01-30",8.73,8.77,8.35,8.39,13003800,8.39 143 | "2014-01-31",8.36,8.43,8.16,8.27,17300200,8.27 144 | "2014-02-03",8.19,8.32,7.81,7.85,25348300,7.85 145 | "2014-02-04",7.9,7.98,7.66,7.84,23047200,7.84 146 | "2014-02-05",7.76,8.73,7.42,8.5,58868600,8.5 147 | "2014-02-06",8.14,8.23,7.79,7.88,25992600,7.88 148 | "2014-02-07",7.91,8.18,7.91,8.02,15399100,8.02 149 | "2014-02-10",7.88,7.91,7.5,7.69,31528000,7.69 150 | "2014-02-11",8.24,8.32,7.78,7.9,44208300,7.9 151 | "2014-02-12",8.12,8.18,7.98,8.07,14977000,8.07 152 | "2014-02-13",7.99,8.53,7.97,8.41,32538100,8.41 153 | "2014-02-14",8.44,8.45,8.3,8.4,9386100,8.4 154 | "2014-02-18",8.4,8.43,8.14,8.2,15853600,8.2 155 | "2014-02-19",8.17,8.26,8.14,8.16,6943600,8.16 156 | "2014-02-20",8.12,8.29,8.12,8.27,8575900,8.27 157 | "2014-02-21",8.26,8.71,8.21,8.29,19060500,8.29 158 | "2014-02-24",8.33,8.54,8.32,8.4,14764000,8.4 159 | "2014-02-25",8.37,8.5,8.22,8.27,13309400,8.27 160 | "2014-02-26",8.27,8.42,8.15,8.39,12685800,8.39 161 | "2014-02-27",8.33,8.72,8.32,8.65,13711200,8.65 162 | "2014-02-28",8.66,8.77,8.53,8.74,14031400,8.74 163 | "2014-03-03",8.53,8.85,8.4,8.83,17599200,8.83 164 | "2014-03-04",8.99,9.22,8.95,9.19,22936300,9.19 165 | "2014-03-05",9.17,9.38,8.99,9.12,23398700,9.12 166 | "2014-03-06",9.16,9.25,8.74,8.88,19955800,8.88 167 | "2014-03-07",8.91,8.98,8.55,8.63,13817700,8.63 168 | "2014-03-10",8.52,8.73,8.4,8.71,18935800,8.71 169 | "2014-03-11",8.8,8.91,8.67,8.78,19419900,8.78 170 | "2014-03-12",8.72,8.81,8.66,8.78,12090300,8.78 171 | "2014-03-13",8.8,8.83,8.5,8.62,14772800,8.62 172 | "2014-03-14",8.56,8.86,8.47,8.78,16758600,8.78 173 | "2014-03-17",8.79,8.8,8.64,8.77,11364400,8.77 174 | -------------------------------------------------------------------------------- /core/src/main/resources/price/WPX.csv: -------------------------------------------------------------------------------- 1 | "","WPX.Open","WPX.High","WPX.Low","WPX.Close","WPX.Volume","WPX.Adjusted" 2 | "2011-12-12",22.5,23.42,17.92,19.25,988500,19.25 3 | "2011-12-13",19.2,19.2,18.05,18.5,758700,18.5 4 | "2011-12-14",18.3,18.33,17.57,18.07,616900,18.07 5 | "2011-12-15",18.01,18.26,17.8,18.01,1695700,18.01 6 | "2011-12-16",18.05,18.05,17.41,17.58,505500,17.58 7 | "2011-12-19",17.31,18.04,17.01,17.25,244300,17.25 8 | "2011-12-20",17.35,17.79,17.25,17.5,253100,17.5 9 | "2011-12-21",17.8,17.84,17.31,17.5,204900,17.5 10 | "2011-12-22",17.45,17.84,17.45,17.62,252200,17.62 11 | "2011-12-23",17.72,18.49,17.72,18.26,619400,18.26 12 | "2011-12-27",18.41,18.54,17.85,18.49,349500,18.49 13 | "2011-12-28",18.39,18.51,17.86,18.4,703700,18.4 14 | "2011-12-29",18.37,18.45,17.79,18,900600,18 15 | "2011-12-30",18.2,18.2,17.7,18.17,2956400,18.17 16 | "2012-01-03",18.38,18.67,17.86,18.1,7727900,18.1 17 | "2012-01-04",18.1,18.15,17.47,17.72,7097300,17.72 18 | "2012-01-05",17.48,17.85,17.25,17.52,3929000,17.52 19 | "2012-01-06",17.49,17.55,17.26,17.28,6460700,17.28 20 | "2012-01-09",17.3,17.3,16.21,16.67,5624400,16.67 21 | "2012-01-10",16.39,17.2,15.84,16.98,9557000,16.98 22 | "2012-01-11",16.58,16.93,16.45,16.51,6618700,16.51 23 | "2012-01-12",16.51,16.53,15.61,15.66,10482400,15.66 24 | "2012-01-13",15.47,15.81,15.21,15.66,6402500,15.66 25 | "2012-01-17",15.67,15.81,15.1,15.49,4529300,15.49 26 | "2012-01-18",15.33,15.43,15.1,15.35,4035200,15.35 27 | "2012-01-19",15.31,15.63,14.61,14.83,5832300,14.83 28 | "2012-01-20",14.84,14.99,14.2,14.75,6509800,14.75 29 | "2012-01-23",14.8,15.33,14.69,15.09,5656200,15.09 30 | "2012-01-24",15.01,15.74,14.82,15.31,3665000,15.31 31 | "2012-01-25",15.27,16.33,15.2,16.18,5308600,16.18 32 | "2012-01-26",16.14,16.19,15.52,15.69,2591800,15.69 33 | "2012-01-27",15.58,16.16,15.4,16.05,2834400,16.05 34 | "2012-01-30",15.92,16.46,15.53,16.38,2809600,16.38 35 | "2012-01-31",16.53,16.75,16.3,16.48,4594300,16.48 36 | "2012-02-01",16.68,16.89,16.14,16.52,3663500,16.52 37 | "2012-02-02",16.51,16.65,16.25,16.5,2693400,16.5 38 | "2012-02-03",16.62,16.93,16.35,16.45,2834400,16.45 39 | "2012-02-06",16.4,16.76,16.38,16.67,2093300,16.67 40 | "2012-02-07",16.65,17.32,16.54,17.31,3631800,17.31 41 | "2012-02-08",17.31,18.27,17.26,18.13,5646100,18.13 42 | "2012-02-09",18.23,18.54,17.62,17.81,4325300,17.81 43 | "2012-02-10",17.62,17.63,17.26,17.54,1548900,17.54 44 | "2012-02-13",17.57,17.6,16.96,17.54,4006100,17.54 45 | "2012-02-14",17.43,17.9,17.17,17.58,2158200,17.58 46 | "2012-02-15",17.61,18.29,17.53,18,3916200,18 47 | "2012-02-16",18.15,19.35,17.8,18.52,4315200,18.52 48 | "2012-02-17",19.03,19.24,18.77,18.87,3263000,18.87 49 | "2012-02-21",19.16,19.29,18.85,19.04,3710400,19.04 50 | "2012-02-22",19.13,19.13,18.25,18.42,2448600,18.42 51 | "2012-02-23",18.16,19.12,17.6,19.04,2677600,19.04 52 | "2012-02-24",18.89,19.13,18.6,18.82,2798100,18.82 53 | "2012-02-27",18.76,18.98,18.66,18.68,1425800,18.68 54 | "2012-02-28",18.87,18.99,18.55,18.6,3067700,18.6 55 | "2012-02-29",18.74,18.74,17.94,18.16,2819200,18.16 56 | "2012-03-01",18.27,18.61,17.97,18.34,2196100,18.34 57 | "2012-03-02",18.36,18.36,17.8,17.83,1404200,17.83 58 | "2012-03-05",18.37,18.53,18.12,18.33,4428500,18.33 59 | "2012-03-06",18.03,18.28,17.9,18.22,3222900,18.22 60 | "2012-03-07",18.15,18.45,17.97,18.34,1717300,18.34 61 | "2012-03-08",18.41,18.92,18.18,18.85,2262400,18.85 62 | "2012-03-09",18.81,18.97,18.58,18.67,2182300,18.67 63 | "2012-03-12",18.53,18.67,18.33,18.41,1315000,18.41 64 | "2012-03-13",18.55,19.3,18.4,19.28,1938200,19.28 65 | "2012-03-14",19.25,19.64,18.97,19.22,1875100,19.22 66 | "2012-03-15",19.2,19.49,19.01,19.22,1769300,19.22 67 | "2012-03-16",19.26,19.59,19.04,19.48,3346000,19.48 68 | "2012-03-19",19.4,19.74,19.4,19.67,1130200,19.67 69 | "2012-03-20",19.52,19.69,18.87,18.94,2032300,18.94 70 | "2012-03-21",19.02,19.34,18.82,19.2,2796900,19.2 71 | "2012-03-22",18.99,19.24,18.55,18.69,2106300,18.69 72 | "2012-03-23",18.63,19.26,18.6,19.03,2097100,19.03 73 | "2012-03-26",19.09,19.35,18.9,19.24,825100,19.24 74 | "2012-03-27",19.3,19.63,19.04,19.58,1979800,19.58 75 | "2012-03-28",19.35,19.46,18.43,18.8,1865600,18.8 76 | "2012-03-29",18.72,18.78,17.46,18.16,3815800,18.16 77 | "2012-03-30",18.28,18.29,18,18.01,1678800,18.01 78 | "2012-04-02",18.08,18.5,17.77,18.45,2893600,18.45 79 | "2012-04-03",18.45,18.9,18.26,18.61,1986000,18.61 80 | "2012-04-04",18.35,18.37,18.04,18.22,1718700,18.22 81 | "2012-04-05",18.11,18.25,17.03,17.51,3094800,17.51 82 | "2012-04-09",17.07,17.07,16.54,16.99,1825500,16.99 83 | "2012-04-10",17,17.12,16.43,16.53,1689400,16.53 84 | "2012-04-11",16.72,16.85,15.98,16.02,2121700,16.02 85 | "2012-04-12",16,16.54,15.9,16.33,3156200,16.33 86 | "2012-04-13",16.25,16.29,15.9,15.95,1609400,15.95 87 | "2012-04-16",15.99,16.31,15.68,15.74,3443800,15.74 88 | "2012-04-17",15.91,16.29,15.86,16.05,1392700,16.05 89 | "2012-04-18",15.97,16.05,15.48,15.54,3208000,15.54 90 | "2012-04-19",15.52,15.71,15.3,15.58,1621500,15.58 91 | "2012-04-20",15.63,15.89,15.35,15.5,1635800,15.5 92 | "2012-04-23",15.28,15.72,15.02,15.43,2473300,15.43 93 | "2012-04-24",15.41,15.67,15.19,15.64,1311400,15.64 94 | "2012-04-25",15.77,16.1,15.52,16.09,2148700,16.09 95 | "2012-04-26",16.02,16.99,16,16.86,2363200,16.86 96 | "2012-04-27",16.81,17.39,16.75,17.2,3427900,17.2 97 | "2012-04-30",17.2,17.63,16.9,17.57,2318900,17.57 98 | "2012-05-01",17.71,17.91,17.41,17.69,1609600,17.69 99 | "2012-05-02",17.55,17.55,17.03,17.14,1997800,17.14 100 | "2012-05-03",17,17,16.33,16.72,2800500,16.72 101 | "2012-05-04",16.52,16.71,16.2,16.63,2214600,16.63 102 | "2012-05-07",16.56,16.95,16.38,16.85,2269200,16.85 103 | "2012-05-08",16.74,17.11,16.4,17,3176900,17 104 | "2012-05-09",16.77,17.61,16.56,17.54,2850100,17.54 105 | "2012-05-10",17.73,17.88,17.44,17.52,2413700,17.52 106 | "2012-05-11",17.42,17.96,17.17,17.43,1996400,17.43 107 | "2012-05-14",17.2,17.36,17.02,17.15,1589200,17.15 108 | "2012-05-15",17.2,17.22,16.58,16.63,3335000,16.63 109 | "2012-05-16",16.64,17,16.46,16.54,2983400,16.54 110 | "2012-05-17",16.19,16.27,15.57,15.82,5533100,15.82 111 | "2012-05-18",15.86,16.14,15.3,15.37,4122800,15.37 112 | "2012-05-21",15.48,16.03,15.41,15.99,1594600,15.99 113 | "2012-05-22",16.05,16.29,15.62,15.85,1699900,15.85 114 | "2012-05-23",15.71,16.56,15.43,16.54,2900000,16.54 115 | "2012-05-24",16.6,16.6,15.66,15.96,2353100,15.96 116 | "2012-05-25",16.01,16.15,15.87,15.93,1084500,15.93 117 | "2012-05-29",16.08,16.77,15.91,16.05,2130600,16.05 118 | "2012-05-30",15.66,15.83,15,15.04,3059200,15.04 119 | "2012-05-31",15.08,15.17,14.49,14.67,3323000,14.67 120 | "2012-06-01",14.39,14.41,13.99,14.1,3246600,14.1 121 | "2012-06-04",14.18,14.32,13.82,14.14,2284200,14.14 122 | "2012-06-05",14.08,14.46,14.08,14.39,2619800,14.39 123 | "2012-06-06",14.53,14.92,14.52,14.81,2454100,14.81 124 | "2012-06-07",15.14,15.26,14.04,14.11,3022900,14.11 125 | "2012-06-08",14.05,14.12,13.77,14.02,1621300,14.02 126 | "2012-06-11",14.18,14.32,13.83,13.86,1653800,13.86 127 | "2012-06-12",14.05,14.33,13.78,14.27,1768400,14.27 128 | "2012-06-13",14.17,14.18,13.36,13.37,2499400,13.37 129 | "2012-06-14",13.38,14.04,13.22,13.97,2573300,13.97 130 | "2012-06-15",14.11,14.79,13.91,14.79,2786100,14.79 131 | "2012-06-18",14.67,14.85,14.44,14.79,1675100,14.79 132 | "2012-06-19",14.97,15.48,14.78,15.4,2235400,15.4 133 | "2012-06-20",15.41,15.41,14.48,14.93,3054200,14.93 134 | "2012-06-21",14.99,15.13,14.65,14.82,4427600,14.82 135 | "2012-06-22",14.91,15.46,14.55,15.24,5938300,15.24 136 | "2012-06-25",15.03,15.03,14.23,14.7,2238500,14.7 137 | "2012-06-26",14.75,15.04,14.45,14.85,2859400,14.85 138 | "2012-06-27",15,16.12,15,16.03,2850800,16.03 139 | "2012-06-28",15.87,16.25,15.73,16.09,2471800,16.09 140 | "2012-06-29",16.53,16.69,15.52,16.18,3218500,16.18 141 | "2012-07-02",15.9,15.98,15.21,15.9,2987800,15.9 142 | "2012-07-03",15.99,16.02,15.55,15.69,2494700,15.69 143 | "2012-07-05",15.6,15.69,15.27,15.28,1237200,15.28 144 | "2012-07-06",15.16,15.92,15.1,15.64,2861000,15.64 145 | "2012-07-09",15.51,15.51,14.97,15.01,2577500,15.01 146 | "2012-07-10",15.1,15.23,14.26,14.28,3277600,14.28 147 | "2012-07-11",14.33,14.82,14.21,14.73,3364600,14.73 148 | "2012-07-12",14.55,14.66,14.15,14.5,2469200,14.5 149 | "2012-07-13",14.61,15,14.51,14.97,3061100,14.97 150 | "2012-07-16",14.92,15.03,14.52,14.64,1866200,14.64 151 | "2012-07-17",14.73,14.84,14.28,14.78,2919300,14.78 152 | "2012-07-18",14.7,15.12,14.57,14.79,3207100,14.79 153 | "2012-07-19",14.88,15.36,14.79,15.28,2531700,15.28 154 | "2012-07-20",15.08,15.55,14.91,15.54,2649700,15.54 155 | "2012-07-23",15.12,15.22,14.86,15.09,1799900,15.09 156 | "2012-07-24",15.14,15.2,14.63,14.76,2070600,14.76 157 | "2012-07-25",14.86,14.96,14.53,14.76,1839700,14.76 158 | "2012-07-26",15.08,15.11,14.78,15.05,1884600,15.05 159 | "2012-07-27",15.19,15.28,15.03,15.15,2696700,15.15 160 | "2012-07-30",15.17,16.14,15.17,16.09,2167400,16.09 161 | "2012-07-31",16.01,16.22,15.81,15.95,2174700,15.95 162 | "2012-08-01",15.97,16.13,15.56,15.93,2936600,15.93 163 | "2012-08-02",15.57,15.61,14.31,14.72,2842700,14.72 164 | "2012-08-03",15.03,15.19,14.73,15.06,2022500,15.06 165 | "2012-08-06",15.13,15.4,15.05,15.17,1599100,15.17 166 | "2012-08-07",15.26,15.72,15.26,15.32,2173800,15.32 167 | "2012-08-08",15.32,15.52,15.08,15.17,1108700,15.17 168 | "2012-08-09",15.17,15.74,15.01,15.61,1853900,15.61 169 | "2012-08-10",15.52,15.52,15.15,15.43,1332600,15.43 170 | "2012-08-13",15.46,15.46,14.79,14.9,944100,14.9 171 | "2012-08-14",14.92,15.18,14.83,14.95,1695400,14.95 172 | "2012-08-15",14.9,14.99,14.51,14.58,2472700,14.58 173 | "2012-08-16",14.55,14.87,14.4,14.59,2316800,14.59 174 | "2012-08-17",14.66,14.99,14.55,14.7,1414000,14.7 175 | "2012-08-20",14.64,14.7,14.45,14.58,802400,14.58 176 | "2012-08-21",14.61,14.8,14.56,14.7,1598400,14.7 177 | "2012-08-22",14.64,14.66,14.25,14.55,2118500,14.55 178 | "2012-08-23",14.5,14.58,14.15,14.34,2389400,14.34 179 | "2012-08-24",14.28,14.96,14.22,14.82,1964100,14.82 180 | "2012-08-27",14.92,15.25,14.62,14.99,1850200,14.99 181 | "2012-08-28",14.97,15.3,14.9,15.2,957400,15.2 182 | "2012-08-29",15.27,15.65,15.24,15.49,1688300,15.49 183 | "2012-08-30",15.64,15.69,15.17,15.36,1792200,15.36 184 | "2012-08-31",15.48,15.92,15.43,15.6,2216200,15.6 185 | "2012-09-04",15.78,16.14,15.5,15.85,3582600,15.85 186 | "2012-09-05",15.83,15.94,15.63,15.81,1926700,15.81 187 | "2012-09-06",15.95,16.48,15.86,16.36,3091100,16.36 188 | "2012-09-07",16.34,16.73,16.25,16.45,1761900,16.45 189 | "2012-09-10",16.37,16.71,16.13,16.17,1452200,16.17 190 | "2012-09-11",16.27,16.65,16.27,16.6,2016600,16.6 191 | "2012-09-12",16.66,17,16.6,16.86,3733000,16.86 192 | "2012-09-13",16.86,17.47,16.7,17.07,3681200,17.07 193 | "2012-09-14",17.16,17.54,17.12,17.48,3438600,17.48 194 | "2012-09-17",17.37,17.73,17.28,17.43,1643800,17.43 195 | "2012-09-18",17.34,17.34,16.4,16.65,2180400,16.65 196 | "2012-09-19",16.62,17.11,16.52,17.01,2416600,17.01 197 | "2012-09-20",16.94,17.09,16.65,17,1508800,17 198 | "2012-09-21",17.13,17.25,17.01,17.17,1638500,17.17 199 | "2012-09-24",16.9,17,16.6,16.74,1384900,16.74 200 | "2012-09-25",16.85,16.9,16.41,16.42,1171900,16.42 201 | "2012-09-26",16.38,16.43,16.14,16.3,1292800,16.3 202 | "2012-09-27",16.45,16.99,16.42,16.73,2216800,16.73 203 | "2012-09-28",16.64,16.72,16.43,16.59,1387800,16.59 204 | "2012-10-01",16.72,17.22,16.68,17.14,2674300,17.14 205 | "2012-10-02",17.17,17.23,16.85,17,2963900,17 206 | "2012-10-03",17.02,17.09,16.54,16.6,2111600,16.6 207 | "2012-10-04",16.74,17.06,16.58,16.97,1780200,16.97 208 | "2012-10-05",17.13,17.31,17,17.09,1804800,17.09 209 | "2012-10-08",17,17.2,16.84,17.18,1421600,17.18 210 | "2012-10-09",17.14,18.06,17.08,17.82,2813200,17.82 211 | "2012-10-10",17.68,17.95,17.34,17.37,2085100,17.37 212 | "2012-10-11",17.59,18.31,17.51,18.1,2050000,18.1 213 | "2012-10-12",18.05,18.23,17.82,17.86,2435400,17.86 214 | "2012-10-15",17.67,17.81,17.41,17.44,1878500,17.44 215 | "2012-10-16",17.67,17.92,17.54,17.7,1247000,17.7 216 | "2012-10-17",17.75,17.97,17.44,17.57,1745600,17.57 217 | "2012-10-18",17.56,17.97,17.53,17.87,1636300,17.87 218 | "2012-10-19",17.85,18.15,17.64,17.69,1865000,17.69 219 | "2012-10-22",17.52,17.7,17.01,17.3,1325500,17.3 220 | "2012-10-23",17,17.19,16.67,16.97,1670300,16.97 221 | "2012-10-24",17.08,17.21,16.59,16.76,1227000,16.76 222 | "2012-10-25",16.94,17.13,16.66,16.95,1047500,16.95 223 | "2012-10-26",16.89,17.15,16.76,17.02,858400,17.02 224 | "2012-10-31",17.08,17.25,16.82,16.94,2270100,16.94 225 | "2012-11-01",17.03,17.03,15.23,16.17,7285600,16.17 226 | "2012-11-02",16.67,16.92,15.75,15.88,2510800,15.88 227 | "2012-11-05",15.9,16.16,15.71,16.03,1381600,16.03 228 | "2012-11-06",16.15,16.15,15.68,15.87,2597500,15.87 229 | "2012-11-07",15.72,15.75,15.14,15.17,1605600,15.17 230 | "2012-11-08",15.2,15.36,14.96,15.08,1701200,15.08 231 | "2012-11-09",15.07,15.35,14.86,15.2,3640700,15.2 232 | "2012-11-12",15.23,15.54,15.12,15.25,995100,15.25 233 | "2012-11-13",15.07,15.6,14.95,15.29,1041000,15.29 234 | "2012-11-14",15.31,15.58,15.1,15.11,1602000,15.11 235 | "2012-11-15",15.15,15.31,14.88,15.14,2387900,15.14 236 | "2012-11-16",15.12,15.68,14.94,15.37,1859500,15.37 237 | "2012-11-19",15.65,15.99,15.62,15.99,1291900,15.99 238 | "2012-11-20",15.94,16.1,15.72,16.01,1182600,16.01 239 | "2012-11-21",16.02,16.32,15.84,16.25,1803500,16.25 240 | "2012-11-23",16.22,16.66,16.1,16.54,598600,16.54 241 | "2012-11-26",16.34,16.34,15.74,16.02,1744400,16.02 242 | "2012-11-27",15.92,16.26,15.81,15.94,1398700,15.94 243 | "2012-11-28",15.78,16.02,15.46,16,1142300,16 244 | "2012-11-29",16.16,16.24,15.79,15.91,1977000,15.91 245 | "2012-11-30",15.91,16.09,15.67,15.79,2233200,15.79 246 | "2012-12-03",15.96,16.17,15.66,15.69,1997900,15.69 247 | "2012-12-04",15.65,15.68,15.31,15.41,2329000,15.41 248 | "2012-12-05",15.48,15.82,15.33,15.73,2174700,15.73 249 | "2012-12-06",15.7,15.89,15.51,15.76,1685100,15.76 250 | "2012-12-07",15.84,15.94,15.57,15.61,1531600,15.61 251 | "2012-12-10",15.38,15.71,15.21,15.34,2819400,15.34 252 | "2012-12-11",15.41,15.84,15.34,15.58,2443400,15.58 253 | "2012-12-12",15.66,15.85,15.55,15.64,1077700,15.64 254 | "2012-12-13",15.6,15.72,15.26,15.41,1712300,15.41 255 | "2012-12-14",15.34,15.55,15.29,15.49,1485800,15.49 256 | "2012-12-17",15.51,15.87,15.48,15.71,2637900,15.71 257 | "2012-12-18",15.7,16.07,15.58,15.77,1767200,15.77 258 | "2012-12-19",15.78,15.8,15.39,15.52,1322900,15.52 259 | "2012-12-20",15.43,15.58,15.32,15.43,2314000,15.43 260 | "2012-12-21",15.22,15.36,15.09,15.23,2516700,15.23 261 | "2012-12-24",15.22,15.3,14.96,15,654100,15 262 | "2012-12-26",15.06,15.32,15.01,15.16,1388300,15.16 263 | "2012-12-27",15.16,15.16,14.55,14.81,2035900,14.81 264 | "2012-12-28",14.69,14.95,14.58,14.74,2258100,14.74 265 | "2012-12-31",14.65,14.94,14.43,14.88,2425700,14.88 266 | "2013-01-02",15.17,15.3,14.51,15.22,4362200,15.22 267 | "2013-01-03",15.21,15.83,14.97,15.57,1975200,15.57 268 | "2013-01-04",15.63,15.78,15.55,15.73,2121100,15.73 269 | "2013-01-07",15.72,15.9,15.55,15.89,1923500,15.89 270 | "2013-01-08",15.82,15.88,15.11,15.11,3271000,15.11 271 | "2013-01-09",15.08,15.2,14.55,14.67,4183000,14.67 272 | "2013-01-10",14.77,14.78,14.36,14.68,2885100,14.68 273 | "2013-01-11",14.76,14.9,14.58,14.86,2400100,14.86 274 | "2013-01-14",14.85,14.85,14.65,14.7,2638500,14.7 275 | "2013-01-15",14.59,14.87,14.54,14.79,1338400,14.79 276 | "2013-01-16",14.69,14.69,14.23,14.28,4478900,14.28 277 | "2013-01-17",14.19,14.91,14.1,14.47,7429700,14.47 278 | "2013-01-18",14.51,14.62,14.35,14.58,3867100,14.58 279 | "2013-01-22",14.54,14.89,14.52,14.82,3488600,14.82 280 | "2013-01-23",15.22,15.65,14.92,14.99,4865200,14.99 281 | "2013-01-24",15,15.11,14.52,14.63,4295900,14.63 282 | "2013-01-25",14.68,14.87,14.59,14.73,2802200,14.73 283 | "2013-01-28",14.76,14.76,14.3,14.56,2306800,14.56 284 | "2013-01-29",14.52,14.76,14.37,14.72,3646400,14.72 285 | "2013-01-30",14.49,15.06,14.48,14.95,3173900,14.95 286 | "2013-01-31",14.9,15.22,14.79,15.03,3704200,15.03 287 | "2013-02-01",15.1,15.38,14.89,15.08,4302300,15.08 288 | "2013-02-04",15,15.02,14.76,14.79,2374200,14.79 289 | "2013-02-05",14.86,15.24,14.76,15.2,3128900,15.2 290 | "2013-02-06",15.14,15.53,15.06,15.48,2976400,15.48 291 | "2013-02-07",15.5,15.76,15.22,15.24,2970100,15.24 292 | "2013-02-08",15.33,15.99,15.22,15.63,2839500,15.63 293 | "2013-02-11",15.57,15.6,15.1,15.27,2071700,15.27 294 | "2013-02-12",15.27,15.42,15.14,15.22,2102900,15.22 295 | "2013-02-13",15.22,15.47,15.2,15.39,2102300,15.39 296 | "2013-02-14",15.36,15.39,15.19,15.22,3070900,15.22 297 | "2013-02-15",15.26,15.34,14.66,14.76,3748300,14.76 298 | "2013-02-19",14.77,15.06,14.72,15.05,2430900,15.05 299 | "2013-02-20",15.02,15.13,14.72,14.9,3659100,14.9 300 | "2013-02-21",14.81,14.92,14.38,14.61,3200000,14.61 301 | "2013-02-22",14.66,14.92,14.57,14.9,2330800,14.9 302 | "2013-02-25",15.03,15.2,14.25,14.26,3844600,14.26 303 | "2013-02-26",14.31,14.4,14.06,14.34,3165000,14.34 304 | "2013-02-27",14.27,14.69,14.26,14.5,3286300,14.5 305 | "2013-02-28",14.15,14.69,14.03,14.19,7521500,14.19 306 | "2013-03-01",14.09,14.54,14.04,14.33,3113600,14.33 307 | "2013-03-04",14.26,14.48,14.14,14.41,2853200,14.41 308 | "2013-03-05",14.51,14.79,14.49,14.73,2587800,14.73 309 | "2013-03-06",14.76,15.24,14.67,15.14,3821900,15.14 310 | "2013-03-07",15.18,15.94,15.03,15.83,4868900,15.83 311 | "2013-03-08",15.9,16.36,15.79,16.25,5683000,16.25 312 | "2013-03-11",16.23,16.4,16.02,16.27,3009000,16.27 313 | "2013-03-12",16.29,16.35,15.9,16.12,2617100,16.12 314 | "2013-03-13",16.13,16.2,15.94,16,2739100,16 315 | "2013-03-14",16.05,16.94,16.01,16.79,5510400,16.79 316 | "2013-03-15",16.76,16.97,16.69,16.85,6955800,16.85 317 | "2013-03-18",16.65,16.99,16.59,16.64,1987700,16.64 318 | "2013-03-19",16.71,16.79,16.43,16.51,2664200,16.51 319 | "2013-03-20",16.61,16.64,16.38,16.46,4311900,16.46 320 | "2013-03-21",16.39,16.5,15.9,15.95,4399200,15.95 321 | "2013-03-22",16.1,16.36,16,16.2,3213900,16.2 322 | "2013-03-25",16.3,16.41,16.03,16.13,2130600,16.13 323 | "2013-03-26",16.2,16.41,16.1,16.39,1872200,16.39 324 | "2013-03-27",16.3,16.37,16.1,16.24,1368200,16.24 325 | "2013-03-28",16.2,16.3,15.94,16.02,5440700,16.02 326 | "2013-04-01",16.03,16.04,15.74,15.82,1731300,15.82 327 | "2013-04-02",15.88,15.91,15.48,15.5,2218500,15.5 328 | "2013-04-03",15.48,15.64,14.92,15,2110900,15 329 | "2013-04-04",15,15.39,14.87,15.35,2258700,15.35 330 | "2013-04-05",15.19,16.15,15.11,16.15,3526000,16.15 331 | "2013-04-08",16.18,17.12,16.02,17.01,5395100,17.01 332 | "2013-04-09",17.02,17.44,16.85,17.1,3726800,17.1 333 | "2013-04-10",17.15,17.62,17.12,17.43,2042400,17.43 334 | "2013-04-11",17.5,17.92,17.34,17.63,3116700,17.63 335 | "2013-04-12",17.49,17.57,17.11,17.29,1776500,17.29 336 | "2013-04-15",17.07,17.15,16.28,16.34,2651500,16.34 337 | "2013-04-16",16.52,17.09,16.09,16.33,2643100,16.33 338 | "2013-04-17",16.2,16.25,15.73,16.15,5701700,16.15 339 | "2013-04-18",16.23,16.77,15.72,16.43,4099500,16.43 340 | "2013-04-19",16.54,16.6,15.99,16.38,2391100,16.38 341 | "2013-04-22",16.28,16.4,15.68,16.02,2131800,16.02 342 | "2013-04-23",16.07,16.13,15.68,15.82,1814400,15.82 343 | "2013-04-24",15.86,16.05,15.68,15.83,2450200,15.83 344 | "2013-04-25",15.93,16.13,15.65,15.73,2908800,15.73 345 | "2013-04-26",15.74,15.83,15.27,15.74,2118900,15.74 346 | "2013-04-29",15.85,16.05,15.72,15.73,1838900,15.73 347 | "2013-04-30",15.74,15.84,15.43,15.63,1577400,15.63 348 | "2013-05-01",15.57,15.6,15.23,15.35,1417000,15.35 349 | "2013-05-02",15.33,16.2,15.14,15.77,4775400,15.77 350 | "2013-05-03",15.89,16.88,15.84,16.57,2847800,16.57 351 | "2013-05-06",16.55,16.57,16.27,16.39,1653400,16.39 352 | "2013-05-07",16.44,16.91,16.26,16.61,3422200,16.61 353 | "2013-05-08",16.62,16.84,16.5,16.71,1394500,16.71 354 | "2013-05-09",16.67,16.93,16.5,16.7,1879900,16.7 355 | "2013-05-10",16.69,17.25,16.57,17.12,2036700,17.12 356 | "2013-05-13",17.06,17.57,17.06,17.52,1833500,17.52 357 | "2013-05-14",18.59,18.67,17.83,18.05,6283600,18.05 358 | "2013-05-15",18.12,18.25,17.89,18.24,3202000,18.24 359 | "2013-05-16",18.24,18.28,18.01,18.08,2048900,18.08 360 | "2013-05-17",18.21,18.47,18.13,18.46,3383000,18.46 361 | "2013-05-20",18.84,19.84,18.8,19.76,4754800,19.76 362 | "2013-05-21",19.89,20.47,19.88,20.15,4369800,20.15 363 | "2013-05-22",20.64,21.12,19.66,19.7,6345200,19.7 364 | "2013-05-23",19.45,20.09,18.87,20,3364900,20 365 | "2013-05-24",19.85,20.01,19.6,19.94,1657700,19.94 366 | "2013-05-28",20.31,20.56,19.62,19.94,3056100,19.94 367 | "2013-05-29",19.9,19.97,19.36,19.73,2593700,19.73 368 | "2013-05-30",19.8,19.91,19.51,19.71,1842300,19.71 369 | "2013-05-31",19.71,19.74,19.24,19.26,2744900,19.26 370 | "2013-06-03",19.37,20.29,19.35,19.76,2536100,19.76 371 | "2013-06-04",19.7,20.07,19.7,19.99,2203700,19.99 372 | "2013-06-05",20,20.09,19.18,19.21,3571300,19.21 373 | "2013-06-06",19.25,19.55,18.57,18.88,4528800,18.88 374 | "2013-06-07",19.02,19.4,18.91,19.3,1762100,19.3 375 | "2013-06-10",19.4,19.45,19.13,19.3,1499500,19.3 376 | "2013-06-11",19.09,19.26,18.74,18.8,1803400,18.8 377 | "2013-06-12",19.49,19.49,18.67,18.91,1993300,18.91 378 | "2013-06-13",18.85,19.3,18.77,19.22,1797000,19.22 379 | "2013-06-14",19.24,19.31,18.87,19,2179300,19 380 | "2013-06-17",19.13,19.73,19.1,19.73,1434900,19.73 381 | "2013-06-18",19.73,20.41,19.71,20.35,1677000,20.35 382 | "2013-06-19",20.3,20.47,19.89,19.92,2736000,19.92 383 | "2013-06-20",19.69,19.69,18.74,18.8,3142800,18.8 384 | "2013-06-21",18.99,19.31,18.8,19.12,2990000,19.12 385 | "2013-06-24",18.9,19.76,18.76,19.21,3125800,19.21 386 | "2013-06-25",19.5,19.56,19.02,19.24,1975900,19.24 387 | "2013-06-26",19.4,19.62,19.34,19.58,2047300,19.58 388 | "2013-06-27",19.71,19.91,19.29,19.32,1972000,19.32 389 | "2013-06-28",19.21,19.29,18.92,18.94,3460500,18.94 390 | "2013-07-01",19.08,19.26,18.89,18.93,2368700,18.93 391 | "2013-07-02",18.95,19.09,18.75,18.83,2098000,18.83 392 | "2013-07-03",18.83,18.98,18.59,18.87,1550500,18.87 393 | "2013-07-05",19.07,19.16,18.79,18.94,1313800,18.94 394 | "2013-07-08",19.05,19.46,19.04,19.15,2396500,19.15 395 | "2013-07-09",19.26,19.3,19.08,19.11,2368400,19.11 396 | "2013-07-10",19.12,19.71,19.12,19.51,1187100,19.51 397 | "2013-07-11",19.8,19.88,19.46,19.79,1751600,19.79 398 | "2013-07-12",19.77,19.93,19.48,19.85,2228900,19.85 399 | "2013-07-15",19.76,19.94,19.56,19.81,1601200,19.81 400 | "2013-07-16",19.78,19.88,19.54,19.85,1920000,19.85 401 | "2013-07-17",19.87,20.05,19.79,19.99,1997700,19.99 402 | "2013-07-18",19.97,20.36,19.95,20.3,2126300,20.3 403 | "2013-07-19",20.36,20.36,20.04,20.25,1730600,20.25 404 | "2013-07-22",20.23,20.24,19.78,19.84,1626700,19.84 405 | "2013-07-23",19.84,19.91,19.52,19.57,3265900,19.57 406 | "2013-07-24",19.61,19.61,19.2,19.34,1529800,19.34 407 | "2013-07-25",19.34,19.95,19.34,19.65,1902900,19.65 408 | "2013-07-26",19.52,19.63,19.35,19.52,1544300,19.52 409 | "2013-07-29",19.4,19.41,18.96,19.07,2252200,19.07 410 | "2013-07-30",19.12,19.15,18.88,19.06,1891900,19.06 411 | "2013-07-31",19.13,19.42,19.06,19.21,2810000,19.21 412 | "2013-08-01",19.26,19.57,18.28,18.87,4126100,18.87 413 | "2013-08-02",18.78,19.58,18.78,19.17,3862700,19.17 414 | "2013-08-05",19.11,19.7,19.07,19.7,1663600,19.7 415 | "2013-08-06",19.59,19.77,19.5,19.54,1744500,19.54 416 | "2013-08-07",19.48,19.54,18.95,19.07,1604200,19.07 417 | "2013-08-08",19.15,19.41,18.89,19.39,1597000,19.39 418 | "2013-08-09",19.39,19.43,19.12,19.16,911100,19.16 419 | "2013-08-12",19.05,19.23,18.91,18.94,2019800,18.94 420 | "2013-08-13",18.96,19,18.35,18.5,2252500,18.5 421 | "2013-08-14",18.45,18.55,18.26,18.42,1951900,18.42 422 | "2013-08-15",18.25,18.51,18.1,18.48,1729100,18.48 423 | "2013-08-16",18.49,19.05,18.46,18.97,2270700,18.97 424 | "2013-08-19",19,19.31,18.7,18.82,3029000,18.82 425 | "2013-08-20",18.81,19.59,18.76,19.36,2232700,19.36 426 | "2013-08-21",19.29,19.29,18.77,18.81,1905000,18.81 427 | "2013-08-22",18.91,19.6,18.82,19.45,1372600,19.45 428 | "2013-08-23",19.45,19.55,19.15,19.51,1270600,19.51 429 | "2013-08-26",19.51,19.81,19.28,19.29,1022800,19.29 430 | "2013-08-27",19.08,19.37,18.7,18.85,1742900,18.85 431 | "2013-08-28",18.87,19.27,18.79,18.89,1294800,18.89 432 | "2013-08-29",18.88,19.03,18.73,18.89,1255000,18.89 433 | "2013-08-30",18.91,19.02,18.61,18.66,1244400,18.66 434 | "2013-09-03",18.99,19.04,18.84,18.93,1749700,18.93 435 | "2013-09-04",18.84,18.97,18.61,18.85,1787600,18.85 436 | "2013-09-05",18.83,18.9,18.65,18.76,1431800,18.76 437 | "2013-09-06",18.82,18.85,18.4,18.7,2091900,18.7 438 | "2013-09-09",18.77,19.07,18.75,18.98,1971500,18.98 439 | "2013-09-10",19.04,19.06,18.49,18.6,1542200,18.6 440 | "2013-09-11",18.6,19.49,18.46,19.47,3239600,19.47 441 | "2013-09-12",19.48,20.01,19.29,19.87,2479600,19.87 442 | "2013-09-13",19.92,19.92,19.64,19.73,1259900,19.73 443 | "2013-09-16",19.9,19.93,19.64,19.7,1547900,19.7 444 | "2013-09-17",19.68,19.8,19.59,19.61,1444100,19.61 445 | "2013-09-18",19.65,19.81,19.24,19.69,1294300,19.69 446 | "2013-09-19",19.67,19.75,19.37,19.4,898200,19.4 447 | "2013-09-20",19.43,19.43,18.97,19.06,1545300,19.06 448 | "2013-09-23",18.99,19.09,18.75,18.99,1415500,18.99 449 | "2013-09-24",18.83,18.92,18.62,18.69,2105500,18.69 450 | "2013-09-25",18.69,19.1,18.69,18.93,1732700,18.93 451 | "2013-09-26",18.97,19.28,18.73,19.26,1473400,19.26 452 | "2013-09-27",19.17,19.37,19.08,19.36,1221200,19.36 453 | "2013-09-30",19.08,19.42,19.03,19.26,1898500,19.26 454 | "2013-10-01",19.28,19.56,19.2,19.44,1748200,19.44 455 | "2013-10-02",19.33,19.56,19.15,19.54,1691600,19.54 456 | "2013-10-03",19.5,19.84,19.33,19.8,1912000,19.8 457 | "2013-10-04",19.78,20,19.65,19.92,1245300,19.92 458 | "2013-10-07",19.7,19.97,19.61,19.63,868600,19.63 459 | "2013-10-08",19.61,19.73,19.11,19.13,1532500,19.13 460 | "2013-10-09",19.15,19.17,18.8,18.91,1224200,18.91 461 | "2013-10-10",19.09,19.33,18.98,19.33,1445000,19.33 462 | "2013-10-11",19.26,19.93,19.13,19.78,1262900,19.78 463 | "2013-10-14",19.71,20.35,19.63,20.31,1411200,20.31 464 | "2013-10-15",20.28,21.19,20.27,20.95,3058600,20.95 465 | "2013-10-16",20.99,21.93,20.97,21.6,2550700,21.6 466 | "2013-10-17",21.52,22.23,21.52,22,3297000,22 467 | "2013-10-18",22.11,22.53,21.74,22.52,2470100,22.52 468 | "2013-10-21",22.55,22.73,22.34,22.52,1509200,22.52 469 | "2013-10-22",22.6,23.05,22.25,22.6,2984800,22.6 470 | "2013-10-23",22.43,22.51,21.9,22.16,3214800,22.16 471 | "2013-10-24",22.16,22.86,22.07,22.84,2107200,22.84 472 | "2013-10-25",22.87,23,22.3,22.82,1736000,22.82 473 | "2013-10-28",22.56,22.65,22.13,22.59,1794400,22.59 474 | "2013-10-29",22.66,23.46,22.55,23.45,2224800,23.45 475 | "2013-10-30",23.47,23.69,22.49,22.74,2556000,22.74 476 | "2013-10-31",22.73,22.83,22.06,22.14,1951900,22.14 477 | "2013-11-01",22.2,22.28,21.59,21.91,3733100,21.91 478 | "2013-11-04",22.01,22.55,21.95,22.33,2754400,22.33 479 | "2013-11-05",22.33,22.51,22.01,22.06,1869000,22.06 480 | "2013-11-06",22.16,22.47,21.4,21.43,2575900,21.43 481 | "2013-11-07",20.87,20.87,18.03,18.65,8823600,18.65 482 | "2013-11-08",18.66,18.92,18.37,18.68,4574300,18.68 483 | "2013-11-11",18.82,19.05,18.61,18.66,2737900,18.66 484 | "2013-11-12",18.6,18.71,18.33,18.48,2832900,18.48 485 | "2013-11-13",18.35,18.73,18.18,18.48,1731200,18.48 486 | "2013-11-14",18.49,18.58,18.3,18.38,3153400,18.38 487 | "2013-11-15",19.05,19.17,18.25,18.4,8488200,18.4 488 | "2013-11-18",18.39,18.45,17.69,17.8,3524400,17.8 489 | "2013-11-19",17.75,17.96,17.54,17.82,2258400,17.82 490 | "2013-11-20",17.88,18.3,17.66,18.18,2767100,18.18 491 | "2013-11-21",18.22,18.94,18.2,18.77,2685700,18.77 492 | "2013-11-22",18.9,19.07,18.45,18.95,2014200,18.95 493 | "2013-11-25",18.93,18.96,18.31,18.91,3029100,18.91 494 | "2013-11-26",18.88,19.04,18.4,18.51,2802000,18.51 495 | "2013-11-27",18.42,18.48,18.1,18.38,2888200,18.38 496 | "2013-11-29",18.44,18.83,18.18,18.59,852300,18.59 497 | "2013-12-02",18.62,19.7,18.49,18.95,4396500,18.95 498 | "2013-12-03",18.82,19.13,18.5,18.68,3091100,18.68 499 | "2013-12-04",18.69,18.89,18.41,18.52,2000100,18.52 500 | "2013-12-05",18.46,18.74,18.4,18.62,1803000,18.62 501 | "2013-12-06",18.75,18.76,18.24,18.29,2445000,18.29 502 | "2013-12-09",18.3,18.56,18.19,18.55,2839400,18.55 503 | "2013-12-10",18.59,19.81,18.49,19.32,4151900,19.32 504 | "2013-12-11",19.26,19.32,18.84,18.89,1869400,18.89 505 | "2013-12-12",18.89,19.35,18.89,19.26,2427500,19.26 506 | "2013-12-13",19.2,19.39,18.91,19.02,2302000,19.02 507 | "2013-12-16",18.98,19.11,18.93,19.02,2363000,19.02 508 | "2013-12-17",19.01,19.89,19,19.86,5570800,19.86 509 | "2013-12-18",19.91,19.95,19,19.15,4734300,19.15 510 | "2013-12-19",19.14,19.72,19.07,19.6,3189600,19.6 511 | "2013-12-20",19.78,20.41,19.7,20.14,4674500,20.14 512 | "2013-12-23",20.19,20.54,20.08,20.26,1568900,20.26 513 | "2013-12-24",20.25,20.57,20.18,20.46,708500,20.46 514 | "2013-12-26",20.5,20.66,20.2,20.3,758900,20.3 515 | "2013-12-27",20.3,20.67,20.26,20.49,1031400,20.49 516 | "2013-12-30",20.5,20.57,20.08,20.11,1232500,20.11 517 | "2013-12-31",20.18,20.5,20,20.38,1277100,20.38 518 | "2014-01-02",20.29,20.34,19.67,19.81,2977800,19.81 519 | "2014-01-03",19.81,19.88,19.45,19.57,1588100,19.57 520 | "2014-01-06",19.63,19.65,19.25,19.28,2489900,19.28 521 | "2014-01-07",19.33,19.38,19,19.29,4137600,19.29 522 | "2014-01-08",19.31,19.47,19.15,19.21,3760700,19.21 523 | "2014-01-09",19.21,19.36,18.9,19.09,2118900,19.09 524 | "2014-01-10",19.17,19.27,18.88,18.97,2347100,18.97 525 | "2014-01-13",18.92,19.18,18.32,18.44,2736700,18.44 526 | "2014-01-14",18.47,18.87,18.44,18.81,1271800,18.81 527 | "2014-01-15",18.85,19.23,18.49,19.01,2256600,19.01 528 | "2014-01-16",19.13,19.62,18.98,19.16,2267200,19.16 529 | "2014-01-17",19.18,19.24,18.56,18.65,2034800,18.65 530 | "2014-01-21",18.76,19.39,18.75,19.38,2034500,19.38 531 | "2014-01-22",19.49,20,19.49,19.95,3128200,19.95 532 | "2014-01-23",19.98,20.55,19.91,20.29,3770500,20.29 533 | "2014-01-24",20.1,20.18,19.52,19.62,3156600,19.62 534 | "2014-01-27",19.49,19.63,18.89,19.2,2120700,19.2 535 | "2014-01-28",19.15,19.67,18.83,19.37,2724400,19.37 536 | "2014-01-29",19.15,19.67,18.7,19.39,4103000,19.39 537 | "2014-01-30",19.39,19.64,19.1,19.47,1565800,19.47 538 | "2014-01-31",19.3,19.34,19.03,19.05,1750800,19.05 539 | "2014-02-03",19.01,19.3,18.72,18.82,2607700,18.82 540 | "2014-02-04",18.95,19.41,18.81,19.28,3460600,19.28 541 | "2014-02-05",19.37,19.41,18.77,19.03,3463100,19.03 542 | "2014-02-06",19.05,19.75,19.03,19.59,1974400,19.59 543 | "2014-02-07",19.66,19.7,19.13,19.21,1790400,19.21 544 | "2014-02-10",19.15,19.2,18.8,18.92,1777200,18.92 545 | "2014-02-11",17.5,17.55,16.92,17.03,16151600,17.03 546 | "2014-02-12",17.02,17.25,16.92,17.11,5260400,17.11 547 | "2014-02-13",17.05,17.49,17.01,17.47,3711500,17.47 548 | "2014-02-14",17.46,17.62,17.13,17.46,3155300,17.46 549 | "2014-02-18",17.43,17.76,17.09,17.33,3196600,17.33 550 | "2014-02-19",17.29,17.85,17.17,17.67,4644100,17.67 551 | "2014-02-20",17.65,17.75,17.23,17.49,2803800,17.49 552 | "2014-02-21",17.56,18.12,17.39,17.95,2444900,17.95 553 | "2014-02-24",18.08,18.58,17.91,18.45,3146900,18.45 554 | "2014-02-25",18.38,18.38,17.73,17.81,2827800,17.81 555 | "2014-02-26",17.67,17.67,16.98,17.54,5303400,17.54 556 | "2014-02-27",17.58,18.18,17,17.17,6158100,17.17 557 | "2014-02-28",17.16,17.83,17.05,17.62,4593600,17.62 558 | "2014-03-03",17.43,18.01,17.42,17.47,2865400,17.47 559 | "2014-03-04",17.64,17.77,17.46,17.74,2134200,17.74 560 | "2014-03-05",17.62,18.19,17.61,18.07,3952500,18.07 561 | "2014-03-06",18.07,18.38,17.84,18.21,2892700,18.21 562 | "2014-03-07",18.25,18.29,17.98,18.13,3517800,18.13 563 | "2014-03-10",18.01,18.1,17.7,18.05,2722700,18.05 564 | "2014-03-11",17.89,18.22,17.47,17.62,2633100,17.62 565 | "2014-03-12",17.49,17.75,17.29,17.48,4395000,17.48 566 | "2014-03-13",17.54,17.74,17.35,17.61,2560100,17.61 567 | "2014-03-14",17.62,17.84,17.47,17.59,1719200,17.59 568 | "2014-03-17",17.5,17.72,16.8,17.67,6390400,17.67 569 | -------------------------------------------------------------------------------- /core/src/main/resources/sp500.csv: -------------------------------------------------------------------------------- 1 | MMM 2 | ABT 3 | ABBV 4 | ANF 5 | ACE 6 | ACN 7 | ACT 8 | ADBE 9 | ADT 10 | AMD 11 | AES 12 | AET 13 | AFL 14 | A 15 | GAS 16 | APD 17 | ARG 18 | AKAM 19 | AA 20 | ALXN 21 | ATI 22 | AGN 23 | ALL 24 | ALTR 25 | MO 26 | AMZN 27 | AEE 28 | AEP 29 | AXP 30 | AIG 31 | AMT 32 | AMP 33 | ABC 34 | AMGN 35 | APH 36 | APC 37 | ADI 38 | AON 39 | APA 40 | AIV 41 | APOL 42 | AAPL 43 | AMAT 44 | ADM 45 | AIZ 46 | T 47 | ADSK 48 | ADP 49 | AN 50 | AZO 51 | AVB 52 | AVY 53 | AVP 54 | BHI 55 | BLL 56 | BAC 57 | BK 58 | BCR 59 | BAX 60 | BBT 61 | BEAM 62 | BDX 63 | BBBY 64 | BMS 65 | BRK.B 66 | BBY 67 | BIIB 68 | BLK 69 | HRB 70 | BMC 71 | BA 72 | BWA 73 | BXP 74 | BSX 75 | BMY 76 | BRCM 77 | BF.B 78 | CHRW 79 | CA 80 | CVC 81 | COG 82 | CAM 83 | CPB 84 | COF 85 | CAH 86 | CFN 87 | KMX 88 | CCL 89 | CAT 90 | CBG 91 | CBS 92 | CELG 93 | CNP 94 | CTL 95 | CERN 96 | CF 97 | SCHW 98 | CHK 99 | CVX 100 | CMG 101 | CB 102 | CI 103 | CINF 104 | CTAS 105 | CSCO 106 | C 107 | CTXS 108 | CLF 109 | CLX 110 | CME 111 | CMS 112 | COH 113 | KO 114 | CCE 115 | CTSH 116 | CL 117 | CMCSA 118 | CMA 119 | CSC 120 | CAG 121 | COP 122 | CNX 123 | ED 124 | STZ 125 | GLW 126 | COST 127 | CVH 128 | COV 129 | CCI 130 | CSX 131 | CMI 132 | CVS 133 | DHI 134 | DHR 135 | DRI 136 | DVA 137 | DF 138 | DE 139 | DELL 140 | DLPH 141 | DNR 142 | XRAY 143 | DVN 144 | DO 145 | DTV 146 | DFS 147 | DISCA 148 | DG 149 | DLTR 150 | D 151 | DOV 152 | DOW 153 | DPS 154 | DTE 155 | DD 156 | DUK 157 | DNB 158 | ETFC 159 | EMN 160 | ETN 161 | EBAY 162 | ECL 163 | EIX 164 | EW 165 | EA 166 | EMC 167 | EMR 168 | ESV 169 | ETR 170 | EOG 171 | EQT 172 | EFX 173 | EQR 174 | EL 175 | EXC 176 | EXPE 177 | EXPD 178 | ESRX 179 | XOM 180 | FFIV 181 | FDO 182 | FAST 183 | FDX 184 | FIS 185 | FITB 186 | FHN 187 | FSLR 188 | FE 189 | FISV 190 | FLIR 191 | FLS 192 | FLR 193 | FMC 194 | FTI 195 | F 196 | FRX 197 | FOSL 198 | BEN 199 | FCX 200 | FTR 201 | GME 202 | GCI 203 | GPS 204 | GRMN 205 | GD 206 | GE 207 | GIS 208 | GPC 209 | GNW 210 | GILD 211 | GS 212 | GT 213 | GOOG 214 | GWW 215 | HAL 216 | HOG 217 | HAR 218 | HRS 219 | HIG 220 | HAS 221 | HCP 222 | HCN 223 | HNZ 224 | HP 225 | HES 226 | HPQ 227 | HD 228 | HON 229 | HRL 230 | HSP 231 | HST 232 | HCBK 233 | HUM 234 | HBAN 235 | ITW 236 | IR 237 | TEG 238 | INTC 239 | ICE 240 | IBM 241 | IFF 242 | IGT 243 | IP 244 | IPG 245 | INTU 246 | ISRG 247 | IVZ 248 | IRM 249 | JBL 250 | JEC 251 | JDSU 252 | JNJ 253 | JCI 254 | JOY 255 | JPM 256 | JNPR 257 | K 258 | KEY 259 | KMB 260 | KIM 261 | KMI 262 | KLAC 263 | KSS 264 | KRFT 265 | KR 266 | LTD 267 | LLL 268 | LH 269 | LRCX 270 | LM 271 | LEG 272 | LEN 273 | LUK 274 | LIFE 275 | LLY 276 | LNC 277 | LLTC 278 | LMT 279 | L 280 | LO 281 | LOW 282 | LSI 283 | LYB 284 | MTB 285 | M 286 | MRO 287 | MPC 288 | MAR 289 | MMC 290 | MAS 291 | MA 292 | MAT 293 | MKC 294 | MCD 295 | MHP 296 | MCK 297 | MJN 298 | MWV 299 | MDT 300 | MRK 301 | MET 302 | PCS 303 | MCHP 304 | MU 305 | MSFT 306 | MOLX 307 | TAP 308 | MDLZ 309 | MON 310 | MNST 311 | MCO 312 | MS 313 | MOS 314 | MSI 315 | MUR 316 | MYL 317 | NBR 318 | NDAQ 319 | NOV 320 | NTAP 321 | NFLX 322 | NWL 323 | NFX 324 | NEM 325 | NWSA 326 | NEE 327 | NKE 328 | NI 329 | NE 330 | NBL 331 | JWN 332 | NSC 333 | NTRS 334 | NOC 335 | NU 336 | NRG 337 | NUE 338 | NVDA 339 | NYX 340 | ORLY 341 | OXY 342 | OMC 343 | OKE 344 | ORCL 345 | OI 346 | PCAR 347 | PLL 348 | PH 349 | PDCO 350 | PAYX 351 | BTU 352 | JCP 353 | PNR 354 | PBCT 355 | POM 356 | PEP 357 | PKI 358 | PRGO 359 | PETM 360 | PFE 361 | PCG 362 | PM 363 | PSX 364 | PNW 365 | PXD 366 | PBI 367 | PCL 368 | PNC 369 | RL 370 | PPG 371 | PPL 372 | PX 373 | PCP 374 | PCLN 375 | PFG 376 | PG 377 | PGR 378 | PLD 379 | PRU 380 | PEG 381 | PSA 382 | PHM 383 | PVH 384 | QEP 385 | PWR 386 | QCOM 387 | DGX 388 | RRC 389 | RTN 390 | RHT 391 | RF 392 | RSG 393 | RAI 394 | RHI 395 | ROK 396 | COL 397 | ROP 398 | ROST 399 | RDC 400 | R 401 | SWY 402 | SAI 403 | CRM 404 | SNDK 405 | SCG 406 | SLB 407 | SNI 408 | STX 409 | SEE 410 | SRE 411 | SHW 412 | SIAL 413 | SPG 414 | SLM 415 | SJM 416 | SNA 417 | SO 418 | LUV 419 | SWN 420 | SE 421 | S 422 | STJ 423 | SWK 424 | SPLS 425 | SBUX 426 | HOT 427 | STT 428 | SRCL 429 | SYK 430 | STI 431 | SYMC 432 | SYY 433 | TROW 434 | TGT 435 | TEL 436 | TE 437 | THC 438 | TDC 439 | TER 440 | TSO 441 | TXN 442 | TXT 443 | HSY 444 | TRV 445 | TMO 446 | TIF 447 | TWX 448 | TWC 449 | TJX 450 | TMK 451 | TSS 452 | TRIP 453 | TSN 454 | TYC 455 | USB 456 | UNP 457 | UNH 458 | UPS 459 | X 460 | UTX 461 | UNM 462 | URBN 463 | VFC 464 | VLO 465 | VAR 466 | VTR 467 | VRSN 468 | VZ 469 | VIAB 470 | V 471 | VNO 472 | VMC 473 | WMT 474 | WAG 475 | DIS 476 | WPO 477 | WM 478 | WAT 479 | WLP 480 | WFC 481 | WDC 482 | WU 483 | WY 484 | WHR 485 | WFM 486 | WMB 487 | WIN 488 | WEC 489 | WPX 490 | WYN 491 | WYNN 492 | XEL 493 | XRX 494 | XLNX 495 | XL 496 | XYL 497 | YHOO 498 | YUM 499 | ZMH 500 | ZION 501 | -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/model/HistoricalPrice.scala: -------------------------------------------------------------------------------- 1 | package kkalc.model 2 | 3 | import org.joda.time.LocalDate 4 | 5 | case class HistoricalPrice(date: LocalDate, 6 | open: Double, 7 | high: Double, 8 | low: Double, 9 | close: Double, 10 | volume: Double, 11 | adjusted: Double) -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/model/Instrument.scala: -------------------------------------------------------------------------------- 1 | package kkalc.model 2 | 3 | import org.joda.time.LocalDate 4 | 5 | sealed trait Instrument 6 | 7 | case class Equity(ticker: String) extends Instrument 8 | 9 | sealed trait EquityOption extends Instrument { 10 | def underlying: Equity 11 | } 12 | 13 | case class CallOption(underlying: Equity, strike: Double, maturity: LocalDate) extends EquityOption 14 | 15 | case class PutOption(underlying: Equity, strike: Double, maturity: LocalDate) extends EquityOption -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/model/Portfolio.scala: -------------------------------------------------------------------------------- 1 | package kkalc.model 2 | 3 | import scalaz.NonEmptyList 4 | 5 | case class Position(instrument: Instrument, n: Int) 6 | 7 | case class Portfolio(positions: NonEmptyList[Position]) -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/pricing/MarketFactors.scala: -------------------------------------------------------------------------------- 1 | package kkalc.pricing 2 | 3 | import kkalc.model.{HistoricalPrice, Equity} 4 | import kkalc.pricing.MarketFactor.{RiskFreeRate, DaysToMaturity, Volatility, Price} 5 | 6 | import org.joda.time.LocalDate 7 | 8 | sealed trait MarketFactor 9 | 10 | object MarketFactor { 11 | 12 | case class Price(equity: Equity) extends MarketFactor 13 | 14 | case class Volatility(equity: Equity) extends MarketFactor 15 | 16 | case class DaysToMaturity(maturity: LocalDate) extends MarketFactor 17 | 18 | case object RiskFreeRate extends MarketFactor 19 | } 20 | 21 | trait MarketFactors { 22 | def apply(factor: MarketFactor): Option[Double] = factor match { 23 | case Price(equity) => price(equity) 24 | case Volatility(equity) => volatility(equity) 25 | case DaysToMaturity(maturity) => daysToMaturity(maturity) 26 | case RiskFreeRate => riskFreeRate 27 | } 28 | 29 | protected def price(equity: Equity): Option[Double] 30 | 31 | protected def volatility(equity: Equity): Option[Double] 32 | 33 | protected def daysToMaturity(maturity: LocalDate): Option[Double] 34 | 35 | protected def riskFreeRate: Option[Double] 36 | } 37 | 38 | trait HistoricalVolatility { 39 | 40 | import spire.algebra.Trig 41 | import spire.implicits._ 42 | import spire.math._ 43 | 44 | protected def volatility(prices: Vector[HistoricalPrice], calc: HistoricalPrice => Double = _.adjusted): Double = { 45 | val loge = implicitly[Trig[Double]].e.log() 46 | def ln(x: Double) = x.log() / loge 47 | stddev(diff(prices.map(calc)).map(ln)) 48 | } 49 | 50 | private[this] def mean[A: Numeric](xs: Vector[A]): A = { 51 | xs.reduceOption(_ + _).map(_ / xs.size) getOrElse implicitly[Numeric[A]].zero 52 | } 53 | 54 | private[this] def stddev[A: Numeric](xs: Vector[A]): A = { 55 | val mu = mean(xs) 56 | xs.map(_ - mu). 57 | map(_.pow(2)). 58 | reduceOption(_ + _). 59 | map(_ / xs.size). 60 | map(_.sqrt()) getOrElse implicitly[Numeric[A]].zero 61 | } 62 | 63 | private[this] def diff[A: Numeric : Trig](xs: Vector[A]): Vector[A] = { 64 | val pl = xs.dropRight(1) 65 | val pr = xs.drop(1) 66 | 67 | (pl zip pr).map { 68 | case (l, r) => r / l 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/pricing/MarketFactorsGenerator.scala: -------------------------------------------------------------------------------- 1 | package kkalc.pricing 2 | 3 | import kkalc.model.Equity 4 | 5 | import org.apache.commons.math.random.{CorrelatedRandomVectorGenerator, GaussianRandomGenerator, JDKRandomGenerator} 6 | import org.apache.commons.math.stat.correlation.Covariance 7 | import org.joda.time.{Days, LocalDate} 8 | 9 | import scalaz.concurrent.Task 10 | import scalaz.stream.Process 11 | import scalaz.stream.io._ 12 | import kkalc.pricing.OneDayMarketFactorsGenerator.CurrentFactors 13 | 14 | trait MarketFactorsGenerator { 15 | def factors: Process[Task, MarketFactors] 16 | } 17 | 18 | /** 19 | * Generate one-day market factors forecast base on given 'current' market factors 20 | */ 21 | 22 | object OneDayMarketFactorsGenerator { 23 | case class CurrentFactors(price: Double, vol: Double, priceHistory: Vector[Double]) 24 | } 25 | 26 | class OneDayMarketFactorsGenerator(date: LocalDate, rate: Double, currentFactors: Map[Equity, CurrentFactors]) extends MarketFactorsGenerator with Serializable { 27 | 28 | private val nextDay = date.plusDays(1) 29 | 30 | // Generate correlated vectors 31 | private def generator = { 32 | val rg = new JDKRandomGenerator 33 | val gaussian = new GaussianRandomGenerator(rg) 34 | val priceHistory = currentFactors.values.map(_.priceHistory.toArray).toArray 35 | val covariance = new Covariance(priceHistory) 36 | val covarianceMatrix = covariance.getCovarianceMatrix 37 | 38 | new CorrelatedRandomVectorGenerator(covarianceMatrix, 1.0e-12 * covarianceMatrix.getNorm, gaussian) 39 | } 40 | 41 | case class GeneratedMarketFactors(generatedPrice: Map[Equity, Double]) extends MarketFactors { 42 | protected def riskFreeRate = Some(rate) 43 | protected def price(equity: Equity) = generatedPrice.get(equity) 44 | protected def volatility(equity: Equity) = currentFactors.get(equity).map(_.vol) 45 | protected def daysToMaturity(maturity: LocalDate) = 46 | if (nextDay.isBefore(maturity)) Some(Days.daysBetween(nextDay, maturity).getDays) else None 47 | } 48 | 49 | def factors: Process[Task, MarketFactors] = resource(Task.delay(generator))( 50 | _ => Task.delay(())) { 51 | gen => Task.delay { 52 | val correlated = currentFactors.keys zip gen.nextVector().map(v => v) 53 | val generatedPrice: Map[Equity, Double] = correlated.toSeq.map({ 54 | case (equity, randomValue) => (equity, currentFactors(equity).price + randomValue * currentFactors(equity).vol) 55 | })(scala.collection.breakOut) 56 | 57 | GeneratedMarketFactors(generatedPrice) 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/pricing/PortfolioPricer.scala: -------------------------------------------------------------------------------- 1 | package kkalc.pricing 2 | 3 | import kkalc.model._ 4 | import kkalc.pricing.PortfolioPricingError.UnderlyingPricingErrors 5 | 6 | import scalaz._, syntax.apply._ 7 | 8 | sealed trait PortfolioPricingError 9 | 10 | object PortfolioPricingError { 11 | 12 | case class UnderlyingPricingErrors(errors: Vector[PricingError]) extends PortfolioPricingError 13 | 14 | } 15 | 16 | object PortfolioPricer { 17 | 18 | def price(portfolio: Portfolio)(implicit factors: MarketFactors): PortfolioPricingError \/ Double = { 19 | def martToMarket[I <: Instrument](instrument: I)(implicit pricer: Pricer[I]): PricingError \/ Double = { 20 | pricer.price(instrument) 21 | } 22 | 23 | // Mark all positions to market 24 | val mtm: NonEmptyList[PricingError \/ Double] = portfolio.positions.map { 25 | case Position(equity: Equity, n) => martToMarket(equity).map( _ * n) 26 | case Position(option: EquityOption, n) => martToMarket(option).map( _ * n) 27 | } 28 | 29 | // Sum all MTM values aggregating errors 30 | val sum: NonEmptyList[PricingError] \/ Double = \/.fromEither( 31 | mtm.map(_.validation.toValidationNel).stream.reduceLeft((l, r) => (l |@| r)(_ + _)).toEither 32 | ) 33 | 34 | sum.fold( 35 | error => -\/(UnderlyingPricingErrors(error.stream.toVector)), 36 | success => \/-(success) 37 | ) 38 | } 39 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/pricing/Pricer.scala: -------------------------------------------------------------------------------- 1 | package kkalc.pricing 2 | 3 | import kkalc.model._ 4 | import kkalc.pricing.MarketFactor._ 5 | import kkalc.pricing.PricingError.MissingMarketFactors 6 | 7 | import org.apache.commons.math.distribution.NormalDistributionImpl 8 | import org.joda.time.LocalDate 9 | 10 | import scala.annotation.implicitNotFound 11 | 12 | import scalaz.NonEmptyList.nels 13 | import scalaz.{\/, NonEmptyList, -\/, \/-, ValidationNel} 14 | 15 | sealed trait PricingError 16 | 17 | object PricingError { 18 | case class MissingMarketFactors(factors: NonEmptyList[MarketFactor]) extends PricingError 19 | } 20 | 21 | /** 22 | * Price instrument given market factors affecting it's price 23 | */ 24 | @implicitNotFound(msg = "Can't find pricer for instrument type '${I}'") 25 | trait Pricer[I <: Instrument] { 26 | def price(instrument: I)(implicit factors: MarketFactors): PricingError \/ Double 27 | } 28 | 29 | 30 | object Pricer extends PricerImplicits 31 | 32 | trait PricerImplicits { 33 | 34 | // Get price value from market factors 35 | implicit object EquityPricer extends Pricer[Equity] { 36 | def price(equity: Equity)(implicit factors: MarketFactors): PricingError \/ Double = { 37 | val priceFactor = Price(equity) 38 | factors(priceFactor) map (v => \/-(v)) getOrElse -\/(MissingMarketFactors(nels(priceFactor))) 39 | } 40 | } 41 | 42 | /** 43 | * Use Black-Scholes formula to price Option 44 | * http://en.wikipedia.org/wiki/Black–Scholes_model 45 | */ 46 | implicit object OptionPricer extends Pricer[EquityOption] { 47 | 48 | import spire.algebra.Trig 49 | import spire.implicits._ 50 | import spire.math._ 51 | 52 | private[pricing] val VolatilityAnnualizationFactor = Math.sqrt(260) 53 | 54 | private[pricing] case class Parameters(daysToMaturity: Int, 55 | spot: Double, 56 | strike: Double, 57 | riskFreeRate: Double, 58 | volatility: Double) { 59 | def timeToMaturity = daysToMaturity / 365.0 60 | def annualVolatility = volatility * VolatilityAnnualizationFactor 61 | } 62 | 63 | override def price(option: EquityOption)(implicit factors: MarketFactors): PricingError \/ Double = { 64 | 65 | def factor(factor: MarketFactor): MissingMarketFactors \/ Double = { 66 | factors(factor).map(v => \/-(v)) getOrElse -\/(MissingMarketFactors(nels(factor))) 67 | } 68 | 69 | def parameters(equity: Equity, strike: Double, maturity: LocalDate): PricingError \/ Parameters = { 70 | import scalaz.syntax.applicative._ 71 | 72 | 73 | val daysToMaturity = factor(DaysToMaturity(maturity)).validation.toValidationNel 74 | val spot = factor(Price(equity)).validation.toValidationNel 75 | val rate = factor(RiskFreeRate).validation.toValidationNel 76 | val sigma = factor(Volatility(equity)).validation.toValidationNel 77 | 78 | val parameters: ValidationNel[MissingMarketFactors, Parameters] = (daysToMaturity |@| spot |@| rate |@| sigma) { 79 | case (days, sp, rt, si) => Parameters(days.toInt(), sp, strike, rt, si) 80 | } 81 | 82 | parameters.fold(missingFactors => -\/(MissingMarketFactors(missingFactors.flatMap(_.factors))), p => \/-(p)) 83 | } 84 | 85 | option match { 86 | case CallOption(equity, strike, maturity) => parameters(equity, strike, maturity).map(call) 87 | case PutOption(equity, strike, maturity) => parameters(equity, strike, maturity).map(put) 88 | } 89 | } 90 | 91 | private[this] val normalDistribution = new NormalDistributionImpl(0, 1) 92 | private[this] val loge = implicitly[Trig[Double]].e.log() 93 | private[this] def ln(x: Double) = x.log() / loge 94 | 95 | private[this] def d1(parameters: Parameters): Double = { 96 | import parameters._ 97 | 98 | val l = 1 / (annualVolatility * sqrt(timeToMaturity)) 99 | val r = ln(spot / strike) + (riskFreeRate + (annualVolatility pow 2) / 2) * timeToMaturity 100 | 101 | l * r 102 | } 103 | 104 | private[this] def d2(parameters: Parameters): Double = { 105 | import parameters._ 106 | 107 | val l = 1 / (annualVolatility * sqrt(timeToMaturity)) 108 | val r = ln(spot / strike) + (riskFreeRate - (annualVolatility pow 2) / 2) * timeToMaturity 109 | 110 | l * r 111 | } 112 | 113 | private[this] def N(v: Double) = normalDistribution.cumulativeProbability(v.toDouble) 114 | 115 | private[pricing] def call(parameters: Parameters): Double = { 116 | import parameters._ 117 | 118 | val D1 = d1(parameters) 119 | val D2 = d2(parameters) 120 | 121 | N(D1) * spot - N(D2) * strike * exp(-1 * riskFreeRate * timeToMaturity) 122 | } 123 | 124 | private[pricing] def put(parameters: Parameters): Double = { 125 | import parameters._ 126 | 127 | val D1 = d1(parameters) 128 | val D2 = d2(parameters) 129 | 130 | N(-1 * D2) * strike * exp(-1 * riskFreeRate * timeToMaturity) - N(-1 * D1) * spot 131 | } 132 | } 133 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/service/MarketDataModule.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service 2 | 3 | import kkalc.model.{HistoricalPrice, Equity} 4 | 5 | import org.joda.time.LocalDate 6 | 7 | import scalaz.\/ 8 | 9 | trait MarketDataModule { 10 | 11 | protected def marketData: MarketData 12 | 13 | sealed trait MarketDataError 14 | case class MarketDataUnavailable(error: Throwable) extends MarketDataError 15 | 16 | trait MarketData { 17 | def historicalPrices(equity: Equity, from: LocalDate, to: LocalDate): MarketDataError \/ Vector[HistoricalPrice] 18 | 19 | def historicalPrice(equity: Equity, date: LocalDate): MarketDataError \/ Option[HistoricalPrice] 20 | } 21 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/service/MarketFactorsModule.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service 2 | 3 | import kkalc.model.Portfolio 4 | import kkalc.pricing.{MarketFactorsGenerator, MarketFactors} 5 | import org.joda.time.LocalDate 6 | 7 | 8 | trait MarketFactorsModule { 9 | 10 | case class MarketFactorsParameters(riskFreeRate: Double = 0.05, horizon: Int = 1000) 11 | 12 | /** 13 | * Generate one-day forecast for Market Factors using historical price correlation 14 | */ 15 | protected def oneDayMarketFactors(portfolio: Portfolio, date: LocalDate)(implicit parameters: MarketFactorsParameters): MarketFactorsGenerator 16 | 17 | /** 18 | * Get Market Factors at given date 19 | */ 20 | protected def marketFactors(date: LocalDate)(implicit parameters: MarketFactorsParameters): MarketFactors 21 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/service/MarketRiskCalculator.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service 2 | 3 | import kkalc.model.Portfolio 4 | import org.joda.time.LocalDate 5 | 6 | trait MarketRiskCalculator { 7 | 8 | type MarketRisk <: MarketRiskLike 9 | 10 | trait MarketRiskLike { 11 | def VaR(p: Double): Double 12 | def conditionalVaR(p: Double): Double 13 | } 14 | 15 | def marketRisk(portfolio: Portfolio, date: LocalDate): MarketRisk 16 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/service/historical/HistoricalMarketData.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service.historical 2 | 3 | import kkalc.model.{HistoricalPrice, Equity} 4 | import kkalc.service.MarketDataModule 5 | 6 | import org.joda.time.LocalDate 7 | import org.joda.time.format.DateTimeFormat 8 | import org.slf4j.LoggerFactory 9 | 10 | import scala.util.{Success, Failure, Try} 11 | import scalaz.{\/, \/-, -\/} 12 | 13 | 14 | trait HistoricalMarketData extends MarketDataModule { 15 | 16 | protected object marketData extends MarketData { 17 | private val log = LoggerFactory.getLogger(classOf[MarketData]) 18 | 19 | private val DateFormat = DateTimeFormat.forPattern("YYYY-MM-dd") 20 | 21 | private def tryLoad(ticker: String) = Try { 22 | val is = this.getClass.getResourceAsStream(s"/price/$ticker.csv") 23 | assume(is != null, s"Price history for '$ticker' is unavailable") 24 | 25 | val lines = scala.io.Source.fromInputStream(is).getLines().drop(1) 26 | val split = lines.map(_.split(",").toSeq) 27 | 28 | val prices = split map { 29 | case line if line.length == 7 => HistoricalPrice( 30 | DateFormat.parseLocalDate(line(0).drop(1).dropRight(1)), 31 | line(1).toDouble, 32 | line(2).toDouble, 33 | line(3).toDouble, 34 | line(4).toDouble, 35 | line(5).toDouble, 36 | line(6).toDouble) 37 | 38 | case s => sys.error(s"Can't parse price line '$s'") 39 | } 40 | 41 | prices.toVector 42 | } 43 | 44 | def historicalPrices(equity: Equity, from: LocalDate, to: LocalDate) = { 45 | log.debug(s"Get equity historical prices for '${equity.ticker}' from '$from' to '$to'") 46 | 47 | def inRange(price: HistoricalPrice): Boolean = { 48 | !price.date.isBefore(from) && !price.date.isAfter(to) 49 | } 50 | 51 | tryLoad(equity.ticker) match { 52 | case Success(prices) => \/-(prices.filter(inRange)) 53 | case Failure(err) => -\/(MarketDataUnavailable(err)) 54 | } 55 | } 56 | 57 | def historicalPrice(equity: Equity, date: LocalDate): MarketDataError \/ Option[HistoricalPrice] = { 58 | historicalPrices(equity, date, date).map(_.headOption) 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/service/historical/HistoricalMarketFactors.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service.historical 2 | 3 | import kkalc.model.{HistoricalPrice, EquityOption, Equity, Portfolio} 4 | import kkalc.pricing.{OneDayMarketFactorsGenerator, MarketFactorsGenerator, HistoricalVolatility, MarketFactors} 5 | import kkalc.service.{MarketDataModule, MarketFactorsModule} 6 | 7 | import org.joda.time.{Days, LocalDate} 8 | import org.slf4j.LoggerFactory 9 | import kkalc.pricing.OneDayMarketFactorsGenerator.CurrentFactors 10 | 11 | trait HistoricalMarketFactors extends MarketFactorsModule with MarketDataModule with HistoricalVolatility { module => 12 | 13 | protected def oneDayMarketFactors(portfolio: Portfolio, date: LocalDate) 14 | (implicit parameters: MarketFactorsParameters): MarketFactorsGenerator = { 15 | 16 | // Collect equities & underlying equities 17 | val equities = portfolio.positions.map(_.instrument).map { 18 | case e: Equity => e 19 | case o: EquityOption => o.underlying 20 | }.sortBy(_.ticker) 21 | 22 | val currentFactors: Map[Equity, CurrentFactors] = equities.list.map(equity => { 23 | 24 | def error(err: MarketDataError) = sys.error(s"Market data for $equity is unavailable. Error: $err") 25 | def adjustedPrice(h: Option[HistoricalPrice]) = h.map(_.adjusted) getOrElse sys.error(s"Price for $equity at $date is not defined") 26 | 27 | val price = marketData.historicalPrice(equity, date).fold(error, adjustedPrice) 28 | val priceHistory = marketData.historicalPrices(equity, date.minusDays(parameters.horizon), date).fold(error, identity) 29 | val vol = volatility(priceHistory) 30 | 31 | equity -> CurrentFactors(price, vol, priceHistory.map(_.adjusted)) 32 | 33 | })(scala.collection.breakOut) 34 | 35 | new OneDayMarketFactorsGenerator(date, parameters.riskFreeRate, currentFactors) 36 | } 37 | 38 | protected def marketFactors(date: LocalDate)(implicit parameters: MarketFactorsParameters) = new MarketFactors { 39 | private val log = LoggerFactory.getLogger(classOf[MarketFactors]) 40 | 41 | log.debug(s"Construct historical market factors. Date = $date, volatility horizon = ${parameters.horizon} days") 42 | 43 | override protected def price(equity: Equity): Option[Double] = { 44 | log.debug(s"Get price for $equity at $date") 45 | marketData.historicalPrice(equity, date).fold(_ => None, _.map(_.adjusted)) 46 | } 47 | 48 | override protected def volatility(equity: Equity): Option[Double] = { 49 | log.debug(s"Get volatility for $equity") 50 | val prices = marketData. 51 | historicalPrices(equity, date.minusDays(parameters.horizon), date). 52 | fold(_ => None, p => Some(p)) 53 | 54 | prices.map(p => module.volatility(p)) 55 | } 56 | 57 | override protected def daysToMaturity(maturity: LocalDate): Option[Double] = { 58 | if (date.isBefore(maturity)) { 59 | Some(Days.daysBetween(date, maturity).getDays) 60 | 61 | } else None 62 | } 63 | 64 | protected def riskFreeRate: Option[Double] = Some(parameters.riskFreeRate) 65 | } 66 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/service/simulation/ClusterPortfolioValueSimulation.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service.simulation 2 | 3 | import akka.actor._ 4 | import akka.cluster.ClusterEvent.{CurrentClusterState, MemberUp} 5 | import akka.cluster.{Member, MemberStatus, Cluster} 6 | import akka.pattern.ask 7 | import akka.pattern.pipe 8 | import akka.util.Timeout 9 | 10 | import com.google.common.util.concurrent.ThreadFactoryBuilder 11 | import com.typesafe.config.Config 12 | 13 | import java.util.concurrent.Executors 14 | 15 | import kkalc.model.{Position, Portfolio} 16 | import kkalc.pricing.{MarketFactorsGenerator, PortfolioPricer} 17 | import kkalc.service.MarketFactorsModule 18 | 19 | import messages._ 20 | 21 | import scala.collection.mutable.ListBuffer 22 | import scala.concurrent.{Promise, Future} 23 | import scala.concurrent.duration._ 24 | import scala.util.{Success, Failure} 25 | 26 | import scalaz.NonEmptyList.nel 27 | import scalaz.concurrent.Task 28 | import scalaz.stream.io._ 29 | import scalaz.{-\/, \/-} 30 | 31 | 32 | object messages { 33 | case object WakeUp 34 | 35 | case object RegisterBackend 36 | 37 | case class RunSimulation(positions: List[Position], simulations: Int, generator: MarketFactorsGenerator) 38 | 39 | case class SimulationResponse(v: Vector[Double]) 40 | } 41 | 42 | trait ClusterPortfolioValueSimulation extends PortfolioValueSimulation { 43 | self: MarketFactorsModule with MonteCarloMarketRiskCalculator => 44 | 45 | def systemName: String 46 | 47 | def systemConfig: Config 48 | 49 | private[this] lazy val system = ActorSystem(systemName, systemConfig) 50 | private[this] lazy val backendManager = system.actorOf(Props[BackendNodesManager], "backendManager") 51 | 52 | private[this] implicit val timeout = Timeout(10.seconds) 53 | 54 | def join(address: Address) { 55 | Cluster(system).join(address) 56 | backendManager ! WakeUp 57 | } 58 | 59 | def shutdown() { 60 | system.shutdown() 61 | } 62 | 63 | def simulation(portfolio: Portfolio, simulations: Int) = channel[MarketFactorsGenerator, Simulations] { 64 | generator => 65 | import scala.concurrent.ExecutionContext.Implicits.global 66 | 67 | Task.async[Simulations](cb => { 68 | (backendManager ? RunSimulation(portfolio.positions.list, simulations, generator)).onComplete { 69 | case Failure(err) => cb(-\/(err)) 70 | case Success(SimulationResponse(s)) => cb(\/-(Simulations(s))) 71 | case Success(u) => cb(-\/(new IllegalStateException(s"Unsupported backend response: $u"))) 72 | } 73 | }) 74 | } 75 | } 76 | 77 | /** 78 | * Manage available simulation backend nodes 79 | */ 80 | private[simulation] class BackendNodesManager extends Actor with ActorLogging { 81 | 82 | import scala.concurrent.ExecutionContext.Implicits.global 83 | 84 | private[this] val backendNodes = ListBuffer.empty[ActorRef] 85 | private[this] var jobCounter = 0 86 | 87 | private[this] implicit val timeout = Timeout(10.seconds) 88 | 89 | override def receive: Receive = { 90 | case WakeUp => log.info("Wake up backend nodes manager") 91 | 92 | case run: RunSimulation => 93 | jobCounter += 1 94 | val backendN = jobCounter % backendNodes.size 95 | log.debug(s"Pass simulation request to backend: $backendN") 96 | backendNodes(backendN) ? run pipeTo sender() 97 | 98 | case RegisterBackend if !backendNodes.contains(sender()) => 99 | context watch sender() 100 | backendNodes += sender() 101 | log.debug(s"Added new backend. Total: ${backendNodes.size}. Node: [${sender()}}]") 102 | 103 | case Terminated(backEnd) if backendNodes.contains(backEnd) => 104 | backendNodes -= sender() 105 | log.debug(s"Removed terminated backend. Total: ${backendNodes.size}. Terminated node: [${sender()}}]") 106 | } 107 | } 108 | 109 | /** 110 | * Backend actor that runs Portfolio Simulation 111 | */ 112 | class PortfolioValueSimulationBackend extends Actor with ActorLogging { 113 | 114 | import scala.concurrent.ExecutionContext.Implicits.global 115 | 116 | private val cluster = Cluster(context.system) 117 | 118 | private lazy val executor = { 119 | val threadFactory = new ThreadFactoryBuilder().setNameFormat("simulation-pool-%d").setDaemon(true).build() 120 | Executors.newCachedThreadPool(threadFactory) 121 | } 122 | 123 | override def preStart(): Unit = cluster.subscribe(self, classOf[MemberUp]) 124 | 125 | override def postStop(): Unit = cluster.unsubscribe(self) 126 | 127 | def receive = { 128 | case RunSimulation(portfolio, simulations, generator) => 129 | runSimulation(Portfolio(nel(portfolio.head, portfolio.tail)), simulations, generator) pipeTo sender() 130 | 131 | case state: CurrentClusterState => 132 | state.members.filter(_.status == MemberStatus.Up) foreach register 133 | 134 | case MemberUp(member) => 135 | register(member) 136 | } 137 | 138 | private def register(member: Member): Unit = 139 | if (member.hasRole("calculator")) { 140 | val backendManager = context.actorSelection(RootActorPath(member.address) / "user" / "backendManager") 141 | backendManager ! RegisterBackend 142 | } 143 | 144 | private def runSimulation(portfolio: Portfolio, simulations: Int, generator: MarketFactorsGenerator): Future[SimulationResponse] = { 145 | val process = generator.factors.take(simulations).map { 146 | implicit factors => 147 | PortfolioPricer.price(portfolio).fold(err => sys.error(s"Failed to price portfolio: $err"), identity) 148 | } 149 | 150 | // Fork simulations into separate thread pool 151 | val task = Task.fork { 152 | log.debug(s"Simulate $simulations portfolio values for [${portfolio.positions.list.mkString(", ")}]") 153 | process.runLog.map(portfolioValues => portfolioValues.toVector) 154 | }(executor) 155 | 156 | val p = Promise[SimulationResponse]() 157 | 158 | task.runAsync { 159 | case -\/(err) => p.failure(err) 160 | case \/-(result) => p.success(SimulationResponse(result)) 161 | } 162 | 163 | p.future 164 | } 165 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/service/simulation/MonteCarloMarketRiskCalculator.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service.simulation 2 | 3 | import kkalc.model.Portfolio 4 | import kkalc.pricing.{MarketFactorsGenerator, PortfolioPricer} 5 | import kkalc.service.{MarketDataModule, MarketFactorsModule, MarketRiskCalculator} 6 | 7 | import org.joda.time.LocalDate 8 | 9 | import scalaz.Monoid 10 | import scalaz.concurrent.Task 11 | import scalaz.stream._ 12 | 13 | trait PortfolioValueSimulation { 14 | self: MarketFactorsModule with MonteCarloMarketRiskCalculator => 15 | 16 | /** 17 | * Scalaz-Stream Channel that for given market factors generator 18 | * runs defined number of simulations and produce MarketRisk 19 | */ 20 | def simulation(portfolio: Portfolio, simulations: Int): Channel[Task, MarketFactorsGenerator, Simulations] 21 | } 22 | 23 | abstract class MonteCarloMarketRiskCalculator(simulations: Int = 1000000, splitFactor: Int = 10, concurrencyLevel: Int = 10) 24 | extends MarketRiskCalculator with MarketDataModule with MarketFactorsModule with PortfolioValueSimulation { calculator => 25 | 26 | case class Simulations(simulations: Vector[Double]) 27 | 28 | private[this] implicit object M extends Monoid[Simulations] { 29 | val zero = Simulations(simulations = Vector.empty) 30 | 31 | def append(f1: Simulations, f2: => Simulations) = 32 | Simulations(simulations = f1.simulations ++ f2.simulations) 33 | } 34 | 35 | /** 36 | * Get market risk from Portfolio value simulations 37 | * 38 | * @param initialValue Initial Portfolio value 39 | * @param simulations Portfolio value simulations 40 | */ 41 | class MarketRisk(initialValue: Double, simulations: Simulations) extends MarketRiskLike { 42 | 43 | private lazy val sortedPnL = simulations.simulations.map(_ - initialValue).sorted 44 | 45 | private def threshold(p: Double) = ((1 - p) * simulations.simulations.size).toInt 46 | 47 | private def mean[T](ts: Iterable[T])(implicit num: Numeric[T]) = { 48 | num.toDouble(ts.sum) / ts.size 49 | } 50 | 51 | def VaR(p: Double): Double = sortedPnL(threshold(p)) 52 | 53 | def conditionalVaR(p: Double): Double = mean(sortedPnL.take(threshold(p))) 54 | } 55 | 56 | private implicit object Config extends MarketFactorsParameters(riskFreeRate = 0.05, horizon = 1000) 57 | 58 | private val P = Process 59 | 60 | override def marketRisk(portfolio: Portfolio, date: LocalDate): MarketRisk = { 61 | 62 | // Get initial Portfolio value 63 | implicit val initialFactors = marketFactors(date) 64 | val initialPortfolioValue = 65 | PortfolioPricer.price(portfolio).fold(err => sys.error(s"Failed price portfolio: $err"), identity) 66 | 67 | // Run portfolio values simulation 68 | val oneSimulation = simulations / splitFactor 69 | val simulationChannel = simulation(portfolio, oneSimulation) 70 | 71 | val generator = oneDayMarketFactors(portfolio, date) 72 | 73 | val process = P. 74 | range(0, splitFactor). 75 | map(_ => generator). 76 | concurrently(concurrencyLevel)(simulationChannel). 77 | runFoldMap(identity) 78 | 79 | // Produce market-risk object from initial value and simulated values 80 | new MarketRisk(initialPortfolioValue, process.run) 81 | } 82 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/service/simulation/SingleNodePortfolioValueSimulation.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service.simulation 2 | 3 | import com.google.common.util.concurrent.ThreadFactoryBuilder 4 | 5 | import java.util.concurrent.Executors 6 | 7 | import kkalc.model.Portfolio 8 | import kkalc.pricing.{MarketFactorsGenerator, PortfolioPricer} 9 | import kkalc.service.MarketFactorsModule 10 | 11 | import org.slf4j.LoggerFactory 12 | 13 | import scalaz.concurrent.Task 14 | import scalaz.stream.io.channel 15 | 16 | trait SingleNodePortfolioValueSimulation extends PortfolioValueSimulation { 17 | self: MarketFactorsModule with MonteCarloMarketRiskCalculator => 18 | 19 | private[this] val log = LoggerFactory.getLogger(classOf[SingleNodePortfolioValueSimulation]) 20 | 21 | private[this] lazy val executor = { 22 | val threadFactory = new ThreadFactoryBuilder().setNameFormat("simulation-pool-%d").setDaemon(true).build() 23 | Executors.newCachedThreadPool(threadFactory) 24 | } 25 | 26 | /** 27 | * Scalaz-Stream Channel that for given market factors generator 28 | * runs defined number of simulations and produce MarketRisk 29 | */ 30 | def simulation(portfolio: Portfolio, simulations: Int) = channel[MarketFactorsGenerator, Simulations] { 31 | generator => 32 | 33 | val process = generator.factors.take(simulations).map { 34 | implicit factors => 35 | PortfolioPricer.price(portfolio).fold(err => sys.error(s"Failed to price portfolio: $err"), identity) 36 | } 37 | 38 | // Fork simulations into separate thread pool 39 | Task.fork { 40 | log.debug(s"Simulate $simulations portfolio values for $portfolio") 41 | process.runLog.map(portfolioValues => Simulations(portfolioValues.toVector)) 42 | }(executor) 43 | } 44 | } -------------------------------------------------------------------------------- /core/src/main/scala/kkalc/service/simulation/package.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service 2 | 3 | import scalaz.concurrent.Task 4 | import scalaz.stream._ 5 | 6 | package object simulation { 7 | protected val P = Process 8 | 9 | implicit class ConcurrentProcess[O](val process: Process[Task, O]) { 10 | /** 11 | * Run process through channel with given level of concurrency 12 | */ 13 | def concurrently[O2](concurrencyLevel: Int)(f: Channel[Task, O, O2]): Process[Task, O2] = { 14 | val actions = 15 | process. 16 | zipWith(f)((data, f) => f(data)) 17 | 18 | val nestedActions = 19 | actions.map(P.eval) 20 | 21 | merge.mergeN(concurrencyLevel)(nestedActions) 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /core/src/test/scala/kkalc/pricing/OptionPricerSpec.scala: -------------------------------------------------------------------------------- 1 | package kkalc.pricing 2 | 3 | import kkalc.model.{PutOption, CallOption, Equity} 4 | import kkalc.pricing.MarketFactor.{RiskFreeRate, Volatility, DaysToMaturity, Price} 5 | import kkalc.pricing.PricingError.MissingMarketFactors 6 | import org.joda.time.LocalDate 7 | import org.scalamock.scalatest.MockFactory 8 | import org.scalatest.{ShouldMatchers, FlatSpec} 9 | import scalaz.NonEmptyList 10 | 11 | class OptionPricerSpec extends FlatSpec with ShouldMatchers with MockFactory with PricerImplicits { 12 | 13 | val maturity = new LocalDate() 14 | 15 | val daysToMaturity = 30 16 | val spot = 100 17 | val strike = 100 18 | val riskFreeRate = 0.05 19 | val volatility = 0.25 / OptionPricer.VolatilityAnnualizationFactor 20 | 21 | val AAPL = Equity("AAPL") 22 | 23 | val Call = CallOption(AAPL, strike, maturity) 24 | val Put = PutOption(AAPL, strike, maturity) 25 | 26 | implicit def factors = { 27 | val factors = mock[MarketFactors] 28 | (factors.apply _).expects(DaysToMaturity(maturity)).returning(Some(daysToMaturity)).anyNumberOfTimes() 29 | (factors.apply _).expects(RiskFreeRate).returning(Some(riskFreeRate)).anyNumberOfTimes() 30 | (factors.apply _).expects(Price(AAPL)).returning(Some(spot)).anyNumberOfTimes() 31 | (factors.apply _).expects(Volatility(AAPL)).returning(Some(volatility)).anyNumberOfTimes() 32 | (factors.apply _).expects(*).returning(None).anyNumberOfTimes() 33 | (factors.apply _).expects(*).returning(None).anyNumberOfTimes() 34 | factors 35 | } 36 | 37 | "Option pricer" should "correctly price Call Option" in { 38 | val price = OptionPricer.price(Call) 39 | assert(price.isRight) 40 | price.toOption.get.toDouble should (be >= 3.062 and be <= 3.064) 41 | } 42 | 43 | it should "correctly price Put Option" in { 44 | val price = OptionPricer.price(Put) 45 | assert(price.isRight) 46 | price.toOption.get.toDouble should (be >= 2.651 and be <= 2.653) 47 | } 48 | 49 | it should "collect all missing factors" in { 50 | val underlying = Equity("NoSuchEquity") 51 | val price = OptionPricer.price(CallOption(underlying, 200, maturity)) 52 | assert(price.isLeft) 53 | assert(price.toEither.left.get.isInstanceOf[MissingMarketFactors]) 54 | 55 | val missingFactors = price.toEither.left.get.asInstanceOf[MissingMarketFactors] 56 | assert(missingFactors.factors == NonEmptyList(Price(underlying), Volatility(underlying))) 57 | } 58 | } -------------------------------------------------------------------------------- /core/src/test/scala/kkalc/pricing/PortfolioPricerSpec.scala: -------------------------------------------------------------------------------- 1 | package kkalc.pricing 2 | 3 | import kkalc.model.{Portfolio, Position, Equity} 4 | import kkalc.pricing.MarketFactor.Price 5 | import kkalc.pricing.PortfolioPricingError.UnderlyingPricingErrors 6 | import kkalc.pricing.PricingError.MissingMarketFactors 7 | import kkalc.service.historical.{HistoricalMarketFactors, HistoricalMarketData} 8 | import org.joda.time.LocalDate 9 | import org.scalatest.FlatSpec 10 | import scalaz.NonEmptyList 11 | 12 | class PortfolioPricerSpec extends FlatSpec with HistoricalMarketFactors with HistoricalMarketData { 13 | 14 | val AAPL = Equity("AAPL") 15 | val Apple = Position(AAPL, 10) 16 | 17 | val AMZN = Equity("AMZN") 18 | val Amazon = Position(AMZN, 30) 19 | 20 | // Valuation date 21 | val date = new LocalDate(2007, 1, 3) 22 | 23 | implicit val factors = marketFactors(date)(MarketFactorsParameters()) 24 | 25 | "Portfolio pricer" should "price portfolio with one position" in { 26 | val portfolio = Portfolio(NonEmptyList(Apple)) 27 | 28 | val price = PortfolioPricer.price(portfolio) 29 | assert(price.isRight) 30 | assert(price.toOption.get == (80.54 * 10)) 31 | } 32 | 33 | it should "price portfolio with two positions" in { 34 | val portfolio = Portfolio(NonEmptyList(Apple, Amazon)) 35 | 36 | val price = PortfolioPricer.price(portfolio) 37 | assert(price.isRight) 38 | assert(price.toOption.get == 80.54 * 10 + 38.7 * 30) 39 | } 40 | 41 | it should "fail to price portfolio with missing factor" in { 42 | val NO_TICKER = Equity("NO_TICKER") 43 | val BadCompany = Position(NO_TICKER, 30) 44 | 45 | val portfolio = Portfolio(NonEmptyList(Apple, Amazon, BadCompany)) 46 | 47 | val price = PortfolioPricer.price(portfolio) 48 | assert(price.isLeft) 49 | 50 | val error = price.toEither.left.get 51 | assert(error.isInstanceOf[UnderlyingPricingErrors]) 52 | 53 | val underlyingErrors = error.asInstanceOf[UnderlyingPricingErrors].errors 54 | assert(underlyingErrors.length == 1) 55 | assert(underlyingErrors.head == MissingMarketFactors(NonEmptyList(Price(NO_TICKER)))) 56 | } 57 | } -------------------------------------------------------------------------------- /core/src/test/scala/kkalc/service/HistoricalMarketDataSpec.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service 2 | 3 | import kkalc.model.Equity 4 | import kkalc.service.historical.HistoricalMarketData 5 | import org.joda.time.LocalDate 6 | import org.scalatest.{GivenWhenThen, FlatSpec} 7 | 8 | class HistoricalMarketDataSpec extends FlatSpec with GivenWhenThen with HistoricalMarketData { 9 | 10 | val Apple = Equity("AAPL") 11 | val BadTicker = Equity("BADTICKER") 12 | 13 | val from = new LocalDate(2007, 1, 1) 14 | val to = new LocalDate(2014, 1, 1) 15 | 16 | "Market Data Service" should "load historical prices for 'AAPL'" in { 17 | Given("historical prices for Apple") 18 | val prices = marketData.historicalPrices(Apple, from, to) 19 | assert(prices.isRight) 20 | 21 | Then("price for should match line: '\"2007-01-03\",86.29,86.58,81.9,83.8,44225700,80.54'") 22 | val price = prices.toOption.get.find(_.date == new LocalDate(2007, 1, 3)) 23 | assert(price.isDefined) 24 | assert(price.get.adjusted == 80.54) 25 | } 26 | 27 | it should "fail to load prices for not existing ticker" in { 28 | val prices = marketData.historicalPrices(BadTicker, from, to) 29 | assume(prices.isLeft) 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /core/src/test/scala/kkalc/service/HistoricalMarketFactorsSpec.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service 2 | 3 | import kkalc.model.Equity 4 | import kkalc.pricing.MarketFactor.{Volatility, Price} 5 | import kkalc.service.historical.{HistoricalMarketFactors, HistoricalMarketData} 6 | import org.joda.time.LocalDate 7 | import org.scalatest.{ShouldMatchers, FlatSpec} 8 | 9 | class HistoricalMarketFactorsSpec extends FlatSpec with ShouldMatchers with HistoricalMarketFactors with HistoricalMarketData { test => 10 | 11 | val AAPL = Equity("AAPL") 12 | 13 | implicit val params = MarketFactorsParameters() 14 | 15 | "Historical Market Factors" should "give access to historical price data" in { 16 | val marketFactors = test.marketFactors(new LocalDate(2007, 1, 3)) 17 | 18 | val priceFactor = marketFactors(Price(AAPL)) 19 | assert(priceFactor == Some(80.54)) 20 | } 21 | 22 | it should "give access to volatility" in { 23 | val marketFactors = test.marketFactors(new LocalDate(2009, 1, 3)) 24 | 25 | val volatilityFactor = marketFactors(Volatility(AAPL)) 26 | assert(volatilityFactor.isDefined) 27 | volatilityFactor.get should (be >= 0.031 and be <= 0.032) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /core/src/test/scala/kkalc/service/OneDayMarketFactorsSpec.scala: -------------------------------------------------------------------------------- 1 | package kkalc.service 2 | 3 | import kkalc.model.{Position, Portfolio, Equity} 4 | import kkalc.pricing.MarketFactor.Price 5 | import kkalc.pricing.MarketFactors 6 | import kkalc.service.historical.{HistoricalMarketData, HistoricalMarketFactors} 7 | import org.joda.time.LocalDate 8 | import org.scalatest.FlatSpec 9 | import org.slf4j.LoggerFactory 10 | import scalaz.NonEmptyList.nels 11 | 12 | class OneDayMarketFactorsSpec extends FlatSpec with HistoricalMarketFactors with HistoricalMarketData { 13 | private val log = LoggerFactory.getLogger(classOf[OneDayMarketFactorsSpec]) 14 | 15 | val AAPL = Equity("AAPL") 16 | val AMZN = Equity("AMZN") 17 | val GS = Equity("GS") 18 | 19 | val portfolio = Portfolio(nels(Position(AAPL, 10), Position(AMZN, 20), Position(GS, 30))) 20 | 21 | implicit val config = MarketFactorsParameters() 22 | 23 | "Market Factors Generator" should "correctly generate one day market factors for portfolio" in { 24 | 25 | val generator = oneDayMarketFactors(portfolio, new LocalDate(2014, 3, 17)) 26 | 27 | log.info(s"Generated factors:") 28 | val process = generator.factors.take(10).map { 29 | factors => logPrices(factors) 30 | } 31 | process.run.run 32 | } 33 | 34 | private def logPrices(factors: MarketFactors) { 35 | val AAPL_price = factors(Price(AAPL)) 36 | val AMZN_price = factors(Price(AMZN)) 37 | val GS_price = factors(Price(GS)) 38 | 39 | log.info(s"($AAPL, $AMZN, $GS) = ($AAPL_price, $AMZN_price, $GS_price)") 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /example/src/main/resources/calculator-node.conf: -------------------------------------------------------------------------------- 1 | akka { 2 | loggers = ["akka.event.slf4j.Slf4jLogger"] 3 | loglevel = "DEBUG" 4 | 5 | actor.provider = "akka.cluster.ClusterActorRefProvider" 6 | 7 | remote.netty.tcp.port=0 8 | 9 | cluster.roles = ["calculator"] 10 | } -------------------------------------------------------------------------------- /example/src/main/resources/simulation-node.conf: -------------------------------------------------------------------------------- 1 | akka { 2 | loggers = ["akka.event.slf4j.Slf4jLogger"] 3 | loglevel = "DEBUG" 4 | 5 | actor.provider = "akka.cluster.ClusterActorRefProvider" 6 | 7 | remote.netty.tcp.port=0 8 | 9 | cluster.roles = ["simulation"] 10 | } -------------------------------------------------------------------------------- /example/src/main/scala/kkalc/example/ClusterMarketRiskCalculation.scala: -------------------------------------------------------------------------------- 1 | package kkalc.example 2 | 3 | import akka.actor.{Props, ActorSystem} 4 | import akka.cluster.Cluster 5 | 6 | import com.typesafe.config.ConfigFactory 7 | 8 | import kkalc.model._ 9 | import kkalc.service.historical.{HistoricalMarketData, HistoricalMarketFactors} 10 | import kkalc.service.simulation.{ClusterPortfolioValueSimulation, MonteCarloMarketRiskCalculator, PortfolioValueSimulationBackend} 11 | 12 | import org.joda.time.LocalDate 13 | 14 | import scalaz.NonEmptyList._ 15 | 16 | object ClusterMarketRiskCalculation extends App { 17 | val SystemName = "ClusterMarketRiskCalculation" 18 | 19 | val simulationConfig = ConfigFactory.parseResources("simulation-node.conf") 20 | val calculatorConfig = ConfigFactory.parseResources("calculator-node.conf") 21 | 22 | // Start 3 simulation nodes 23 | val system1 = ActorSystem(SystemName, simulationConfig) 24 | val joinAddress = Cluster(system1).selfAddress 25 | Cluster(system1).join(joinAddress) 26 | system1.actorOf(Props[PortfolioValueSimulationBackend], "simulationBackend") 27 | 28 | val system2 = ActorSystem(SystemName, simulationConfig) 29 | Cluster(system2).join(joinAddress) 30 | system2.actorOf(Props[PortfolioValueSimulationBackend], "simulationBackend") 31 | 32 | val system3 = ActorSystem(SystemName, simulationConfig) 33 | Cluster(system3).join(joinAddress) 34 | system3.actorOf(Props[PortfolioValueSimulationBackend], "simulationBackend") 35 | 36 | // Start Cluster Risk Calculator node 37 | object RiskCalculator 38 | extends MonteCarloMarketRiskCalculator(10000, 10) 39 | with ClusterPortfolioValueSimulation 40 | with HistoricalMarketFactors with HistoricalMarketData { 41 | 42 | val systemName = SystemName 43 | val systemConfig = calculatorConfig 44 | } 45 | 46 | RiskCalculator.join(joinAddress) 47 | 48 | // Let's cluster state some time to converge 49 | Thread.sleep(2000) 50 | 51 | // Run VaR calculation 52 | 53 | val AMZN = Equity("AMZN") 54 | val AAPL = Equity("AAPL") 55 | val IBM = Equity("IBM") 56 | val GS = Equity("GS") 57 | 58 | // Portfolio evaluation date 59 | val date = new LocalDate(2014, 1, 3) 60 | 61 | // Options maturity date 62 | val maturityDate = new LocalDate(2014, 3, 31) 63 | 64 | val portfolio = Portfolio(nels( 65 | Position(AMZN, 10), 66 | Position(AAPL, 20), 67 | Position(IBM, 30), 68 | Position(CallOption(GS, 180, maturityDate), 10) 69 | )) 70 | 71 | val start = System.currentTimeMillis() 72 | val marketRisk = RiskCalculator.marketRisk(portfolio, date) 73 | val end = System.currentTimeMillis() 74 | 75 | println(s"Calculated marker risk in ${end - start} milliseconds; " + 76 | s"VaR(p = 0.95) = ${marketRisk.VaR(0.95)}, " + 77 | s"CVaR(p = 0.95) = ${marketRisk.conditionalVaR(0.95)}") 78 | 79 | // Shutdown actor systems 80 | system1.shutdown() 81 | system2.shutdown() 82 | system3.shutdown() 83 | RiskCalculator.shutdown() 84 | 85 | // and application 86 | System.exit(0) 87 | } -------------------------------------------------------------------------------- /example/src/main/scala/kkalc/example/SingleNodeMarketRiskCalculation.scala: -------------------------------------------------------------------------------- 1 | package kkalc.example 2 | 3 | import kkalc.model.{CallOption, Position, Portfolio, Equity} 4 | import kkalc.service.historical.{HistoricalMarketData, HistoricalMarketFactors} 5 | import kkalc.service.simulation.{SingleNodePortfolioValueSimulation, MonteCarloMarketRiskCalculator} 6 | import org.joda.time.LocalDate 7 | import scalaz.NonEmptyList.nels 8 | 9 | /** 10 | * Run MarketRisk calculation in single JVM 11 | */ 12 | object SingleNodeMarketRiskCalculation extends App { 13 | val AMZN = Equity("AMZN") 14 | val AAPL = Equity("AAPL") 15 | val IBM = Equity("IBM") 16 | val GS = Equity("GS") 17 | 18 | // Portfolio evaluation date 19 | val date = new LocalDate(2014, 1, 3) 20 | 21 | // Options maturity date 22 | val maturityDate = new LocalDate(2014, 3, 31) 23 | 24 | val portfolio = Portfolio(nels( 25 | Position(AMZN, 10), 26 | Position(AAPL, 20), 27 | Position(IBM, 30), 28 | Position(CallOption(GS, 180, maturityDate), 10) 29 | )) 30 | 31 | object RiskCalculator 32 | extends MonteCarloMarketRiskCalculator(10000, 10) 33 | with SingleNodePortfolioValueSimulation 34 | with HistoricalMarketFactors with HistoricalMarketData 35 | 36 | val start = System.currentTimeMillis() 37 | val marketRisk = RiskCalculator.marketRisk(portfolio, date) 38 | val end = System.currentTimeMillis() 39 | 40 | println(s"Calculated marker risk in ${end - start} milliseconds; " + 41 | s"VaR(p = 0.95) = ${marketRisk.VaR(0.95)}, " + 42 | s"CVaR(p = 0.95) = ${marketRisk.conditionalVaR(0.95)}") 43 | 44 | System.exit(0) 45 | 46 | } -------------------------------------------------------------------------------- /project/ProjectBuild.scala: -------------------------------------------------------------------------------- 1 | import sbt._, Keys._ 2 | import scala.language.postfixOps 3 | 4 | object BuildSettings { 5 | 6 | val buildOrganization = "kkalc" 7 | val buildVersion = "0.0.1" 8 | val buildScalaVersion = "2.10.3" 9 | 10 | val buildSettings = Defaults.defaultSettings ++ Seq ( 11 | organization := buildOrganization, 12 | scalaVersion := buildScalaVersion, 13 | shellPrompt := ShellPrompt.buildShellPrompt, 14 | maxErrors := 5, 15 | exportJars := true, 16 | scalacOptions += "-unchecked", 17 | scalacOptions += "-deprecation", 18 | scalacOptions += "-feature", 19 | libraryDependencies += "org.scala-lang" % "scala-reflect" % scalaVersion.value 20 | ) 21 | 22 | val buildResolvers = resolvers ++= Seq( 23 | "Typesafe Repo" at "http://repo.typesafe.com/typesafe/releases/", 24 | "Sonatype Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots", 25 | "Sonatype Releases" at "http://oss.sonatype.org/content/repositories/releases" 26 | ) 27 | } 28 | 29 | object ProjectBuild extends Build { 30 | 31 | import BuildSettings._ 32 | 33 | val release = settingKey[Boolean]("Perform release") 34 | val gitHeadCommitSha = settingKey[String]("current git commit SHA") 35 | 36 | private def getVersion(release: Boolean, sha: String) = { 37 | import java.text.SimpleDateFormat 38 | import java.util.{Calendar, TimeZone} 39 | val utcTz = TimeZone.getTimeZone("UTC") 40 | val cal = Calendar.getInstance(utcTz) 41 | val sdf = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'") 42 | sdf.setCalendar(cal) 43 | if (!release) s"$buildVersion-${sdf.format(cal.getTime)}-$sha" else buildVersion 44 | } 45 | 46 | def KkalcProject(name: String) = { 47 | Project(id = name, base = file(name)). 48 | // Apply global settings 49 | settings(buildSettings:_*). 50 | settings(buildResolvers:_*). 51 | 52 | // Dependency graph 53 | settings(net.virtualvoid.sbt.graph.Plugin.graphSettings: _*). 54 | 55 | // Versioning settings 56 | settings(release := sys.props("kkalc-release") == "true"). 57 | settings(gitHeadCommitSha in ThisBuild := Process("git rev-parse --short HEAD").lines.head). 58 | settings(version in ThisBuild := getVersion(release.value, gitHeadCommitSha.value)). 59 | 60 | // Publishing settings (disable publishing) 61 | settings(publish := ()) 62 | 63 | } 64 | 65 | lazy val root = Project("kkalc", file(".")). 66 | settings(publish :=()). 67 | settings(publishLocal :=()). 68 | aggregate(example, core) 69 | 70 | lazy val example = KkalcProject("example"). 71 | settings(libraryDependencies ++= Dependencies.example). 72 | dependsOn(core) 73 | 74 | lazy val core = KkalcProject("core"). 75 | settings(libraryDependencies ++= Dependencies.core) 76 | 77 | } 78 | 79 | object Dependencies { 80 | 81 | object Versions { 82 | 83 | val Guava = "16.0.1" 84 | val Findbugs = "2.0.0" 85 | 86 | // Logging 87 | val Slf4j = "1.7.5" 88 | val Logback = "1.0.13" 89 | 90 | // Scalaz 91 | val Scalaz = "7.0.6" 92 | val ScalazStream = "0.4.1" 93 | 94 | // Math 95 | val Spire = "0.7.1" 96 | val CommonsMath = "2.2" 97 | 98 | // Joda 99 | val JodaTime = "2.3" 100 | val JodaConvert = "1.5" 101 | 102 | // Akka 103 | val Akka = "2.3.2" 104 | 105 | // Test libraries 106 | val ScalaMock = "3.1.RC1" 107 | val ScalaTest = "2.0" 108 | } 109 | 110 | object Compile { 111 | import Dependencies.{Versions => V} 112 | 113 | 114 | val guava = "com.google.guava" % "guava" % V.Guava 115 | val findbugs = "com.google.code.findbugs" % "jsr305" % V.Findbugs 116 | 117 | // Logging 118 | val slf4jApi = "org.slf4j" % "slf4j-api" % V.Slf4j 119 | val logback = "ch.qos.logback" % "logback-classic" % V.Logback 120 | 121 | // Scalaz 122 | val scalazCore = "org.scalaz" %% "scalaz-core" % V.Scalaz 123 | val scalazStream = "org.scalaz.stream" %% "scalaz-stream" % V.ScalazStream 124 | 125 | // Math 126 | val spire = "org.spire-math" %% "spire" % V.Spire 127 | val commonsMath = "org.apache.commons" % "commons-math" % V.CommonsMath 128 | 129 | // Joda 130 | val jodaTime = "joda-time" % "joda-time" % V.JodaTime 131 | val jodaConvert = "org.joda" % "joda-convert" % V.JodaConvert 132 | 133 | // Akka libraries 134 | val akkaActor = "com.typesafe.akka" %% "akka-actor" % V.Akka 135 | val akkaCluster = "com.typesafe.akka" %% "akka-cluster" % V.Akka 136 | val akkaSlf4j = "com.typesafe.akka" %% "akka-slf4j" % V.Akka 137 | 138 | } 139 | 140 | object Test { 141 | import Dependencies.{Versions => V} 142 | 143 | val akkaTestkit = "com.typesafe.akka" %% "akka-testkit" % V.Akka 144 | 145 | val scalaMock = "org.scalamock" %% "scalamock-scalatest-support" % V.ScalaMock % "test" 146 | val scalaTest = "org.scalatest" %% "scalatest" % V.ScalaTest % "test" 147 | } 148 | 149 | // Projects dependencies 150 | 151 | val example = Seq() 152 | 153 | val core = 154 | Seq( 155 | Compile.slf4jApi, Compile.logback, Compile.jodaTime, Compile.jodaConvert, Compile.akkaActor, Compile.akkaCluster, Compile.akkaSlf4j, 156 | Compile.scalazCore, Compile.scalazStream, Compile.spire, Compile.commonsMath, Compile.guava, Compile.findbugs 157 | ) ++ 158 | Seq(Test.scalaTest, Test.scalaMock, Test.akkaTestkit) 159 | 160 | } 161 | 162 | object ShellPrompt { 163 | object devnull extends ProcessLogger { 164 | def info (s: => String) {} 165 | def error (s: => String) {} 166 | def buffer[T] (f: => T): T = f 167 | } 168 | 169 | val current = """\*\s+([\w-/]+)""".r 170 | 171 | def gitBranches = ("git branch --no-color" lines_! devnull).mkString 172 | 173 | val buildShellPrompt = { 174 | (state: State) => { 175 | val currBranch = 176 | current findFirstMatchIn gitBranches map (_ group 1) getOrElse "-" 177 | val currProject = Project.extract (state).currentProject.id 178 | "%s:%s> ".format ( 179 | currProject, currBranch 180 | ) 181 | } 182 | } 183 | } -------------------------------------------------------------------------------- /project/build.properties: -------------------------------------------------------------------------------- 1 | sbt.version=0.13.2 2 | -------------------------------------------------------------------------------- /project/dependency-graph.sbt: -------------------------------------------------------------------------------- 1 | addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.4") 2 | 3 | 4 | 5 | --------------------------------------------------------------------------------