├── .gitignore
├── LICENSE
├── README.md
├── docs
└── img
│ ├── 1.png
│ ├── 2.png
│ ├── 3.png
│ ├── 4.png
│ ├── 5.png
│ ├── 6.png
│ ├── 7.png
│ └── 8.png
├── setup.py
├── term-sheets
└── JPM_termsheet_20161019.pdf
├── tests
├── BENCH.csv
└── JPM.csv
└── volatility
├── __init__.py
├── data.py
├── models
├── GarmanKlass.py
├── HodgesTompkins.py
├── Kurtosis.py
├── Parkinson.py
├── Raw.py
├── RogersSatchell.py
├── Skew.py
├── YangZhang.py
├── __init__.py
└── api.py
└── volest.py
/.gitignore:
--------------------------------------------------------------------------------
1 | __pycache__
2 | *.pyc
3 | *.egg-info
4 | *.pdf
5 | .coverage
6 | build
7 | dist
8 | docs/build
9 | .tox/
10 | .ipynb_checkpoints/
11 | *.ipynb
12 | *.idea
13 | venv/
14 | debug.py
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # volest #
2 |
3 | ## Learn how to apply this code to your own options trading ##
4 |
5 | [Getting Started With Python for Quant Finance](https://gettingstartedwithpythonforquantfinance.com) is the cohort-based course and community that will take you from complete beginner to up and running with Python for quant finance in 30 days.
6 |
7 | ## [A complete set of volatility estimators based on Euan Sinclair's Volatility Trading](https://amzn.to/3UhddGP) ##
8 |
9 | The original version incorporated network data acquisition from Yahoo!Finance
10 | from `pandas_datareader`. Yahoo! changed their API and broke `pandas_datareader`.
11 |
12 | The changes allow you to specify your own data so you're not tied into equity
13 | data from Yahoo! finance. If you're still using equity data, just download
14 | a CSV from finance.yahoo.com and use the `data.yahoo_data_helper` method
15 | to form the data properly.
16 |
17 | ### Volatility estimators include: ###
18 |
19 | * Garman Klass
20 | * Hodges Tompkins
21 | * Parkinson
22 | * Rogers Satchell
23 | * Yang Zhang
24 | * Standard Deviation
25 |
26 | Also includes
27 |
28 | * Skew
29 | * Kurtosis
30 | * Correlation
31 |
32 | For each of the estimators, plot:
33 |
34 | * Probability cones
35 | * Rolling quantiles
36 | * Rolling extremes
37 | * Rolling descriptive statistics
38 | * Histogram
39 | * Comparison against arbirary comparable
40 | * Correlation against arbirary comparable
41 | * Regression against arbirary comparable
42 |
43 | Create a term sheet with all the metrics printed to a PDF.
44 |
45 | ### Page 1 - Volatility cones ###
46 | 
47 |
48 | ### Page 2 - Volatility rolling percentiles ###
49 | 
50 |
51 | ### Page 3 - Volatility rolling min and max ###
52 | 
53 |
54 | ### Page 4 - Volatility rolling mean, standard deviation and zscore ###
55 | 
56 |
57 | ### Page 5 - Volatility distribution ###
58 | 
59 |
60 | ### Page 6 - Volatility, benchmark volatility and ratio###
61 | 
62 |
63 | ### Page 7 - Volatility rolling correlation with benchmark ###
64 | 
65 |
66 | ### Page 3 - Volatility OLS results ###
67 | 
68 |
69 | Example usage:
70 |
71 | ```python
72 |
73 | from volatility import volest
74 | import yfinance as yf
75 |
76 | # data
77 | symbol = 'JPM'
78 | bench = 'SPY'
79 | estimator = 'GarmanKlass'
80 |
81 | # estimator windows
82 | window = 30
83 | windows = [30, 60, 90, 120]
84 | quantiles = [0.25, 0.75]
85 | bins = 100
86 | normed = True
87 |
88 | # use the yahoo helper to correctly format data from finance.yahoo.com
89 | jpm_price_data = yf.Ticker(symbol).history(period="5y")
90 | jpm_price_data.symbol = symbol
91 | spx_price_data = yf.Ticker(bench).history(period="5y")
92 | spx_price_data.symbol = bench
93 |
94 | # initialize class
95 | vol = volest.VolatilityEstimator(
96 | price_data=jpm_price_data,
97 | estimator=estimator,
98 | bench_data=spx_price_data
99 | )
100 |
101 | # call plt.show() on any of the below...
102 | _, plt = vol.cones(windows=windows, quantiles=quantiles)
103 | _, plt = vol.rolling_quantiles(window=window, quantiles=quantiles)
104 | _, plt = vol.rolling_extremes(window=window)
105 | _, plt = vol.rolling_descriptives(window=window)
106 | _, plt = vol.histogram(window=window, bins=bins, normed=normed)
107 |
108 | _, plt = vol.benchmark_compare(window=window)
109 | _, plt = vol.benchmark_correlation(window=window)
110 |
111 | # ... or create a pdf term sheet with all metrics in term-sheets/
112 | vol.term_sheet(
113 | window,
114 | windows,
115 | quantiles,
116 | bins,
117 | normed
118 | )
119 |
120 | ```
121 |
122 | Hit me on twitter with comments, questions, issues @jasonstrimpel
123 |
--------------------------------------------------------------------------------
/docs/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/docs/img/1.png
--------------------------------------------------------------------------------
/docs/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/docs/img/2.png
--------------------------------------------------------------------------------
/docs/img/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/docs/img/3.png
--------------------------------------------------------------------------------
/docs/img/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/docs/img/4.png
--------------------------------------------------------------------------------
/docs/img/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/docs/img/5.png
--------------------------------------------------------------------------------
/docs/img/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/docs/img/6.png
--------------------------------------------------------------------------------
/docs/img/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/docs/img/7.png
--------------------------------------------------------------------------------
/docs/img/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/docs/img/8.png
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | from setuptools import setup
3 |
4 | setup(
5 | name='volatility-trading',
6 | version='0.0.1',
7 | url='https://github.com/jasonstrimpel/volatility-trading/',
8 | license='GPL-3.0-or-later',
9 | packages=['volatility','volatility/models'],
10 | )
11 |
--------------------------------------------------------------------------------
/term-sheets/JPM_termsheet_20161019.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/term-sheets/JPM_termsheet_20161019.pdf
--------------------------------------------------------------------------------
/tests/BENCH.csv:
--------------------------------------------------------------------------------
1 | Date,Open,High,Low,Close,Adj Close,Volume
2 | 2014-07-21,1976.930054,1976.930054,1965.770020,1973.630005,1973.630005,2611160000
3 | 2014-07-22,1975.650024,1986.239990,1975.650024,1983.530029,1983.530029,2890480000
4 | 2014-07-23,1985.319946,1989.229980,1982.439941,1987.010010,1987.010010,2869720000
5 | 2014-07-24,1988.069946,1991.390015,1985.790039,1987.979980,1987.979980,3203530000
6 | 2014-07-25,1984.599976,1984.599976,1974.369995,1978.339966,1978.339966,2638960000
7 | 2014-07-28,1978.250000,1981.520020,1967.310059,1978.910034,1978.910034,2803320000
8 | 2014-07-29,1980.030029,1984.849976,1969.949951,1969.949951,1969.949951,3183300000
9 | 2014-07-30,1973.209961,1978.900024,1962.420044,1970.069946,1970.069946,3448250000
10 | 2014-07-31,1965.140015,1965.140015,1930.670044,1930.670044,1930.670044,4193000000
11 | 2014-08-01,1929.800049,1937.349976,1916.369995,1925.150024,1925.150024,3789660000
12 | 2014-08-04,1926.619995,1942.920044,1921.199951,1938.989990,1938.989990,3072920000
13 | 2014-08-05,1936.339966,1936.339966,1913.770020,1920.209961,1920.209961,3462520000
14 | 2014-08-06,1917.290039,1927.910034,1911.449951,1920.239990,1920.239990,3539150000
15 | 2014-08-07,1923.030029,1928.890015,1904.780029,1909.569946,1909.569946,3230520000
16 | 2014-08-08,1910.349976,1932.380005,1909.010010,1931.589966,1931.589966,2902280000
17 | 2014-08-11,1933.430054,1944.900024,1933.430054,1936.920044,1936.920044,2784890000
18 | 2014-08-12,1935.729980,1939.650024,1928.290039,1933.750000,1933.750000,2611700000
19 | 2014-08-13,1935.599976,1948.410034,1935.599976,1946.719971,1946.719971,2718020000
20 | 2014-08-14,1947.410034,1955.229980,1947.410034,1955.180054,1955.180054,2609460000
21 | 2014-08-15,1958.869995,1964.040039,1941.500000,1955.060059,1955.060059,3023380000
22 | 2014-08-18,1958.359985,1971.989990,1958.359985,1971.739990,1971.739990,2638160000
23 | 2014-08-19,1972.729980,1982.569946,1972.729980,1981.599976,1981.599976,2656430000
24 | 2014-08-20,1980.459961,1988.569946,1977.680054,1986.510010,1986.510010,2579560000
25 | 2014-08-21,1986.819946,1994.760010,1986.819946,1992.369995,1992.369995,2638920000
26 | 2014-08-22,1992.599976,1993.540039,1984.760010,1988.400024,1988.400024,2301860000
27 | 2014-08-25,1991.739990,2001.949951,1991.739990,1997.920044,1997.920044,2233880000
28 | 2014-08-26,1998.589966,2005.040039,1998.589966,2000.020020,2000.020020,2451950000
29 | 2014-08-27,2000.540039,2002.140015,1996.199951,2000.119995,2000.119995,2344350000
30 | 2014-08-28,1997.420044,1998.550049,1990.520020,1996.739990,1996.739990,2282400000
31 | 2014-08-29,1998.449951,2003.380005,1994.650024,2003.369995,2003.369995,2259130000
32 | 2014-09-02,2004.069946,2006.119995,1994.849976,2002.280029,2002.280029,2819980000
33 | 2014-09-03,2003.569946,2009.280029,1998.140015,2000.719971,2000.719971,2809980000
34 | 2014-09-04,2001.670044,2011.170044,1992.540039,1997.650024,1997.650024,3072410000
35 | 2014-09-05,1998.000000,2007.709961,1990.099976,2007.709961,2007.709961,2818300000
36 | 2014-09-08,2007.170044,2007.170044,1995.599976,2001.540039,2001.540039,2789090000
37 | 2014-09-09,2000.729980,2001.010010,1984.609985,1988.439941,1988.439941,2882830000
38 | 2014-09-10,1988.410034,1996.660034,1982.989990,1995.689941,1995.689941,2912430000
39 | 2014-09-11,1992.849976,1997.650024,1985.930054,1997.449951,1997.449951,2941690000
40 | 2014-09-12,1996.739990,1996.739990,1980.260010,1985.540039,1985.540039,3206570000
41 | 2014-09-15,1986.040039,1987.180054,1978.479980,1984.130005,1984.130005,2776530000
42 | 2014-09-16,1981.930054,2002.280029,1979.060059,1998.979980,1998.979980,3160310000
43 | 2014-09-17,1999.300049,2010.739990,1993.290039,2001.569946,2001.569946,3209420000
44 | 2014-09-18,2003.069946,2012.339966,2003.069946,2011.359985,2011.359985,3235340000
45 | 2014-09-19,2012.739990,2019.260010,2006.589966,2010.400024,2010.400024,4880220000
46 | 2014-09-22,2009.079956,2009.079956,1991.010010,1994.290039,1994.290039,3349670000
47 | 2014-09-23,1992.780029,1995.410034,1982.770020,1982.770020,1982.770020,3279350000
48 | 2014-09-24,1983.339966,1999.790039,1978.630005,1998.300049,1998.300049,3313850000
49 | 2014-09-25,1997.319946,1997.319946,1965.989990,1965.989990,1965.989990,3273050000
50 | 2014-09-26,1966.219971,1986.369995,1966.219971,1982.849976,1982.849976,2929440000
51 | 2014-09-29,1978.959961,1981.280029,1964.040039,1977.800049,1977.800049,3094440000
52 | 2014-09-30,1978.209961,1985.170044,1968.959961,1972.290039,1972.290039,3951100000
53 | 2014-10-01,1971.439941,1971.439941,1941.719971,1946.160034,1946.160034,4188590000
54 | 2014-10-02,1945.829956,1952.319946,1926.030029,1946.170044,1946.170044,4012510000
55 | 2014-10-03,1948.119995,1971.189941,1948.119995,1967.900024,1967.900024,3560970000
56 | 2014-10-06,1970.010010,1977.839966,1958.430054,1964.819946,1964.819946,3358220000
57 | 2014-10-07,1962.359985,1962.359985,1934.869995,1935.099976,1935.099976,3687870000
58 | 2014-10-08,1935.550049,1970.359985,1925.250000,1968.890015,1968.890015,4441890000
59 | 2014-10-09,1967.680054,1967.680054,1927.560059,1928.209961,1928.209961,4344020000
60 | 2014-10-10,1925.630005,1936.979980,1906.050049,1906.130005,1906.130005,4550540000
61 | 2014-10-13,1905.650024,1912.089966,1874.140015,1874.739990,1874.739990,4352580000
62 | 2014-10-14,1877.109985,1898.709961,1871.790039,1877.699951,1877.699951,4812010000
63 | 2014-10-15,1874.180054,1874.180054,1820.660034,1862.489990,1862.489990,6090800000
64 | 2014-10-16,1855.949951,1876.010010,1835.020020,1862.760010,1862.760010,5073150000
65 | 2014-10-17,1864.910034,1898.160034,1864.910034,1886.760010,1886.760010,4482120000
66 | 2014-10-20,1885.619995,1905.030029,1882.300049,1904.010010,1904.010010,3331210000
67 | 2014-10-21,1909.380005,1942.449951,1909.380005,1941.280029,1941.280029,3987090000
68 | 2014-10-22,1941.290039,1949.310059,1926.829956,1927.109985,1927.109985,3761930000
69 | 2014-10-23,1931.020020,1961.949951,1931.020020,1950.819946,1950.819946,3789250000
70 | 2014-10-24,1951.589966,1965.270020,1946.270020,1964.579956,1964.579956,3078380000
71 | 2014-10-27,1962.969971,1964.640015,1951.369995,1961.630005,1961.630005,3538860000
72 | 2014-10-28,1964.140015,1985.050049,1964.140015,1985.050049,1985.050049,3653260000
73 | 2014-10-29,1983.290039,1991.400024,1969.040039,1982.300049,1982.300049,3740350000
74 | 2014-10-30,1979.489990,1999.400024,1974.750000,1994.650024,1994.650024,3586150000
75 | 2014-10-31,2001.199951,2018.189941,2001.199951,2018.050049,2018.050049,4292290000
76 | 2014-11-03,2018.209961,2024.459961,2013.680054,2017.810059,2017.810059,3555440000
77 | 2014-11-04,2015.810059,2015.979980,2001.010010,2012.099976,2012.099976,3956260000
78 | 2014-11-05,2015.290039,2023.770020,2014.420044,2023.569946,2023.569946,3766590000
79 | 2014-11-06,2023.329956,2031.609985,2015.859985,2031.209961,2031.209961,3669770000
80 | 2014-11-07,2032.359985,2034.260010,2025.069946,2031.920044,2031.920044,3704280000
81 | 2014-11-10,2032.010010,2038.699951,2030.170044,2038.260010,2038.260010,3284940000
82 | 2014-11-11,2038.199951,2041.280029,2035.280029,2039.680054,2039.680054,2958320000
83 | 2014-11-12,2037.750000,2040.329956,2031.949951,2038.250000,2038.250000,3246650000
84 | 2014-11-13,2039.209961,2046.180054,2030.439941,2039.329956,2039.329956,3455270000
85 | 2014-11-14,2039.739990,2042.219971,2035.199951,2039.819946,2039.819946,3227130000
86 | 2014-11-17,2038.290039,2043.069946,2034.459961,2041.319946,2041.319946,3152890000
87 | 2014-11-18,2041.479980,2056.080078,2041.479980,2051.800049,2051.800049,3416190000
88 | 2014-11-19,2051.159912,2052.139893,2040.369995,2048.719971,2048.719971,3390850000
89 | 2014-11-20,2045.869995,2053.840088,2040.489990,2052.750000,2052.750000,3128290000
90 | 2014-11-21,2057.459961,2071.459961,2056.750000,2063.500000,2063.500000,3916420000
91 | 2014-11-24,2065.070068,2070.169922,2065.070068,2069.409912,2069.409912,3128060000
92 | 2014-11-25,2070.149902,2074.209961,2064.750000,2067.030029,2067.030029,3392940000
93 | 2014-11-26,2067.360107,2073.290039,2066.620117,2072.830078,2072.830078,2745260000
94 | 2014-11-28,2074.780029,2075.760010,2065.060059,2067.560059,2067.560059,2504640000
95 | 2014-12-01,2065.780029,2065.780029,2049.570068,2053.439941,2053.439941,4159010000
96 | 2014-12-02,2053.770020,2068.770020,2053.770020,2066.550049,2066.550049,3686650000
97 | 2014-12-03,2067.449951,2076.280029,2066.649902,2074.330078,2074.330078,3612680000
98 | 2014-12-04,2073.639893,2077.340088,2062.340088,2071.919922,2071.919922,3408340000
99 | 2014-12-05,2072.780029,2079.469971,2070.810059,2075.370117,2075.370117,3419620000
100 | 2014-12-08,2074.840088,2075.780029,2054.270020,2060.310059,2060.310059,3800990000
101 | 2014-12-09,2056.550049,2060.600098,2034.170044,2059.820068,2059.820068,3970150000
102 | 2014-12-10,2058.860107,2058.860107,2024.260010,2026.140015,2026.140015,4114440000
103 | 2014-12-11,2027.920044,2055.530029,2027.920044,2035.329956,2035.329956,3917950000
104 | 2014-12-12,2030.359985,2032.250000,2002.329956,2002.329956,2002.329956,4157650000
105 | 2014-12-15,2005.030029,2018.689941,1982.260010,1989.630005,1989.630005,4361990000
106 | 2014-12-16,1986.709961,2016.890015,1972.560059,1972.739990,1972.739990,4958680000
107 | 2014-12-17,1973.770020,2016.750000,1973.770020,2012.890015,2012.890015,4942370000
108 | 2014-12-18,2018.979980,2061.229980,2018.979980,2061.229980,2061.229980,4703380000
109 | 2014-12-19,2061.040039,2077.850098,2061.030029,2070.649902,2070.649902,6465530000
110 | 2014-12-22,2069.280029,2078.760010,2069.280029,2078.540039,2078.540039,3369520000
111 | 2014-12-23,2081.479980,2086.729980,2079.770020,2082.169922,2082.169922,3043950000
112 | 2014-12-24,2083.250000,2087.560059,2081.860107,2081.879883,2081.879883,1416980000
113 | 2014-12-26,2084.300049,2092.699951,2084.300049,2088.770020,2088.770020,1735230000
114 | 2014-12-29,2087.629883,2093.550049,2085.750000,2090.570068,2090.570068,2452360000
115 | 2014-12-30,2088.489990,2088.489990,2079.530029,2080.350098,2080.350098,2440280000
116 | 2014-12-31,2082.110107,2085.580078,2057.939941,2058.899902,2058.899902,2606070000
117 | 2015-01-02,2058.899902,2072.360107,2046.040039,2058.199951,2058.199951,2708700000
118 | 2015-01-05,2054.439941,2054.439941,2017.339966,2020.579956,2020.579956,3799120000
119 | 2015-01-06,2022.150024,2030.250000,1992.439941,2002.609985,2002.609985,4460110000
120 | 2015-01-07,2005.550049,2029.609985,2005.550049,2025.900024,2025.900024,3805480000
121 | 2015-01-08,2030.609985,2064.080078,2030.609985,2062.139893,2062.139893,3934010000
122 | 2015-01-09,2063.449951,2064.429932,2038.329956,2044.810059,2044.810059,3364140000
123 | 2015-01-12,2046.130005,2049.300049,2022.579956,2028.260010,2028.260010,3456460000
124 | 2015-01-13,2031.579956,2056.929932,2008.250000,2023.030029,2023.030029,4107300000
125 | 2015-01-14,2018.400024,2018.400024,1988.439941,2011.270020,2011.270020,4378680000
126 | 2015-01-15,2013.750000,2021.349976,1991.469971,1992.670044,1992.670044,4276720000
127 | 2015-01-16,1992.250000,2020.459961,1988.119995,2019.420044,2019.420044,4056410000
128 | 2015-01-20,2020.760010,2028.939941,2004.489990,2022.550049,2022.550049,3944340000
129 | 2015-01-21,2020.189941,2038.290039,2012.040039,2032.119995,2032.119995,3730070000
130 | 2015-01-22,2034.300049,2064.620117,2026.380005,2063.149902,2063.149902,4176050000
131 | 2015-01-23,2062.979980,2062.979980,2050.540039,2051.820068,2051.820068,3573560000
132 | 2015-01-26,2050.419922,2057.620117,2040.969971,2057.090088,2057.090088,3465760000
133 | 2015-01-27,2047.859985,2047.859985,2019.910034,2029.550049,2029.550049,3329810000
134 | 2015-01-28,2032.339966,2042.489990,2001.489990,2002.160034,2002.160034,4067530000
135 | 2015-01-29,2002.449951,2024.640015,1989.180054,2021.250000,2021.250000,4127140000
136 | 2015-01-30,2019.349976,2023.319946,1993.380005,1994.989990,1994.989990,4568650000
137 | 2015-02-02,1996.670044,2021.660034,1980.900024,2020.849976,2020.849976,4008330000
138 | 2015-02-03,2022.709961,2050.300049,2022.709961,2050.030029,2050.030029,4615900000
139 | 2015-02-04,2048.860107,2054.739990,2036.719971,2041.510010,2041.510010,4141920000
140 | 2015-02-05,2043.449951,2063.550049,2043.449951,2062.520020,2062.520020,3821990000
141 | 2015-02-06,2062.280029,2072.399902,2049.969971,2055.469971,2055.469971,4232970000
142 | 2015-02-09,2053.469971,2056.159912,2041.880005,2046.739990,2046.739990,3549540000
143 | 2015-02-10,2049.379883,2070.860107,2048.620117,2068.590088,2068.590088,3669850000
144 | 2015-02-11,2068.550049,2073.479980,2057.989990,2068.530029,2068.530029,3596860000
145 | 2015-02-12,2069.979980,2088.530029,2069.979980,2088.479980,2088.479980,3788350000
146 | 2015-02-13,2088.780029,2097.030029,2086.699951,2096.989990,2096.989990,3527450000
147 | 2015-02-17,2096.469971,2101.300049,2089.800049,2100.340088,2100.340088,3361750000
148 | 2015-02-18,2099.159912,2100.229980,2092.149902,2099.679932,2099.679932,3370020000
149 | 2015-02-19,2099.250000,2102.129883,2090.790039,2097.449951,2097.449951,3247100000
150 | 2015-02-20,2097.649902,2110.610107,2085.439941,2110.300049,2110.300049,3281600000
151 | 2015-02-23,2109.830078,2110.050049,2103.000000,2109.659912,2109.659912,3093680000
152 | 2015-02-24,2109.100098,2117.939941,2105.870117,2115.479980,2115.479980,3199840000
153 | 2015-02-25,2115.300049,2119.590088,2109.889893,2113.860107,2113.860107,3312340000
154 | 2015-02-26,2113.909912,2113.909912,2103.760010,2110.739990,2110.739990,3408690000
155 | 2015-02-27,2110.879883,2112.739990,2103.750000,2104.500000,2104.500000,3547380000
156 | 2015-03-02,2105.229980,2117.520020,2104.500000,2117.389893,2117.389893,3409490000
157 | 2015-03-03,2115.760010,2115.760010,2098.260010,2107.780029,2107.780029,3262300000
158 | 2015-03-04,2107.719971,2107.719971,2094.489990,2098.530029,2098.530029,3421110000
159 | 2015-03-05,2098.540039,2104.250000,2095.219971,2101.040039,2101.040039,3103030000
160 | 2015-03-06,2100.909912,2100.909912,2067.270020,2071.260010,2071.260010,3853570000
161 | 2015-03-09,2072.250000,2083.489990,2072.209961,2079.429932,2079.429932,3349090000
162 | 2015-03-10,2076.139893,2076.139893,2044.160034,2044.160034,2044.160034,3668900000
163 | 2015-03-11,2044.689941,2050.080078,2039.689941,2040.239990,2040.239990,3406570000
164 | 2015-03-12,2041.099976,2066.409912,2041.099976,2065.949951,2065.949951,3405860000
165 | 2015-03-13,2064.560059,2064.560059,2041.170044,2053.399902,2053.399902,3498560000
166 | 2015-03-16,2055.350098,2081.409912,2055.350098,2081.189941,2081.189941,3295600000
167 | 2015-03-17,2080.590088,2080.590088,2065.080078,2074.280029,2074.280029,3221840000
168 | 2015-03-18,2072.840088,2106.850098,2061.229980,2099.500000,2099.500000,4128210000
169 | 2015-03-19,2098.689941,2098.689941,2085.560059,2089.270020,2089.270020,3305220000
170 | 2015-03-20,2090.320068,2113.919922,2090.320068,2108.100098,2108.100098,5554120000
171 | 2015-03-23,2107.989990,2114.860107,2104.419922,2104.419922,2104.419922,3267960000
172 | 2015-03-24,2103.939941,2107.629883,2091.500000,2091.500000,2091.500000,3189820000
173 | 2015-03-25,2093.100098,2097.429932,2061.050049,2061.050049,2061.050049,3521140000
174 | 2015-03-26,2059.939941,2067.149902,2045.500000,2056.149902,2056.149902,3510670000
175 | 2015-03-27,2055.780029,2062.830078,2052.959961,2061.020020,2061.020020,3008550000
176 | 2015-03-30,2064.110107,2088.969971,2064.110107,2086.239990,2086.239990,2917690000
177 | 2015-03-31,2084.050049,2084.050049,2067.040039,2067.889893,2067.889893,3376550000
178 | 2015-04-01,2067.629883,2067.629883,2048.379883,2059.689941,2059.689941,3543270000
179 | 2015-04-02,2060.030029,2072.169922,2057.320068,2066.959961,2066.959961,3095960000
180 | 2015-04-06,2064.870117,2086.989990,2056.520020,2080.620117,2080.620117,3302970000
181 | 2015-04-07,2080.790039,2089.810059,2076.100098,2076.330078,2076.330078,3065510000
182 | 2015-04-08,2076.939941,2086.689941,2073.300049,2081.899902,2081.899902,3265330000
183 | 2015-04-09,2081.290039,2093.310059,2074.290039,2091.179932,2091.179932,3172360000
184 | 2015-04-10,2091.510010,2102.610107,2091.510010,2102.060059,2102.060059,3156200000
185 | 2015-04-13,2102.030029,2107.649902,2092.330078,2092.429932,2092.429932,2908420000
186 | 2015-04-14,2092.280029,2098.620117,2083.239990,2095.840088,2095.840088,3301270000
187 | 2015-04-15,2097.820068,2111.909912,2097.820068,2106.629883,2106.629883,4013760000
188 | 2015-04-16,2105.959961,2111.300049,2100.020020,2104.989990,2104.989990,3434120000
189 | 2015-04-17,2102.580078,2102.580078,2072.370117,2081.179932,2081.179932,3627600000
190 | 2015-04-20,2084.110107,2103.939941,2084.110107,2100.399902,2100.399902,3000160000
191 | 2015-04-21,2102.820068,2109.639893,2094.379883,2097.290039,2097.290039,3243410000
192 | 2015-04-22,2098.270020,2109.979980,2091.050049,2107.959961,2107.959961,3348480000
193 | 2015-04-23,2107.209961,2120.489990,2103.189941,2112.929932,2112.929932,3636670000
194 | 2015-04-24,2112.800049,2120.919922,2112.800049,2117.689941,2117.689941,3375780000
195 | 2015-04-27,2119.290039,2125.919922,2107.040039,2108.919922,2108.919922,3438750000
196 | 2015-04-28,2108.350098,2116.040039,2094.889893,2114.760010,2114.760010,3546270000
197 | 2015-04-29,2112.489990,2113.649902,2097.409912,2106.850098,2106.850098,4074970000
198 | 2015-04-30,2105.520020,2105.520020,2077.590088,2085.510010,2085.510010,4509680000
199 | 2015-05-01,2087.379883,2108.409912,2087.379883,2108.290039,2108.290039,3379390000
200 | 2015-05-04,2110.229980,2120.949951,2110.229980,2114.489990,2114.489990,3091580000
201 | 2015-05-05,2112.629883,2115.239990,2088.459961,2089.459961,2089.459961,3793950000
202 | 2015-05-06,2091.260010,2098.419922,2067.929932,2080.149902,2080.149902,3792210000
203 | 2015-05-07,2079.959961,2092.899902,2074.989990,2088.000000,2088.000000,3676640000
204 | 2015-05-08,2092.129883,2117.659912,2092.129883,2116.100098,2116.100098,3399440000
205 | 2015-05-11,2115.560059,2117.689941,2104.580078,2105.330078,2105.330078,2992670000
206 | 2015-05-12,2102.870117,2105.060059,2085.570068,2099.120117,2099.120117,3139520000
207 | 2015-05-13,2099.620117,2110.189941,2096.040039,2098.479980,2098.479980,3374260000
208 | 2015-05-14,2100.429932,2121.449951,2100.429932,2121.100098,2121.100098,3225740000
209 | 2015-05-15,2122.070068,2123.889893,2116.810059,2122.729980,2122.729980,3092080000
210 | 2015-05-18,2121.300049,2131.780029,2120.010010,2129.199951,2129.199951,2888190000
211 | 2015-05-19,2129.449951,2133.020020,2124.500000,2127.830078,2127.830078,3296030000
212 | 2015-05-20,2127.790039,2134.719971,2122.590088,2125.850098,2125.850098,3025880000
213 | 2015-05-21,2125.550049,2134.280029,2122.949951,2130.820068,2130.820068,3070460000
214 | 2015-05-22,2130.360107,2132.149902,2126.060059,2126.060059,2126.060059,2571860000
215 | 2015-05-26,2125.340088,2125.340088,2099.179932,2104.199951,2104.199951,3342130000
216 | 2015-05-27,2105.129883,2126.219971,2105.129883,2123.479980,2123.479980,3127960000
217 | 2015-05-28,2122.270020,2122.270020,2112.860107,2120.790039,2120.790039,2980350000
218 | 2015-05-29,2120.659912,2120.659912,2104.889893,2107.389893,2107.389893,3927390000
219 | 2015-06-01,2108.639893,2119.149902,2102.540039,2111.729980,2111.729980,3011710000
220 | 2015-06-02,2110.409912,2117.590088,2099.139893,2109.600098,2109.600098,3049350000
221 | 2015-06-03,2110.639893,2121.919922,2109.610107,2114.070068,2114.070068,3099980000
222 | 2015-06-04,2112.350098,2112.889893,2093.229980,2095.840088,2095.840088,3200050000
223 | 2015-06-05,2095.090088,2100.989990,2085.669922,2092.830078,2092.830078,3243690000
224 | 2015-06-08,2092.340088,2093.010010,2079.110107,2079.280029,2079.280029,2917150000
225 | 2015-06-09,2079.070068,2085.620117,2072.139893,2080.149902,2080.149902,3034580000
226 | 2015-06-10,2081.120117,2108.500000,2081.120117,2105.199951,2105.199951,3414320000
227 | 2015-06-11,2106.239990,2115.020020,2106.239990,2108.860107,2108.860107,3128600000
228 | 2015-06-12,2107.429932,2107.429932,2091.330078,2094.110107,2094.110107,2719400000
229 | 2015-06-15,2091.340088,2091.340088,2072.489990,2084.429932,2084.429932,3061570000
230 | 2015-06-16,2084.260010,2097.399902,2082.100098,2096.290039,2096.290039,2919900000
231 | 2015-06-17,2097.399902,2106.790039,2088.860107,2100.439941,2100.439941,3222240000
232 | 2015-06-18,2101.580078,2126.649902,2101.580078,2121.239990,2121.239990,3520360000
233 | 2015-06-19,2121.060059,2121.639893,2109.449951,2109.989990,2109.989990,4449810000
234 | 2015-06-22,2112.500000,2129.870117,2112.500000,2122.850098,2122.850098,3030020000
235 | 2015-06-23,2123.159912,2128.030029,2119.889893,2124.199951,2124.199951,3091190000
236 | 2015-06-24,2123.649902,2125.100098,2108.580078,2108.580078,2108.580078,3102480000
237 | 2015-06-25,2109.959961,2116.040039,2101.780029,2102.310059,2102.310059,3214610000
238 | 2015-06-26,2102.620117,2108.919922,2095.379883,2101.489990,2101.489990,5025470000
239 | 2015-06-29,2098.629883,2098.629883,2056.639893,2057.639893,2057.639893,3678960000
240 | 2015-06-30,2061.189941,2074.280029,2056.320068,2063.110107,2063.110107,4078540000
241 | 2015-07-01,2067.000000,2082.780029,2067.000000,2077.419922,2077.419922,3727260000
242 | 2015-07-02,2078.030029,2085.060059,2071.020020,2076.780029,2076.780029,2996540000
243 | 2015-07-06,2073.949951,2078.610107,2058.399902,2068.760010,2068.760010,3486360000
244 | 2015-07-07,2069.520020,2083.739990,2044.020020,2081.340088,2081.340088,4458660000
245 | 2015-07-08,2077.659912,2077.659912,2044.660034,2046.680054,2046.680054,3608780000
246 | 2015-07-09,2049.729980,2074.280029,2049.729980,2051.310059,2051.310059,3446810000
247 | 2015-07-10,2052.739990,2081.310059,2052.739990,2076.620117,2076.620117,3065070000
248 | 2015-07-13,2080.030029,2100.669922,2080.030029,2099.600098,2099.600098,3096730000
249 | 2015-07-14,2099.719971,2111.979980,2098.179932,2108.949951,2108.949951,3002120000
250 | 2015-07-15,2109.010010,2114.139893,2102.489990,2107.399902,2107.399902,3261810000
251 | 2015-07-16,2110.550049,2124.419922,2110.550049,2124.290039,2124.290039,3227080000
252 | 2015-07-17,2126.800049,2128.909912,2119.879883,2126.639893,2126.639893,3362750000
253 | 2015-07-20,2126.850098,2132.820068,2123.659912,2128.280029,2128.280029,3245870000
254 | 2015-07-21,2127.550049,2128.489990,2115.399902,2119.209961,2119.209961,3343690000
255 | 2015-07-22,2118.209961,2118.510010,2110.000000,2114.149902,2114.149902,3694070000
256 | 2015-07-23,2114.159912,2116.870117,2098.629883,2102.149902,2102.149902,3772810000
257 | 2015-07-24,2102.239990,2106.010010,2077.090088,2079.649902,2079.649902,3870040000
258 | 2015-07-27,2078.189941,2078.189941,2063.520020,2067.639893,2067.639893,3836750000
259 | 2015-07-28,2070.750000,2095.600098,2069.090088,2093.250000,2093.250000,4117740000
260 | 2015-07-29,2094.699951,2110.600098,2094.080078,2108.570068,2108.570068,4038900000
261 | 2015-07-30,2106.780029,2110.479980,2094.969971,2108.629883,2108.629883,3579410000
262 | 2015-07-31,2111.600098,2114.239990,2102.070068,2103.840088,2103.840088,3681340000
263 | 2015-08-03,2104.489990,2105.699951,2087.310059,2098.040039,2098.040039,3476770000
264 | 2015-08-04,2097.679932,2102.510010,2088.600098,2093.320068,2093.320068,3546710000
265 | 2015-08-05,2095.270020,2112.659912,2095.270020,2099.840088,2099.840088,3968680000
266 | 2015-08-06,2100.750000,2103.320068,2075.530029,2083.560059,2083.560059,4246570000
267 | 2015-08-07,2082.610107,2082.610107,2067.909912,2077.570068,2077.570068,3602320000
268 | 2015-08-10,2080.979980,2105.350098,2080.979980,2104.179932,2104.179932,3514460000
269 | 2015-08-11,2102.659912,2102.659912,2076.489990,2084.070068,2084.070068,3708880000
270 | 2015-08-12,2081.100098,2089.060059,2052.090088,2086.050049,2086.050049,4269130000
271 | 2015-08-13,2086.189941,2092.929932,2078.260010,2083.389893,2083.389893,3221300000
272 | 2015-08-14,2083.149902,2092.449951,2080.610107,2091.540039,2091.540039,2795590000
273 | 2015-08-17,2089.699951,2102.870117,2079.300049,2102.439941,2102.439941,2867690000
274 | 2015-08-18,2101.989990,2103.469971,2094.139893,2096.919922,2096.919922,2949990000
275 | 2015-08-19,2095.689941,2096.169922,2070.530029,2079.610107,2079.610107,3512920000
276 | 2015-08-20,2076.610107,2076.610107,2035.729980,2035.729980,2035.729980,3922470000
277 | 2015-08-21,2034.079956,2034.079956,1970.890015,1970.890015,1970.890015,5018240000
278 | 2015-08-24,1965.150024,1965.150024,1867.010010,1893.209961,1893.209961,6612690000
279 | 2015-08-25,1898.079956,1948.040039,1867.079956,1867.609985,1867.609985,5183560000
280 | 2015-08-26,1872.750000,1943.089966,1872.750000,1940.510010,1940.510010,5338250000
281 | 2015-08-27,1942.770020,1989.599976,1942.770020,1987.660034,1987.660034,5006390000
282 | 2015-08-28,1986.060059,1993.479980,1975.189941,1988.869995,1988.869995,3949080000
283 | 2015-08-31,1986.729980,1986.729980,1965.979980,1972.180054,1972.180054,3915100000
284 | 2015-09-01,1970.089966,1970.089966,1903.069946,1913.849976,1913.849976,4371850000
285 | 2015-09-02,1916.520020,1948.910034,1916.520020,1948.859985,1948.859985,3742620000
286 | 2015-09-03,1950.790039,1975.010010,1944.719971,1951.130005,1951.130005,3520700000
287 | 2015-09-04,1947.760010,1947.760010,1911.209961,1921.219971,1921.219971,3167090000
288 | 2015-09-08,1927.300049,1970.420044,1927.300049,1969.410034,1969.410034,3548650000
289 | 2015-09-09,1971.449951,1988.630005,1937.880005,1942.040039,1942.040039,3652120000
290 | 2015-09-10,1941.589966,1965.290039,1937.189941,1952.290039,1952.290039,3626320000
291 | 2015-09-11,1951.449951,1961.050049,1939.189941,1961.050049,1961.050049,3218590000
292 | 2015-09-14,1963.060059,1963.060059,1948.270020,1953.030029,1953.030029,3000200000
293 | 2015-09-15,1955.099976,1983.189941,1954.300049,1978.089966,1978.089966,3239860000
294 | 2015-09-16,1978.020020,1997.260010,1977.930054,1995.310059,1995.310059,3630680000
295 | 2015-09-17,1995.329956,2020.859985,1986.729980,1990.199951,1990.199951,4183790000
296 | 2015-09-18,1989.660034,1989.660034,1953.449951,1958.030029,1958.030029,6021240000
297 | 2015-09-21,1960.839966,1979.640015,1955.800049,1966.969971,1966.969971,3269350000
298 | 2015-09-22,1961.390015,1961.390015,1929.219971,1942.739990,1942.739990,3808260000
299 | 2015-09-23,1943.239990,1949.520020,1932.569946,1938.760010,1938.760010,3190530000
300 | 2015-09-24,1934.810059,1937.170044,1908.920044,1932.239990,1932.239990,4091530000
301 | 2015-09-25,1935.930054,1952.890015,1921.500000,1931.339966,1931.339966,3721870000
302 | 2015-09-28,1929.180054,1929.180054,1879.209961,1881.770020,1881.770020,4326660000
303 | 2015-09-29,1881.900024,1899.479980,1871.910034,1884.089966,1884.089966,4132390000
304 | 2015-09-30,1887.140015,1920.530029,1887.140015,1920.030029,1920.030029,4525070000
305 | 2015-10-01,1919.650024,1927.209961,1900.699951,1923.819946,1923.819946,3983600000
306 | 2015-10-02,1921.770020,1951.359985,1893.699951,1951.359985,1951.359985,4378570000
307 | 2015-10-05,1954.329956,1989.170044,1954.329956,1987.050049,1987.050049,4334490000
308 | 2015-10-06,1986.630005,1991.619995,1971.989990,1979.920044,1979.920044,4202400000
309 | 2015-10-07,1982.339966,1999.310059,1976.439941,1995.829956,1995.829956,4666470000
310 | 2015-10-08,1994.010010,2016.500000,1987.530029,2013.430054,2013.430054,3939140000
311 | 2015-10-09,2013.729980,2020.130005,2007.609985,2014.890015,2014.890015,3706900000
312 | 2015-10-12,2015.650024,2018.660034,2010.550049,2017.459961,2017.459961,2893250000
313 | 2015-10-13,2015.000000,2022.339966,2001.780029,2003.689941,2003.689941,3401920000
314 | 2015-10-14,2003.660034,2009.560059,1990.729980,1994.239990,1994.239990,3644590000
315 | 2015-10-15,1996.469971,2024.150024,1996.469971,2023.859985,2023.859985,3746290000
316 | 2015-10-16,2024.369995,2033.540039,2020.459961,2033.109985,2033.109985,3595430000
317 | 2015-10-19,2031.729980,2034.449951,2022.310059,2033.660034,2033.660034,3287320000
318 | 2015-10-20,2033.130005,2039.119995,2026.609985,2030.770020,2030.770020,3331500000
319 | 2015-10-21,2033.469971,2037.969971,2017.219971,2018.939941,2018.939941,3627790000
320 | 2015-10-22,2021.880005,2055.199951,2021.880005,2052.510010,2052.510010,4430850000
321 | 2015-10-23,2058.189941,2079.739990,2058.189941,2075.149902,2075.149902,4108460000
322 | 2015-10-26,2075.080078,2075.139893,2066.530029,2071.179932,2071.179932,3385800000
323 | 2015-10-27,2068.750000,2070.370117,2058.840088,2065.889893,2065.889893,4216880000
324 | 2015-10-28,2066.479980,2090.350098,2063.110107,2090.350098,2090.350098,4698110000
325 | 2015-10-29,2088.350098,2092.520020,2082.629883,2089.409912,2089.409912,4008940000
326 | 2015-10-30,2090.000000,2094.320068,2079.340088,2079.360107,2079.360107,4256200000
327 | 2015-11-02,2080.760010,2106.199951,2080.760010,2104.050049,2104.050049,3760020000
328 | 2015-11-03,2102.629883,2116.479980,2097.510010,2109.790039,2109.790039,4272060000
329 | 2015-11-04,2110.600098,2114.590088,2096.979980,2102.310059,2102.310059,4078870000
330 | 2015-11-05,2101.679932,2108.780029,2090.409912,2099.929932,2099.929932,4051890000
331 | 2015-11-06,2098.600098,2101.909912,2083.739990,2099.199951,2099.199951,4369020000
332 | 2015-11-09,2096.560059,2096.560059,2068.239990,2078.580078,2078.580078,3882350000
333 | 2015-11-10,2077.189941,2083.669922,2069.909912,2081.719971,2081.719971,3821440000
334 | 2015-11-11,2083.409912,2086.939941,2074.850098,2075.000000,2075.000000,3692410000
335 | 2015-11-12,2072.290039,2072.290039,2045.660034,2045.969971,2045.969971,4016370000
336 | 2015-11-13,2044.640015,2044.640015,2022.020020,2023.040039,2023.040039,4278750000
337 | 2015-11-16,2022.079956,2053.219971,2019.390015,2053.189941,2053.189941,3741240000
338 | 2015-11-17,2053.669922,2066.689941,2045.900024,2050.439941,2050.439941,4427350000
339 | 2015-11-18,2051.989990,2085.310059,2051.989990,2083.580078,2083.580078,3926390000
340 | 2015-11-19,2083.699951,2086.739990,2078.760010,2081.239990,2081.239990,3628110000
341 | 2015-11-20,2082.820068,2097.060059,2082.820068,2089.169922,2089.169922,3929600000
342 | 2015-11-23,2089.409912,2095.610107,2081.389893,2086.590088,2086.590088,3587980000
343 | 2015-11-24,2084.419922,2094.120117,2070.290039,2089.139893,2089.139893,3884930000
344 | 2015-11-25,2089.300049,2093.000000,2086.300049,2088.870117,2088.870117,2852940000
345 | 2015-11-27,2088.820068,2093.290039,2084.129883,2090.110107,2090.110107,1466840000
346 | 2015-11-30,2090.949951,2093.810059,2080.409912,2080.409912,2080.409912,4275030000
347 | 2015-12-01,2082.929932,2103.370117,2082.929932,2102.629883,2102.629883,3712120000
348 | 2015-12-02,2101.709961,2104.270020,2077.110107,2079.510010,2079.510010,3950640000
349 | 2015-12-03,2080.709961,2085.000000,2042.349976,2049.620117,2049.620117,4306490000
350 | 2015-12-04,2051.239990,2093.840088,2051.239990,2091.689941,2091.689941,4214910000
351 | 2015-12-07,2090.419922,2090.419922,2066.780029,2077.070068,2077.070068,4043820000
352 | 2015-12-08,2073.389893,2073.850098,2052.320068,2063.590088,2063.590088,4173570000
353 | 2015-12-09,2061.169922,2080.330078,2036.530029,2047.619995,2047.619995,4385250000
354 | 2015-12-10,2047.930054,2067.649902,2045.670044,2052.229980,2052.229980,3715150000
355 | 2015-12-11,2047.270020,2047.270020,2008.800049,2012.369995,2012.369995,4301060000
356 | 2015-12-14,2013.369995,2022.920044,1993.260010,2021.939941,2021.939941,4612440000
357 | 2015-12-15,2025.550049,2053.870117,2025.550049,2043.410034,2043.410034,4353540000
358 | 2015-12-16,2046.500000,2076.719971,2042.430054,2073.070068,2073.070068,4635450000
359 | 2015-12-17,2073.760010,2076.370117,2041.660034,2041.890015,2041.890015,4327390000
360 | 2015-12-18,2040.810059,2040.810059,2005.329956,2005.550049,2005.550049,6683070000
361 | 2015-12-21,2010.270020,2022.900024,2005.930054,2021.150024,2021.150024,3760280000
362 | 2015-12-22,2023.150024,2042.739990,2020.489990,2038.969971,2038.969971,3520860000
363 | 2015-12-23,2042.199951,2064.729980,2042.199951,2064.290039,2064.290039,3484090000
364 | 2015-12-24,2063.520020,2067.360107,2058.729980,2060.989990,2060.989990,1411860000
365 | 2015-12-28,2057.770020,2057.770020,2044.199951,2056.500000,2056.500000,2492510000
366 | 2015-12-29,2060.540039,2081.560059,2060.540039,2078.360107,2078.360107,2542000000
367 | 2015-12-30,2077.340088,2077.340088,2061.969971,2063.360107,2063.360107,2367430000
368 | 2015-12-31,2060.590088,2062.540039,2043.619995,2043.939941,2043.939941,2655330000
369 | 2016-01-04,2038.199951,2038.199951,1989.680054,2012.660034,2012.660034,4304880000
370 | 2016-01-05,2013.780029,2021.939941,2004.170044,2016.709961,2016.709961,3706620000
371 | 2016-01-06,2011.709961,2011.709961,1979.050049,1990.260010,1990.260010,4336660000
372 | 2016-01-07,1985.319946,1985.319946,1938.829956,1943.089966,1943.089966,5076590000
373 | 2016-01-08,1945.969971,1960.400024,1918.459961,1922.030029,1922.030029,4664940000
374 | 2016-01-11,1926.119995,1935.650024,1901.099976,1923.670044,1923.670044,4607290000
375 | 2016-01-12,1927.829956,1947.380005,1914.349976,1938.680054,1938.680054,4887260000
376 | 2016-01-13,1940.339966,1950.329956,1886.410034,1890.280029,1890.280029,5087030000
377 | 2016-01-14,1891.680054,1934.469971,1878.930054,1921.839966,1921.839966,5241110000
378 | 2016-01-15,1916.680054,1916.680054,1857.829956,1880.329956,1880.329956,5468460000
379 | 2016-01-19,1888.660034,1901.439941,1864.599976,1881.329956,1881.329956,4928350000
380 | 2016-01-20,1876.180054,1876.180054,1812.290039,1859.329956,1859.329956,6416070000
381 | 2016-01-21,1861.459961,1889.849976,1848.979980,1868.989990,1868.989990,5078810000
382 | 2016-01-22,1877.400024,1908.849976,1877.400024,1906.900024,1906.900024,4901760000
383 | 2016-01-25,1906.280029,1906.280029,1875.969971,1877.079956,1877.079956,4401380000
384 | 2016-01-26,1878.790039,1906.729980,1878.790039,1903.630005,1903.630005,4357940000
385 | 2016-01-27,1902.520020,1916.989990,1872.699951,1882.949951,1882.949951,4754040000
386 | 2016-01-28,1885.219971,1902.959961,1873.650024,1893.359985,1893.359985,4693010000
387 | 2016-01-29,1894.000000,1940.239990,1894.000000,1940.239990,1940.239990,5497570000
388 | 2016-02-01,1936.939941,1947.199951,1920.300049,1939.380005,1939.380005,4322530000
389 | 2016-02-02,1935.260010,1935.260010,1897.290039,1903.030029,1903.030029,4463190000
390 | 2016-02-03,1907.069946,1918.010010,1872.229980,1912.530029,1912.530029,5172950000
391 | 2016-02-04,1911.670044,1927.349976,1900.520020,1915.449951,1915.449951,5193320000
392 | 2016-02-05,1913.069946,1913.069946,1872.650024,1880.050049,1880.050049,4929940000
393 | 2016-02-08,1873.250000,1873.250000,1828.459961,1853.439941,1853.439941,5636460000
394 | 2016-02-09,1848.459961,1868.250000,1834.939941,1852.209961,1852.209961,5183220000
395 | 2016-02-10,1857.099976,1881.599976,1850.319946,1851.859985,1851.859985,4471170000
396 | 2016-02-11,1847.000000,1847.000000,1810.099976,1829.079956,1829.079956,5500800000
397 | 2016-02-12,1833.400024,1864.780029,1833.400024,1864.780029,1864.780029,4696920000
398 | 2016-02-16,1871.439941,1895.770020,1871.439941,1895.579956,1895.579956,4570670000
399 | 2016-02-17,1898.800049,1930.680054,1898.800049,1926.819946,1926.819946,5011540000
400 | 2016-02-18,1927.569946,1930.000000,1915.089966,1917.829956,1917.829956,4436490000
401 | 2016-02-19,1916.739990,1918.780029,1902.170044,1917.780029,1917.780029,4142850000
402 | 2016-02-22,1924.439941,1946.699951,1924.439941,1945.500000,1945.500000,4054710000
403 | 2016-02-23,1942.380005,1942.380005,1919.439941,1921.270020,1921.270020,3890650000
404 | 2016-02-24,1917.560059,1932.079956,1891.000000,1929.800049,1929.800049,4317250000
405 | 2016-02-25,1931.869995,1951.829956,1925.410034,1951.699951,1951.699951,4118210000
406 | 2016-02-26,1954.949951,1962.959961,1945.780029,1948.050049,1948.050049,4348510000
407 | 2016-02-29,1947.130005,1958.270020,1931.810059,1932.229980,1932.229980,4588180000
408 | 2016-03-01,1937.089966,1978.349976,1937.089966,1978.349976,1978.349976,4819750000
409 | 2016-03-02,1976.599976,1986.510010,1968.800049,1986.449951,1986.449951,4666610000
410 | 2016-03-03,1985.599976,1993.689941,1977.369995,1993.400024,1993.400024,5081700000
411 | 2016-03-04,1994.010010,2009.130005,1986.770020,1999.989990,1999.989990,6049930000
412 | 2016-03-07,1996.109985,2006.119995,1989.380005,2001.760010,2001.760010,4968180000
413 | 2016-03-08,1996.880005,1996.880005,1977.430054,1979.260010,1979.260010,4641650000
414 | 2016-03-09,1981.439941,1992.689941,1979.839966,1989.260010,1989.260010,4038120000
415 | 2016-03-10,1990.969971,2005.079956,1969.250000,1989.569946,1989.569946,4376790000
416 | 2016-03-11,1994.709961,2022.369995,1994.709961,2022.189941,2022.189941,4078620000
417 | 2016-03-14,2019.270020,2024.569946,2012.050049,2019.640015,2019.640015,3487850000
418 | 2016-03-15,2015.270020,2015.939941,2005.229980,2015.930054,2015.930054,3560280000
419 | 2016-03-16,2014.239990,2032.020020,2010.040039,2027.219971,2027.219971,4057020000
420 | 2016-03-17,2026.900024,2046.239990,2022.160034,2040.589966,2040.589966,4530480000
421 | 2016-03-18,2041.160034,2052.360107,2041.160034,2049.580078,2049.580078,6503140000
422 | 2016-03-21,2047.880005,2053.909912,2043.140015,2051.600098,2051.600098,3376600000
423 | 2016-03-22,2048.639893,2056.600098,2040.569946,2049.800049,2049.800049,3418460000
424 | 2016-03-23,2048.550049,2048.550049,2034.859985,2036.709961,2036.709961,3639510000
425 | 2016-03-24,2032.479980,2036.040039,2022.489990,2035.939941,2035.939941,3407720000
426 | 2016-03-28,2037.890015,2042.670044,2031.959961,2037.050049,2037.050049,2809090000
427 | 2016-03-29,2035.750000,2055.909912,2028.310059,2055.010010,2055.010010,3822330000
428 | 2016-03-30,2058.270020,2072.209961,2058.270020,2063.949951,2063.949951,3590310000
429 | 2016-03-31,2063.770020,2067.919922,2057.459961,2059.739990,2059.739990,3715280000
430 | 2016-04-01,2056.620117,2075.070068,2043.979980,2072.780029,2072.780029,3749990000
431 | 2016-04-04,2073.189941,2074.020020,2062.570068,2066.129883,2066.129883,3485710000
432 | 2016-04-05,2062.500000,2062.500000,2042.560059,2045.170044,2045.170044,4154920000
433 | 2016-04-06,2045.560059,2067.330078,2043.089966,2066.659912,2066.659912,3750800000
434 | 2016-04-07,2063.010010,2063.010010,2033.800049,2041.910034,2041.910034,3801250000
435 | 2016-04-08,2045.540039,2060.629883,2041.689941,2047.599976,2047.599976,3359530000
436 | 2016-04-11,2050.229980,2062.929932,2041.880005,2041.989990,2041.989990,3567840000
437 | 2016-04-12,2043.719971,2065.050049,2039.739990,2061.719971,2061.719971,4239740000
438 | 2016-04-13,2065.919922,2083.179932,2065.919922,2082.419922,2082.419922,4191830000
439 | 2016-04-14,2082.889893,2087.840088,2078.129883,2082.780029,2082.780029,3765870000
440 | 2016-04-15,2083.100098,2083.219971,2076.310059,2080.729980,2080.729980,3701450000
441 | 2016-04-18,2078.830078,2094.659912,2073.649902,2094.340088,2094.340088,3316880000
442 | 2016-04-19,2096.050049,2104.050049,2091.679932,2100.800049,2100.800049,3896830000
443 | 2016-04-20,2101.520020,2111.050049,2096.320068,2102.399902,2102.399902,4184880000
444 | 2016-04-21,2102.090088,2103.780029,2088.520020,2091.479980,2091.479980,4175290000
445 | 2016-04-22,2091.489990,2094.320068,2081.199951,2091.580078,2091.580078,3790580000
446 | 2016-04-25,2089.370117,2089.370117,2077.520020,2087.790039,2087.790039,3319740000
447 | 2016-04-26,2089.840088,2096.870117,2085.800049,2091.699951,2091.699951,3557190000
448 | 2016-04-27,2092.330078,2099.889893,2082.310059,2095.149902,2095.149902,4100110000
449 | 2016-04-28,2090.929932,2099.300049,2071.620117,2075.810059,2075.810059,4309840000
450 | 2016-04-29,2071.820068,2073.850098,2052.280029,2065.300049,2065.300049,4704720000
451 | 2016-05-02,2067.169922,2083.419922,2066.110107,2081.429932,2081.429932,3841110000
452 | 2016-05-03,2077.179932,2077.179932,2054.889893,2063.370117,2063.370117,4173390000
453 | 2016-05-04,2060.300049,2060.300049,2045.550049,2051.120117,2051.120117,4058560000
454 | 2016-05-05,2052.949951,2060.229980,2045.770020,2050.629883,2050.629883,4008530000
455 | 2016-05-06,2047.770020,2057.719971,2039.449951,2057.139893,2057.139893,3796350000
456 | 2016-05-09,2057.550049,2064.149902,2054.310059,2058.689941,2058.689941,3788620000
457 | 2016-05-10,2062.629883,2084.870117,2062.629883,2084.389893,2084.389893,3600200000
458 | 2016-05-11,2083.290039,2083.290039,2064.459961,2064.459961,2064.459961,3821980000
459 | 2016-05-12,2067.169922,2073.989990,2053.129883,2064.110107,2064.110107,3782390000
460 | 2016-05-13,2062.500000,2066.790039,2043.130005,2046.609985,2046.609985,3579880000
461 | 2016-05-16,2046.530029,2071.879883,2046.530029,2066.659912,2066.659912,3501360000
462 | 2016-05-17,2065.040039,2065.689941,2040.819946,2047.209961,2047.209961,4108960000
463 | 2016-05-18,2044.380005,2060.610107,2034.489990,2047.630005,2047.630005,4101320000
464 | 2016-05-19,2044.209961,2044.209961,2025.910034,2040.040039,2040.040039,3846770000
465 | 2016-05-20,2041.880005,2058.350098,2041.880005,2052.320068,2052.320068,3507650000
466 | 2016-05-23,2052.229980,2055.580078,2047.260010,2048.040039,2048.040039,3055480000
467 | 2016-05-24,2052.649902,2079.669922,2052.649902,2076.060059,2076.060059,3627340000
468 | 2016-05-25,2078.929932,2094.729980,2078.929932,2090.540039,2090.540039,3859160000
469 | 2016-05-26,2091.439941,2094.300049,2087.080078,2090.100098,2090.100098,3230990000
470 | 2016-05-27,2090.060059,2099.060059,2090.060059,2099.060059,2099.060059,3079150000
471 | 2016-05-31,2100.129883,2103.479980,2088.659912,2096.949951,2096.949951,4514410000
472 | 2016-06-01,2093.939941,2100.969971,2085.100098,2099.330078,2099.330078,3525170000
473 | 2016-06-02,2097.709961,2105.260010,2088.590088,2105.260010,2105.260010,3632720000
474 | 2016-06-03,2104.070068,2104.070068,2085.360107,2099.129883,2099.129883,3627780000
475 | 2016-06-06,2100.830078,2113.360107,2100.830078,2109.409912,2109.409912,3442020000
476 | 2016-06-07,2110.179932,2119.219971,2110.179932,2112.129883,2112.129883,3534730000
477 | 2016-06-08,2112.709961,2120.550049,2112.709961,2119.120117,2119.120117,3562060000
478 | 2016-06-09,2115.649902,2117.639893,2107.729980,2115.479980,2115.479980,3290320000
479 | 2016-06-10,2109.570068,2109.570068,2089.959961,2096.070068,2096.070068,3515010000
480 | 2016-06-13,2091.750000,2098.120117,2078.459961,2079.060059,2079.060059,3392030000
481 | 2016-06-14,2076.649902,2081.300049,2064.100098,2075.320068,2075.320068,3759770000
482 | 2016-06-15,2077.600098,2085.649902,2069.800049,2071.500000,2071.500000,3544720000
483 | 2016-06-16,2066.360107,2079.620117,2050.370117,2077.989990,2077.989990,3628280000
484 | 2016-06-17,2078.199951,2078.199951,2062.840088,2071.219971,2071.219971,4952630000
485 | 2016-06-20,2075.580078,2100.659912,2075.580078,2083.250000,2083.250000,3467440000
486 | 2016-06-21,2085.189941,2093.659912,2083.020020,2088.899902,2088.899902,3232880000
487 | 2016-06-22,2089.750000,2099.709961,2084.360107,2085.449951,2085.449951,3168160000
488 | 2016-06-23,2092.800049,2113.320068,2092.800049,2113.320068,2113.320068,3297940000
489 | 2016-06-24,2103.810059,2103.810059,2032.569946,2037.410034,2037.410034,7597450000
490 | 2016-06-27,2031.449951,2031.449951,1991.680054,2000.540039,2000.540039,5431220000
491 | 2016-06-28,2006.670044,2036.089966,2006.670044,2036.089966,2036.089966,4385810000
492 | 2016-06-29,2042.689941,2073.129883,2042.689941,2070.770020,2070.770020,4241740000
493 | 2016-06-30,2073.169922,2098.939941,2070.000000,2098.860107,2098.860107,4622820000
494 | 2016-07-01,2099.340088,2108.709961,2097.899902,2102.949951,2102.949951,3458890000
495 | 2016-07-05,2095.050049,2095.050049,2080.860107,2088.550049,2088.550049,3658380000
496 | 2016-07-06,2084.429932,2100.719971,2074.020020,2099.729980,2099.729980,3909380000
497 | 2016-07-07,2100.419922,2109.080078,2089.389893,2097.899902,2097.899902,3604550000
498 | 2016-07-08,2106.969971,2131.709961,2106.969971,2129.899902,2129.899902,3607500000
499 | 2016-07-11,2131.719971,2143.159912,2131.719971,2137.159912,2137.159912,3253340000
500 | 2016-07-12,2139.500000,2155.399902,2139.500000,2152.139893,2152.139893,4097820000
501 | 2016-07-13,2153.810059,2156.449951,2146.209961,2152.429932,2152.429932,3502320000
502 | 2016-07-14,2157.879883,2168.989990,2157.879883,2163.750000,2163.750000,3465610000
503 | 2016-07-15,2165.129883,2169.050049,2155.790039,2161.739990,2161.739990,3122600000
504 | 2016-07-18,2162.040039,2168.350098,2159.629883,2166.889893,2166.889893,3009310000
505 | 2016-07-19,2163.790039,2164.629883,2159.010010,2163.780029,2163.780029,2968340000
506 | 2016-07-20,2166.100098,2175.629883,2164.889893,2173.020020,2173.020020,3211860000
507 | 2016-07-21,2172.909912,2174.560059,2159.750000,2165.169922,2165.169922,3438900000
508 | 2016-07-22,2166.469971,2175.110107,2163.239990,2175.030029,2175.030029,3023280000
509 | 2016-07-25,2173.709961,2173.709961,2161.949951,2168.479980,2168.479980,3057240000
510 | 2016-07-26,2168.969971,2173.540039,2160.179932,2169.179932,2169.179932,3442350000
511 | 2016-07-27,2169.810059,2174.979980,2159.070068,2166.580078,2166.580078,3995500000
512 | 2016-07-28,2166.050049,2172.850098,2159.739990,2170.060059,2170.060059,3664240000
513 | 2016-07-29,2168.830078,2177.090088,2163.489990,2173.600098,2173.600098,4038840000
514 | 2016-08-01,2173.149902,2178.290039,2166.209961,2170.840088,2170.840088,3505990000
515 | 2016-08-02,2169.939941,2170.199951,2147.580078,2157.030029,2157.030029,3848750000
516 | 2016-08-03,2156.810059,2163.790039,2152.560059,2163.790039,2163.790039,3786530000
517 | 2016-08-04,2163.510010,2168.189941,2159.070068,2164.250000,2164.250000,3709200000
518 | 2016-08-05,2168.790039,2182.870117,2168.790039,2182.870117,2182.870117,3663070000
519 | 2016-08-08,2183.760010,2185.439941,2177.850098,2180.889893,2180.889893,3327550000
520 | 2016-08-09,2182.239990,2187.659912,2178.610107,2181.739990,2181.739990,3334300000
521 | 2016-08-10,2182.810059,2183.409912,2172.000000,2175.489990,2175.489990,3254950000
522 | 2016-08-11,2177.969971,2188.449951,2177.969971,2185.790039,2185.790039,3423160000
523 | 2016-08-12,2183.739990,2186.280029,2179.419922,2184.050049,2184.050049,3000660000
524 | 2016-08-15,2186.080078,2193.810059,2186.080078,2190.149902,2190.149902,3078530000
525 | 2016-08-16,2186.239990,2186.239990,2178.139893,2178.149902,2178.149902,3196400000
526 | 2016-08-17,2177.840088,2183.080078,2168.500000,2182.219971,2182.219971,3388910000
527 | 2016-08-18,2181.899902,2187.030029,2180.459961,2187.020020,2187.020020,3300570000
528 | 2016-08-19,2184.239990,2185.000000,2175.129883,2183.870117,2183.870117,3084800000
529 | 2016-08-22,2181.580078,2185.149902,2175.959961,2182.639893,2182.639893,2777550000
530 | 2016-08-23,2187.810059,2193.419922,2186.800049,2186.899902,2186.899902,3041490000
531 | 2016-08-24,2185.090088,2186.659912,2171.250000,2175.439941,2175.439941,3148280000
532 | 2016-08-25,2173.290039,2179.000000,2169.739990,2172.469971,2172.469971,2969310000
533 | 2016-08-26,2175.100098,2187.939941,2160.389893,2169.040039,2169.040039,3342340000
534 | 2016-08-29,2170.189941,2183.479980,2170.189941,2180.379883,2180.379883,2654780000
535 | 2016-08-30,2179.449951,2182.270020,2170.409912,2176.120117,2176.120117,3006800000
536 | 2016-08-31,2173.560059,2173.790039,2161.350098,2170.949951,2170.949951,3766390000
537 | 2016-09-01,2171.330078,2173.560059,2157.090088,2170.860107,2170.860107,3392120000
538 | 2016-09-02,2177.489990,2184.870117,2173.590088,2179.979980,2179.979980,3091120000
539 | 2016-09-06,2181.610107,2186.570068,2175.100098,2186.479980,2186.479980,3447650000
540 | 2016-09-07,2185.169922,2187.870117,2179.070068,2186.159912,2186.159912,3319420000
541 | 2016-09-08,2182.760010,2184.939941,2177.489990,2181.300049,2181.300049,3727840000
542 | 2016-09-09,2169.080078,2169.080078,2127.810059,2127.810059,2127.810059,4233960000
543 | 2016-09-12,2120.860107,2163.300049,2119.120117,2159.040039,2159.040039,4010480000
544 | 2016-09-13,2150.469971,2150.469971,2120.270020,2127.020020,2127.020020,4141670000
545 | 2016-09-14,2127.860107,2141.330078,2119.899902,2125.770020,2125.770020,3664100000
546 | 2016-09-15,2125.360107,2151.310059,2122.360107,2147.260010,2147.260010,3373720000
547 | 2016-09-16,2146.479980,2146.479980,2131.199951,2139.159912,2139.159912,5014360000
548 | 2016-09-19,2143.989990,2153.610107,2135.909912,2139.120117,2139.120117,3163000000
549 | 2016-09-20,2145.939941,2150.800049,2139.169922,2139.760010,2139.760010,3140730000
550 | 2016-09-21,2144.580078,2165.110107,2139.570068,2163.120117,2163.120117,3712090000
551 | 2016-09-22,2170.939941,2179.989990,2170.939941,2177.179932,2177.179932,3552830000
552 | 2016-09-23,2173.290039,2173.750000,2163.969971,2164.689941,2164.689941,3317190000
553 | 2016-09-26,2158.540039,2158.540039,2145.040039,2146.100098,2146.100098,3216170000
554 | 2016-09-27,2146.040039,2161.129883,2141.550049,2159.929932,2159.929932,3437770000
555 | 2016-09-28,2161.850098,2172.399902,2151.790039,2171.370117,2171.370117,3891460000
556 | 2016-09-29,2168.899902,2172.669922,2145.199951,2151.129883,2151.129883,4249220000
557 | 2016-09-30,2156.510010,2175.300049,2156.510010,2168.270020,2168.270020,4173340000
558 | 2016-10-03,2164.330078,2164.409912,2154.770020,2161.199951,2161.199951,3137550000
559 | 2016-10-04,2163.370117,2165.459961,2144.010010,2150.489990,2150.489990,3750890000
560 | 2016-10-05,2155.149902,2163.949951,2155.149902,2159.729980,2159.729980,3906550000
561 | 2016-10-06,2158.219971,2162.929932,2150.280029,2160.770020,2160.770020,3461550000
562 | 2016-10-07,2164.189941,2165.860107,2144.850098,2153.739990,2153.739990,3619890000
563 | 2016-10-10,2160.389893,2169.600098,2160.389893,2163.659912,2163.659912,2916550000
564 | 2016-10-11,2161.350098,2161.560059,2128.840088,2136.729980,2136.729980,3438270000
565 | 2016-10-12,2137.669922,2145.360107,2132.770020,2139.179932,2139.179932,2977100000
566 | 2016-10-13,2130.260010,2138.189941,2114.719971,2132.550049,2132.550049,3580450000
567 | 2016-10-14,2139.679932,2149.189941,2132.979980,2132.979980,2132.979980,3228150000
568 | 2016-10-17,2132.949951,2135.610107,2124.429932,2126.500000,2126.500000,2830390000
569 | 2016-10-18,2138.310059,2144.379883,2135.489990,2139.600098,2139.600098,3170000000
570 | 2016-10-19,2140.810059,2148.439941,2138.149902,2144.290039,2144.290039,3362670000
571 | 2016-10-20,2142.510010,2147.179932,2133.439941,2141.340088,2141.340088,3337170000
572 | 2016-10-21,2139.429932,2142.629883,2130.090088,2141.159912,2141.159912,3448850000
573 | 2016-10-24,2148.500000,2154.790039,2146.909912,2151.330078,2151.330078,3357320000
574 | 2016-10-25,2149.719971,2151.439941,2141.929932,2143.159912,2143.159912,3751340000
575 | 2016-10-26,2136.969971,2145.729980,2131.590088,2139.429932,2139.429932,3775200000
576 | 2016-10-27,2144.060059,2147.129883,2132.520020,2133.040039,2133.040039,4204830000
577 | 2016-10-28,2132.229980,2140.719971,2119.360107,2126.409912,2126.409912,4019510000
578 | 2016-10-31,2129.780029,2133.250000,2125.530029,2126.149902,2126.149902,3922400000
579 | 2016-11-01,2128.679932,2131.449951,2097.850098,2111.719971,2111.719971,4532160000
580 | 2016-11-02,2109.429932,2111.760010,2094.000000,2097.939941,2097.939941,4248580000
581 | 2016-11-03,2098.800049,2102.560059,2085.229980,2088.659912,2088.659912,3886740000
582 | 2016-11-04,2083.790039,2099.070068,2083.790039,2085.179932,2085.179932,3837860000
583 | 2016-11-07,2100.590088,2132.000000,2100.590088,2131.520020,2131.520020,3736060000
584 | 2016-11-08,2129.919922,2146.870117,2123.560059,2139.560059,2139.560059,3916930000
585 | 2016-11-09,2131.560059,2170.100098,2125.350098,2163.260010,2163.260010,6264150000
586 | 2016-11-10,2167.489990,2182.300049,2151.169922,2167.479980,2167.479980,6451640000
587 | 2016-11-11,2162.709961,2165.919922,2152.489990,2164.449951,2164.449951,4988050000
588 | 2016-11-14,2165.639893,2171.360107,2156.080078,2164.199951,2164.199951,5367200000
589 | 2016-11-15,2168.290039,2180.840088,2166.379883,2180.389893,2180.389893,4543860000
590 | 2016-11-16,2177.530029,2179.219971,2172.199951,2176.939941,2176.939941,3830590000
591 | 2016-11-17,2178.610107,2188.060059,2176.649902,2187.120117,2187.120117,3809160000
592 | 2016-11-18,2186.850098,2189.889893,2180.379883,2181.899902,2181.899902,3572400000
593 | 2016-11-21,2186.429932,2198.699951,2186.429932,2198.179932,2198.179932,3607010000
594 | 2016-11-22,2201.560059,2204.800049,2194.510010,2202.939941,2202.939941,3957940000
595 | 2016-11-23,2198.550049,2204.719971,2194.510010,2204.719971,2204.719971,3418640000
596 | 2016-11-25,2206.270020,2213.350098,2206.270020,2213.350098,2213.350098,1584600000
597 | 2016-11-28,2210.209961,2211.139893,2200.360107,2201.719971,2201.719971,3505650000
598 | 2016-11-29,2200.760010,2210.459961,2198.149902,2204.659912,2204.659912,3706560000
599 | 2016-11-30,2204.969971,2214.100098,2198.810059,2198.810059,2198.810059,5533980000
600 | 2016-12-01,2200.169922,2202.600098,2187.439941,2191.080078,2191.080078,5063740000
601 | 2016-12-02,2191.120117,2197.949951,2188.370117,2191.949951,2191.949951,3779500000
602 | 2016-12-05,2200.649902,2209.419922,2199.969971,2204.709961,2204.709961,3895230000
603 | 2016-12-06,2207.260010,2212.780029,2202.209961,2212.229980,2212.229980,3855320000
604 | 2016-12-07,2210.719971,2241.629883,2208.929932,2241.350098,2241.350098,4501820000
605 | 2016-12-08,2241.129883,2251.689941,2237.570068,2246.189941,2246.189941,4200580000
606 | 2016-12-09,2249.729980,2259.800049,2249.229980,2259.530029,2259.530029,3884480000
607 | 2016-12-12,2258.830078,2264.030029,2252.370117,2256.959961,2256.959961,4034510000
608 | 2016-12-13,2263.320068,2277.530029,2263.320068,2271.719971,2271.719971,3857590000
609 | 2016-12-14,2268.350098,2276.199951,2248.439941,2253.280029,2253.280029,4406970000
610 | 2016-12-15,2253.770020,2272.120117,2253.770020,2262.030029,2262.030029,4168200000
611 | 2016-12-16,2266.810059,2268.050049,2254.239990,2258.070068,2258.070068,5920340000
612 | 2016-12-19,2259.239990,2267.469971,2258.209961,2262.530029,2262.530029,3248370000
613 | 2016-12-20,2266.500000,2272.560059,2266.139893,2270.760010,2270.760010,3298780000
614 | 2016-12-21,2270.540039,2271.229980,2265.149902,2265.179932,2265.179932,2852230000
615 | 2016-12-22,2262.929932,2263.179932,2256.080078,2260.959961,2260.959961,2876320000
616 | 2016-12-23,2260.250000,2263.790039,2258.840088,2263.790039,2263.790039,2020550000
617 | 2016-12-27,2266.229980,2273.820068,2266.149902,2268.879883,2268.879883,1987080000
618 | 2016-12-28,2270.229980,2271.310059,2249.110107,2249.919922,2249.919922,2392360000
619 | 2016-12-29,2249.500000,2254.510010,2244.560059,2249.260010,2249.260010,2336370000
620 | 2016-12-30,2251.610107,2253.580078,2233.620117,2238.830078,2238.830078,2670900000
621 | 2017-01-03,2251.570068,2263.879883,2245.129883,2257.830078,2257.830078,3770530000
622 | 2017-01-04,2261.600098,2272.820068,2261.600098,2270.750000,2270.750000,3764890000
623 | 2017-01-05,2268.179932,2271.500000,2260.449951,2269.000000,2269.000000,3761820000
624 | 2017-01-06,2271.139893,2282.100098,2264.060059,2276.979980,2276.979980,3339890000
625 | 2017-01-09,2273.590088,2275.489990,2268.899902,2268.899902,2268.899902,3217610000
626 | 2017-01-10,2269.719971,2279.270020,2265.270020,2268.899902,2268.899902,3638790000
627 | 2017-01-11,2268.600098,2275.320068,2260.830078,2275.320068,2275.320068,3620410000
628 | 2017-01-12,2271.139893,2271.780029,2254.250000,2270.439941,2270.439941,3462130000
629 | 2017-01-13,2272.739990,2278.679932,2271.510010,2274.639893,2274.639893,3081270000
630 | 2017-01-17,2269.139893,2272.080078,2262.810059,2267.889893,2267.889893,3584990000
631 | 2017-01-18,2269.139893,2272.010010,2263.350098,2271.889893,2271.889893,3315250000
632 | 2017-01-19,2271.899902,2274.330078,2258.409912,2263.689941,2263.689941,3165970000
633 | 2017-01-20,2269.959961,2276.959961,2265.010010,2271.310059,2271.310059,3524970000
634 | 2017-01-23,2267.780029,2271.780029,2257.020020,2265.199951,2265.199951,3152710000
635 | 2017-01-24,2267.879883,2284.629883,2266.679932,2280.070068,2280.070068,3810960000
636 | 2017-01-25,2288.879883,2299.550049,2288.879883,2298.370117,2298.370117,3846020000
637 | 2017-01-26,2298.629883,2300.989990,2294.080078,2296.679932,2296.679932,3610360000
638 | 2017-01-27,2299.020020,2299.020020,2291.620117,2294.689941,2294.689941,3135890000
639 | 2017-01-30,2286.010010,2286.010010,2268.040039,2280.899902,2280.899902,3591270000
640 | 2017-01-31,2274.020020,2279.090088,2267.209961,2278.870117,2278.870117,4087450000
641 | 2017-02-01,2285.590088,2289.139893,2272.439941,2279.550049,2279.550049,3916610000
642 | 2017-02-02,2276.689941,2283.969971,2271.649902,2280.850098,2280.850098,3807710000
643 | 2017-02-03,2288.540039,2298.310059,2287.879883,2297.419922,2297.419922,3597970000
644 | 2017-02-06,2294.280029,2296.179932,2288.570068,2292.560059,2292.560059,3109050000
645 | 2017-02-07,2295.870117,2299.399902,2290.159912,2293.080078,2293.080078,3448690000
646 | 2017-02-08,2289.550049,2295.909912,2285.379883,2294.669922,2294.669922,3609740000
647 | 2017-02-09,2296.699951,2311.080078,2296.610107,2307.870117,2307.870117,3677940000
648 | 2017-02-10,2312.270020,2319.229980,2311.100098,2316.100098,2316.100098,3475020000
649 | 2017-02-13,2321.719971,2331.580078,2321.419922,2328.250000,2328.250000,3349730000
650 | 2017-02-14,2326.120117,2337.580078,2322.169922,2337.580078,2337.580078,3520910000
651 | 2017-02-15,2335.580078,2351.300049,2334.810059,2349.250000,2349.250000,3775590000
652 | 2017-02-16,2349.639893,2351.310059,2338.870117,2347.219971,2347.219971,3672370000
653 | 2017-02-17,2343.010010,2351.159912,2339.580078,2351.159912,2351.159912,3513060000
654 | 2017-02-21,2354.909912,2366.709961,2354.909912,2365.379883,2365.379883,3579780000
655 | 2017-02-22,2361.110107,2365.129883,2358.340088,2362.820068,2362.820068,3468670000
656 | 2017-02-23,2367.500000,2368.260010,2355.090088,2363.810059,2363.810059,4015260000
657 | 2017-02-24,2355.729980,2367.340088,2352.870117,2367.340088,2367.340088,3831570000
658 | 2017-02-27,2365.229980,2371.540039,2361.870117,2369.750000,2369.750000,3582610000
659 | 2017-02-28,2366.080078,2367.790039,2358.959961,2363.639893,2363.639893,4210140000
660 | 2017-03-01,2380.129883,2400.979980,2380.129883,2395.959961,2395.959961,4345180000
661 | 2017-03-02,2394.750000,2394.750000,2380.169922,2381.919922,2381.919922,3821320000
662 | 2017-03-03,2380.919922,2383.889893,2375.389893,2383.120117,2383.120117,3555260000
663 | 2017-03-06,2375.229980,2378.800049,2367.979980,2375.310059,2375.310059,3232700000
664 | 2017-03-07,2370.739990,2375.120117,2365.510010,2368.389893,2368.389893,3518390000
665 | 2017-03-08,2369.810059,2373.090088,2361.010010,2362.979980,2362.979980,3812100000
666 | 2017-03-09,2363.489990,2369.080078,2354.540039,2364.870117,2364.870117,3716340000
667 | 2017-03-10,2372.520020,2376.860107,2363.040039,2372.600098,2372.600098,3432950000
668 | 2017-03-13,2371.560059,2374.419922,2368.520020,2373.469971,2373.469971,3133900000
669 | 2017-03-14,2368.550049,2368.550049,2358.179932,2365.449951,2365.449951,3172630000
670 | 2017-03-15,2370.340088,2390.010010,2368.939941,2385.260010,2385.260010,3906840000
671 | 2017-03-16,2387.709961,2388.100098,2377.179932,2381.379883,2381.379883,3365660000
672 | 2017-03-17,2383.709961,2385.709961,2377.639893,2378.250000,2378.250000,5178040000
673 | 2017-03-20,2378.239990,2379.550049,2369.659912,2373.469971,2373.469971,3054930000
674 | 2017-03-21,2379.320068,2381.929932,2341.899902,2344.020020,2344.020020,4265590000
675 | 2017-03-22,2343.000000,2351.810059,2336.449951,2348.449951,2348.449951,3572730000
676 | 2017-03-23,2345.969971,2358.919922,2342.129883,2345.959961,2345.959961,3260600000
677 | 2017-03-24,2350.419922,2356.219971,2335.739990,2343.979980,2343.979980,2975130000
678 | 2017-03-27,2329.110107,2344.899902,2322.250000,2341.590088,2341.590088,3240230000
679 | 2017-03-28,2339.790039,2363.780029,2337.629883,2358.570068,2358.570068,3367780000
680 | 2017-03-29,2356.540039,2363.360107,2352.939941,2361.129883,2361.129883,3106940000
681 | 2017-03-30,2361.310059,2370.419922,2358.580078,2368.060059,2368.060059,3158420000
682 | 2017-03-31,2364.820068,2370.350098,2362.600098,2362.719971,2362.719971,3354110000
683 | 2017-04-03,2362.340088,2365.870117,2344.729980,2358.840088,2358.840088,3416400000
684 | 2017-04-04,2354.760010,2360.530029,2350.719971,2360.159912,2360.159912,3206240000
685 | 2017-04-05,2366.590088,2378.360107,2350.520020,2352.949951,2352.949951,3770520000
686 | 2017-04-06,2353.790039,2364.159912,2348.899902,2357.489990,2357.489990,3201920000
687 | 2017-04-07,2356.590088,2363.760010,2350.739990,2355.540039,2355.540039,3053150000
688 | 2017-04-10,2357.159912,2366.370117,2351.500000,2357.159912,2357.159912,2785410000
689 | 2017-04-11,2353.919922,2355.219971,2337.250000,2353.780029,2353.780029,3117420000
690 | 2017-04-12,2352.149902,2352.719971,2341.179932,2344.929932,2344.929932,3196950000
691 | 2017-04-13,2341.979980,2348.260010,2328.949951,2328.949951,2328.949951,3143890000
692 | 2017-04-17,2332.620117,2349.139893,2332.510010,2349.010010,2349.010010,2824710000
693 | 2017-04-18,2342.530029,2348.350098,2334.540039,2342.189941,2342.189941,3269840000
694 | 2017-04-19,2346.790039,2352.629883,2335.050049,2338.169922,2338.169922,3519900000
695 | 2017-04-20,2342.689941,2361.370117,2340.909912,2355.840088,2355.840088,3647420000
696 | 2017-04-21,2354.739990,2356.179932,2344.510010,2348.689941,2348.689941,3503360000
697 | 2017-04-24,2370.330078,2376.979980,2369.189941,2374.149902,2374.149902,3690650000
698 | 2017-04-25,2381.510010,2392.479980,2381.149902,2388.610107,2388.610107,3995240000
699 | 2017-04-26,2388.979980,2398.159912,2386.780029,2387.449951,2387.449951,4105920000
700 | 2017-04-27,2389.699951,2392.100098,2382.679932,2388.770020,2388.770020,4098460000
701 | 2017-04-28,2393.679932,2393.679932,2382.360107,2384.199951,2384.199951,3718270000
702 | 2017-05-01,2388.500000,2394.489990,2384.830078,2388.330078,2388.330078,3199240000
703 | 2017-05-02,2391.050049,2392.929932,2385.820068,2391.169922,2391.169922,3813680000
704 | 2017-05-03,2386.500000,2389.820068,2379.750000,2388.129883,2388.129883,3893990000
705 | 2017-05-04,2389.790039,2391.429932,2380.350098,2389.520020,2389.520020,4362540000
706 | 2017-05-05,2392.370117,2399.290039,2389.379883,2399.290039,2399.290039,3540140000
707 | 2017-05-08,2399.939941,2401.360107,2393.919922,2399.379883,2399.379883,3429440000
708 | 2017-05-09,2401.580078,2403.870117,2392.439941,2396.919922,2396.919922,3653590000
709 | 2017-05-10,2396.790039,2399.739990,2392.790039,2399.629883,2399.629883,3643530000
710 | 2017-05-11,2394.840088,2395.719971,2381.739990,2394.439941,2394.439941,3727420000
711 | 2017-05-12,2392.439941,2392.439941,2387.189941,2390.899902,2390.899902,3305630000
712 | 2017-05-15,2393.979980,2404.050049,2393.939941,2402.320068,2402.320068,3473600000
713 | 2017-05-16,2404.550049,2405.770020,2396.050049,2400.669922,2400.669922,3420790000
714 | 2017-05-17,2382.949951,2384.870117,2356.209961,2357.030029,2357.030029,4163000000
715 | 2017-05-18,2354.689941,2375.739990,2352.719971,2365.719971,2365.719971,4319420000
716 | 2017-05-19,2371.370117,2389.060059,2370.429932,2381.729980,2381.729980,3825160000
717 | 2017-05-22,2387.209961,2395.459961,2386.919922,2394.020020,2394.020020,3172830000
718 | 2017-05-23,2397.040039,2400.850098,2393.879883,2398.419922,2398.419922,3213570000
719 | 2017-05-24,2401.409912,2405.580078,2397.989990,2404.389893,2404.389893,3389900000
720 | 2017-05-25,2409.540039,2418.709961,2408.010010,2415.070068,2415.070068,3535390000
721 | 2017-05-26,2414.500000,2416.679932,2412.199951,2415.820068,2415.820068,2805040000
722 | 2017-05-30,2411.669922,2415.260010,2409.429932,2412.909912,2412.909912,3203160000
723 | 2017-05-31,2415.629883,2415.989990,2403.590088,2411.800049,2411.800049,4516110000
724 | 2017-06-01,2415.649902,2430.060059,2413.540039,2430.060059,2430.060059,3857140000
725 | 2017-06-02,2431.280029,2440.229980,2427.709961,2439.070068,2439.070068,3461680000
726 | 2017-06-05,2437.830078,2439.550049,2434.320068,2436.100098,2436.100098,2912600000
727 | 2017-06-06,2431.919922,2436.209961,2428.120117,2429.330078,2429.330078,3357840000
728 | 2017-06-07,2432.030029,2435.280029,2424.750000,2433.139893,2433.139893,3572300000
729 | 2017-06-08,2434.270020,2439.270020,2427.939941,2433.790039,2433.790039,3728860000
730 | 2017-06-09,2436.389893,2446.199951,2415.699951,2431.770020,2431.770020,4027340000
731 | 2017-06-12,2425.879883,2430.379883,2419.969971,2429.389893,2429.389893,4027750000
732 | 2017-06-13,2434.149902,2441.489990,2431.280029,2440.350098,2440.350098,3275500000
733 | 2017-06-14,2443.750000,2443.750000,2428.340088,2437.919922,2437.919922,3555590000
734 | 2017-06-15,2424.139893,2433.949951,2418.530029,2432.459961,2432.459961,3353050000
735 | 2017-06-16,2431.239990,2433.149902,2422.879883,2433.149902,2433.149902,5284720000
736 | 2017-06-19,2442.550049,2453.820068,2441.790039,2453.459961,2453.459961,3264700000
737 | 2017-06-20,2450.659912,2450.659912,2436.600098,2437.030029,2437.030029,3416510000
738 | 2017-06-21,2439.310059,2442.229980,2430.739990,2435.610107,2435.610107,3594820000
739 | 2017-06-22,2437.399902,2441.620117,2433.270020,2434.500000,2434.500000,3468210000
740 | 2017-06-23,2434.649902,2441.399902,2431.110107,2438.300049,2438.300049,5278330000
741 | 2017-06-26,2443.320068,2450.419922,2437.030029,2439.070068,2439.070068,3238970000
742 | 2017-06-27,2436.340088,2440.149902,2419.379883,2419.379883,2419.379883,3563910000
743 | 2017-06-28,2428.699951,2442.969971,2428.020020,2440.689941,2440.689941,3500800000
744 | 2017-06-29,2442.379883,2442.729980,2405.699951,2419.699951,2419.699951,3900280000
745 | 2017-06-30,2429.199951,2432.709961,2421.649902,2423.409912,2423.409912,3361590000
746 | 2017-07-03,2431.389893,2439.169922,2428.689941,2429.010010,2429.010010,1962290000
747 | 2017-07-05,2430.780029,2434.899902,2422.050049,2432.540039,2432.540039,3367220000
748 | 2017-07-06,2423.439941,2424.280029,2407.699951,2409.750000,2409.750000,3364520000
749 | 2017-07-07,2413.520020,2426.919922,2413.520020,2425.179932,2425.179932,2901330000
750 | 2017-07-10,2424.510010,2432.000000,2422.270020,2427.429932,2427.429932,2999130000
751 | 2017-07-11,2427.350098,2429.300049,2412.790039,2425.530029,2425.530029,3106750000
752 | 2017-07-12,2435.750000,2445.760010,2435.750000,2443.250000,2443.250000,3171620000
753 | 2017-07-13,2444.989990,2449.320068,2441.689941,2447.830078,2447.830078,3067670000
754 | 2017-07-14,2449.159912,2463.540039,2446.689941,2459.270020,2459.270020,2736640000
755 | 2017-07-17,2459.500000,2462.820068,2457.159912,2459.139893,2459.139893,2793170000
756 | 2017-07-18,2455.879883,2460.919922,2450.340088,2460.610107,2460.610107,2962130000
757 |
--------------------------------------------------------------------------------
/tests/JPM.csv:
--------------------------------------------------------------------------------
1 | Date,Open,High,Low,Close,Adj Close,Volume
2 | 2014-07-21,58.119999,58.410000,57.900002,53.802700,58.240002,9141400
3 | 2014-07-22,58.419998,58.799999,58.369999,54.199936,58.669998,10375200
4 | 2014-07-23,58.759998,59.189999,58.520000,54.504795,59.000000,11122100
5 | 2014-07-24,59.070000,59.349998,58.990002,54.661850,59.169998,9844100
6 | 2014-07-25,58.919998,59.270000,58.840000,54.514038,59.009998,10500600
7 | 2014-07-28,58.939999,59.259998,58.669998,54.680321,59.189999,12382800
8 | 2014-07-29,59.130001,59.130001,58.439999,54.172222,58.639999,13498800
9 | 2014-07-30,59.020000,59.279999,58.610001,54.421661,58.910000,11815700
10 | 2014-07-31,58.650002,58.680000,57.660000,53.276123,57.669998,15955900
11 | 2014-08-01,57.389999,57.490002,55.970001,52.176792,56.480000,23915400
12 | 2014-08-04,56.910000,56.980000,56.340000,52.333851,56.650002,13543900
13 | 2014-08-05,56.430000,56.599998,55.599998,51.788799,56.060001,16863300
14 | 2014-08-06,55.889999,56.689999,55.830002,51.945839,56.230000,12190600
15 | 2014-08-07,56.630001,56.689999,55.680000,51.650219,55.910000,11743800
16 | 2014-08-08,55.889999,56.360001,55.639999,52.047459,56.340000,12213200
17 | 2014-08-11,56.540001,56.580002,56.169998,52.028984,56.320000,9066800
18 | 2014-08-12,56.230000,56.549999,56.130001,52.056698,56.349998,11289600
19 | 2014-08-13,56.689999,56.840000,56.509998,52.398514,56.720001,7012600
20 | 2014-08-14,56.770000,57.000000,56.700001,52.638702,56.980000,8275900
21 | 2014-08-15,57.240002,57.500000,56.389999,52.426224,56.750000,12727400
22 | 2014-08-18,56.860001,57.430000,56.759998,52.869648,57.230000,8881400
23 | 2014-08-19,57.599998,57.720001,57.340000,53.174507,57.560001,9040500
24 | 2014-08-20,57.419998,57.849998,57.389999,53.248413,57.639999,8121400
25 | 2014-08-21,57.660000,58.770000,57.599998,54.042896,58.500000,12745500
26 | 2014-08-22,58.439999,59.080002,58.330002,54.033661,58.490002,10228600
27 | 2014-08-25,58.980000,59.830002,58.860001,54.818890,59.340000,13996800
28 | 2014-08-26,59.570000,59.950001,59.389999,55.188416,59.740002,10281100
29 | 2014-08-27,59.849998,59.950001,59.529999,55.049847,59.590000,11410900
30 | 2014-08-28,59.250000,59.369999,58.810001,54.652603,59.160000,9096100
31 | 2014-08-29,59.340000,59.650002,59.230000,54.920509,59.450001,8897900
32 | 2014-09-02,59.459999,59.709999,59.150002,55.123741,59.669998,8671100
33 | 2014-09-03,60.020000,60.369999,59.459999,55.151463,59.700001,11791800
34 | 2014-09-04,59.630001,60.139999,59.430000,55.160698,59.709999,9811900
35 | 2014-09-05,59.619999,59.910000,59.220001,55.345463,59.910000,9600900
36 | 2014-09-08,59.840000,60.220001,59.740002,55.326981,59.889999,8090000
37 | 2014-09-09,59.630001,59.680000,58.779999,54.560230,59.060001,14868700
38 | 2014-09-10,59.150002,59.560001,58.919998,54.708038,59.220001,9153800
39 | 2014-09-11,59.180000,59.840000,58.970001,55.206886,59.759998,11467000
40 | 2014-09-12,59.799999,60.410000,59.750000,55.456322,60.029999,14359100
41 | 2014-09-15,59.779999,59.990002,59.450001,55.373177,59.939999,10685600
42 | 2014-09-16,59.709999,60.200001,59.619999,55.419373,59.990002,10947900
43 | 2014-09-17,59.950001,60.590000,59.820000,55.714989,60.310001,15091800
44 | 2014-09-18,60.540001,61.400002,60.540001,56.648033,61.320000,16973700
45 | 2014-09-19,61.740002,61.849998,60.980000,56.454041,61.110001,18739300
46 | 2014-09-22,60.939999,61.450001,60.799999,56.269272,60.910000,13225200
47 | 2014-09-23,60.820000,61.400002,60.770000,56.296986,60.939999,14328800
48 | 2014-09-24,61.180000,61.639999,61.020000,56.934410,61.630001,13728200
49 | 2014-09-25,61.490002,61.500000,60.150002,55.567177,60.150002,16340100
50 | 2014-09-26,60.330002,60.880001,60.320000,55.945942,60.560001,11948900
51 | 2014-09-29,60.029999,60.500000,59.730000,55.733467,60.330002,10686500
52 | 2014-09-30,60.400002,60.740002,60.130001,55.650326,60.240002,14384800
53 | 2014-10-01,60.240002,60.400002,59.730000,55.216129,59.770000,18995800
54 | 2014-10-02,59.150002,59.490002,58.610001,54.723217,58.840000,24559100
55 | 2014-10-03,59.250000,60.389999,59.049999,56.081062,60.299999,18321100
56 | 2014-10-06,60.779999,60.799999,60.000000,55.969460,60.180000,11578000
57 | 2014-10-07,59.919998,59.919998,59.189999,55.123123,59.270000,14542000
58 | 2014-10-08,59.360001,60.430000,59.180000,56.174076,60.400002,15834100
59 | 2014-10-09,60.330002,60.330002,58.889999,54.946434,59.080002,19189500
60 | 2014-10-10,59.029999,59.820000,58.509998,54.425602,58.520000,16689400
61 | 2014-10-13,58.500000,59.150002,58.110001,54.090790,58.160000,17169300
62 | 2014-10-14,56.689999,58.520000,56.060001,53.932682,57.990002,29096800
63 | 2014-10-15,57.020000,57.380001,54.259998,51.644798,55.529999,37866900
64 | 2014-10-16,54.750000,55.980000,54.279999,51.226288,55.080002,31965100
65 | 2014-10-17,55.730000,56.779999,55.570000,52.267925,56.200001,20183500
66 | 2014-10-20,56.099998,56.750000,56.070000,52.667835,56.630001,10807600
67 | 2014-10-21,57.230000,58.009998,57.080002,53.876877,57.930000,14020400
68 | 2014-10-22,58.040001,58.259998,57.439999,53.430466,57.450001,13750700
69 | 2014-10-23,58.119999,58.599998,57.939999,53.997791,58.060001,12641900
70 | 2014-10-24,58.000000,58.779999,58.000000,54.630219,58.740002,13758000
71 | 2014-10-27,58.450001,58.790001,58.250000,54.537209,58.639999,11087100
72 | 2014-10-28,58.869999,59.689999,58.810001,55.457943,59.630001,13625000
73 | 2014-10-29,59.619999,59.779999,58.759998,55.141727,59.290001,16712100
74 | 2014-10-30,58.939999,59.680000,58.919998,55.234726,59.389999,14709800
75 | 2014-10-31,60.119999,60.540001,59.869999,56.248466,60.480000,18347600
76 | 2014-11-03,60.790001,61.150002,60.360001,56.620487,60.880001,11841200
77 | 2014-11-04,60.240002,60.369999,59.419998,56.034561,60.250000,15295800
78 | 2014-11-05,60.799999,61.230000,60.389999,56.871597,61.150002,14063800
79 | 2014-11-06,61.080002,61.310001,60.630001,56.945992,61.230000,10421600
80 | 2014-11-07,61.070000,61.549999,60.860001,57.169205,61.470001,12384600
81 | 2014-11-10,61.250000,61.930000,61.200001,57.597019,61.930000,10801000
82 | 2014-11-11,61.709999,61.889999,61.290001,57.076199,61.369999,12539800
83 | 2014-11-12,60.419998,60.840000,60.230000,56.322876,60.560001,17219600
84 | 2014-11-13,60.500000,60.630001,59.990002,56.015965,60.230000,12240400
85 | 2014-11-14,60.250000,60.619999,60.180000,56.062466,60.279999,6803400
86 | 2014-11-17,60.000000,60.529999,59.889999,56.155472,60.380001,9017600
87 | 2014-11-18,60.349998,60.820000,60.200001,56.294968,60.529999,8897800
88 | 2014-11-19,60.450001,60.790001,60.150002,56.360065,60.599998,9210100
89 | 2014-11-20,60.200001,60.250000,59.750000,55.913658,60.119999,10917300
90 | 2014-11-21,61.070000,61.070000,60.299999,56.220573,60.450001,12340500
91 | 2014-11-24,60.700001,61.310001,60.700001,56.694889,60.959999,8335000
92 | 2014-11-25,61.160000,61.160000,59.950001,56.081062,60.299999,14802600
93 | 2014-11-26,60.570000,60.570000,60.200001,56.118267,60.340000,7626600
94 | 2014-11-28,60.400002,60.560001,60.029999,55.950859,60.160000,6759600
95 | 2014-12-01,59.980000,60.209999,59.549999,55.802048,60.000000,12771600
96 | 2014-12-02,60.009998,61.189999,60.000000,56.806492,61.080002,12546600
97 | 2014-12-03,60.959999,61.619999,60.810001,57.234306,61.540001,12115500
98 | 2014-12-04,61.099998,61.570000,60.840000,57.085503,61.380001,11515200
99 | 2014-12-05,62.009998,63.060001,61.880001,58.313148,62.700001,20071100
100 | 2014-12-08,62.599998,63.160000,62.259998,58.285244,62.669998,15528200
101 | 2014-12-09,61.849998,62.849998,61.560001,58.080639,62.450001,19676400
102 | 2014-12-10,62.160000,62.240002,60.369999,56.434471,60.680000,29620600
103 | 2014-12-11,61.169998,62.060001,61.110001,56.862286,61.139999,16886200
104 | 2014-12-12,60.529999,61.220001,59.959999,55.839264,60.040001,17405400
105 | 2014-12-15,60.740002,60.810001,58.790001,55.020824,59.160000,19209900
106 | 2014-12-16,58.419998,59.860001,58.110001,54.341904,58.430000,20709700
107 | 2014-12-17,58.570000,59.830002,58.340000,55.588146,59.770000,17856400
108 | 2014-12-18,60.639999,61.480000,60.439999,57.178501,61.480000,18173400
109 | 2014-12-19,61.400002,62.349998,61.369999,57.597019,61.930000,22756400
110 | 2014-12-22,62.160000,62.330002,61.610001,57.606316,61.939999,17073400
111 | 2014-12-23,62.049999,62.970001,61.930000,58.108536,62.480000,13552600
112 | 2014-12-24,62.740002,62.869999,62.270000,58.108536,62.480000,7412500
113 | 2014-12-26,62.669998,62.889999,62.410000,58.173637,62.549999,6086500
114 | 2014-12-29,62.419998,63.340000,62.250000,58.554955,62.959999,10601200
115 | 2014-12-30,62.720001,63.279999,62.570000,58.731663,63.150002,7518100
116 | 2014-12-31,63.299999,63.490002,62.580002,58.201542,62.580002,18529400
117 | 2015-01-02,62.180000,62.959999,62.070000,58.491711,62.490002,12600000
118 | 2015-01-05,62.060001,62.279999,60.230000,56.675838,60.549999,20100600
119 | 2015-01-06,60.639999,60.750000,58.349998,55.206284,58.980000,29074100
120 | 2015-01-07,59.889999,59.889999,58.669998,55.290531,59.070000,23843200
121 | 2015-01-08,59.970001,60.900002,59.970001,56.526073,60.389999,16971100
122 | 2015-01-09,60.720001,60.790001,59.290001,55.543251,59.340000,15396200
123 | 2015-01-12,59.279999,59.400002,58.270000,55.065887,58.830002,15455200
124 | 2015-01-13,59.259998,59.700001,58.369999,55.075245,58.840000,21644700
125 | 2015-01-14,58.840000,58.840000,55.270000,53.175133,56.810001,49394500
126 | 2015-01-15,55.730000,56.610001,54.500000,51.471577,54.990002,42458100
127 | 2015-01-16,54.660000,56.000000,54.639999,52.351437,55.930000,29368900
128 | 2015-01-20,56.040001,56.389999,55.419998,52.145515,55.709999,23477700
129 | 2015-01-21,55.450001,56.419998,55.189999,52.313995,55.889999,21842400
130 | 2015-01-22,56.380001,57.730000,55.959999,53.905224,57.590000,31423500
131 | 2015-01-23,57.720001,57.869999,56.660000,53.053448,56.680000,15458300
132 | 2015-01-26,56.410000,56.990002,56.200001,53.137688,56.770000,12577700
133 | 2015-01-27,56.049999,56.610001,55.759998,52.604164,56.200001,15220500
134 | 2015-01-28,56.619999,56.680000,54.750000,51.246937,54.750000,24354400
135 | 2015-01-29,55.270000,55.889999,54.680000,52.108074,55.669998,20393300
136 | 2015-01-30,54.990002,55.500000,54.369999,50.900612,54.380001,26943700
137 | 2015-02-02,54.529999,55.650002,54.270000,51.920868,55.470001,20308900
138 | 2015-02-03,55.910000,56.779999,55.869999,53.090889,56.720001,18812500
139 | 2015-02-04,56.320000,57.070000,56.279999,52.772640,56.380001,14934100
140 | 2015-02-05,56.860001,57.040001,56.459999,53.137688,56.770000,11293900
141 | 2015-02-06,57.750000,58.730000,57.540001,54.186024,57.889999,25214000
142 | 2015-02-09,57.419998,58.099998,57.230000,54.120510,57.820000,14372400
143 | 2015-02-10,58.419998,58.709999,58.049999,54.719551,58.459999,16367300
144 | 2015-02-11,58.060001,58.660000,57.840000,54.635319,58.369999,13061900
145 | 2015-02-12,58.930000,59.709999,58.549999,55.758537,59.570000,23211300
146 | 2015-02-13,59.459999,60.220001,59.340000,55.852139,59.669998,16479100
147 | 2015-02-17,59.360001,60.139999,59.320000,56.254620,60.099998,15308800
148 | 2015-02-18,60.099998,60.099998,59.119999,55.571339,59.369999,14278100
149 | 2015-02-19,59.150002,59.480000,58.799999,55.440292,59.230000,11256500
150 | 2015-02-20,58.959999,59.889999,58.349998,55.973820,59.799999,15379000
151 | 2015-02-23,59.500000,59.529999,58.799999,55.552612,59.349998,16814000
152 | 2015-02-24,60.250000,61.250000,60.080002,56.928566,60.820000,22937700
153 | 2015-02-25,60.759998,61.270000,60.750000,57.228085,61.139999,18307900
154 | 2015-02-26,61.029999,61.700001,60.910000,57.639931,61.580002,15444800
155 | 2015-02-27,61.130001,61.919998,61.130001,57.359127,61.279999,15225900
156 | 2015-03-02,61.279999,61.830002,61.029999,57.817780,61.770000,13047300
157 | 2015-03-03,61.650002,61.990002,61.500000,58.004982,61.970001,13706900
158 | 2015-03-04,61.639999,62.169998,61.349998,58.154747,62.130001,16625500
159 | 2015-03-05,62.200001,62.230000,61.599998,58.033062,62.000000,10931300
160 | 2015-03-06,62.160000,62.869999,60.799999,56.994080,60.889999,22719200
161 | 2015-03-09,60.840000,61.630001,60.799999,57.565044,61.500000,13001500
162 | 2015-03-10,60.759998,61.009998,59.959999,56.123585,59.959999,16357700
163 | 2015-03-11,60.130001,60.650002,59.959999,56.385670,60.240002,13015600
164 | 2015-03-12,60.650002,61.450001,60.650002,57.443363,61.369999,18159600
165 | 2015-03-13,61.400002,61.860001,60.430000,57.097046,61.000000,16506200
166 | 2015-03-16,61.500000,61.919998,61.250000,57.892662,61.849998,15182900
167 | 2015-03-17,61.340000,61.660000,60.919998,57.668015,61.610001,11718300
168 | 2015-03-18,61.389999,62.049999,61.090000,57.799057,61.750000,15697900
169 | 2015-03-19,61.570000,61.650002,60.759998,57.284241,61.200001,11523800
170 | 2015-03-20,61.320000,62.099998,61.150002,57.799057,61.750000,18368300
171 | 2015-03-23,61.750000,62.080002,61.119999,57.228085,61.139999,15112900
172 | 2015-03-24,60.970001,61.240002,60.450001,56.591591,60.459999,12128700
173 | 2015-03-25,60.529999,60.639999,59.590000,55.795982,59.610001,14950900
174 | 2015-03-26,59.459999,59.790001,58.869999,55.730453,59.540001,14039600
175 | 2015-03-27,59.490002,59.779999,59.000000,55.739815,59.549999,11755800
176 | 2015-03-30,60.880001,61.459999,60.610001,57.059601,60.959999,20656500
177 | 2015-03-31,60.720001,60.939999,60.419998,56.703922,60.580002,17346700
178 | 2015-04-01,60.410000,60.570000,59.730000,56.487198,59.950001,18100600
179 | 2015-04-02,60.070000,60.700001,60.000000,57.024281,60.520000,12697800
180 | 2015-04-06,59.919998,60.750000,59.650002,56.977169,60.470001,12025200
181 | 2015-04-07,61.150002,61.500000,60.849998,57.335213,60.849998,11505500
182 | 2015-04-08,61.060001,61.560001,60.939999,57.523666,61.049999,11734000
183 | 2015-04-09,61.270000,61.580002,60.830002,57.919403,61.470001,11728500
184 | 2015-04-10,61.349998,61.779999,61.200001,58.136120,61.700001,9869700
185 | 2015-04-13,61.639999,62.270000,61.500000,58.484741,62.070000,15468700
186 | 2015-04-14,62.959999,63.610001,62.740002,59.398724,63.040001,33775400
187 | 2015-04-15,63.080002,64.480003,63.009998,60.501137,64.209999,28732200
188 | 2015-04-16,64.080002,64.269997,63.660000,60.124237,63.810001,16640500
189 | 2015-04-17,63.250000,63.400002,62.490002,59.210266,62.840000,20221200
190 | 2015-04-20,63.220001,63.520000,63.139999,59.587162,63.240002,12755300
191 | 2015-04-21,63.330002,63.599998,62.130001,58.710888,62.310001,14985100
192 | 2015-04-22,62.650002,63.150002,62.029999,59.304493,62.939999,14484700
193 | 2015-04-23,62.790001,63.209999,62.599998,59.172573,62.799999,12851300
194 | 2015-04-24,62.630001,62.840000,62.340000,58.984131,62.599998,9597500
195 | 2015-04-27,62.700001,63.150002,62.310001,58.739151,62.340000,11146400
196 | 2015-04-28,62.490002,62.779999,61.770000,59.134884,62.759998,12307800
197 | 2015-04-29,62.560001,63.889999,62.459999,59.926376,63.599998,17601200
198 | 2015-04-30,63.580002,63.880001,62.919998,59.606014,63.259998,16840900
199 | 2015-05-01,63.700001,63.869999,63.330002,59.935791,63.610001,11640100
200 | 2015-05-04,63.680000,64.870003,63.639999,60.981682,64.720001,14972500
201 | 2015-05-05,64.510002,65.320000,64.290001,60.680161,64.400002,17692400
202 | 2015-05-06,64.529999,65.070000,63.419998,60.227879,63.919998,18087900
203 | 2015-05-07,63.669998,64.599998,63.250000,60.774384,64.500000,15039900
204 | 2015-05-08,64.970001,65.650002,64.599998,61.707195,65.489998,16802600
205 | 2015-05-11,65.260002,65.639999,65.080002,61.669514,65.449997,13798800
206 | 2015-05-12,65.309998,65.540001,64.760002,61.584713,65.360001,12762200
207 | 2015-05-13,65.419998,65.629997,65.059998,61.735462,65.519997,11874100
208 | 2015-05-14,65.830002,66.180000,65.709999,62.234848,66.050003,11855500
209 | 2015-05-15,66.129997,66.160004,65.440002,62.074665,65.879997,11152100
210 | 2015-05-18,65.800003,66.540001,65.800003,62.583481,66.419998,10510900
211 | 2015-05-19,66.769997,67.190002,66.570000,63.139404,67.010002,14282700
212 | 2015-05-20,66.949997,67.029999,66.400002,62.640030,66.480003,12446000
213 | 2015-05-21,66.139999,66.680000,66.010002,62.800190,66.650002,12934500
214 | 2015-05-22,66.629997,66.830002,66.320000,62.630596,66.470001,9296900
215 | 2015-05-26,66.199997,66.290001,65.309998,61.933342,65.730003,15571300
216 | 2015-05-27,65.949997,66.650002,65.820000,62.630596,66.470001,10963700
217 | 2015-05-28,66.360001,66.400002,65.739998,62.376190,66.199997,11797400
218 | 2015-05-29,66.180000,66.220001,65.360001,61.980457,65.779999,14310700
219 | 2015-06-01,65.989998,66.660004,65.970001,62.263123,66.080002,11899300
220 | 2015-06-02,65.830002,66.389999,65.580002,62.206585,66.019997,12784200
221 | 2015-06-03,66.430000,67.129997,66.269997,62.847298,66.699997,12832500
222 | 2015-06-04,66.309998,67.050003,66.010002,62.498684,66.330002,13863300
223 | 2015-06-05,67.370003,67.839996,67.010002,63.525715,67.419998,20801100
224 | 2015-06-08,67.459999,67.550003,66.809998,63.026337,66.889999,14558700
225 | 2015-06-09,66.949997,67.269997,66.470001,63.299591,67.180000,13263500
226 | 2015-06-10,67.589996,68.500000,67.470001,64.317200,68.260002,17478900
227 | 2015-06-11,68.360001,68.680000,68.150002,64.562180,68.519997,13739900
228 | 2015-06-12,68.309998,68.540001,67.870003,64.307777,68.250000,11804700
229 | 2015-06-15,67.580002,68.209999,67.300003,64.062798,67.989998,14082300
230 | 2015-06-16,67.769997,68.519997,67.620003,64.420853,68.370003,11692800
231 | 2015-06-17,68.410004,68.680000,68.040001,64.204132,68.139999,14521900
232 | 2015-06-18,68.349998,68.820000,67.900002,64.807159,68.779999,16759600
233 | 2015-06-19,68.459999,68.669998,67.919998,64.147598,68.080002,21606400
234 | 2015-06-22,68.870003,69.290001,68.750000,64.976776,68.959999,14306700
235 | 2015-06-23,69.349998,69.820000,69.190002,65.721138,69.750000,15736900
236 | 2015-06-24,69.510002,69.769997,68.910004,65.033295,69.019997,16995000
237 | 2015-06-25,69.320000,69.470001,68.639999,64.684669,68.650002,13314300
238 | 2015-06-26,68.940002,69.290001,68.769997,64.967354,68.949997,14489200
239 | 2015-06-29,67.680000,68.260002,67.160004,63.318420,67.199997,19934400
240 | 2015-06-30,67.889999,68.110001,67.160004,63.846077,67.760002,20677400
241 | 2015-07-01,68.120003,68.389999,67.779999,64.557373,68.070000,13964400
242 | 2015-07-02,67.949997,68.129997,67.190002,64.035751,67.519997,12822900
243 | 2015-07-06,66.879997,67.459999,66.540001,63.855560,67.330002,13527100
244 | 2015-07-07,67.089996,67.220001,65.300003,63.352921,66.800003,22421500
245 | 2015-07-08,66.000000,66.160004,65.209999,62.053612,65.430000,17707200
246 | 2015-07-09,66.489998,66.699997,65.989998,62.698524,66.110001,14915200
247 | 2015-07-10,67.220001,67.400002,66.830002,63.590015,67.050003,12356100
248 | 2015-07-13,67.889999,68.139999,67.680000,64.576347,68.089996,16175600
249 | 2015-07-14,67.980003,69.099998,67.760002,65.477333,69.040001,20185100
250 | 2015-07-15,69.230003,69.430000,68.849998,65.619583,69.190002,16891600
251 | 2015-07-16,69.629997,69.949997,69.410004,65.970482,69.559998,18035700
252 | 2015-07-17,69.349998,69.489998,68.919998,65.638550,69.209999,14040700
253 | 2015-07-20,69.500000,69.769997,69.180000,65.685974,69.260002,11512900
254 | 2015-07-21,69.160004,69.540001,68.870003,65.534218,69.099998,11659900
255 | 2015-07-22,69.279999,70.290001,69.199997,66.463661,70.080002,15493000
256 | 2015-07-23,70.190002,70.610001,69.459999,66.046356,69.639999,14331800
257 | 2015-07-24,69.440002,69.559998,68.680000,65.354034,68.910004,12413900
258 | 2015-07-27,68.150002,68.220001,67.570000,64.500481,68.010002,16801600
259 | 2015-07-28,68.550003,68.599998,67.769997,64.538414,68.050003,14932400
260 | 2015-07-29,68.320000,69.099998,68.160004,65.382477,68.940002,13059200
261 | 2015-07-30,68.930000,69.449997,68.540001,65.477333,69.040001,10197200
262 | 2015-07-31,69.010002,69.040001,68.400002,64.993637,68.529999,11911800
263 | 2015-08-03,68.589996,68.839996,68.000000,64.993637,68.529999,9980600
264 | 2015-08-04,68.470001,68.949997,68.309998,64.927246,68.459999,10964000
265 | 2015-08-05,69.050003,69.419998,68.559998,65.183319,68.730003,11302900
266 | 2015-08-06,68.750000,68.940002,68.000000,64.728096,68.250000,10803400
267 | 2015-08-07,68.330002,68.739998,67.550003,64.538414,68.050003,11453300
268 | 2015-08-10,68.220001,69.010002,68.220001,65.335068,68.889999,12661400
269 | 2015-08-11,68.230003,68.400002,67.849998,64.709129,68.230003,14800300
270 | 2015-08-12,67.410004,67.550003,66.070000,63.770214,67.239998,21069000
271 | 2015-08-13,67.250000,67.800003,66.970001,64.064224,67.550003,11930600
272 | 2015-08-14,67.419998,67.910004,67.400002,64.386665,67.889999,11248800
273 | 2015-08-17,67.620003,68.239998,67.400002,64.557373,68.070000,10326500
274 | 2015-08-18,67.980003,68.360001,67.839996,64.690155,68.209999,10617500
275 | 2015-08-19,67.930000,68.309998,67.360001,64.111633,67.599998,15166900
276 | 2015-08-20,66.809998,67.040001,65.940002,62.537289,65.940002,20972300
277 | 2015-08-21,65.089996,65.440002,63.570000,60.318043,63.599998,28235500
278 | 2015-08-24,59.290001,62.919998,50.070000,57.140915,60.250000,36339100
279 | 2015-08-25,63.099998,63.320000,59.730000,56.818459,59.910000,31772500
280 | 2015-08-26,61.799999,62.980000,60.549999,59.663651,62.910000,33576800
281 | 2015-08-27,63.980000,64.730003,63.139999,61.152634,64.480003,29045700
282 | 2015-08-28,64.290001,64.459999,63.599998,60.820694,64.129997,16687300
283 | 2015-08-31,63.610001,64.349998,63.470001,60.792244,64.099998,14223400
284 | 2015-09-01,62.849998,62.849998,60.990002,58.278992,61.450001,23637300
285 | 2015-09-02,62.619999,62.910000,61.540001,59.341198,62.570000,17757900
286 | 2015-09-03,62.880001,63.660000,62.450001,59.445522,62.680000,17065400
287 | 2015-09-04,61.799999,61.919998,60.750000,58.326412,61.500000,20189000
288 | 2015-09-08,62.770000,63.200001,62.330002,59.900745,63.160000,13385100
289 | 2015-09-09,63.939999,64.339996,62.000000,58.971321,62.180000,13889500
290 | 2015-09-10,61.860001,63.000000,61.450001,59.426552,62.660000,15751100
291 | 2015-09-11,62.380001,62.660000,61.990002,59.331715,62.560001,12766700
292 | 2015-09-14,62.639999,62.689999,62.119999,59.160999,62.380001,10202800
293 | 2015-09-15,62.759998,63.889999,62.509998,60.299084,63.580002,14023500
294 | 2015-09-16,63.889999,64.290001,63.209999,60.830181,64.139999,12235900
295 | 2015-09-17,64.139999,64.639999,62.389999,59.417068,62.650002,21249200
296 | 2015-09-18,61.830002,61.830002,60.779999,57.795307,60.939999,31008000
297 | 2015-09-21,61.520000,61.910000,61.080002,58.278992,61.450001,13136400
298 | 2015-09-22,60.599998,61.090000,60.419998,57.766857,60.910000,14811900
299 | 2015-09-23,60.799999,61.150002,60.320000,57.510792,60.639999,11712200
300 | 2015-09-24,60.009998,60.380001,59.459999,57.112465,60.220001,17293400
301 | 2015-09-25,61.270000,61.860001,60.869999,58.297958,61.470001,18384300
302 | 2015-09-28,60.919998,61.009998,59.689999,56.884850,59.980000,17452200
303 | 2015-09-29,59.980000,60.130001,58.730000,56.752075,59.840000,19334900
304 | 2015-09-30,60.700001,61.000000,60.110001,57.823765,60.970001,18743800
305 | 2015-10-01,61.119999,61.869999,60.540001,58.250542,61.419998,16863200
306 | 2015-10-02,59.590000,60.860001,58.529999,58.088150,60.810001,20435100
307 | 2015-10-05,61.240002,62.240002,61.220001,59.243992,62.020000,13471100
308 | 2015-10-06,62.110001,62.360001,61.619999,59.272648,62.049999,12134800
309 | 2015-10-07,62.549999,63.029999,61.759998,59.349064,62.130001,12773100
310 | 2015-10-08,61.849998,62.250000,61.430000,59.349064,62.130001,13964600
311 | 2015-10-09,62.389999,62.549999,61.580002,59.158020,61.930000,12112000
312 | 2015-10-12,61.840000,62.009998,61.400002,58.957417,61.720001,10857400
313 | 2015-10-13,61.389999,62.160000,61.310001,58.795021,61.549999,15621900
314 | 2015-10-14,60.759998,60.970001,59.540001,57.304855,59.990002,28989400
315 | 2015-10-15,60.470001,61.959999,60.099998,59.119812,61.889999,18147900
316 | 2015-10-16,62.430000,62.650002,62.090000,59.635635,62.430000,17456600
317 | 2015-10-19,62.000000,62.770000,61.910000,59.435040,62.220001,14510400
318 | 2015-10-20,62.360001,62.820000,62.080002,59.721611,62.520000,11487700
319 | 2015-10-21,62.880001,62.959999,62.049999,59.282196,62.060001,12113400
320 | 2015-10-22,62.419998,63.580002,62.419998,60.361614,63.189999,15295700
321 | 2015-10-23,63.630001,64.190002,63.500000,61.011181,63.869999,16985200
322 | 2015-10-26,63.840000,63.990002,63.410000,61.039841,63.900002,13880200
323 | 2015-10-27,63.529999,63.860001,63.310001,60.791477,63.639999,8831900
324 | 2015-10-28,63.700001,65.739998,63.689999,62.568222,65.500000,17962000
325 | 2015-10-29,65.260002,65.830002,64.879997,62.291206,65.209999,12753700
326 | 2015-10-30,65.300003,65.339996,64.129997,61.374168,64.250000,15731400
327 | 2015-11-02,64.449997,65.750000,64.389999,62.606430,65.540001,15253300
328 | 2015-11-03,65.290001,66.099998,65.169998,62.835690,65.779999,11519500
329 | 2015-11-04,66.010002,66.150002,65.629997,62.902561,65.849998,11388400
330 | 2015-11-05,65.790001,66.669998,65.750000,63.466148,66.440002,12715900
331 | 2015-11-06,68.370003,69.029999,68.099998,65.395737,68.459999,23262700
332 | 2015-11-09,68.699997,68.720001,67.080002,64.373634,67.389999,17143800
333 | 2015-11-10,67.190002,67.849998,66.930000,64.650650,67.680000,13239700
334 | 2015-11-11,68.099998,68.169998,67.250000,64.335419,67.349998,8513900
335 | 2015-11-12,66.860001,66.900002,65.949997,63.045845,66.000000,13576900
336 | 2015-11-13,65.839996,66.169998,65.230003,62.625534,65.559998,11837000
337 | 2015-11-16,65.459999,66.580002,65.169998,63.533020,66.510002,11041100
338 | 2015-11-17,66.669998,66.739998,65.889999,63.170025,66.129997,12354800
339 | 2015-11-18,66.480003,67.550003,66.370003,64.430931,67.449997,12911400
340 | 2015-11-19,67.580002,67.820000,67.040001,64.631546,67.660004,12839500
341 | 2015-11-20,67.989998,68.110001,67.379997,64.516914,67.540001,11209600
342 | 2015-11-23,67.309998,67.580002,66.779999,63.886452,66.879997,11339000
343 | 2015-11-24,66.169998,67.139999,66.040001,63.790932,66.779999,10910000
344 | 2015-11-25,66.930000,67.120003,66.550003,63.867344,66.860001,7772000
345 | 2015-11-27,67.000000,67.330002,66.639999,64.163483,67.169998,4052500
346 | 2015-11-30,67.279999,67.519997,66.680000,63.695408,66.680000,15147500
347 | 2015-12-01,67.339996,67.830002,66.989998,64.583771,67.610001,12708800
348 | 2015-12-02,67.830002,67.879997,66.480003,63.676319,66.660004,13440900
349 | 2015-12-03,66.830002,67.029999,65.580002,62.854786,65.800003,14626900
350 | 2015-12-04,66.099998,68.000000,66.029999,64.851250,67.889999,17786000
351 | 2015-12-07,67.660004,67.750000,66.400002,64.001076,67.000000,11686000
352 | 2015-12-08,66.250000,66.959999,65.699997,63.007633,65.959999,13084500
353 | 2015-12-09,65.610001,66.580002,65.040001,62.530010,65.459999,16770200
354 | 2015-12-10,65.540001,66.500000,65.080002,62.673294,65.610001,12807800
355 | 2015-12-11,64.800003,65.160004,63.509998,61.202229,64.070000,17889300
356 | 2015-12-14,64.230003,64.760002,63.599998,61.393276,64.269997,17638200
357 | 2015-12-15,65.070000,66.650002,65.070000,63.141361,66.099998,18126600
358 | 2015-12-16,66.910004,67.739998,65.910004,64.507347,67.529999,21720000
359 | 2015-12-17,67.900002,68.000000,66.080002,63.313305,66.279999,18122100
360 | 2015-12-18,65.970001,65.970001,64.400002,61.517464,64.400002,23819600
361 | 2015-12-21,65.019997,65.559998,64.830002,62.606430,65.540001,18869300
362 | 2015-12-22,65.919998,66.000000,64.980003,62.740162,65.680000,12149500
363 | 2015-12-23,66.120003,66.849998,66.050003,63.743172,66.730003,12524500
364 | 2015-12-24,66.620003,66.889999,66.320000,63.618996,66.599998,4468200
365 | 2015-12-28,66.290001,66.449997,65.709999,63.408833,66.379997,6610600
366 | 2015-12-29,66.839996,67.300003,66.739998,64.067940,67.070000,9820800
367 | 2015-12-30,67.040001,67.050003,66.449997,63.609436,66.589996,7190700
368 | 2015-12-31,66.190002,66.779999,66.000000,63.074501,66.029999,14490200
369 | 2016-01-04,63.950001,64.059998,63.009998,61.180050,63.619999,25393200
370 | 2016-01-05,63.700001,64.129997,63.040001,61.285831,63.730000,16566700
371 | 2016-01-06,62.720001,63.130001,62.340000,60.401123,62.810001,22961500
372 | 2016-01-07,61.459999,62.000000,60.080002,57.958534,60.270000,27630900
373 | 2016-01-08,61.130001,61.270000,58.849998,56.660305,58.919998,22373300
374 | 2016-01-11,58.830002,59.220001,58.040001,56.573753,58.830002,20925500
375 | 2016-01-12,59.450001,59.560001,58.099998,56.698772,58.959999,22971600
376 | 2016-01-13,59.459999,59.680000,56.910000,55.140900,57.340000,28808100
377 | 2016-01-14,58.160000,59.380001,57.290001,55.967922,58.200001,31296300
378 | 2016-01-15,56.450001,57.570000,56.220001,54.852406,57.040001,37573000
379 | 2016-01-19,57.730000,57.970001,56.509998,54.823563,57.009998,22818900
380 | 2016-01-20,55.630001,56.180000,54.660000,53.381088,55.509998,34646100
381 | 2016-01-21,55.740002,56.520000,55.060001,53.131054,55.250000,31301100
382 | 2016-01-22,56.439999,57.160000,56.299999,54.765858,56.950001,22732200
383 | 2016-01-25,56.480000,56.849998,55.599998,53.525337,55.660000,21114400
384 | 2016-01-26,55.849998,57.150002,55.810001,54.890877,57.080002,17535700
385 | 2016-01-27,57.080002,58.270000,56.560001,54.852406,57.040001,20560000
386 | 2016-01-28,57.520000,57.970001,56.630001,55.083210,57.279999,15497900
387 | 2016-01-29,57.830002,59.540001,57.509998,57.218063,59.500000,26992200
388 | 2016-02-01,59.160000,59.650002,58.439999,56.602608,58.860001,16807900
389 | 2016-02-02,57.880001,57.980000,56.750000,54.842789,57.029999,22448200
390 | 2016-02-03,57.369999,57.799999,55.020000,55.208214,57.410000,31543200
391 | 2016-02-04,57.060001,58.520000,57.060001,56.160255,58.400002,21651300
392 | 2016-02-05,58.580002,59.139999,57.419998,55.535179,57.750000,22001300
393 | 2016-02-08,56.689999,56.919998,55.540001,54.371586,56.540001,28267600
394 | 2016-02-09,55.290001,56.689999,55.130001,54.044624,56.200001,26300000
395 | 2016-02-10,56.570000,57.410000,55.470001,53.390701,55.520000,22389600
396 | 2016-02-11,53.900002,53.910000,52.500000,51.034660,53.070000,44334700
397 | 2016-02-12,55.650002,57.570000,55.169998,55.285152,57.490002,37011400
398 | 2016-02-16,58.230000,58.599998,57.639999,56.112164,58.349998,23730700
399 | 2016-02-17,58.849998,59.250000,58.389999,56.516064,58.770000,21580100
400 | 2016-02-18,58.840000,58.860001,57.250000,55.592880,57.810001,17037800
401 | 2016-02-19,57.500000,58.169998,57.080002,55.602489,57.820000,15658200
402 | 2016-02-22,58.509998,58.880001,58.419998,56.323730,58.570000,14882800
403 | 2016-02-23,57.900002,58.090000,55.959999,53.967690,56.119999,31772500
404 | 2016-02-24,55.200001,56.209999,54.330002,53.986923,56.139999,25560100
405 | 2016-02-25,56.130001,57.029999,56.040001,54.823563,57.009998,14473300
406 | 2016-02-26,57.639999,58.110001,57.139999,55.333233,57.540001,20947500
407 | 2016-02-29,57.410000,57.610001,56.290001,54.140793,56.299999,19554100
408 | 2016-03-01,56.759998,59.200001,56.669998,56.929565,59.200001,23958100
409 | 2016-03-02,59.200001,59.900002,58.959999,57.468094,59.759998,20943100
410 | 2016-03-03,59.580002,59.959999,59.099998,57.660416,59.959999,15790600
411 | 2016-03-04,60.099998,60.549999,59.529999,57.746967,60.049999,18459000
412 | 2016-03-07,59.540001,60.049999,59.320000,57.641190,59.939999,12832400
413 | 2016-03-08,59.209999,59.500000,58.680000,56.525681,58.779999,14132900
414 | 2016-03-09,59.150002,59.540001,58.680000,56.852634,59.119999,13238800
415 | 2016-03-10,59.590000,59.669998,57.810001,56.362198,58.610001,21139200
416 | 2016-03-11,59.389999,59.509998,58.650002,57.064198,59.340000,21055000
417 | 2016-03-14,59.150002,59.310001,58.599998,56.852634,59.119999,13436100
418 | 2016-03-15,58.540001,59.209999,58.430000,56.929565,59.200001,10910500
419 | 2016-03-16,58.980000,59.750000,58.470001,56.660305,58.919998,17423900
420 | 2016-03-17,58.770000,59.130001,57.990002,56.496822,58.750000,19405700
421 | 2016-03-18,60.049999,60.970001,59.660000,58.160480,60.480000,29570200
422 | 2016-03-21,60.220001,60.820000,59.959999,58.141243,60.459999,12684400
423 | 2016-03-22,59.990002,60.580002,59.619999,57.929684,60.240002,12042700
424 | 2016-03-23,60.340000,60.509998,59.860001,57.641190,59.939999,11658700
425 | 2016-03-24,59.299999,59.509998,58.869999,57.198830,59.480000,12921200
426 | 2016-03-28,59.529999,59.750000,59.180000,57.121899,59.400002,11159700
427 | 2016-03-29,59.330002,59.330002,58.529999,56.766087,59.029999,15933400
428 | 2016-03-30,59.459999,60.230000,59.380001,57.420013,59.709999,13307100
429 | 2016-03-31,59.450001,59.930000,59.110001,56.948803,59.220001,14904700
430 | 2016-04-01,59.020000,60.060001,58.560001,57.573872,59.869999,15417500
431 | 2016-04-04,59.439999,59.570000,58.959999,57.351059,59.200001,12305000
432 | 2016-04-05,58.590000,58.830002,58.209999,56.537292,58.360001,12886600
433 | 2016-04-06,58.180000,58.880001,57.950001,56.973232,58.810001,12167900
434 | 2016-04-07,58.259998,58.430000,57.070000,55.529770,57.320000,19226800
435 | 2016-04-08,57.709999,58.580002,57.689999,55.936657,57.740002,13547700
436 | 2016-04-11,57.910000,58.880001,57.910000,56.382286,58.200001,17627800
437 | 2016-04-12,58.340000,59.389999,58.200001,57.428558,59.279999,17779200
438 | 2016-04-13,60.480000,62.160000,60.380001,59.860168,61.790001,37516800
439 | 2016-04-14,61.689999,62.910000,61.610001,60.635178,62.590000,24249900
440 | 2016-04-15,62.880001,62.900002,61.450001,59.937664,61.869999,19290700
441 | 2016-04-18,61.639999,62.580002,61.529999,60.325176,62.270000,13794200
442 | 2016-04-19,62.549999,63.480000,62.549999,61.342381,63.320000,19255600
443 | 2016-04-20,63.480000,64.309998,63.150002,62.233643,64.239998,14594400
444 | 2016-04-21,64.260002,64.660004,63.340000,61.613632,63.599998,15395800
445 | 2016-04-22,63.639999,64.379997,63.639999,61.972080,63.970001,12444700
446 | 2016-04-25,63.599998,63.950001,63.150002,61.613632,63.599998,10687200
447 | 2016-04-26,63.810001,64.070000,63.330002,61.933331,63.930000,12048000
448 | 2016-04-27,63.860001,64.639999,63.599998,62.107708,64.110001,15284100
449 | 2016-04-28,63.639999,64.419998,63.349998,61.613632,63.599998,12852500
450 | 2016-04-29,63.090000,63.610001,62.700001,61.226128,63.200001,16376400
451 | 2016-05-02,63.689999,64.000000,63.139999,61.797703,63.790001,10247300
452 | 2016-05-03,62.900002,62.910000,61.799999,60.606121,62.560001,18988200
453 | 2016-05-04,61.750000,62.259998,61.270000,59.647038,61.570000,17030200
454 | 2016-05-05,61.599998,62.000000,61.060001,59.327347,61.240002,14033900
455 | 2016-05-06,60.700001,61.680000,60.590000,59.676102,61.599998,11046300
456 | 2016-05-09,61.369999,61.889999,61.049999,59.298283,61.209999,11197100
457 | 2016-05-10,61.549999,62.259998,61.349998,60.102356,62.040001,11897200
458 | 2016-05-11,61.970001,62.599998,61.810001,59.879543,61.810001,11254000
459 | 2016-05-12,62.270000,62.560001,61.369999,59.840790,61.770000,11071700
460 | 2016-05-13,61.700001,62.400002,61.020000,59.288597,61.200001,15122300
461 | 2016-05-16,61.209999,61.990002,61.000000,59.734222,61.660000,10951300
462 | 2016-05-17,61.430000,62.160000,61.150002,59.734222,61.660000,12180900
463 | 2016-05-18,61.700001,64.169998,61.689999,62.039894,64.040001,24007100
464 | 2016-05-19,63.529999,64.220001,62.900002,61.410191,63.389999,16076200
465 | 2016-05-20,63.860001,64.190002,63.369999,61.526443,63.509998,11862000
466 | 2016-05-23,63.450001,63.869999,63.160000,61.478008,63.459999,9347500
467 | 2016-05-24,63.939999,64.769997,63.810001,62.524281,64.540001,13839400
468 | 2016-05-25,64.940002,66.199997,64.919998,63.473667,65.519997,18935200
469 | 2016-05-26,65.570000,65.580002,64.910004,62.998978,65.029999,9428400
470 | 2016-05-27,65.209999,65.459999,65.050003,63.386478,65.430000,10070000
471 | 2016-05-31,65.730003,65.820000,64.959999,63.231480,65.269997,15139400
472 | 2016-06-01,64.760002,65.919998,64.260002,63.638355,65.690002,14031000
473 | 2016-06-02,65.519997,65.809998,65.160004,63.754608,65.809998,10637600
474 | 2016-06-03,64.250000,64.860001,63.549999,62.621155,64.639999,20225100
475 | 2016-06-06,64.639999,65.760002,64.599998,63.241161,65.279999,13193500
476 | 2016-06-07,65.449997,65.739998,65.040001,63.028034,65.059998,9924100
477 | 2016-06-08,64.930000,65.480003,64.919998,63.212097,65.250000,9428000
478 | 2016-06-09,64.790001,64.900002,64.269997,62.727715,64.750000,10817800
479 | 2016-06-10,63.930000,64.070000,63.580002,61.846142,63.840000,16678400
480 | 2016-06-13,63.480000,64.339996,63.259998,61.293941,63.270000,14314900
481 | 2016-06-14,62.680000,63.470001,61.680000,60.141109,62.080002,19509300
482 | 2016-06-15,62.410000,62.980000,61.910000,60.034546,61.970001,16982100
483 | 2016-06-16,61.450001,62.299999,60.900002,60.276737,62.220001,16791200
484 | 2016-06-17,62.299999,62.709999,61.930000,60.334858,62.279999,15751500
485 | 2016-06-20,63.450001,63.849998,62.340000,60.422050,62.369999,12213200
486 | 2016-06-21,62.730000,63.000000,62.139999,60.983932,62.950001,11611600
487 | 2016-06-22,62.950001,63.709999,62.680000,60.751427,62.709999,12643500
488 | 2016-06-23,63.700001,64.150002,63.529999,62.049583,64.050003,16583600
489 | 2016-06-24,60.480000,61.700001,59.340000,57.738564,59.599998,44108700
490 | 2016-06-27,58.709999,58.750000,57.049999,55.810719,57.610001,37300700
491 | 2016-06-28,59.189999,59.549999,58.259998,57.661060,59.520000,29088700
492 | 2016-06-29,60.360001,61.209999,60.000000,59.288597,61.200001,21483000
493 | 2016-06-30,61.630001,62.189999,61.020000,60.199230,62.139999,21343600
494 | 2016-07-01,61.660000,62.009998,61.160000,59.808708,61.259998,14217800
495 | 2016-07-05,60.450001,60.599998,59.099998,58.139217,59.549999,23357700
496 | 2016-07-06,59.009998,60.290001,58.759998,58.764057,60.189999,20429800
497 | 2016-07-07,60.520000,61.139999,60.160000,59.144817,60.580002,13771400
498 | 2016-07-08,61.330002,62.169998,61.330002,60.365204,61.830002,16998800
499 | 2016-07-11,62.419998,62.950001,62.139999,60.794781,62.270000,13151400
500 | 2016-07-12,63.029999,63.560001,62.889999,61.702747,63.200001,16588100
501 | 2016-07-13,63.080002,63.430000,62.639999,61.663692,63.160000,18526900
502 | 2016-07-14,64.739998,64.980003,64.050003,62.600952,64.120003,28985900
503 | 2016-07-15,64.750000,64.800003,63.610001,62.659527,64.180000,17607100
504 | 2016-07-18,64.129997,64.400002,63.900002,62.444744,63.959999,10824400
505 | 2016-07-19,63.610001,64.099998,63.459999,62.347115,63.860001,9737400
506 | 2016-07-20,64.110001,64.230003,63.709999,62.415455,63.930000,10411100
507 | 2016-07-21,64.000000,64.180000,63.630001,62.181137,63.689999,9808700
508 | 2016-07-22,63.900002,64.089996,63.599998,62.522846,64.040001,8195700
509 | 2016-07-25,63.980000,64.169998,63.680000,62.356873,63.869999,8168300
510 | 2016-07-26,63.980000,64.260002,63.709999,62.610710,64.129997,8067800
511 | 2016-07-27,64.080002,64.690002,64.059998,62.805981,64.330002,11806800
512 | 2016-07-28,64.000000,64.190002,63.720001,62.581425,64.099998,10013400
513 | 2016-07-29,63.799999,64.290001,63.750000,62.454510,63.970001,13210400
514 | 2016-08-01,64.150002,64.309998,63.610001,62.288532,63.799999,11422600
515 | 2016-08-02,63.590000,64.010002,63.380001,62.142086,63.650002,13550000
516 | 2016-08-03,63.689999,64.669998,63.650002,63.128162,64.660004,13122300
517 | 2016-08-04,64.489998,64.820000,64.269997,63.030521,64.559998,9873000
518 | 2016-08-05,65.139999,66.370003,65.070000,64.729301,66.300003,20752700
519 | 2016-08-08,66.070000,66.489998,65.839996,64.534042,66.099998,11359200
520 | 2016-08-09,66.180000,66.279999,65.690002,64.309494,65.870003,10097000
521 | 2016-08-10,65.919998,66.070000,65.160004,63.733467,65.279999,11556100
522 | 2016-08-11,65.269997,65.690002,65.019997,63.909206,65.459999,9604500
523 | 2016-08-12,64.970001,65.349998,64.860001,63.772522,65.320000,7685400
524 | 2016-08-15,65.559998,65.830002,65.459999,64.163055,65.720001,8371600
525 | 2016-08-16,65.360001,65.959999,65.239998,64.153282,65.709999,10128900
526 | 2016-08-17,65.800003,65.980003,65.540001,64.329018,65.889999,11868100
527 | 2016-08-18,65.620003,65.989998,65.529999,64.387596,65.949997,9313600
528 | 2016-08-19,65.720001,65.910004,65.220001,64.299736,65.860001,9084900
529 | 2016-08-22,65.750000,65.879997,65.410004,64.241150,65.800003,9055600
530 | 2016-08-23,66.070000,66.339996,65.760002,64.211861,65.769997,8949600
531 | 2016-08-24,65.989998,66.230003,65.769997,64.387596,65.949997,10167200
532 | 2016-08-25,65.910004,66.139999,65.790001,64.504753,66.070000,9978700
533 | 2016-08-26,66.330002,66.879997,65.849998,64.651207,66.220001,14038600
534 | 2016-08-29,66.489998,67.099998,66.459999,65.363907,66.949997,14583100
535 | 2016-08-30,66.949997,67.599998,66.949997,65.900879,67.500000,13791200
536 | 2016-08-31,67.459999,67.769997,66.860001,65.900879,67.500000,14952300
537 | 2016-09-01,67.639999,67.720001,66.650002,65.617752,67.209999,12226500
538 | 2016-09-02,67.400002,67.580002,66.980003,65.891113,67.489998,13720700
539 | 2016-09-06,67.500000,67.550003,66.709999,65.842300,67.440002,16649400
540 | 2016-09-07,67.160004,67.589996,66.959999,65.568932,67.160004,10070400
541 | 2016-09-08,67.220001,67.680000,67.000000,65.656807,67.250000,12253000
542 | 2016-09-09,67.029999,67.430000,66.639999,65.071014,66.650002,19686900
543 | 2016-09-12,66.139999,67.300003,65.760002,65.471291,67.059998,16453000
544 | 2016-09-13,66.110001,66.860001,65.820000,64.953857,66.529999,18876100
545 | 2016-09-14,66.269997,67.250000,66.209999,64.826942,66.400002,12648600
546 | 2016-09-15,66.290001,66.930000,66.089996,65.061256,66.639999,12531300
547 | 2016-09-16,66.089996,66.260002,65.440002,64.260674,65.820000,25161500
548 | 2016-09-19,66.150002,66.639999,65.849998,64.621918,66.190002,13466900
549 | 2016-09-20,66.750000,66.849998,66.239998,64.885521,66.459999,10092200
550 | 2016-09-21,66.839996,67.129997,66.309998,65.256516,66.839996,14116800
551 | 2016-09-22,66.989998,67.419998,66.839996,65.793480,67.389999,12781700
552 | 2016-09-23,67.389999,67.900002,67.180000,65.656807,67.250000,13967400
553 | 2016-09-26,66.599998,66.800003,65.540001,64.221626,65.779999,16408100
554 | 2016-09-27,65.410004,66.410004,65.110001,64.787888,66.360001,13711400
555 | 2016-09-28,66.580002,66.769997,65.989998,65.129601,66.709999,11278000
556 | 2016-09-29,66.699997,67.209999,65.349998,64.094711,65.650002,18727200
557 | 2016-09-30,66.080002,67.059998,66.080002,65.012436,66.589996,21680100
558 | 2016-10-03,66.349998,66.919998,66.260002,64.934334,66.510002,14901700
559 | 2016-10-04,66.209999,67.180000,66.099998,65.494873,66.599998,17226900
560 | 2016-10-05,66.889999,68.070000,66.800003,66.566795,67.690002,16280000
561 | 2016-10-06,67.730003,67.970001,67.050003,66.743805,67.870003,17485000
562 | 2016-10-07,67.790001,68.180000,67.400002,66.979820,68.110001,18497000
563 | 2016-10-10,68.339996,69.059998,68.230003,67.501015,68.639999,13027500
564 | 2016-10-11,68.500000,68.820000,67.930000,67.176491,68.309998,15657100
565 | 2016-10-12,68.260002,68.589996,68.050003,66.999481,68.129997,11899800
566 | 2016-10-13,67.459999,67.870003,66.820000,66.615959,67.739998,17890000
567 | 2016-10-14,68.800003,69.029999,67.300003,66.399597,67.519997,24163800
568 | 2016-10-17,67.419998,67.790001,66.739998,66.055412,67.169998,14963400
569 | 2016-10-18,67.849998,68.209999,67.540001,66.576607,67.699997,11870300
570 | 2016-10-19,67.809998,68.500000,67.809998,67.215836,68.349998,12705800
571 | 2016-10-20,68.080002,68.680000,67.940002,67.127319,68.260002,14122000
572 | 2016-10-21,67.809998,68.529999,67.699997,67.353508,68.489998,12175700
573 | 2016-10-24,68.970001,69.050003,68.500000,67.727211,68.870003,10197100
574 | 2016-10-25,68.879997,68.930000,68.379997,67.658371,68.800003,9945100
575 | 2016-10-26,68.370003,69.250000,68.370003,67.982887,69.129997,9801300
576 | 2016-10-27,69.489998,69.769997,69.099998,68.081238,69.230003,14210700
577 | 2016-10-28,69.529999,69.550003,68.470001,67.963219,69.110001,12766500
578 | 2016-10-31,69.430000,69.580002,69.230003,68.110733,69.260002,14336300
579 | 2016-11-01,69.480003,69.779999,68.330002,67.825546,68.970001,15564500
580 | 2016-11-02,68.650002,68.849998,68.010002,67.540367,68.680000,12449800
581 | 2016-11-03,68.860001,69.190002,68.220001,67.245331,68.379997,10369700
582 | 2016-11-04,68.489998,68.559998,67.639999,66.635628,67.760002,13571300
583 | 2016-11-07,69.080002,69.970001,69.000000,68.720444,69.879997,16515100
584 | 2016-11-08,69.699997,70.550003,69.239998,68.867950,70.029999,17475400
585 | 2016-11-09,71.459999,74.150002,71.320000,72.034515,73.250000,50948400
586 | 2016-11-10,74.220001,77.250000,74.220001,75.378105,76.650002,56192300
587 | 2016-11-11,76.300003,76.720001,75.769997,75.417442,76.690002,27475100
588 | 2016-11-14,77.250000,80.440002,77.250000,78.190651,79.510002,46130700
589 | 2016-11-15,78.370003,79.410004,77.779999,78.043137,79.360001,28126300
590 | 2016-11-16,78.220001,78.349998,76.879997,76.115662,77.400002,26054900
591 | 2016-11-17,77.930000,78.459999,77.599998,76.725372,78.019997,19306700
592 | 2016-11-18,77.959999,78.419998,77.550003,76.420517,77.709999,19770000
593 | 2016-11-21,78.000000,78.169998,77.290001,76.754875,78.050003,11983500
594 | 2016-11-22,78.349998,78.559998,77.760002,77.226906,78.529999,14410100
595 | 2016-11-23,78.870003,79.239998,77.889999,77.551437,78.860001,13373700
596 | 2016-11-25,79.099998,79.449997,78.470001,77.521935,78.830002,6185700
597 | 2016-11-28,78.180000,78.870003,78.019997,77.020401,78.320000,13007200
598 | 2016-11-29,78.389999,79.160004,78.389999,77.610435,78.919998,14144100
599 | 2016-11-30,79.919998,80.529999,79.699997,78.839691,80.169998,25351900
600 | 2016-12-01,80.650002,82.279999,80.650002,80.432823,81.790001,23823600
601 | 2016-12-02,81.800003,81.830002,80.900002,80.245964,81.599998,16931500
602 | 2016-12-05,82.300003,83.290001,82.290001,81.878426,83.260002,18529800
603 | 2016-12-06,83.599998,83.809998,82.430000,82.301292,83.690002,16130000
604 | 2016-12-07,83.550003,84.089996,82.849998,82.674988,84.070000,18996900
605 | 2016-12-08,84.230003,85.500000,83.940002,83.707565,85.120003,20844900
606 | 2016-12-09,85.019997,85.500000,84.139999,84.071411,85.489998,14567200
607 | 2016-12-12,85.360001,85.790001,84.290001,83.324028,84.730003,14511300
608 | 2016-12-13,84.980003,85.669998,83.820000,83.353539,84.760002,16669000
609 | 2016-12-14,83.879997,86.120003,83.760002,83.324028,84.730003,22622600
610 | 2016-12-15,85.400002,86.489998,84.900002,84.572952,86.000000,19438900
611 | 2016-12-16,86.290001,86.290001,84.889999,83.530548,84.940002,23008500
612 | 2016-12-19,84.800003,85.440002,84.190002,84.012421,85.430000,21685100
613 | 2016-12-20,85.790001,86.540001,85.550003,85.094162,86.529999,14587300
614 | 2016-12-21,86.430000,86.809998,86.029999,85.310516,86.750000,11400500
615 | 2016-12-22,86.440002,87.169998,86.209999,85.448196,86.889999,13924200
616 | 2016-12-23,87.000000,87.150002,86.400002,85.605537,87.050003,10725000
617 | 2016-12-27,87.050003,87.160004,86.750000,85.684196,87.129997,6946400
618 | 2016-12-28,87.160004,87.389999,86.349998,85.064659,86.500000,9455600
619 | 2016-12-29,86.580002,86.669998,85.040001,84.464783,85.889999,14689000
620 | 2016-12-30,86.099998,86.419998,85.660004,84.858147,86.290001,13617800
621 | 2017-01-03,87.339996,87.760002,85.980003,85.782555,87.230003,20550700
622 | 2017-01-04,86.959999,87.180000,86.400002,85.940773,86.910004,15266600
623 | 2017-01-05,86.809998,87.110001,85.260002,85.149689,86.110001,14300800
624 | 2017-01-06,86.389999,86.620003,85.940002,85.159576,86.120003,12893300
625 | 2017-01-09,85.730003,86.769997,85.519997,85.218903,86.180000,12806600
626 | 2017-01-10,86.070000,86.900002,85.720001,85.466118,86.430000,13989000
627 | 2017-01-11,86.430000,87.080002,85.910004,86.108864,87.080002,14713100
628 | 2017-01-12,86.760002,87.269997,86.019997,85.278229,86.239998,21337400
629 | 2017-01-13,87.110001,88.169998,86.099998,85.733101,86.699997,28296000
630 | 2017-01-17,84.930000,85.220001,83.279999,82.618240,83.550003,30024600
631 | 2017-01-18,83.629997,84.230003,83.029999,83.003891,83.940002,21270100
632 | 2017-01-19,84.059998,84.669998,83.120003,82.371025,83.300003,16555600
633 | 2017-01-20,83.430000,83.830002,83.290001,82.736893,83.669998,18436800
634 | 2017-01-23,83.300003,84.000000,83.209999,82.776451,83.709999,12179200
635 | 2017-01-24,83.919998,85.000000,83.559998,83.775192,84.720001,15175300
636 | 2017-01-25,85.839996,86.169998,85.169998,85.070580,86.029999,17551000
637 | 2017-01-26,85.949997,86.949997,85.949997,85.782555,86.750000,15962800
638 | 2017-01-27,86.660004,86.980003,86.269997,85.960541,86.930000,12535400
639 | 2017-01-30,86.190002,86.500000,85.320000,85.070580,86.029999,13661900
640 | 2017-01-31,85.599998,86.150002,84.089996,83.686188,84.629997,15655100
641 | 2017-02-01,85.540001,86.099998,84.680000,84.002617,84.949997,15430900
642 | 2017-02-02,84.339996,84.910004,84.160004,83.646629,84.589996,11081400
643 | 2017-02-03,86.190002,87.309998,85.870003,86.207756,87.180000,17885200
644 | 2017-02-06,86.790001,87.449997,86.610001,85.802322,86.769997,11828400
645 | 2017-02-07,87.139999,87.400002,86.480003,85.752884,86.720001,9392800
646 | 2017-02-08,86.180000,86.309998,85.370003,85.001358,85.959999,13970900
647 | 2017-02-09,85.959999,87.330002,85.959999,86.227531,87.199997,13749100
648 | 2017-02-10,87.480003,87.480003,86.889999,86.029755,87.000000,10992500
649 | 2017-02-13,87.440002,88.739998,87.430000,87.166931,88.150002,18739100
650 | 2017-02-14,88.300003,89.699997,88.110001,88.561203,89.559998,17932100
651 | 2017-02-15,90.080002,90.870003,89.349998,89.579720,90.589996,17381800
652 | 2017-02-16,90.400002,91.040001,89.769997,89.520393,90.529999,17672700
653 | 2017-02-17,89.820000,90.470001,89.690002,89.223747,90.230003,15776600
654 | 2017-02-21,90.510002,91.150002,90.459999,89.995049,91.010002,14068300
655 | 2017-02-22,90.519997,91.300003,90.419998,90.044479,91.059998,11839000
656 | 2017-02-23,91.180000,91.339996,90.519997,90.113701,91.129997,11067000
657 | 2017-02-24,90.180000,90.540001,89.730003,89.322624,90.330002,15062300
658 | 2017-02-27,90.320000,90.730003,90.019997,89.421509,90.430000,12361000
659 | 2017-02-28,89.849998,90.820000,89.589996,89.609398,90.620003,15183500
660 | 2017-03-01,92.790001,93.980003,92.610001,92.556152,93.599998,24451400
661 | 2017-03-02,93.870003,93.919998,92.029999,91.112434,92.139999,16862500
662 | 2017-03-03,92.139999,93.110001,92.139999,91.765076,92.800003,12817500
663 | 2017-03-06,92.250000,92.320000,91.099998,90.894890,91.919998,15059200
664 | 2017-03-07,91.639999,92.089996,91.209999,90.390579,91.410004,11156800
665 | 2017-03-08,92.680000,92.849998,91.099998,90.192810,91.209999,17378400
666 | 2017-03-09,91.599998,92.139999,91.150002,90.548790,91.570000,13726200
667 | 2017-03-10,91.949997,92.000000,90.529999,90.262024,91.279999,13729900
668 | 2017-03-13,91.309998,91.779999,90.930000,90.341133,91.360001,10004300
669 | 2017-03-14,91.019997,91.650002,90.769997,90.489464,91.510002,10237700
670 | 2017-03-15,91.800003,92.550003,91.129997,90.707008,91.730003,16601400
671 | 2017-03-16,92.029999,92.809998,91.570000,90.618011,91.639999,14492000
672 | 2017-03-17,91.830002,92.040001,90.650002,89.668724,90.680000,21734700
673 | 2017-03-20,90.269997,91.169998,89.790001,89.025963,90.029999,14623600
674 | 2017-03-21,90.360001,90.639999,87.059998,86.415405,87.389999,33089200
675 | 2017-03-22,86.889999,88.070000,86.010002,86.553841,87.529999,21741000
676 | 2017-03-23,87.209999,88.500000,87.089996,86.415405,87.389999,16090100
677 | 2017-03-24,87.790001,88.089996,86.769997,86.316528,87.290001,16093200
678 | 2017-03-27,85.529999,87.400002,85.230003,86.267082,87.239998,16689300
679 | 2017-03-28,87.019997,89.019997,86.980003,87.611916,88.599998,16264400
680 | 2017-03-29,88.599998,88.820000,88.080002,87.285591,88.269997,10207600
681 | 2017-03-30,88.199997,89.459999,88.120003,88.037117,89.029999,11631000
682 | 2017-03-31,88.709999,88.739998,87.750000,86.860382,87.839996,16987600
683 | 2017-04-03,87.989998,88.169998,86.599998,86.543961,87.519997,19831800
684 | 2017-04-04,86.889999,87.669998,86.720001,86.832375,87.309998,14280800
685 | 2017-04-05,88.419998,88.540001,86.129997,85.718506,86.190002,17635500
686 | 2017-04-06,85.980003,86.910004,85.250000,86.006920,86.480003,14379600
687 | 2017-04-07,85.930000,86.809998,85.709999,85.708557,86.180000,13097100
688 | 2017-04-10,86.080002,86.690002,85.400002,85.410194,85.879997,15081600
689 | 2017-04-11,85.540001,85.790001,84.800003,85.261024,85.730003,14690500
690 | 2017-04-12,85.930000,85.949997,85.029999,84.932823,85.400002,14730600
691 | 2017-04-13,85.500000,86.989998,84.400002,83.938293,84.400002,30529800
692 | 2017-04-17,84.440002,86.080002,84.370003,85.390305,85.860001,19071700
693 | 2017-04-18,85.360001,85.629997,84.739998,84.694138,85.160004,14127000
694 | 2017-04-19,85.500000,85.919998,84.360001,83.997963,84.459999,17588500
695 | 2017-04-20,84.980003,85.779999,84.550003,85.082008,85.550003,15635800
696 | 2017-04-21,85.500000,85.680000,84.510002,84.057632,84.519997,19820600
697 | 2017-04-24,86.550003,88.050003,86.419998,87.021332,87.500000,25468300
698 | 2017-04-25,88.550003,89.129997,88.260002,87.777184,88.260002,18253800
699 | 2017-04-26,88.349998,89.050003,88.139999,87.946251,88.430000,12832200
700 | 2017-04-27,88.370003,88.370003,87.010002,87.130737,87.610001,13329000
701 | 2017-04-28,87.599998,87.849998,86.949997,86.524071,87.000000,10755600
702 | 2017-05-01,87.360001,87.739998,86.559998,86.583740,87.059998,15712300
703 | 2017-05-02,86.709999,86.879997,86.019997,86.026802,86.500000,14414200
704 | 2017-05-03,86.059998,87.099998,86.019997,86.524071,87.000000,11540500
705 | 2017-05-04,87.690002,87.730003,86.570000,86.623520,87.099998,11540100
706 | 2017-05-05,87.250000,87.339996,86.419998,86.524071,87.000000,9436000
707 | 2017-05-08,87.040001,87.320000,86.650002,86.623520,87.099998,8162200
708 | 2017-05-09,87.260002,87.839996,86.500000,86.275436,86.750000,10273900
709 | 2017-05-10,86.529999,87.480003,86.470001,86.951721,87.430000,8334900
710 | 2017-05-11,87.089996,87.480003,86.349998,86.683197,87.160004,10907400
711 | 2017-05-12,86.680000,87.050003,86.339996,86.444504,86.919998,8738800
712 | 2017-05-15,87.099998,87.489998,86.860001,86.862206,87.339996,8835600
713 | 2017-05-16,87.360001,88.089996,87.339996,87.130737,87.610001,9795000
714 | 2017-05-17,87.610001,87.610001,83.970001,83.808998,84.269997,24679700
715 | 2017-05-18,84.070000,84.800003,83.360001,83.500702,83.959999,23350100
716 | 2017-05-19,84.209999,85.339996,84.150002,84.316216,84.779999,13412900
717 | 2017-05-22,85.180000,85.290001,84.209999,84.236649,84.699997,11636000
718 | 2017-05-23,84.750000,86.070000,84.510002,85.290855,85.760002,11753000
719 | 2017-05-24,85.879997,85.970001,85.239998,85.241127,85.709999,9833800
720 | 2017-05-25,85.989998,86.080002,85.080002,84.883095,85.349998,12238500
721 | 2017-05-26,85.110001,85.559998,85.019997,84.893044,85.360001,8087500
722 | 2017-05-30,85.129997,85.150002,83.779999,83.441032,83.900002,12603200
723 | 2017-05-31,83.730003,83.820000,81.639999,81.700607,82.150002,28327900
724 | 2017-06-01,82.459999,83.080002,81.650002,82.605621,83.059998,17123500
725 | 2017-06-02,82.290001,82.989998,81.980003,82.187920,82.639999,14998500
726 | 2017-06-05,82.639999,83.510002,82.580002,82.337105,82.790001,9080200
727 | 2017-06-06,82.290001,83.220001,82.129997,82.506172,82.959999,12196800
728 | 2017-06-07,83.309998,84.110001,83.099998,83.450981,83.910004,13711100
729 | 2017-06-08,83.910004,85.730003,83.889999,84.485283,84.949997,17951000
730 | 2017-06-09,85.510002,87.050003,85.389999,86.484291,86.959999,19120200
731 | 2017-06-12,86.959999,87.739998,86.889999,86.504181,86.980003,16053400
732 | 2017-06-13,87.550003,87.849998,86.980003,86.792587,87.269997,12557200
733 | 2017-06-14,86.769997,87.309998,85.820000,86.613571,87.089996,16175700
734 | 2017-06-15,86.250000,87.080002,86.239998,86.096420,86.570000,12509700
735 | 2017-06-16,86.849998,86.959999,86.019997,85.708557,86.180000,16936600
736 | 2017-06-19,86.970001,88.230003,86.849998,87.588219,88.070000,15972300
737 | 2017-06-20,87.750000,87.919998,87.370003,87.041222,87.519997,11197800
738 | 2017-06-21,87.480003,87.550003,86.760002,86.643417,87.120003,10005900
739 | 2017-06-22,86.930000,87.360001,86.650002,86.543961,87.019997,12180600
740 | 2017-06-23,87.660004,88.000000,86.610001,86.384834,86.860001,18812000
741 | 2017-06-26,87.010002,87.669998,86.620003,86.762756,87.239998,10082400
742 | 2017-06-27,87.709999,88.940002,87.500000,87.568329,88.050003,15415200
743 | 2017-06-28,88.599998,90.070000,88.599998,89.328644,89.820000,17466200
744 | 2017-06-29,92.339996,92.650002,90.309998,90.651367,91.150002,27697800
745 | 2017-06-30,91.959999,92.000000,91.160004,90.900002,91.400002,16331800
746 | 2017-07-03,91.559998,93.480003,91.410004,92.750000,92.750000,13208100
747 | 2017-07-05,93.120003,93.790001,92.610001,93.680000,93.680000,17535400
748 | 2017-07-06,93.540001,94.510002,92.879997,93.379997,93.379997,16596100
749 | 2017-07-07,93.959999,94.169998,93.230003,93.849998,93.849998,12817800
750 | 2017-07-10,93.500000,93.680000,93.089996,93.190002,93.190002,13987200
751 | 2017-07-11,93.330002,93.330002,92.279999,92.830002,92.830002,13262300
752 | 2017-07-12,92.610001,92.830002,92.070000,92.510002,92.510002,13540100
753 | 2017-07-13,92.690002,93.379997,92.339996,93.099998,93.099998,12820100
754 | 2017-07-14,90.809998,92.610001,90.580002,92.250000,92.250000,22235200
755 | 2017-07-17,91.820000,91.989998,91.250000,91.389999,91.389999,14374200
756 | 2017-07-18,90.449997,91.580002,90.320000,91.070000,91.070000,14532700
757 |
--------------------------------------------------------------------------------
/volatility/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/jasonstrimpel/volatility-trading/03186089284600461acdaa0e64b9a7d83bf9badd/volatility/__init__.py
--------------------------------------------------------------------------------
/volatility/data.py:
--------------------------------------------------------------------------------
1 | import pandas
2 |
3 |
4 | def yahoo_helper(symbol, data_path, *args):
5 | """
6 | Returns DataFrame/Panel of historical stock prices from symbols, over date
7 | range, start to end.
8 |
9 | Parameters
10 | ----------
11 | symbol : string
12 | Single stock symbol (ticker)
13 | data_path: string
14 | Path to Yahoo! historical data CSV file
15 | *args:
16 | Additional arguments to pass to pandas.read_csv
17 | """
18 |
19 | try:
20 | data = pandas.read_csv(
21 | data_path,
22 | parse_dates=['Date'],
23 | index_col='Date',
24 | usecols=[
25 | 'Date',
26 | 'Open',
27 | 'High',
28 | 'Low',
29 | 'Adj Close',
30 | ],
31 | *args
32 | ).rename(columns={
33 | 'Adj Close': 'Close'
34 | })
35 |
36 | except Exception as e:
37 | raise e
38 |
39 | data.symbol = symbol
40 | return data
41 |
--------------------------------------------------------------------------------
/volatility/models/GarmanKlass.py:
--------------------------------------------------------------------------------
1 | import math
2 |
3 | import numpy as np
4 |
5 |
6 | def get_estimator(price_data, window=30, trading_periods=252, clean=True):
7 |
8 | log_hl = (price_data['High'] / price_data['Low']).apply(np.log)
9 | log_co = (price_data['Close'] / price_data['Open']).apply(np.log)
10 |
11 | rs = 0.5 * log_hl**2 - (2*math.log(2)-1) * log_co**2
12 |
13 | def f(v):
14 | return (trading_periods * v.mean())**0.5
15 |
16 | result = rs.rolling(window=window, center=False).apply(func=f)
17 |
18 | if clean:
19 | return result.dropna()
20 | else:
21 | return result
22 |
--------------------------------------------------------------------------------
/volatility/models/HodgesTompkins.py:
--------------------------------------------------------------------------------
1 | import math
2 |
3 | import numpy as np
4 |
5 |
6 | def get_estimator(price_data, window=30, trading_periods=252, clean=True):
7 |
8 | log_return = (price_data['Close'] / price_data['Close'].shift(1)).apply(np.log)
9 |
10 | vol = log_return.rolling(
11 | window=window,
12 | center=False
13 | ).std() * math.sqrt(trading_periods)
14 |
15 | h = window
16 | n = (log_return.count() - h) + 1
17 |
18 | adj_factor = 1.0 / (1.0 - (h / n) + ((h**2 - 1) / (3 * n**2)))
19 |
20 | result = vol * adj_factor
21 |
22 | if clean:
23 | return result.dropna()
24 | else:
25 | return result
26 |
--------------------------------------------------------------------------------
/volatility/models/Kurtosis.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 |
3 |
4 | def get_estimator(price_data, window=30, clean=True):
5 |
6 | log_return = (price_data['Close'] / price_data['Close'].shift(1)).apply(np.log)
7 |
8 | result = log_return.rolling(
9 | window=window,
10 | center=False
11 | ).kurt()
12 |
13 | if clean:
14 | return result.dropna()
15 | else:
16 | return result
17 |
--------------------------------------------------------------------------------
/volatility/models/Parkinson.py:
--------------------------------------------------------------------------------
1 | import math
2 |
3 | import numpy as np
4 |
5 |
6 | def get_estimator(price_data, window=30, trading_periods=252, clean=True):
7 |
8 | rs = (1.0 / (4.0 * math.log(2.0))) * ((price_data['High'] / price_data['Low']).apply(np.log))**2.0
9 |
10 | def f(v):
11 | return (trading_periods * v.mean())**0.5
12 |
13 | result = rs.rolling(
14 | window=window,
15 | center=False
16 | ).apply(func=f)
17 |
18 | if clean:
19 | return result.dropna()
20 | else:
21 | return result
22 |
--------------------------------------------------------------------------------
/volatility/models/Raw.py:
--------------------------------------------------------------------------------
1 | import math
2 |
3 | import numpy as np
4 |
5 |
6 | def get_estimator(price_data, window=30, trading_periods=252, clean=True):
7 |
8 | log_return = (price_data['Close'] / price_data['Close'].shift(1)).apply(np.log)
9 |
10 | result = log_return.rolling(
11 | window=window,
12 | center=False
13 | ).std() * math.sqrt(trading_periods)
14 |
15 | if clean:
16 | return result.dropna()
17 | else:
18 | return result
19 |
--------------------------------------------------------------------------------
/volatility/models/RogersSatchell.py:
--------------------------------------------------------------------------------
1 | import math
2 |
3 | import numpy as np
4 |
5 |
6 | def get_estimator(price_data, window=30, trading_periods=252, clean=True):
7 |
8 | log_ho = (price_data['High'] / price_data['Open']).apply(np.log)
9 | log_lo = (price_data['Low'] / price_data['Open']).apply(np.log)
10 | log_co = (price_data['Close'] / price_data['Open']).apply(np.log)
11 |
12 | rs = log_ho * (log_ho - log_co) + log_lo * (log_lo - log_co)
13 |
14 | def f(v):
15 | return (trading_periods * v.mean())**0.5
16 |
17 | result = rs.rolling(
18 | window=window,
19 | center=False
20 | ).apply(func=f)
21 |
22 | if clean:
23 | return result.dropna()
24 | else:
25 | return result
26 |
--------------------------------------------------------------------------------
/volatility/models/Skew.py:
--------------------------------------------------------------------------------
1 | import numpy as np
2 |
3 |
4 | def get_estimator(price_data, window=30, clean=True):
5 |
6 | log_return = (price_data['Close'] / price_data['Close'].shift(1)).apply(np.log)
7 |
8 | result = log_return.rolling(
9 | window=window,
10 | center=False
11 | ).skew()
12 |
13 | if clean:
14 | return result.dropna()
15 | else:
16 | return result
17 |
--------------------------------------------------------------------------------
/volatility/models/YangZhang.py:
--------------------------------------------------------------------------------
1 | import math
2 |
3 | import numpy as np
4 |
5 |
6 | def get_estimator(price_data, window=30, trading_periods=252, clean=True):
7 |
8 | log_ho = (price_data['High'] / price_data['Open']).apply(np.log)
9 | log_lo = (price_data['Low'] / price_data['Open']).apply(np.log)
10 | log_co = (price_data['Close'] / price_data['Open']).apply(np.log)
11 |
12 | log_oc = (price_data['Open'] / price_data['Close'].shift(1)).apply(np.log)
13 | log_oc_sq = log_oc**2
14 |
15 | log_cc = (price_data['Close'] / price_data['Close'].shift(1)).apply(np.log)
16 | log_cc_sq = log_cc**2
17 |
18 | rs = log_ho * (log_ho - log_co) + log_lo * (log_lo - log_co)
19 |
20 | close_vol = log_cc_sq.rolling(
21 | window=window,
22 | center=False
23 | ).sum() * (1.0 / (window - 1.0))
24 | open_vol = log_oc_sq.rolling(
25 | window=window,
26 | center=False
27 | ).sum() * (1.0 / (window - 1.0))
28 | window_rs = rs.rolling(
29 | window=window,
30 | center=False
31 | ).sum() * (1.0 / (window - 1.0))
32 |
33 | k = 0.34 / (1.34 + (window + 1) / (window - 1))
34 | result = (open_vol + k * close_vol + (1 - k) * window_rs).apply(np.sqrt) * math.sqrt(trading_periods)
35 |
36 | if clean:
37 | return result.dropna()
38 | else:
39 | return result
40 |
--------------------------------------------------------------------------------
/volatility/models/__init__.py:
--------------------------------------------------------------------------------
1 | from volatility.models.api import *
2 |
--------------------------------------------------------------------------------
/volatility/models/api.py:
--------------------------------------------------------------------------------
1 | from volatility.models import GarmanKlass
2 | from volatility.models import HodgesTompkins
3 | from volatility.models import Kurtosis
4 | from volatility.models import Parkinson
5 | from volatility.models import Raw
6 | from volatility.models import RogersSatchell
7 | from volatility.models import Skew
8 | from volatility.models import YangZhang
9 |
10 | __all__ = [
11 | 'GarmanKlass',
12 | 'HodgesTompkins',
13 | 'Kurtosis',
14 | 'Parkinson',
15 | 'Raw',
16 | 'RogersSatchell',
17 | 'Skew',
18 | 'YangZhang',
19 | ]
20 |
--------------------------------------------------------------------------------
/volatility/volest.py:
--------------------------------------------------------------------------------
1 | import datetime
2 | import os
3 |
4 | import pandas
5 | import numpy
6 | from scipy.stats import norm
7 | import statsmodels.api as sm
8 | import matplotlib
9 | import matplotlib.pyplot as plt
10 | from matplotlib.backends.backend_pdf import PdfPages
11 |
12 | from volatility import models
13 |
14 | ESTIMATORS = [
15 | 'GarmanKlass',
16 | 'HodgesTompkins',
17 | 'Kurtosis',
18 | 'Parkinson',
19 | 'Raw',
20 | 'RogersSatchell',
21 | 'Skew',
22 | 'YangZhang'
23 | ]
24 | PRICE_COLUMNS = {
25 | 'Open',
26 | 'High',
27 | 'Low',
28 | 'Close'
29 | }
30 |
31 |
32 | def array_to_dataframe(ndarray):
33 | return pandas.DataFrame(
34 | ndarray,
35 | columns=['Open', 'High', 'Low', 'Close']
36 | )
37 |
38 |
39 | class VolatilityEstimator(object):
40 |
41 | def __init__(self, price_data, estimator, bench_data=None):
42 | """Constructor for volatility estimators
43 |
44 | Parameters
45 | ----------
46 | price_data: pandas.DataFrame or numpy.ndarray
47 | If pandas.DataFrame, must include columns Open, High, Low, Close. Also
48 | must include property symbol with the symbol we're working with. If
49 | numpy.ndarray, must be of shape (r, 4) with columns in order of open,
50 | high, low, close prices. If numpy.ndarray, will be coerced to pandas.DataFrame
51 | with no date data
52 | estimator : string
53 | Estimator estimator; valid arguments are:
54 | "GarmanKlass", "HodgesTompkins", "Kurtosis", "Parkinson", "Raw",
55 | "RogersSatchell", "Skew", "YangZhang"
56 | """
57 |
58 | if not isinstance(price_data, numpy.ndarray) and not \
59 | isinstance(price_data, pandas.DataFrame):
60 | raise ValueError('price_data must be of type numpy.ndarray or pandas.DataFrame')
61 | if isinstance(price_data, numpy.ndarray) and price_data.shape[0] != 4:
62 | raise ValueError('price_data of type numpy.ndarray shape of (r, 4)')
63 | if isinstance(price_data, pandas.DataFrame) and not \
64 | PRICE_COLUMNS.issubset(price_data.columns):
65 | raise ValueError('price_data requires Open, High, Low, Close')
66 | if price_data.symbol is None or price_data.symbol == '':
67 | raise ValueError('Symbol required as property of price_data')
68 | if estimator not in ESTIMATORS:
69 | raise ValueError('Acceptable volatility model is required')
70 |
71 | if isinstance(price_data, numpy.ndarray):
72 | price_data = array_to_dataframe(price_data)
73 | price_data.symbol = '-NA-'
74 | start = price_data.index[0]
75 | end = price_data.index[0]
76 | else:
77 | start = price_data.index[0].to_pydatetime().strftime('%Y-%m-%d')
78 | end = price_data.index[-1].to_pydatetime().strftime('%Y-%m-%d')
79 |
80 | if bench_data is not None:
81 | if price_data.shape != bench_data.shape:
82 | raise ValueError('price_data and bench_data must be same shape')
83 | if not isinstance(bench_data, numpy.ndarray) and not \
84 | isinstance(bench_data, pandas.DataFrame):
85 | raise ValueError('bench_data must be of type numpy.ndarray or pandas.DataFrame')
86 | if isinstance(bench_data, numpy.ndarray) and bench_data.shape[0] != 4:
87 | raise ValueError('bench_data of type numpy.ndarray shape of (r, 4)')
88 | if isinstance(bench_data, pandas.DataFrame) and not \
89 | PRICE_COLUMNS.issubset(bench_data.columns):
90 | raise ValueError('bench_data requires Open, High, Low, Close')
91 | if bench_data.symbol is None or bench_data.symbol == '':
92 | raise ValueError('Symbol required as property of bench_data')
93 |
94 | # bench_data = bench_data.loc[start:end]
95 |
96 | if isinstance(bench_data, numpy.ndarray):
97 | bench_data = array_to_dataframe(bench_data)
98 | bench_data.symbol = '-NA-'
99 |
100 | self._bench_data = bench_data
101 | self._bench_symbol = bench_data.symbol
102 |
103 | self._price_data = price_data
104 | self._symbol = price_data.symbol
105 | self._start = start
106 | self._end = end
107 | self._estimator = estimator
108 |
109 | matplotlib.rc('image', origin='upper')
110 |
111 | matplotlib.rcParams['font.size'] = '11'
112 |
113 | matplotlib.rcParams['grid.color'] = 'lightgrey'
114 | matplotlib.rcParams['grid.linestyle'] = '-'
115 |
116 | matplotlib.rcParams['figure.subplot.left'] = 0.1
117 | matplotlib.rcParams['figure.subplot.bottom'] = 0.13
118 | matplotlib.rcParams['figure.subplot.right'] = 0.9
119 | matplotlib.rcParams['figure.subplot.top'] = 0.9
120 |
121 | def _get_estimator(self, window, price_data, clean=True):
122 | """Selector for volatility estimator
123 |
124 | Parameters
125 | ----------
126 | window : int
127 | Rolling window for which to calculate the estimator
128 | clean : boolean
129 | Set to True to remove the NaNs at the beginning of the series
130 |
131 | Returns
132 | -------
133 | y : pandas.DataFrame
134 | Estimator series values
135 | """
136 |
137 | return getattr(models, self._estimator).get_estimator(
138 | price_data=price_data,
139 | window=window,
140 | clean=clean
141 | )
142 |
143 | def cones(self, windows=[30, 60, 90, 120], quantiles=[0.25, 0.75]):
144 | """Plots volatility cones
145 |
146 | Parameters
147 | ----------
148 | windows : [int, int, ...]
149 | List of rolling windows for which to calculate the estimator cones
150 | quantiles : [lower, upper]
151 | List of lower and upper quantiles for which to plot the cones
152 | """
153 |
154 | price_data = self._price_data
155 |
156 | if len(windows) < 2:
157 | raise ValueError(
158 | 'Two or more window periods required')
159 | if len(quantiles) != 2:
160 | raise ValueError(
161 | 'A two element list of quantiles is required, lower and upper')
162 | if quantiles[0] + quantiles[1] != 1.0:
163 | raise ValueError(
164 | 'The sum of the quantiles must equal 1.0')
165 | if quantiles[0] > quantiles[1]:
166 | raise ValueError(
167 | 'The lower quantiles (first element) must be less than the upper quantile (second element)')
168 |
169 | max_ = []
170 | min_ = []
171 | top_q = []
172 | median = []
173 | bottom_q = []
174 | realized = []
175 | data = []
176 |
177 | for window in windows:
178 |
179 | estimator = self._get_estimator(
180 | window=window,
181 | price_data=price_data
182 | )
183 |
184 | max_.append(estimator.max())
185 | top_q.append(estimator.quantile(quantiles[1]))
186 | median.append(estimator.median())
187 | bottom_q.append(estimator.quantile(quantiles[0]))
188 | min_.append(estimator.min())
189 | realized.append(estimator[-1])
190 |
191 | data.append(estimator)
192 |
193 | if self._estimator is "Skew" or self._estimator is "Kurtosis":
194 | f = lambda x: "%i" % round(x, 0)
195 | else:
196 | f = lambda x: "%i%%" % round(x*100, 0)
197 |
198 | # figure
199 | fig = plt.figure(figsize=(8, 6))
200 | fig.autofmt_xdate()
201 | left, width = 0.07, 0.65
202 | bottom, height = 0.2, 0.7
203 | left_h = left+width+0.02
204 | rect_cones = [left, bottom, width, height]
205 | rect_box = [left_h, bottom, 0.17, height]
206 | cones = plt.axes(rect_cones)
207 | box = plt.axes(rect_box)
208 |
209 | # set the plots
210 | cones.plot(windows, max_, label="Max")
211 | cones.plot(windows, top_q, label=str(int(quantiles[1]*100)) + " Prctl")
212 | cones.plot(windows, median, label="Median")
213 | cones.plot(windows, bottom_q, label=str(int(quantiles[0]*100)) + " Prctl")
214 | cones.plot(windows, min_, label="Min")
215 | cones.plot(windows, realized, 'r-.', label="Realized")
216 |
217 | # set the x ticks and limits
218 | cones.set_xticks(windows)
219 | cones.set_xlim((windows[0]-5, windows[-1]+5))
220 |
221 | # set and format the y-axis labels
222 | locs = cones.get_yticks()
223 | cones.set_yticklabels(map(f, locs))
224 |
225 | # turn on the grid
226 | cones.grid(True, axis='y', which='major', alpha=0.5)
227 |
228 | # set the title
229 | cones.set_title(self._estimator + ' (' + self._symbol + ', daily ' + self._start + ' to ' + self._end + ')')
230 |
231 | # set the legend
232 | cones.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05), ncol=3)
233 |
234 | # box plot
235 | box.boxplot(data, notch=1, sym='+')
236 | box.plot([i for i in range(1, len(windows)+1)], realized, color='r', marker='*', markeredgecolor='k')
237 |
238 | # set and format the y-axis labels
239 | locs = box.get_yticks()
240 | box.set_yticklabels(map(f, locs))
241 |
242 | # move the y-axis ticks on the right side
243 | box.yaxis.tick_right()
244 |
245 | # turn on the grid
246 | box.grid(True, axis='y', which='major', alpha=0.5)
247 |
248 | return fig, plt
249 |
250 | def rolling_quantiles(self, window=30, quantiles=[0.25, 0.75]):
251 | """Plots rolling quantiles of volatility
252 |
253 | Parameters
254 | ----------
255 | window : int
256 | Rolling window for which to calculate the estimator
257 | quantiles : [lower, upper]
258 | List of lower and upper quantiles for which to plot
259 | """
260 |
261 | price_data = self._price_data
262 |
263 | if len(quantiles) != 2:
264 | raise ValueError(
265 | 'A two element list of quantiles is required, lower and upper')
266 | if quantiles[0] + quantiles[1] != 1.0:
267 | raise ValueError(
268 | 'The sum of the quantiles must equal 1.0')
269 | if quantiles[0] > quantiles[1]:
270 | raise ValueError(
271 | 'The lower quantiles (first element) must be less than the upper quantile (second element)')
272 |
273 | estimator = self._get_estimator(
274 | window=window,
275 | price_data=price_data
276 | )
277 | date = estimator.index
278 |
279 | top_q = estimator.rolling(window=window, center=False).quantile(quantiles[1])
280 | median = estimator.rolling(window=window, center=False).median()
281 | bottom_q = estimator.rolling(window=window, center=False).quantile(quantiles[0])
282 | realized = estimator
283 | last = estimator[-1]
284 |
285 | if self._estimator is "Skew" or self._estimator is "Kurtosis":
286 | f = lambda x: "%i" % round(x, 0)
287 | else:
288 | f = lambda x: "%i%%" % round(x*100, 0)
289 |
290 | # figure
291 | fig = plt.figure(figsize=(8, 6))
292 | fig.autofmt_xdate()
293 | left, width = 0.07, 0.65
294 | bottom, height = 0.2, 0.7
295 | left_h = left+width+0.02
296 |
297 | rect_cones = [left, bottom, width, height]
298 | rect_box = [left_h, bottom, 0.17, height]
299 |
300 | cones = plt.axes(rect_cones)
301 | box = plt.axes(rect_box)
302 |
303 | # set the plots
304 | cones.plot(date, top_q, label=str(int(quantiles[1]*100)) + " Prctl")
305 | cones.plot(date, median, label="Median")
306 | cones.plot(date, bottom_q, label=str(int(quantiles[0]*100)) + " Prctl")
307 | cones.plot(date, realized, 'r-.', label="Realized")
308 |
309 | # set and format the y-axis labels
310 | locs = cones.get_yticks()
311 | cones.set_yticklabels(map(f, locs))
312 |
313 | # turn on the grid
314 | cones.grid(True, axis='y', which='major', alpha=0.5)
315 |
316 | # set the title
317 | cones.set_title(self._estimator + ' (' + self._symbol + ', daily ' + self._start + ' to ' + self._end + ')')
318 |
319 | # set the legend
320 | cones.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05), ncol=3)
321 |
322 | # box plots
323 | box.boxplot(realized, notch=1, sym='+')
324 | box.plot(1, last, color='r', marker='*', markeredgecolor='k')
325 |
326 | # set and format the y-axis labels
327 | locs = box.get_yticks()
328 | box.set_yticklabels(map(f, locs))
329 |
330 | # move the y-axis ticks on the right side
331 | box.yaxis.tick_right()
332 |
333 | # turn on the grid
334 | box.grid(True, axis='y', which='major', alpha=0.5)
335 |
336 | return fig, plt
337 |
338 | def rolling_extremes(self, window=30):
339 | """Plots rolling max and min of volatility estimator
340 |
341 | Parameters
342 | ----------
343 | window : int
344 | Rolling window for which to calculate the estimator
345 | """
346 |
347 | price_data = self._price_data
348 |
349 | estimator = self._get_estimator(
350 | window=window,
351 | price_data=price_data
352 | )
353 | date = estimator.index
354 | max_ = estimator.rolling(window=window, center=False).max()
355 | min_ = estimator.rolling(window=window, center=False).min()
356 | realized = estimator
357 | last = estimator[-1]
358 |
359 | if self._estimator is "Skew" or self._estimator is "Kurtosis":
360 | f = lambda x: "%i" % round(x, 0)
361 | else:
362 | f = lambda x: "%i%%" % round(x*100, 0)
363 |
364 | # figure
365 | fig = plt.figure(figsize=(8, 6))
366 | fig.autofmt_xdate()
367 | left, width = 0.07, 0.65
368 | bottom, height = 0.2, 0.7
369 | left_h = left+width+0.02
370 |
371 | rect_cones = [left, bottom, width, height]
372 | rect_box = [left_h, bottom, 0.17, height]
373 |
374 | cones = plt.axes(rect_cones)
375 | box = plt.axes(rect_box)
376 |
377 | # set the plots
378 | cones.plot(date, max_, label="Max")
379 | cones.plot(date, min_, label="Min")
380 | cones.plot(date, realized, 'r-.', label="Realized")
381 |
382 | # set and format the y-axis labels
383 | locs = cones.get_yticks()
384 | cones.set_yticklabels(map(f, locs))
385 |
386 | # turn on the grid
387 | cones.grid(True, axis='y', which='major', alpha=0.5)
388 |
389 | # set the title
390 | cones.set_title(self._estimator + ' (' + self._symbol + ', daily ' + self._start + ' to ' + self._end + ')')
391 |
392 | # set the legend
393 | cones.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05), ncol=3)
394 |
395 | # box plot
396 | box.boxplot(realized, notch=1, sym='+')
397 | box.plot(1, last, color='r', marker='*', markeredgecolor='k')
398 |
399 | # set and format the y-axis labels
400 | locs = box.get_yticks()
401 | box.set_yticklabels(map(f, locs))
402 |
403 | # move the y-axis ticks on the right side
404 | box.yaxis.tick_right()
405 |
406 | # turn on the grid
407 | box.grid(True, axis='y', which='major', alpha=0.5)
408 |
409 | return fig, plt
410 |
411 | def rolling_descriptives(self, window=30):
412 | """Plots rolling first and second moment of volatility estimator
413 |
414 | Parameters
415 | ----------
416 | window : int
417 | Rolling window for which to calculate the estimator
418 | """
419 |
420 | price_data = self._price_data
421 |
422 | estimator = self._get_estimator(
423 | window=window,
424 | price_data=price_data
425 | )
426 | date = estimator.index
427 | mean = estimator.rolling(window=window, center=False).mean()
428 | std = estimator.rolling(window=window, center=False).std()
429 | z_score = (estimator - mean) / std
430 |
431 | realized = estimator
432 | last = estimator[-1]
433 |
434 | if self._estimator is "Skew" or self._estimator is "Kurtosis":
435 | f = lambda x: "%i" % round(x, 0)
436 | else:
437 | f = lambda x: "%i%%" % round(x*100, 0)
438 |
439 | # figure
440 | fig = plt.figure(figsize=(8, 6))
441 | fig.autofmt_xdate()
442 | left, width = 0.07, 0.65
443 | left_h = left+width+0.02
444 |
445 | rect_cones = [left, 0.35, width, 0.55]
446 | rect_box = [left_h, 0.15, 0.17, 0.75]
447 | rect_z = [left, 0.15, width, 0.15]
448 |
449 | cones = plt.axes(rect_cones)
450 | box = plt.axes(rect_box)
451 | z = plt.axes(rect_z)
452 |
453 | if self._estimator is "Skew" or self._estimator is "Kurtosis":
454 | f = lambda x: "%i" % round(x, 0)
455 | else:
456 | f = lambda x: "%i%%" % round(x*100, 0)
457 |
458 | # set the plots
459 | cones.plot(date, mean, label="Mean")
460 | cones.plot(date, std, label="Std. Dev.")
461 | cones.plot(date, realized, 'r-.', label="Realized")
462 |
463 | # set and format the y-axis labels
464 | locs = cones.get_yticks()
465 | cones.set_yticklabels(map(f, locs))
466 |
467 | # turn on the grid
468 | cones.grid(True, axis='y', which='major', alpha=0.5)
469 |
470 | # set the title
471 | cones.set_title(self._estimator + ' (' + self._symbol + ', daily ' + self._start + ' to ' + self._end + ')')
472 |
473 | # shrink the plot up a bit and set the legend
474 | pos = cones.get_position()
475 | cones.set_position([pos.x0, pos.y0 + pos.height * 0.1, pos.width, pos.height * 0.9]) #
476 | cones.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05), ncol=3)
477 |
478 | # box plot
479 | box.boxplot(realized, notch=1, sym='+')
480 | box.plot(1, last, color='r', marker='*', markeredgecolor='k')
481 |
482 | # set and format the y-axis labels
483 | locs = box.get_yticks()
484 | box.set_yticklabels(map(f, locs))
485 |
486 | # move the y-axis ticks on the right side
487 | box.yaxis.tick_right()
488 |
489 | # turn on the grid
490 | box.grid(True, axis='y', which='major', alpha=0.5)
491 |
492 | # z-score set the plots
493 | z.plot(date, z_score, 'm-', label="Z-Score")
494 |
495 | # turn on the grid
496 | z.grid(True, axis='y', which='major', alpha=0.5)
497 |
498 | # create a horizontal line at y=0
499 | z.axhline(0, 0, 1, linestyle='-', linewidth=1.0, color='black')
500 |
501 | # set the legend
502 | z.legend(loc='upper center', bbox_to_anchor=(0.5, -0.2), ncol=3)
503 |
504 | return fig, plt
505 |
506 | def histogram(self, window=90, bins=100, normed=True):
507 | """
508 |
509 | Parameters
510 | ----------
511 | window : int
512 | Rolling window for which to calculate the estimator
513 | bins : int
514 |
515 | """
516 |
517 | price_data = self._price_data
518 |
519 | estimator = self._get_estimator(
520 | window=window,
521 | price_data=price_data
522 | )
523 | mean = estimator.mean()
524 | std = estimator.std()
525 | last = estimator[-1]
526 |
527 | fig = plt.figure(figsize=(8, 6))
528 |
529 | n, bins, patches = plt.hist(estimator, bins, normed=normed, facecolor='blue', alpha=0.25)
530 |
531 | if normed:
532 | y = norm.pdf(bins, mean, std)
533 | plt.plot(bins, y, 'g--', linewidth=1)
534 |
535 | plt.axvline(last, 0, 1, linestyle='-', linewidth=1.5, color='r')
536 |
537 | plt.grid(True, axis='y', which='major', alpha=0.5)
538 | plt.title('Distribution of ' + self._estimator +
539 | ' estimator values (' + self._symbol +
540 | ', daily ' + self._start + ' to ' + self._end + ')')
541 |
542 | return fig, plt
543 |
544 | def benchmark_compare(self, window=90):
545 | """
546 |
547 | Parameters
548 | ----------
549 | window : int
550 | Rolling window for which to calculate the estimator
551 | bins : int
552 |
553 | """
554 |
555 | price_data = self._price_data
556 | bench_data = self._bench_data
557 |
558 | y = self._get_estimator(
559 | window=window,
560 | price_data=price_data
561 | )
562 | x = self._get_estimator(
563 | window=window,
564 | price_data=bench_data
565 | )
566 | date = y.index
567 |
568 | ratio = y / x
569 |
570 | if self._estimator is "Skew" or self._estimator is "Kurtosis":
571 | f = lambda x: "%i" % round(x, 0)
572 | else:
573 | f = lambda x: "%i%%" % round(x*100, 0)
574 |
575 | # figure
576 | fig = plt.figure(figsize=(8, 6))
577 | fig.autofmt_xdate()
578 | left, width = 0.07, .9
579 |
580 | rect_cones = [left, 0.4, width, .5]
581 | rect_box = [left, 0.15, width, 0.15]
582 |
583 | cones = plt.axes(rect_cones)
584 | box = plt.axes(rect_box)
585 |
586 | # set the plots
587 | cones.plot(date, y, label=self._symbol.upper())
588 | cones.plot(date, x, label=self._bench_symbol)
589 |
590 | # set and format the y-axis labels
591 | locs = cones.get_yticks()
592 | cones.set_yticklabels(map(f, locs))
593 |
594 | # turn on the grid
595 | cones.grid(True, axis='y', which='major', alpha=0.5)
596 |
597 | # set the title
598 | cones.set_title(self._estimator + ' (' + self._symbol +
599 | ' v. ' + self._bench_symbol + ', daily ' +
600 | self._start + ' to ' + self._end + ')')
601 |
602 | # shrink the plot up a bit and set the legend
603 | cones.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05), ncol=3)
604 |
605 | # set the plot
606 | box.plot(date, ratio, label=self._symbol.upper() + '/' + self._bench_symbol)
607 |
608 | # set the y-limits
609 | box.set_ylim((ratio.min() - 0.05, ratio.max() + 0.05))
610 |
611 | # fill the area
612 | box.fill_between(date, ratio, 0, color='blue', alpha=0.25)
613 |
614 | # set the legend
615 | box.legend(loc='upper center', bbox_to_anchor=(0.5, -0.2), ncol=3)
616 |
617 | return fig, plt
618 |
619 | def benchmark_correlation(self, window=90):
620 | """
621 |
622 | Parameters
623 | ----------
624 | window : int
625 | Rolling window for which to calculate the estimator
626 | bins : int
627 |
628 | """
629 |
630 | price_data = self._price_data
631 | bench_data = self._bench_data
632 |
633 | y = self._get_estimator(
634 | window=window,
635 | price_data=price_data
636 | )
637 | x = self._get_estimator(
638 | window=window,
639 | price_data=bench_data
640 | )
641 | date = y.index
642 |
643 | corr = x.rolling(window=window).corr(other=y)
644 |
645 | if self._estimator is "Skew" or self._estimator is "Kurtosis":
646 | f = lambda x: "%i" % round(x, 0)
647 | else:
648 | f = lambda x: "%i%%" % round(x*100, 0)
649 |
650 | # figure
651 | fig = plt.figure(figsize=(8, 6))
652 | cones = plt.axes()
653 |
654 | # set the plots
655 | cones.plot(date, corr)
656 |
657 | # set the y-limits
658 | cones.set_ylim((corr.min() - 0.05, corr.max() + 0.05))
659 |
660 | # set and format the y-axis labels
661 | locs = cones.get_yticks()
662 | cones.set_yticklabels(map(f, locs))
663 |
664 | # turn on the grid
665 | cones.grid(True, axis='y', which='major', alpha=0.5)
666 |
667 | # set the title
668 | cones.set_title(self._estimator + ' (Correlation of ' +
669 | self._symbol + ' v. ' + self._bench_symbol +
670 | ', daily ' + self._start + ' to ' + self._end + ')')
671 |
672 | return fig, plt
673 |
674 | def benchmark_regression(self, window=90):
675 | """
676 |
677 | Parameters
678 | ----------
679 | window : int
680 | Rolling window for which to calculate the estimator
681 | bins : int
682 |
683 | """
684 | price_data = self._price_data
685 | bench_data = self._bench_data
686 |
687 | y = self._get_estimator(
688 | window=window,
689 | price_data=price_data
690 | )
691 | X = self._get_estimator(
692 | window=window,
693 | price_data=bench_data
694 | )
695 |
696 | model = sm.OLS(y, X)
697 | results = model.fit()
698 |
699 | return results.summary()
700 |
701 | def term_sheet(
702 | self,
703 | window=30,
704 | windows=[30, 60, 90, 120],
705 | quantiles=[0.25, 0.75],
706 | bins=100,
707 | normed=True,
708 | open=False):
709 |
710 | cones_fig, cones_plt = self.cones(windows=windows, quantiles=quantiles)
711 | rolling_quantiles_fig, rolling_quantiles_plt = self.rolling_quantiles(window=window, quantiles=quantiles)
712 | rolling_extremes_fig, rolling_extremes_plt = self.rolling_extremes(window=window)
713 | rolling_descriptives_fig, rolling_descriptives_plt = self.rolling_descriptives(window=window)
714 | histogram_fig, histogram_plt = self.histogram(window=window, bins=bins, normed=normed)
715 | benchmark_compare_fig, benchmark_compare_plt = self.benchmark_compare(window=window)
716 | benchmark_corr_fig, benchmark_corr_plt = self.benchmark_correlation(window=window)
717 | benchmark_regression = self.benchmark_regression(window=window)
718 |
719 | filename = self._symbol.upper() + '_termsheet_' + datetime.datetime.today().strftime("%Y%m%d") + '.pdf'
720 | fn = os.path.abspath(os.path.join(u'..', u'term-sheets', filename))
721 | pp = PdfPages(fn)
722 |
723 | pp.savefig(cones_fig)
724 | pp.savefig(rolling_quantiles_fig)
725 | pp.savefig(rolling_extremes_fig)
726 | pp.savefig(rolling_descriptives_fig)
727 | pp.savefig(histogram_fig)
728 | pp.savefig(benchmark_compare_fig)
729 | pp.savefig(benchmark_corr_fig)
730 |
731 | fig = plt.figure(figsize=(8, 6))
732 | ax = fig.add_subplot(111)
733 | ax.text(
734 | 0, .2,
735 | benchmark_regression,
736 | family='monospace',
737 | fontsize=9
738 | )
739 |
740 | plt.axis('off')
741 | fig.tight_layout()
742 | pp.savefig(fig)
743 | pp.close()
744 |
745 | print('%s output complete' % filename)
746 |
--------------------------------------------------------------------------------