├── .gitattributes ├── .gitignore ├── README.md ├── chapter2.ipynb ├── chapter3.ipynb ├── chapter4_1_mathModel.ipynb ├── chapter4_2_machineLearningModel.ipynb ├── hanmi.data ├── samsung.data ├── services.py └── stock_common.py /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear in the root of a volume 35 | .DocumentRevisions-V100 36 | .fseventsd 37 | .Spotlight-V100 38 | .TemporaryItems 39 | .Trashes 40 | .VolumeIcon.icns 41 | 42 | # Directories potentially created on remote AFP share 43 | .AppleDB 44 | .AppleDesktop 45 | Network Trash Folder 46 | Temporary Items 47 | .apdisk 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Algorithm-Trading-System-Book-Code 2 | 머신러닝을 이용한 알고리즘 트레이딩 시스템 개발 - 한빛미디어 의 Ch2~Ch4 소스를 Python3, Jupyter Notebook 에서 돌아가도록 정리했습니다. 3 | 4 | http://www.hanbit.co.kr/store/books/look.php?p_code=E2817314825 5 | 6 | only Ch2~Ch4 included. 7 | -------------------------------------------------------------------------------- /chapter2.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 8, 6 | "metadata": { 7 | "collapsed": false, 8 | "scrolled": false 9 | }, 10 | "outputs": [ 11 | { 12 | "name": "stdout", 13 | "output_type": "stream", 14 | "text": [ 15 | "\r", 16 | "[ 0% ]" 17 | ] 18 | }, 19 | { 20 | "data": { 21 | "text/html": [ 22 | "
\n", 23 | "\n", 24 | " \n", 25 | " \n", 26 | " \n", 27 | " \n", 28 | " \n", 29 | " \n", 30 | " \n", 31 | " \n", 32 | " \n", 33 | " \n", 34 | " \n", 35 | " \n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | "
OpenHighLowCloseAdj CloseVolume
Date
2015-01-021340000.01340000.01327000.01330000.01330000.0175499
2015-01-051336000.01336000.01313000.01333000.01333000.0202790
2015-01-061315000.01317000.01288000.01295000.01295000.0304710
2015-01-071294000.01311000.01282000.01307000.01307000.0286455
2015-01-081339000.01339000.01310000.01314000.01314000.0289552
2015-01-091314000.01322000.01314000.01314000.01314000.0186248
2015-01-121313000.01319000.01301000.01316000.01316000.0166508
2015-01-131314000.01340000.01300000.01339000.01339000.0245868
2015-01-141339000.01355000.01335000.01345000.01345000.0286645
2015-01-151345000.01349000.01329000.01334000.01334000.0282078
2015-01-161334000.01334000.01313000.01316000.01316000.0271370
2015-01-191329000.01349000.01320000.01343000.01343000.0133459
2015-01-201350000.01372000.01345000.01372000.01372000.0265561
2015-01-211367000.01395000.01360000.01395000.01395000.0332253
2015-01-221398000.01399000.01378000.01378000.01378000.0359154
2015-01-231400000.01400000.01377000.01386000.01386000.0257175
2015-01-261375000.01395000.01364000.01389000.01389000.0203070
2015-01-271375000.01400000.01374000.01400000.01400000.0199144
2015-01-281386000.01390000.01374000.01378000.01378000.0216630
2015-01-291368000.01395000.01357000.01360000.01360000.0274045
2015-01-301360000.01377000.01360000.01365000.01365000.0322200
2015-02-021365000.01377000.01356000.01368000.01368000.0210420
2015-02-031380000.01380000.01359000.01366000.01366000.0113088
2015-02-041375000.01381000.01359000.01359000.01359000.0186578
2015-02-051359000.01369000.01346000.01358000.01358000.0135408
2015-02-061346000.01374000.01336000.01372000.01372000.0160101
2015-02-091360000.01399000.01357000.01395000.01395000.0173870
2015-02-101400000.01400000.01377000.01378000.01378000.0130387
2015-02-111374000.01374000.01354000.01355000.01355000.0199476
2015-02-121340000.01358000.01331000.01344000.01344000.0214964
.....................
2015-10-201260000.01273000.01256000.01266000.01266000.0150347
2015-10-211265000.01282000.01259000.01270000.01270000.0139567
2015-10-221280000.01295000.01269000.01280000.01280000.0230673
2015-10-231300000.01300000.01278000.01289000.01289000.0263071
2015-10-261298000.01298000.01272000.01292000.01292000.0152165
2015-10-271282000.01299000.01281000.01298000.01298000.0132241
2015-10-281294000.01308000.01291000.01308000.01308000.0271303
2015-10-291330000.01392000.01324000.01325000.01325000.0630471
2015-10-301345000.01390000.01341000.01372000.01372000.0509385
2015-11-021385000.01393000.01374000.01383000.01383000.0386546
2015-11-031381000.01381000.01350000.01352000.01352000.0301840
2015-11-041352000.01361000.01326000.01330000.01330000.0281070
2015-11-051330000.01354000.01330000.01342000.01342000.0173042
2015-11-061343000.01348000.01330000.01338000.01338000.0164322
2015-11-091338000.01344000.01321000.01344000.01344000.0185661
2015-11-101336000.01341000.01314000.01321000.01321000.0197551
2015-11-111321000.01345000.01321000.01333000.01333000.0140449
2015-11-121333000.01334000.01317000.01317000.01317000.0157417
2015-11-131317000.01317000.01300000.01300000.01300000.0177677
2015-11-161291000.01291000.01263000.01263000.01263000.0275705
2015-11-171275000.01290000.01270000.01270000.01270000.0186184
2015-11-181272000.01290000.01272000.01281000.01281000.0167735
2015-11-191290000.01290000.01271000.01289000.01289000.0192850
2015-11-201289000.01296000.01278000.01285000.01285000.0168720
2015-11-231285000.01302000.01281000.01282000.01282000.0198820
2015-11-241282000.01305000.01282000.01299000.01299000.0159560
2015-11-251300000.01310000.01299000.01299000.01299000.0142627
2015-11-261299000.01340000.01299000.01335000.01335000.0185800
2015-11-271345000.01349000.01327000.01327000.01327000.0169854
2015-11-301325000.01325000.01284000.01284000.01284000.0534006
\n", 596 | "

228 rows × 6 columns

\n", 597 | "
" 598 | ], 599 | "text/plain": [ 600 | " Open High Low Close Adj Close Volume\n", 601 | "Date \n", 602 | "2015-01-02 1340000.0 1340000.0 1327000.0 1330000.0 1330000.0 175499\n", 603 | "2015-01-05 1336000.0 1336000.0 1313000.0 1333000.0 1333000.0 202790\n", 604 | "2015-01-06 1315000.0 1317000.0 1288000.0 1295000.0 1295000.0 304710\n", 605 | "2015-01-07 1294000.0 1311000.0 1282000.0 1307000.0 1307000.0 286455\n", 606 | "2015-01-08 1339000.0 1339000.0 1310000.0 1314000.0 1314000.0 289552\n", 607 | "2015-01-09 1314000.0 1322000.0 1314000.0 1314000.0 1314000.0 186248\n", 608 | "2015-01-12 1313000.0 1319000.0 1301000.0 1316000.0 1316000.0 166508\n", 609 | "2015-01-13 1314000.0 1340000.0 1300000.0 1339000.0 1339000.0 245868\n", 610 | "2015-01-14 1339000.0 1355000.0 1335000.0 1345000.0 1345000.0 286645\n", 611 | "2015-01-15 1345000.0 1349000.0 1329000.0 1334000.0 1334000.0 282078\n", 612 | "2015-01-16 1334000.0 1334000.0 1313000.0 1316000.0 1316000.0 271370\n", 613 | "2015-01-19 1329000.0 1349000.0 1320000.0 1343000.0 1343000.0 133459\n", 614 | "2015-01-20 1350000.0 1372000.0 1345000.0 1372000.0 1372000.0 265561\n", 615 | "2015-01-21 1367000.0 1395000.0 1360000.0 1395000.0 1395000.0 332253\n", 616 | "2015-01-22 1398000.0 1399000.0 1378000.0 1378000.0 1378000.0 359154\n", 617 | "2015-01-23 1400000.0 1400000.0 1377000.0 1386000.0 1386000.0 257175\n", 618 | "2015-01-26 1375000.0 1395000.0 1364000.0 1389000.0 1389000.0 203070\n", 619 | "2015-01-27 1375000.0 1400000.0 1374000.0 1400000.0 1400000.0 199144\n", 620 | "2015-01-28 1386000.0 1390000.0 1374000.0 1378000.0 1378000.0 216630\n", 621 | "2015-01-29 1368000.0 1395000.0 1357000.0 1360000.0 1360000.0 274045\n", 622 | "2015-01-30 1360000.0 1377000.0 1360000.0 1365000.0 1365000.0 322200\n", 623 | "2015-02-02 1365000.0 1377000.0 1356000.0 1368000.0 1368000.0 210420\n", 624 | "2015-02-03 1380000.0 1380000.0 1359000.0 1366000.0 1366000.0 113088\n", 625 | "2015-02-04 1375000.0 1381000.0 1359000.0 1359000.0 1359000.0 186578\n", 626 | "2015-02-05 1359000.0 1369000.0 1346000.0 1358000.0 1358000.0 135408\n", 627 | "2015-02-06 1346000.0 1374000.0 1336000.0 1372000.0 1372000.0 160101\n", 628 | "2015-02-09 1360000.0 1399000.0 1357000.0 1395000.0 1395000.0 173870\n", 629 | "2015-02-10 1400000.0 1400000.0 1377000.0 1378000.0 1378000.0 130387\n", 630 | "2015-02-11 1374000.0 1374000.0 1354000.0 1355000.0 1355000.0 199476\n", 631 | "2015-02-12 1340000.0 1358000.0 1331000.0 1344000.0 1344000.0 214964\n", 632 | "... ... ... ... ... ... ...\n", 633 | "2015-10-20 1260000.0 1273000.0 1256000.0 1266000.0 1266000.0 150347\n", 634 | "2015-10-21 1265000.0 1282000.0 1259000.0 1270000.0 1270000.0 139567\n", 635 | "2015-10-22 1280000.0 1295000.0 1269000.0 1280000.0 1280000.0 230673\n", 636 | "2015-10-23 1300000.0 1300000.0 1278000.0 1289000.0 1289000.0 263071\n", 637 | "2015-10-26 1298000.0 1298000.0 1272000.0 1292000.0 1292000.0 152165\n", 638 | "2015-10-27 1282000.0 1299000.0 1281000.0 1298000.0 1298000.0 132241\n", 639 | "2015-10-28 1294000.0 1308000.0 1291000.0 1308000.0 1308000.0 271303\n", 640 | "2015-10-29 1330000.0 1392000.0 1324000.0 1325000.0 1325000.0 630471\n", 641 | "2015-10-30 1345000.0 1390000.0 1341000.0 1372000.0 1372000.0 509385\n", 642 | "2015-11-02 1385000.0 1393000.0 1374000.0 1383000.0 1383000.0 386546\n", 643 | "2015-11-03 1381000.0 1381000.0 1350000.0 1352000.0 1352000.0 301840\n", 644 | "2015-11-04 1352000.0 1361000.0 1326000.0 1330000.0 1330000.0 281070\n", 645 | "2015-11-05 1330000.0 1354000.0 1330000.0 1342000.0 1342000.0 173042\n", 646 | "2015-11-06 1343000.0 1348000.0 1330000.0 1338000.0 1338000.0 164322\n", 647 | "2015-11-09 1338000.0 1344000.0 1321000.0 1344000.0 1344000.0 185661\n", 648 | "2015-11-10 1336000.0 1341000.0 1314000.0 1321000.0 1321000.0 197551\n", 649 | "2015-11-11 1321000.0 1345000.0 1321000.0 1333000.0 1333000.0 140449\n", 650 | "2015-11-12 1333000.0 1334000.0 1317000.0 1317000.0 1317000.0 157417\n", 651 | "2015-11-13 1317000.0 1317000.0 1300000.0 1300000.0 1300000.0 177677\n", 652 | "2015-11-16 1291000.0 1291000.0 1263000.0 1263000.0 1263000.0 275705\n", 653 | "2015-11-17 1275000.0 1290000.0 1270000.0 1270000.0 1270000.0 186184\n", 654 | "2015-11-18 1272000.0 1290000.0 1272000.0 1281000.0 1281000.0 167735\n", 655 | "2015-11-19 1290000.0 1290000.0 1271000.0 1289000.0 1289000.0 192850\n", 656 | "2015-11-20 1289000.0 1296000.0 1278000.0 1285000.0 1285000.0 168720\n", 657 | "2015-11-23 1285000.0 1302000.0 1281000.0 1282000.0 1282000.0 198820\n", 658 | "2015-11-24 1282000.0 1305000.0 1282000.0 1299000.0 1299000.0 159560\n", 659 | "2015-11-25 1300000.0 1310000.0 1299000.0 1299000.0 1299000.0 142627\n", 660 | "2015-11-26 1299000.0 1340000.0 1299000.0 1335000.0 1335000.0 185800\n", 661 | "2015-11-27 1345000.0 1349000.0 1327000.0 1327000.0 1327000.0 169854\n", 662 | "2015-11-30 1325000.0 1325000.0 1284000.0 1284000.0 1284000.0 534006\n", 663 | "\n", 664 | "[228 rows x 6 columns]" 665 | ] 666 | }, 667 | "execution_count": 8, 668 | "metadata": {}, 669 | "output_type": "execute_result" 670 | } 671 | ], 672 | "source": [ 673 | "#-*- coding: utf-8 -*-\n", 674 | "import pandas as pd\n", 675 | "import pandas_datareader.data as web\n", 676 | "import datetime\n", 677 | "import fix_yahoo_finance\n", 678 | "\n", 679 | "def download_stock_data(file_name, company_code, year1, month1, date1, year2, month2, date2):\n", 680 | " start = datetime.datetime(year1, month1, date1)\n", 681 | " end = datetime.datetime(year2, month2, date2)\n", 682 | "# df = web.DataReader('%s.KS' % (company_code), 'yahoo', start, end)\n", 683 | " df = web.get_data_yahoo('%s.KS' % (company_code), start, end)\n", 684 | " \n", 685 | " df.to_pickle(file_name)\n", 686 | " \n", 687 | " return df\n", 688 | "\n", 689 | "download_stock_data('samsung.data', '005930', 2015,1,1,2015,11,30)\n", 690 | "# download_stock_data('temp.data', '005930', 2010, 1, 1, 2015, 12, 1)" 691 | ] 692 | }, 693 | { 694 | "cell_type": "code", 695 | "execution_count": 2, 696 | "metadata": { 697 | "collapsed": true 698 | }, 699 | "outputs": [], 700 | "source": [ 701 | "def load_stock_data(file_name):\n", 702 | " df = pd.read_pickle(file_name)\n", 703 | " return df\n", 704 | "\n", 705 | "df = load_stock_data('samsung.data')" 706 | ] 707 | }, 708 | { 709 | "cell_type": "code", 710 | "execution_count": 3, 711 | "metadata": { 712 | "collapsed": false 713 | }, 714 | "outputs": [ 715 | { 716 | "name": "stdout", 717 | "output_type": "stream", 718 | "text": [ 719 | " Open High Low Close Adj Close \\\n", 720 | "count 2.280000e+02 2.280000e+02 2.280000e+02 2.280000e+02 2.280000e+02 \n", 721 | "mean 1.301276e+06 1.314408e+06 1.287079e+06 1.300320e+06 1.300320e+06 \n", 722 | "std 1.096984e+05 1.094056e+05 1.089214e+05 1.090476e+05 1.090476e+05 \n", 723 | "min 1.068000e+06 1.074000e+06 1.033000e+06 1.067000e+06 1.067000e+06 \n", 724 | "25% 1.244000e+06 1.260000e+06 1.230250e+06 1.251750e+06 1.251750e+06 \n", 725 | "50% 1.314000e+06 1.321000e+06 1.299000e+06 1.308500e+06 1.308500e+06 \n", 726 | "75% 1.375000e+06 1.390000e+06 1.360250e+06 1.372500e+06 1.372500e+06 \n", 727 | "max 1.510000e+06 1.510000e+06 1.486000e+06 1.503000e+06 1.503000e+06 \n", 728 | "\n", 729 | " Volume \n", 730 | "count 228.000000 \n", 731 | "mean 243012.250000 \n", 732 | "std 103797.549086 \n", 733 | "min 0.000000 \n", 734 | "25% 178254.500000 \n", 735 | "50% 212158.000000 \n", 736 | "75% 274693.000000 \n", 737 | "max 799502.000000 \n" 738 | ] 739 | } 740 | ], 741 | "source": [ 742 | "print(df.describe())" 743 | ] 744 | }, 745 | { 746 | "cell_type": "code", 747 | "execution_count": 4, 748 | "metadata": { 749 | "collapsed": false 750 | }, 751 | "outputs": [ 752 | { 753 | "name": "stdout", 754 | "output_type": "stream", 755 | "text": [ 756 | " Open High Low Close Adj Close Volume\n", 757 | "0.25 1244000.0 1260000.0 1230250.0 1251750.0 1251750.0 178254.5\n", 758 | "0.50 1314000.0 1321000.0 1299000.0 1308500.0 1308500.0 212158.0\n", 759 | "0.75 1375000.0 1390000.0 1360250.0 1372500.0 1372500.0 274693.0\n" 760 | ] 761 | } 762 | ], 763 | "source": [ 764 | "print(df.quantile([.25,.5,.75]))" 765 | ] 766 | }, 767 | { 768 | "cell_type": "code", 769 | "execution_count": 5, 770 | "metadata": { 771 | "collapsed": false, 772 | "scrolled": false 773 | }, 774 | "outputs": [ 775 | { 776 | "data": { 777 | "image/png": "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\nZX+f8Fp2+AAAAABJRU5ErkJggg==\n", 778 | "text/plain": [ 779 | "" 780 | ] 781 | }, 782 | "metadata": {}, 783 | "output_type": "display_data" 784 | }, 785 | { 786 | "name": "stdout", 787 | "output_type": "stream", 788 | "text": [ 789 | "Bin : 1068000, Frequency = 11\n", 790 | "Bin : 1112200, Frequency = 28\n", 791 | "Bin : 1156400, Frequency = 7\n", 792 | "Bin : 1200600, Frequency = 12\n", 793 | "Bin : 1244800, Frequency = 35\n", 794 | "Bin : 1289000, Frequency = 35\n", 795 | "Bin : 1333200, Frequency = 46\n", 796 | "Bin : 1377400, Frequency = 20\n", 797 | "Bin : 1421600, Frequency = 21\n", 798 | "Bin : 1465800, Frequency = 13\n" 799 | ] 800 | } 801 | ], 802 | "source": [ 803 | "import matplotlib.pyplot as plt\n", 804 | "\n", 805 | "(n, bins, patched) = plt.hist(df['Open'], edgecolor='black')\n", 806 | "plt.axvline(df['Open'].mean(), color='red')\n", 807 | "plt.show()\n", 808 | "for index in range(len(n)):\n", 809 | " print('Bin : %0.f, Frequency = %0.f' % (bins[index], n[index]))" 810 | ] 811 | }, 812 | { 813 | "cell_type": "code", 814 | "execution_count": 6, 815 | "metadata": { 816 | "collapsed": false 817 | }, 818 | "outputs": [ 819 | { 820 | "data": { 821 | "image/png": "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\n", 822 | "text/plain": [ 823 | "" 824 | ] 825 | }, 826 | "metadata": {}, 827 | "output_type": "display_data" 828 | } 829 | ], 830 | "source": [ 831 | "from pandas.tools.plotting import scatter_matrix\n", 832 | "df = load_stock_data('samsung.data')\n", 833 | "scatter_matrix(df[['Open', 'High', 'Low', 'Close']], alpha=0.2, figsize=(6,6), diagonal='kde')\n", 834 | "plt.show()" 835 | ] 836 | }, 837 | { 838 | "cell_type": "code", 839 | "execution_count": 7, 840 | "metadata": { 841 | "collapsed": false 842 | }, 843 | "outputs": [ 844 | { 845 | "data": { 846 | "image/png": "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\n", 847 | "text/plain": [ 848 | "" 849 | ] 850 | }, 851 | "metadata": {}, 852 | "output_type": "display_data" 853 | } 854 | ], 855 | "source": [ 856 | "df = load_stock_data('samsung.data')\n", 857 | "df[['Open', 'High', 'Low', 'Close', 'Adj Close']].plot(kind='box')\n", 858 | "plt.show()" 859 | ] 860 | } 861 | ], 862 | "metadata": { 863 | "kernelspec": { 864 | "display_name": "Python 3", 865 | "language": "python", 866 | "name": "python3" 867 | }, 868 | "language_info": { 869 | "codemirror_mode": { 870 | "name": "ipython", 871 | "version": 3 872 | }, 873 | "file_extension": ".py", 874 | "mimetype": "text/x-python", 875 | "name": "python", 876 | "nbconvert_exporter": "python", 877 | "pygments_lexer": "ipython3", 878 | "version": "3.5.2" 879 | } 880 | }, 881 | "nbformat": 4, 882 | "nbformat_minor": 2 883 | } 884 | -------------------------------------------------------------------------------- /chapter3.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 2, 6 | "metadata": { 7 | "collapsed": false 8 | }, 9 | "outputs": [ 10 | { 11 | "name": "stdout", 12 | "output_type": "stream", 13 | "text": [ 14 | "[ 0% ]-6751259329.63\n" 15 | ] 16 | } 17 | ], 18 | "source": [ 19 | "#-*- coding: utf-8 -*-\n", 20 | "import pandas as pd\n", 21 | "import pandas_datareader.data as web\n", 22 | "import datetime\n", 23 | "import fix_yahoo_finance\n", 24 | "\n", 25 | "def download_stock_data(file_name, company_code, year1, month1, date1, year2, month2, date2):\n", 26 | " start = datetime.datetime(year1, month1, date1)\n", 27 | " end = datetime.datetime(year2, month2, date2)\n", 28 | "# df = web.DataReader('%s.KS' % (company_code), 'yahoo', start, end)\n", 29 | " df = web.get_data_yahoo('%s.KS' % (company_code), start, end)\n", 30 | " \n", 31 | " df.to_pickle(file_name)\n", 32 | " \n", 33 | " return df\n", 34 | "\n", 35 | "def load_stock_data(file_name):\n", 36 | " df = pd.read_pickle(file_name)\n", 37 | " return df\n", 38 | "\n", 39 | "download_stock_data('hanmi.data', '128940', 2015,1,1,2015,11,30)\n", 40 | "\n", 41 | "df_samsung = load_stock_data('samsung.data')\n", 42 | "df_hanmi = load_stock_data('hanmi.data')\n", 43 | "print(df_samsung['Close'].cov(df_hanmi['Close']))" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": 3, 49 | "metadata": { 50 | "collapsed": false 51 | }, 52 | "outputs": [ 53 | { 54 | "name": "stdout", 55 | "output_type": "stream", 56 | "text": [ 57 | "-0.36348397826\n" 58 | ] 59 | } 60 | ], 61 | "source": [ 62 | "print(df_samsung['Close'].corr(df_hanmi['Close']))" 63 | ] 64 | }, 65 | { 66 | "cell_type": "code", 67 | "execution_count": 5, 68 | "metadata": { 69 | "collapsed": false 70 | }, 71 | "outputs": [ 72 | { 73 | "data": { 74 | "image/png": "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\nCnn9vkNKigAAAABJRU5ErkJggg==\n", 75 | "text/plain": [ 76 | "" 77 | ] 78 | }, 79 | "metadata": {}, 80 | "output_type": "display_data" 81 | } 82 | ], 83 | "source": [ 84 | "import matplotlib.pyplot as plt\n", 85 | "from pandas.tools.plotting import scatter_matrix, autocorrelation_plot\n", 86 | "\n", 87 | "fig, axs = plt.subplots(2, 1)\n", 88 | "df_samsung['Close'].plot(ax=axs[0])\n", 89 | "autocorrelation_plot(df_samsung['Close'], ax=axs[1])\n", 90 | "plt.show()" 91 | ] 92 | }, 93 | { 94 | "cell_type": "code", 95 | "execution_count": 9, 96 | "metadata": { 97 | "collapsed": false 98 | }, 99 | "outputs": [ 100 | { 101 | "data": { 102 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAADZCAYAAAAHdMamAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4VFX6wPHvSe+9khCSUJLQm4ANUBRB3WXtqGtfWdva\n66rr9tXVVdafbd0VFRv2hiiKNJEaegIEQkgghfTeMzm/P+5NSCWFSTJJ3s/z5MnMbefcKfedU+45\nSmuNEEIIcars+joDQgghBgYJKEIIIaxCAooQQgirkIAihBDCKiSgCCGEsAoJKEIIIaxCAooQQgir\nkIAihBDCKiSgCCGEsAqHvs5AbwoICNCRkZF9nQ0hhOhXtm/fnqe1Duxou0EVUCIjI4mPj+/rbAgh\nRL+ilErrzHZS5SWEEMIqJKCIVrTWpOSW9XU2hBD9jAQU0coDH+3m3H+tIzGzuK+zIoToRySgiGY2\nJufx2c4MABIyJKAIITpPAopoZmtqQePj5BzrV3vllVVzw5KtvLMplfp6mYtHiIFEAopoJiGjmBFB\nHsSFenGojYByKLuUX/zfBo4VVHT52BU1dfzu/Z2sO5jLk18mct2SLaQXdv04QgjbJAFFNLMnvZjx\nYd6MDPLgUHbzgKK15vEvEtibUdzl6rDKGguXvLyRzUfy+dcVE/j7JePYdbSIeYt/YmXicQB+Ts6j\npKrWaucihOhdElAGqUPZpfz6f1sobXIBzy6pIqe0mrFh3owK9iCjqJLy6rrG9V/symDrEaNKLK+8\nptNpVddZWJuUQ1J2KS8unMRlU8K5ZnoE3907kxFBHtz+7na+2p3Jr9/YwpsbUq12jkKI3iUBZZDa\neDifDcl5xKcVAlBTV88LPxwEYMJQH0YFewLw2Y50dh8r4oOtR/nbNwcYH+4NQH5ZdafSOZxbxtS/\nrOJPX+/D392JC8eFNq4b6ufG+7dOx8XRnv/78RBaw+70ImuephCiFw2qO+XFCdklVQAkpBczZogX\nd7y7g/i0QhbNjGZyhA+1Fs0Zw/158svExn383Z34x6XjuOa/WyjoZAnlfz+lUFpdR2l1HVdNHYq9\nnWq23s3JgbhQL7abgW1vRjFaa5Q6sd2aAzmMCfMiyNPlVE9bCNGDJKAMUtklRglj+Z4s3t2SRnFl\nLS9ePYlfThgCgJOD4vXrp/L5zgwCPZyIC/ViqK8bdnYKfw8n8ss6Dii5pdV8uiODeWNCKCiv4Zrp\nEW1uN3bIiYCSW1pNdkk1Id5G8DheXMVNb21jdkwgb900zRqnLoToIRJQBqmcUqOEkpRdiqezA5/d\nfiajh3g128bD2YHrZgxrtW+AuzN5najyemdTKrWWeh6aF8PwQI92txszxKhG83Z1pLiylr0ZxY0B\n5ft9RoP92qRcNh7O44zhAZ06PyFE75M2lEGqocoL4LrTh7UKJifj7+HUYZVXZY2FpZvTOC8u+KTB\nBGBMmJH2ReND8XB24OU1yVTVWgD4du9xogLccXW054d92Z3OoxCi90lAGQQ2p+Rz4b9/IqOosnHZ\n8eIq5o8N4bezovnduSO7dDw/dyfyWwSUkqpaHvhoN5lmGp9sP0ZRRS2LZkZ3eLxRwZ7MGxPCZZPD\nePby8ew6VsTjnyeQU1LFliP5XDQulGH+bhwrqOzwWEKIviNVXgPYmgM5/PHrROJCvNiXVcLdH+xk\n2aIZ1Fk0JVV1jA3z5s5zRnT5uP4ezhRW1FBnqcfB3vhNsmzrUT7dkU6YrytDfV15/acUJg71Yeow\n3w6P52hvx2vXTWl8fveckbz44yEOZpdSr+HSyWEkZZdyNF9ughTClklAGcA+3ZFOWn4FafkVhHq7\nsD2tkOd/OMjC04YCEOzVvV5TAR5OaA2FFbUEejpTXWfh3c1HAXh9/WGqausB+MPFY5r11uqse+eM\nJOl4CSsTs5kW5Ud0oAcRfm5sOJTXqgeYEMJ2SEAZgKpqLWxLLWD9wdzGZXeeM4LEzGJeXXsYe/OC\nHOzl3K3j+7k7AZCYWcyOtELe33qUvLIapg7zJT6tkFHBHnx+x5m4O3fv42Vnp3j+yok8/vlerplu\ndAqI8HOjstZCXlkNgZ7dy7cQomdJQBmAXlt3mMWrDgEwOcKHXceKmDUqkMsmh7M9rZCX1iQDENLN\nEkqgh3FBv/HNbSgFc2KDuPGMKMJ8Xblg8XruPz+m28GkgbuzA4sXTmp8HuHnBsDRggoJKELYqA6/\n9UqpJcDFQI7WemyLdQ8AzwGBWus8c9ljwC2ABbhba73SXD4FeAtwBVYA92ittVLKGVgKTAHygau0\n1qnmPjcAT5jJ/VVr/ba5PApYBvgD24HrtNadHwtkgNuSYgyPEuHnxhs3nEZOaTVDzQvya7+ewmvr\nDjM61IsRQSfvfdWeKcN8+eMvRlNjqeeCMSEM83dvXLfnqbm4ONqf+km00JD/YwUVTOlEu4wQovd1\nppfXW8C8lguVUkOBucDRJstGAwuBMeY+ryilGq4urwK3AiPNv4Zj3gIUaq1HAC8Az5jH8gOeAqYD\n04CnlFINV5JngBfMfQrNYwiMIVR2HivkxjMiWffQbHzdnYgJ8WxcHx3owT8vn8CNZ0Z1uy3Cwd6O\nG8+MYtHM4c2CCdAjwQQg3NcVpWDV/uxWw94vfH0TV7++mTVJOWgtQ+IL0Vc6DCha6/VAQRurXgAe\nBpp+gxcAy7TW1VrrI0AyME0pFQp4aa03a+MbvxT4VZN93jYffwLMUcaV7gLgB611gda6EPgBmGeu\nO9fcFnPfhmP1qZq6emrq6vs0D3vSi6iqrWdGtN+Aarx2cbTnztkjWL4ni3s+3NX4OmcVV7I5pYDt\naYXc9OY25i3+iU+3p1Nr6dv3QYjBqFv3oSilFgAZWuvdLVaFAceaPE83l4WZj1sub7aP1roOKMao\nymrvWP5Akblty2P1irLqumaj8Da4dWk8N7+1rUvHqqq1dHpcrM7YYo4GPC3K32rHtBUPXhDDo/Nj\n+Xp3Jr9ZGk9FTR07jxqDSb5363Sev3ICAA98vJt/fnegL7MqxKDU5ZZTpZQb8HuM6i6bp5RaBCwC\niIhoeyyprlq0NB57O8U7t0xvXLYttYB1B3Oxt1OUV9d1qlG6vl5z69J4DueU8dMj57YaOLE7Nqfk\nExPs2dgTa6C5bdZw/NycePSzPby8Jplai8bJwY4J4T6cFunHJZPC+M3b8XyzJ4vfXxg3oEppQti6\n7pRQhgNRwG6lVCoQDuxQSoUAGcDQJtuGm8syzMctl9N0H6WUA+CN0Tjf3rHyAR9z25bHakVr/brW\neqrWempgYGCXT7alyhqjS+6G5Dy+2p3JfR/uYt7i9Vz9+mbsFFjqdeNAhx15Y8MRfjqUR2ZxFTuO\ndm6fk6m11LM9rZDp0X6nfCxbduVpQxkX5s2uY0XsOlrE2CFeODkYH2WlFOeNDiazuKrNGSeFED2n\nywFFa71Xax2ktY7UWkdiVDlN1lofB74CFiqlnM2eWCOBrVrrLKBEKTXDbAO5HvjSPORXwA3m48uB\n1WY7y0pgrlLK12yMnwusNNetMbfF3LfhWD1u17Eiai0areHuD3ay/mAuod4uLJoZzce3nYG9nWLL\nkfwOj5OYWcyzK5OYHROIk70d3yUc71Z+LPW6cbiTvRnFVNRYmD4Aq7taigv1Ym96MbvTi5gU0bzX\n1+wY44fDmgM5fZE1IXpEdZ2Fp789wNwX1lFcYZszm3am2/AHwGwgQCmVDjyltX6jrW211olKqY+A\nfUAdcKfW2mKuvoMT3Ya/Nf8A3gDeUUolYzT+LzSPVaCU+gvQ0CjxZ611Q+eAR4BlSqm/AjvNY/SK\n+FQjC8FezlTWWPjm7rMbR8YFGBfmzabDJw8oVbUW7lm2Cx83R56/ciIPfryb7/cd58mLRzfbrqii\nhsWrDrE3o5izRgRw/uhgxgzxalaN8/wPSbyy9jD3zhnV+Ct9WtTALqEAjB7ixbJtRhPbzFHNS56h\n3q7EhniyNimX384a3hfZE8Kq9qYX88DHuzhoTsu9K924t8zWdBhQtNZXd7A+ssXzvwF/a2O7eGBs\nG8urgCvaOfYSYEkby1MwuhL3um1phcQEe/LcFRPQ6GbBBIyL20urD1FQXoOfuxNaa3JLq7G3U/ib\nNwT++8dDJOeU8c4t0/Bzd+KsEQGsPpBDZlElQ3xcAUjIKOa372zneEkVsSGevLj6EP/+8RBDvF04\nb3Qw58UFMy7Mm6Wb0nBztOeFVQcZHujOiCCPQXHj3+hQY4RiF0c7prcRQGfFBLJkwxGWbT3KmCHe\njDNnmhSiv9meVsCV/9lMgIcTi6+ayL0f7iLpeEn/DCjiBK01CRnFnB8X3O4F6vy4YF788RD3f7QL\nS71mf1YJeWU12Cm4fEo4f14wlg+2HuXCcSGcPdL4QDSUKLalFrBgYhhf7MzgkU/34OfuxGe3n8GE\noT7klVWz+kAOq/Zl81H8MZZuSmtM8+VrJnPn+zs4nFvOte1MYjXQxJoB5fRo/zbvfZk9Koj/rEvh\n0c/2MszfjXUPndPpY7++/jAAi2ZK6Ub0vc0pBVjqNd/cfTYBHs78fcV+Dhwv7etstUkCShfklFZT\nUF5DXKhnu9uMNef2WJuUS3SAO7Njghgd6kVqfjlLN6WRmldBUUUtC087ceGPDfHE3cme+NRCyqrr\nePzzBKZH+fHytZMJMEs1AR7OXDl1KFdOHUpVrYWfk/PYm1HMEB9XLhofyos/epKUXcr06IHffgLG\n5F+PzItlWlTbd81PjfTF09mB0uo6KmosbW7Tnjd/TqWooparp0Xg6eKI1ppv9mbx7Mokxgzx4pVr\np3R8ECGsJLOoEh83x8ZrQUyIJ0kSUPq/fZklAIwe0n71iVKKpy8dx6GcMh6ZF9vYrqG1ptZSzwdb\njxHp78aZI07MPOhgb8fkYb5sOZLPttQCJoR78+5vpuNo33afCRdHe+bEBTMnLrhx2dwxwRzKKWXG\nIGg/aXD77PZLEI72drx182m8v+UYn+1Mp7LGgqtTx3fx55dVk1VsTD725a5MYkM8+duK/ew8WoSd\nos9vXBWDT2ZRJUO8XRufx4Z48vamtGbTR9gKCShdsC/LCCixJymhACyc1rraSSnFPy4dz8MXxGJv\nr1rdczJ3TAhPfpEAwBMXxbUbTNpzx+wRzIkLJqibAz4ORFOG+ZFTUs2nO9JJzinrVDtKovmjwd3J\nnj98mUC9Njpg/POy8aTml/PausM2+UUWA1dWcRXhvk0Dihc1dfWk5JUzKvjk16LeJt+KNlTVWrj9\n3e382xyxt8G+zBIi/NzwcnHs9rF93Z3a3P+KKeGNw8lfMCaky8d1dbJn4lCfbudroBpljmOWlN25\nKoKEzGIAPr/zTO46dySPzY9lzYOzufK0oYT7ulGvjarPk6mpq6e0yja7dYr+J6NJZx2gcXDUTYfz\n2Xg4D0u9Jq+smjc2HOG+D3f16WdPSihtePzzBL5NOM6q/dlcPjWcMB9XjhVUsGp/Nr+cMKRH0nRx\ntOdPvxzL9rSCxpF1xakb5ueGk70dH207RmlVLWE+rkyP8sfFyY7fvrOdmGBPHrswrnH7xAzjR8Oo\nYE/uP7/5r79QH6P0l1Xc/AveVHJOKbcu3U5VrYXv75uJ5yn8+BCitKqW0qq6Zp+3Yf5uBHs5849v\n91NVW09UgDtHCyqwmIOmnhcXzEXjQ7udZn29xq6bo3YMqhJKWVUdr607zAMf7ebn5Lw2t6mus7B8\nTybnjzbaJ/67PgWAP329D3s7xf1zR/VY/uaNDeHxi0Z3vKHoNAd7O345cQh7Mor409f7WPTOdi58\n8SfufG8Ha5NyeWtjauNNYvX1mi1H8tst6TXUY2cWVbWb3kurk8kuqeJ4SRUv/HCo3e2E6IyG9rzQ\nJrcnKKWYHuVPVW09kf5ueLk68puzo/jm7rNwdbRnRUIWT3yxt1sllZySKkY98S3vbUnreOM2DKoS\nypH8cp7+9gBKQUVNXbOG8QYJGSVU19Vz2eQwnOzt+GZvFmeNCGDV/mwemx9LqHfbv0yF7Xruigk8\ne/l48strSMws4f4Pd/HToTwunxLOJ9vTeXdLGnfMHs6u9CLyymqYExfU5nGallDak11SzehQL0aF\nePL2plSumBpOnNnFWYiuahgFI6xFifiM4f58tTuTP/5yDLNjTnxeJ0X48M2eLABGh3pzTRdvI0jI\nLKauXvP45wnMiQ1udZ9dRwZVCSUqwJ2dT57POTFBpOZXtLlNw53wUyP9OG90ELml1dz/0S5GBnlw\n81lRvZldYUVKKQI8nJk1KpDVD8wm/onzeO6KCZwW6cuzK5OY+ewa/rrcKIXOHtV2QPF0dsDdyf6k\nJZSC8hr8PZx4+IIYvFwc+MOXCd2eoyW/rJrVB7K7ta8YGA7nlgMQ5ts8oFw2JZwPbp3RLJiAcd1q\n8G1CVpfTSzHTA3h7U2qX9x9UAcXD2QFfdyeG+buRll+O1pqy6joOZpey6XA+n2xP5+s9mUQHuBPg\n4czsUUHYKSipquPPC8Z2ueeVsE3ebo6NbRtv3zyNF66aQKS/OzuPFXHGcH+83dpu91BKEerjetIS\nSn55Nf4ezvi4OfHo/Fi2pRby6Y52xy49qbc3pXHzW/FkFLWfnhjYVu3LZkSQR6uaEUd7O04f3vqe\ns/PigvB2deS8uGA2Hs7v8tQYKXnl+Lg5cm5sEJ/tSG9sl+msQVXl1SAqwJ2KGgt7M4r5zdvxrXrt\n3H3uCMDokbVgYhgezg5tvnmi/3NzcuCSSeFcMimcnNKqDmecHObnxrbUQvZlljB6SPOqLEu9Nkoo\n5tQBV0wZygdbj7F41UEunxLe1uFO6kie8WtxbVIO104f1uX9Rf9WUF7DliP53DF7RKf3GR/uw+6n\n5pKQUcyq/dn8sO84V53W+WqvlNwyogPcuWJKOKsP5LD+UC7nxLRdYm/LoPzJHWlOW3vJKxspq67j\n2cvH8+4t01nz4GwO/GUe98+Nadz2hasm8pdftRqCTAxAQZ4uHXYJf2R+LA52qrFhv6rWuAu/zlJP\nXlk19ZrGgGJnp5g3NoT0wspujQ57tMColl2blNvlfTujus7Csq1Hqa7r2kgCond8vTuTet292wjG\nDPEiws+NFXu7Nor5kbxyogM9mBMXjK+bI5/Ep3e8UxODOqBY6jUPXRDDFVOHctbIAKIC3HtsTnQx\nMIwK9mT53Wdx1zkjWJGQxa1L46mssXDNf7cw/e8/AjQOAgoQY954djCn60NlHM03Sigbk/Ooa2dK\n4+LK2k7Pv9PSdwnHefSzvSzZkNqt/UXPqaip46U1yUwd5ts4nFNXKKWYPy6En5PzKKrouNpLa803\ne7LILqkmKsAdJwc7FkwM44d92Z3av8GgDChDfE70XFjYheKgEGCUZB68IIZnL5/AhuQ8rvnfZram\nFjSu928yW+bIYA8ADnbyxsoGJVW1FFbUEhPsSXmNpc1OJEfzK5jwp++57NWNHCtou5PJyWw1p4t+\nZW0yhVachlqcmvp6zZNfJJJbWs1jF8Z2e9bRX4wfQl295pPtHZcyNqXkc+f7OwCYEG50m79iajg1\nlnq+3JXZ6TQHZRuKg70dV0+LYHy4d6fGdxKiLZdPCcfBTnH/R7uaLW9aQgnzccXdyZ6DXRzM76gZ\nQObEBZGUXUpyTikjgjyabfPpjhMXiv1ZJV2+ITY+tZDoQHdS88p5eU0yT1ws90D1leySKl5de5jE\nzGIOZJVSWl3HveeNZMqw7o/NNzbMm9MifXlrYyo3nRnVONxTVa2FD7cd48JxoY1TXXyXcBwXRztW\nPzC78SbKMUO8GTPEi4+3H+t0moOyhALwj0vHcXUbY24J0RW/mhTGmzdN4/7zT9zw6u9xooSilGJk\nsGfjxEidlWYGlHNijQbRQy32r6/X7M0obhzjqaujzxZV1JCUXcolE8O4bHI4SzeldauUI06d1poH\nP97N+1uOUq+Nz9SLV0/injkjT/nYt5wVRXphJd8nnmhLeea7Azz1VSLzFq/nwY9388aGI3yXcJxZ\nowJbjQBxxZRwEjJKOp3eoCyhCGFNs0YFctaIAJ7/4SAAvm5OzdbHhnjybcJx6us15TV1ZBRVEhPs\n2W5VhqVes8K8hyA2xJNwX1c2peRTUWshMbOE/Vkl1FnqqdfGMBt2qoADXaxS251ujFk2JdKXy6eG\n89XuTJ7/4SAvXDWxq6cvTtGapBx+OpTHkxeP5hYr3+t2/ugQwn1dWfLzEeaPC2X3sSLe/DmVi8aH\nUlljYW1SbmOV2IXjWg/XsmBiGC+s6vyIDxJQhLCCpqNHtxxJenq0H8u2HSMxs4Rl247y3pajjAvz\n5oYzIrl4fGizjiBVtRbuXbaL7xKPc+95I/F0cWREkAdrk3LZcqSAmGBPTo827pIGGBfmRXFlbZdL\nKOmFRmkk0t+dUG9Xbjoziv+sP8xvZ0UTGyJ39veWWks9f12+n+gAd66bYf2u4fZ2ihvPiOSv3+xn\nT3oRi1cdxMfNkWcuG4+Hs3H5zy2tJr2worHtpClfdye2PX4ezn/sXHqDtspLCGu7Y/ZwzmsyR02D\nhiF+1h/KZW1SLjHBnlTWWnjw49388qUNjT24juZXcPNb2/gu8Th/uHg0955nVKM1fPF/f2EcK+45\nmxevnsTp5kRq48K9iQ3x5EheeWMX5qaa9g6rqavncK5RdZZVVIW9nSLIrEO/fdZwXB3ted0cu050\n3f9+SuHMp1fzytpkiiubdxNffzCXO97b3qxasarWwqOf7iUlr5wnLo5rnDvJ2q46bSgezg489tle\n1iTlcuvZ0Y2fKYBAT2cmRfi2OyBkV/IlJRQhrOThebFtLg/ydCE2xJM3f04lr6yav10ylmumRfDu\n5jSe/DKRjYfzScws4ZnvDmBvp3jhqglcMunEjZB3nTuCIT6u3HD6iV+w95w3EvWj0XBaWlWHZY3m\nx/05zUaZ/Tk5j+uXbOWfl40no6iSdzenkVNazQ/3zSSzqJIQL5fGeV283Ry56rShvLMpjQfnxrQ5\nmnJVrYV/rNjPXeeObGzMFSd8sj2dwooa/vldEq+sOcw10yO4+cwoQrxdeO77JPakF7MuKZfbZg3n\nN2dH8/S3+/l0Rzq/O3dEl24e7CpPF0eunDqUJT8fYXigOzeeEdljaUkJRYhecPH4UPLKjBEZzh4R\niFKKK08bipeLA29vTOXlNcmcPTKAlffObBZMwJhQ6fcXxjWb1GtGtD/v3zoDF0d7Zo4MZJi/G29t\nPNJsv7VJOVjqNQ98vJvnfzhIqBkkDmaXkVlc2WwEWzAacO2UajUPUIMdaYW8vSmNNQdyTvn1GGiy\niis5cLyUu+eMZPnvzuLc2CDe2HCECxavZ0tKPnvSi7lmegRnjwzkXz8cZPZza3hvy1F+PSOCB+bG\ndLtrcGctmhnNReNC+c91U3F37rlyhAQUIXrBHbNHcPvs4Vw0LpQIf6N7r7ODPb+aFMaPB3Ioq67j\n8YviWnUN7gw7O8X1p0eyLbWQhIzixuWJmSUM8Xbh4Xkx/PjALN77zXTAuAM/s6iqVSkk3NeNX88Y\nxsfbj5GS27pX2qEcY1nmScYyG6zWmaMZnBMTxNgwb168ehLf3nM2NXX1XL9kK0rBXeeM4LXrpvDx\nbacT6u2Kh4sDd1uhJ1dnhHi78PK1k7v1+eoKqfISohfY2SkeaaNK7PGL4pgyzBdnB7tTagy/Ymo4\n//o+ibc2pvLcFROMbsXpxSyYNKTZWFD+7k6k5ZdzvLiK0HGthyZfNDOaJT8f4bvE463GkDpk3u2f\ndZLRlgervRnF+Lg5Mir4xAV7VLAnf790LMu2HuPaGcMaA/hpkX58fscZ1FjqcXYYWPfBSUARog85\nO9izYGLYKR/Hy8WRyyaH8+G2Y9wzZyTvbkmjtLqO8S167gz1c2Pn0SJqLPWt5tgA45fs6FAv1ibl\ntg4o2VJCaU9pVR2+bk6tqq4aBh5tSSk14IIJSJWXEAPGDWcMo8ZSz2WvbuQ/64zeWg3zjzeI8HMj\nybxnZUg7k8XNjglke1ohJS1m/EtuqPKS4fRbKauua9ZzarCSV0CIAWJEkCdnjwzgp0N5XDIpjNtm\nDWd4YPM684gmw7OMDG67Pv380cG8svYw93+4izOGB1BRU0dpVR355TU4OdiRVVyF1rrHG5L7k7Kq\nOtydB16Jo6skoAgxgNx1zghyS6t5dH4swV6t20gahoWZFunHMHPU7ZYmRfjy1C9G85fl+1i13+jR\n5WBnzHh59sgAPt+ZQUllXbsTkQ1GpdV1bVYhDjYSUIQYQKZH+/PdvTPbXT8nNpiVicf515UnH2Ll\npjOjuHRyOGhwdbJvvLlt+Z5MPt+ZQWZxpQSUJsqqa/F08ezrbPS5DttQlFJLlFI5SqmEJsueVUod\nUErtUUp9rpTyabLuMaVUslIqSSl1QZPlU5RSe811LyqzvKyUclZKfWgu36KUimyyzw1KqUPm3w1N\nlkeZ2yab+zYfPEkI0aYIfzeWLTq9U7+mvV0d8XZzbHandMNUtCebBnkwKquSNhToXKP8W8C8Fst+\nAMZqrccDB4HHAJRSo4GFwBhzn1eUUg0Vi68CtwIjzb+GY94CFGqtRwAvAM+Yx/IDngKmA9OAp5RS\nDS2MzwAvmPsUmscQQvSwSPMemsM55X2cE9uhtTYa5V0koHQYULTW64GCFsu+11rXmU83Aw394hYA\ny7TW1VrrI0AyME0pFQp4aa03a601sBT4VZN93jYffwLMMUsvFwA/aK0LtNaFGEFsnrnuXHNbzH0b\njiWE6EH+Hs4EeTqz/3jnhzQf6Krr6qm1aCmhYJ1uwzcD35qPw4Cms7Gkm8vCzMctlzfbxwxSxYD/\nSY7lDxQ1CWhNjyWE6GGxoV4cyOr6lMYDVVm1cSnylBLKqQUUpdTjQB3wnnWyY31KqUVKqXilVHxu\nbm5fZ0eIfi8u1JPknDJq25nnvr+orrO0OUJzV5WbAUVKKKcQUJRSNwIXA9ea1VgAGcDQJpuFm8sy\nOFEt1nR5s32UUg6AN5B/kmPlAz7mti2P1YrW+nWt9VSt9dTAwMAunqUQoqW4EC9qLPUcyevf7Sj3\nfLCLm97gauymAAAW2UlEQVTcdsrHKa2SgNKgWwFFKTUPeBj4pda66byhXwELzZ5bURiN71u11llA\niVJqhtkGcj3wZZN9GnpwXQ6sNgPUSmCuUsrXbIyfC6w0160xt8Xct+FYQogeNj7cG4AHP97N3vRi\nKmrq+Ovyff1uCuEdRwvZlJLPvsxTaw9qqPKSRvnOdRv+ANgExCil0pVStwAvAZ7AD0qpXUqp1wC0\n1onAR8A+4DvgTq11Q5nyDuB/GA31hznR7vIG4K+USgbuBx41j1UA/AXYZv792VwG8Ahwv7mPv3kM\nIUQviA704P+unkRmURULXt7AxS9u4H8bjvDulrS+zlqnFVfUklNqTCfw3inmu8wsoXg6y305HYZU\nrfXVbSxu9wKutf4b8Lc2lscDY9tYXgVc0c6xlgBL2liegtGVWAjRB34xYQgzRwXy/PdJvLPZuCA3\nHTrf1jWMnBzm48oXOzN47MK4bldZNZRQZOgVGRxSCNFN3q6O/GnBWHY/NZcbTh/GzqNF/aahvmFu\nl0fnx1JeY+HLXe02w3aoVKq8GklAEUKcEk8XR6ZG+lFRY2F/Vv+4P+VQdhmujvZcNC6U0aFevLv5\nKCf6FnWNVHmdIAFFCHHKJpvD5O9Ob17tVVJVy1nPrGbR0vjGKZBbWn0gm5yS3pu0q6C8hrUHcxgR\n5IGdneLaGRHszyph57Gibh2vrLoWezuFi6NcTuUVEEKcslAvF5zs7UgvbN7T64fEbNILK/l+XzaL\nVx1stV9heQ23vB3P098esGp+yqvr2r3H5OFPdpNRWMkDc0cBsGBiGB7ODvxn3WHq67teSimtqsPd\nyV6G80cCihDCCuzsFEN8XMgobD5o5PI9mYT5uPKriUP4cldmq4t8fFohWsN3icepqKnDGrTWXPX6\nJn73wc421209UsClk8OZHRMEGPeP3DYrmpWJ2fx5+b4up5dRWNk4ve9gJwFFCGEV4b5upBdWklVc\nydsbU7nujS2sPZjLxeNDueq0CEqr6jj3ubX8uD+7cZ/4VONOgIoaC98nZrd36C5Jyi4lIaOEVfuz\nSctvfvNlRlElJVV1jB7i1Wz5neeMYOFpQ3lvSxr57VTNtSclr5zowLbnlhlsJKAIIawizMeV5Jwy\n5j6/nqe+SiSjqJJFM6P53ZyRzIj2485zhqOBZ1cmNTaAb00tYHKED14uDmxPK7RKPpbvzsJOgb1S\nvLflaLN1DTcxjg5tHlCUUtx8VhS1Fs3nO1v3+NJa89/1KVz5n008u/JE9VytpZ6jBRVEB7Q9++Vg\nI/3chBBWEe7r2nhPxts3T2PWqOZDHT10QSzD/N15+JM9bEjO47RIPxIyirn5rCgs9ZrU/K4P5WKp\n1zzxRQIRfm7cPns4ACsSspgR7Y+roz3fJmTx2PzYxvaNfVklKAWxIa0nwxoV7MnkCB9eWXuYGdH+\njA0zRgQor67joU92s2LvcYK9nNmWWsCvZwwj1NuVowUVWOo1UQFSQgEpoQghrCTM12hH8HJx4KwR\nAW1us2DiEAI9nXl9fQoHjpdSa9FMGurDMH/3bo0N9uKPh/hg61Ge+e4AL60+xNH8ClJyyzkvLpjZ\nsUEcK6gkJa+cvenF3LBkK4tXHWKYnxvu7dzE+NwVE3BxsOPO93dQX685VlDBZa9u5LuE4/z+wlg+\nXHQ6WsOXuzIBOJJr5FmqvAxSQhFCWEW4rzH51oxof+zt2u7x5Oxgz41nRPLsyiQi/Iztx4Z5sy+r\nlOV7Mqmus+Ds0Lk7zrXWvL0plfNHB+Pp7MBz3x9kbZIxovjsmEAc7Y3fy7e9s51DOWX4uzsxOyaQ\nc8zG+LZEB3rwyPxY7lm2ixdXH+LtjalY6jVv3nSixDU5woeXVyeTkFFMVa1xI6dUeRkkoAghrCIy\nwA17O8WsmJOP6n3t9AheWp3Me1uO4uvmSJiPK1EBbtRrOFZQyYigzl2cc0urKaqo5czh/vx6xjCq\n6iys2HucYf5uRAW4o5QiNsSTI3nl3HnOcG6bNRxPl45vPrxgTAheLg4sXnWIkUEe/Pf6qUQ2qdL6\nx6XjeWVtMltSCjheUsUQbxe83eSmRpCAIoSwkiBPF76/byaR/iev/vFxc+Kq04by1sZUxoX7oJRi\nmLlPWn55pwPKwWxj+JRRIZ442Nux+KpJ+LvvY2yYV2ObydJbpqFQBHo6d/o8XBztefCCGBIzSnji\n4rhWQSgmxJN/L5yE1ppjBZXY28v9Jw0koAghrGZ4YOeCwc1nRvHO5jQmDfUBIMoMKCm55cyJ61xa\nSdnGAI+jgo0GdicHO/7yq+bjzwZ5unTuYC1cf3pkh9sopYjwd+vW8QcqaZQXQvS6CH83vr3nbH47\nKxoAHzdHYkM8ef2nlHaHaGnpUHYpfu5OBHh0vvQhepYEFCFEnxgV7Imbk1FJopRi8cKJlFTWct+H\nu9odAqW+XrPuYC6peeXsyyphVLA0htsSqfISQtiE2BAv/vCL0Tz+eQKvrT/MHbNHNK6z1Gu+Tcji\npdXJHDheir2dwlKveXR+bB/mWLQkAUUIYTOumRbBxsP5/Ov7g+SUVLNw2lBigj259n+b2ZxSQHSg\nO09fOo41STmMDvXmtzOj+zrLogkJKEIIm6GU4h+XjiOjsJJ3NqeRmFnMw/Ni2ZxSwP3nj+LOc0Zg\nb6dYOC2ir7Mq2iBtKEIIm+Ll4sgXd57JExfFsS21kD99nYiHswO3nBXV7g2TwjZIQBFC2KQrpw7F\nz92JhIwSfjVpSLvDpQjbIe+QEMImuTs78P19M8ktre70/S2ib0lAEULYrAAPZ7nPpB+RKi8hhBBW\noRomuhkMlFK5QFofJB0A5A3g9Gwl/b4878F4zn2d/mB8zfsq7WFa65OP+skgCyh9RSkVr7WeOlDT\ns5X0+/K8B+M593X6g/E17+v3uyNS5SWEEMIqJKAIIYSwCgkoveP1AZ6eraTfl+c9GM+5r9MfjK95\nX7/fJyVtKEIIIaxCSihCCCGsQgKKEEIIq5CAIoSwSaphYnjRb0hAsRKllGeTxz3+RVBK+fVmei3S\n7uSs31ZPd7ZSqsObq3ow/euUUuP6IN0HlFJzzce9/V5HKqVczMe9fb3o1e9UU0op7z5Mu98GUgko\np0gpNV8ptQZ4WSn1OIDuwZ4OSql5Sqn1wGKl1L96Or020n8R+FYpFdmLaTac87VA5yYct276E5RS\nu4HL6MXvjFJqrlJqJfAIcD303nutlDpPKbUF+DfwuZl2fS+lfb5SagPwnFLqYTPt3jrvc5VSu4BX\nlVK/7+W0Fyil3gYm9EZ6PUJrLX9d/AMUYA/cBmwDLgSmA8uBm3swvUXAZmABEAGsBeb39Lm2eP4e\nsAO4FXDu4dfYDrgaKAGu6MP3+zFgUS9+tpyAvwI/mZ+tXwF/Axxbvh89lIehwEbgUvP5hobHvZB2\nOPAz8AuMEso3wDMNr00Pp+0BrML44TAUWA38tZfO+xxgD7AduB3w7Y10rf0nJZQuUkopbbAAR4Fr\ntNYrtNZbMD6MPj2Y3gbgLK31l0AVkAMkNlRFWLuo3JC2+djeXLwZeAW4BhhpzfRapquNX8SZwFIg\n2Vx3pVIqXCnl2LBtT6TfYlEscNxcd59ZYvJuveepp2uedw3wpdb6bK31CqAQWKi1rm14P3oi7SZP\no4HdGJ9ngCzgUMNr3sNpxwJ7tdZfa61LgZeB+5RSo3rq3M082GEElGPATq31MeA3wFW9VMV7BJgL\nPITx43R8L6RpdRJQukApdRfwmVLqfqVUgPllT2lysY0DrPahb5LefUqpUK31Pq11nVJqMvAFEIlR\nHfJ8wy49kPa9SqkhWmuLUsoJmGemvQZYqJS61JrtGi1fY4wgugd4RSmVBFwB/B9GUAMrnnOL9O9V\nSoWZizOBIKXU58Ao4AbgzR4674b3epu53FFrvQ7jczbfWumdJG0fYD/gi1GNewTjR9ITwPs9nLYX\ncBA4Syl1hrlJEJAIPG5ub83P+B1KqcugsTpPA4EYgQWtdQpGdd+fezJt87jHtNbHtdargWxgVpPP\nX//R10Wk/vIHXIJRvXUO8CbwEjDRXOdg/n8LOKPFft0qpneQXhQQYT52B4qAqT18rlPMdX8y/zdU\nRe0Hgnoo3ZeBGGAI8A9gkrmdL5DbkKcePO+XMaoWF2JUfzxrbmcH/AhccirvcQev94SGYwN+wP+A\nub3wuX4FGGGuuwt4wnzsCKQAs6xxzu2k/SoQDNxifpd+xghiURglpkgrnbMn8BpGqbOs4ftrrnsW\nWNLkuR3GCOVjejJtM52GG83HA+/SoprRGq95T/9JCaXzpgOvaK3XAH/EKKLeDaCNUoMzRr3rDrNK\n5jfmuu6WWNpK7x7zmEe01kfNx+XAR4BXN9PpbNq3m+suVEr9hFEy+gKjCqykh9JNBR7SWmdiBLKd\nAFrrQjNta0/j1zL9NOAxrfUyjGofJ6VUiDZ+zW4Chpn5OdVS6cnea621LgBcMS681u5t1TLtFMzS\nAMZnKtHMRy1GG2FUQ756IO0jGO/zGxhtdPdpra/BqFreipU+Z9qoSluntQ7BOKeXm6z+EzBRKXWh\nUsrZfK+XYwTUnky7sXpZa70HI9CONTsJPGIut/lhTSSgdKBJMTcFo5cRWus0jA+Du1Jqgbk+FvDH\nCDJfmY+7XEzuID23Juk1bP8EMAbY16UT63ravkqp04EXgY1a64la6+uBEIyqvp5I9yvASyn1S611\nVZPtn8Q45wOnkm4n0v8So6rrLOA5oAZ41Ez/cmBdD6Xb8rMFRmeIaUopF22F3lYnSftrwNOsckoB\nHjLbjB4H5mAE0p5K+0vATyl1iTbai7aa2/0FoyReasW0vzL/3wtcrZQaaeajDPgnRqn090qpPwNn\nY/yg6LG0tVGl7NBkmw8w2nA+xJgDpV90J5aA0oJq0R22ya+CT4CKJl/y4xi9rOLMNzoa48IaBVyk\ntX6mxf5WS8/cb74yulaOAi7XWh/v/Fl2K+0fMb5Y72mtH2my2yUNJYceSncNMNrc72xldNEeBVym\ntc7uSrrdTP9HjGrMnRjVbgcAN+C8Hj7vtZz4bAG4AMsAS1fS7GbaazDOeRlG1cvVwHCMKrekXkg7\nxtxvpFLqS2AsRmml1lppa63LlVJ25vfmFYwqxYZtlgF/x6huDMToSdnlz1pX09Za12mttVLKHeOH\n215gvNb6oab72zKbHBxSKbUEuBjI0VqPbWO9wugffyFQAdyotd7R0XEDAgJ0ZGSklXMrhBAD2/bt\n2/N0J2ZsdOiNzHTDWxgNk0vbWT8fo8vqSIx62FfN/ycVGRlJfHy8lbIohBCDg1KqU1On22SVl9Z6\nPVBwkk0WAEvNBsvNgI9SKrR3cieEEKItNhlQOiEM4wakBunmslaUUouUUvFKqfjc3NxeyZwQQgxG\n/TWgdJrW+nWt9VSt9dTAwD4bV1AIIQa8/hpQMjDu+WgQbi47qb0ZxT2WISGEGOz6a0D5CrheGWYA\nxVrrNvuJK6WuV0rNMoeUEEII0UNsspeXUuoDYDYQoJRKB57CvFNVa/0asAKjy3AyRrfhm1rsrzBu\nuHsfqAcOY4zU2yjy0W9IffqiHj0PIYQYTGwyoGitr+5gvQbubGudUsrevOvUE8jQWv9aGYM3Lm7v\neBJchBDi1PXXKq9WlFL2Sqm/A39XSs3CuNvWAqCNod/v6cxxIh/9pucyKYQQA9iACChmANmOMQpt\nMsbYP7XAOUqpadC12eYkqAghRNcNiICC0U7yL6317Vrr/wIJGGNq/QHjLvpujdAqgUUIITpvoASU\n7cBH6sREVz9jzBfyFmCvlPpdd0dolaAihBCdMyACita6QmtdbbaVAJyPMQETGD3A4pRSy08ljchH\nv5HgIoQQJzEgAkoDs2HeDmPWt4Y5B0qB3wNPWysdCSxCCNHagAooGG0pjkAeMN4slTwJ1GutN1gz\nIQkqQgjRnE3eh9Jd5uQ0kzBmgYsC3jSnExVCCNHDBloJBYyRhx8H5vRWMJHSihBCDLASCoDWOh1j\nqlYhhBC9aCCWUPqUlFaEEIOVBBQhhBBWIQGlB0lpRQgxmEhAEUIIYRUSUHqJlFaEEAOdBJReJEFF\nCDGQSUARQghhFRJQ+oCUVIQQA5EElD4iQUUIMdBIQOljEliEEAOFTQYUpdQ8pVSSUipZKfVoG+tn\nK6WKlVK7zL8/9EU+rUWCihBiILC5sbzMWRdfxpgkKx3YppT6Smu9r8WmP2mtL+71DAohhGiTLZZQ\npgHJWusUrXUNsAxY0Md56hVSUhFC9Ge2GFDCgGNNnqeby1o6Qym1Ryn1rVJqTO9kredJUBFC9Fe2\nGFA6YwcQobUeD/wf8EV7GyqlFiml4pVS8ZaK4l7L4KmSwCKE6G9sMaBkAEObPA83lzXSWpdorcvM\nxysAR6VUQFsH01q/rrWeqrWeau/m3VN57hESVIQQ/YktBpRtwEilVJRSyglYCHzVdAOlVIhSSpmP\np2GcR36v51QIIUQjmwsoWus64C5gJbAf+EhrnaiUuk0pdZu52eVAglJqN/AisFBrrfsmx71DSitC\nCFtnc92GobEaa0WLZa81efwS8FJv50sIIUT7bK6EIoQQon+SgNIPSfWXEMIWSUARQghhFRJQ+jkp\nrQghbIUEFCGEEFYhAUUIIYRVSEAZQKT6SwjRlySgDDASVIQQfUUCygAlgUUI0dskoAxgElSEEL1J\nAooQQgirkIAyCEhJRQjRGySgDBISVIQQPU0CyiAjgUUI0VMkoAxCElSEED1BAsogJ8FFCGEtElBE\nIwkuQohTIQFFCCGEVUhAEW2S0ooQoqskoIgOSXARQnSGBBTRKRJUhBAdscmAopSap5RKUkolK6Ue\nbWO9Ukq9aK7fo5Sa3Bf5HIwksAgh2mNzAUUpZQ+8DMwHRgNXK6VGt9hsPjDS/FsEvNqrmRzkJKgI\nIdpicwEFmAYka61TtNY1wDJgQYttFgBLtWEz4KOUCu3tjA52EliEEM1orW3qD7gc+F+T59cBL7XY\nZjlwVpPnPwJT2zneIiAeiI+IiNCiZwx7ZLke9sjyVo8bnnfmcVv72/Jx+3Peu3Lc/pz3rhy3vTSE\n1kC87sT126HXI1gv01q/DrwOMHXqVN3H2RmwUp++qK+zIES3Nf38tvdYdMwWq7wygKFNnoeby7q6\njegj8iUUtkqCRc+yxRLKNmCkUioKI0gsBK5psc1XwF1KqWXAdKBYa53Vu9kUJyNfVtFXWn725LPY\ne2wuoGit65RSdwErAXtgidY6USl1m7n+NWAFcCGQDFQAN/VVfkXH5AstrEWqpmybzQUUAK31Coyg\n0XTZa00ea+DO3s6XEKJ3SLDon2yxDUUMYHJxEE1J4BhYJKCIPiMXkMGp4X2X93/gkYAibIJcXAY2\nCSKDgwQUYTPkYjOwSBAZfGyyUV4MbnIB6v/kPRycpIQibJpcmPoPea+EBBRh8+RCZbvkvRFNSUAR\n/YZcvGyDvA+iPdKGIvoVuZj1PnnNRWdJQBFCtCJBRHSHBBTRb8lFz7rk9RSnStpQxIAgF8Puk9dO\nWIsEFDHgyAWyY3LToegJElDEgCYXTIMMwih6gwQUMeAN1gvoYD1v0XekUV4MGoPhAjsYzlHYLgko\nYlAaSBfegXQuon+TKi8x6PXHC7I0qgtbJAFFCPrHhVmCiLB1ElCEaMGWekRJEBH9iQQUITqpvYu6\nNS/2thTMhOgqpbXu6zz0GqVULpDW1/kQQoh+ZpjWOrCjjQZVQBFCCNFzpMpLCCGEVUhAEUIIYRUS\nUIQQQliFBBQhhBBWIQFFCCGEVUhAEUIIYRUSUIQQQliFBBQhhBBWIQFFCCGEVfw/T9HNSSXPo7MA\nAAAASUVORK5CYII=\n", 103 | "text/plain": [ 104 | "" 105 | ] 106 | }, 107 | "metadata": {}, 108 | "output_type": "display_data" 109 | } 110 | ], 111 | "source": [ 112 | "import numpy as np\n", 113 | "from pandas.compat import lmap\n", 114 | "\n", 115 | "def get_autocorrelation_dataframe(series):\n", 116 | " def r(h):\n", 117 | " return ((data[:n - h] - mean) * (data[h:] - mean)).sum() / float(n) / c0\n", 118 | " \n", 119 | " n = len(series)\n", 120 | " data = np.asarray(series)\n", 121 | " mean = np.mean(data)\n", 122 | " c0 = np.sum((data - mean) ** 2) / float(n)\n", 123 | " x = np.arange(n) + 1\n", 124 | " y = lmap(r, x)\n", 125 | " df = pd.DataFrame(y, index = x)\n", 126 | " return df\n", 127 | "\n", 128 | "df_samsung = load_stock_data('samsung.data')\n", 129 | "df_samsung_corr = get_autocorrelation_dataframe(df_samsung['Close'])\n", 130 | "\n", 131 | "fig, axs = plt.subplots(2, 1)\n", 132 | "axs[1].xaxis.set_visible(False)\n", 133 | "\n", 134 | "df_samsung['Close'].plot(ax=axs[0])\n", 135 | "df_samsung_corr[0].plot(kind='bar', ax=axs[1])\n", 136 | "\n", 137 | "plt.show()" 138 | ] 139 | } 140 | ], 141 | "metadata": { 142 | "kernelspec": { 143 | "display_name": "Python 3", 144 | "language": "python", 145 | "name": "python3" 146 | }, 147 | "language_info": { 148 | "codemirror_mode": { 149 | "name": "ipython", 150 | "version": 3 151 | }, 152 | "file_extension": ".py", 153 | "mimetype": "text/x-python", 154 | "name": "python", 155 | "nbconvert_exporter": "python", 156 | "pygments_lexer": "ipython3", 157 | "version": "3.5.2" 158 | } 159 | }, 160 | "nbformat": 4, 161 | "nbformat_minor": 2 162 | } 163 | -------------------------------------------------------------------------------- /chapter4_1_mathModel.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 3, 6 | "metadata": { 7 | "collapsed": false 8 | }, 9 | "outputs": [ 10 | { 11 | "name": "stdout", 12 | "output_type": "stream", 13 | "text": [ 14 | "(-1.1164207082061997,\n", 15 | " 0.7084792913306196,\n", 16 | " 3,\n", 17 | " 224,\n", 18 | " {'1%': -3.4598849133371958,\n", 19 | " '10%': -2.5736938400829081,\n", 20 | " '5%': -2.8745310704320794},\n", 21 | " 4836.262164341827)\n" 22 | ] 23 | } 24 | ], 25 | "source": [ 26 | "import pandas as pd\n", 27 | "import statsmodels.tsa.stattools as ts\n", 28 | "import pprint\n", 29 | "\n", 30 | "def load_stock_data(file_name):\n", 31 | " df = pd.read_pickle(file_name)\n", 32 | " return df\n", 33 | "\n", 34 | "df_samsung = load_stock_data('samsung.data')\n", 35 | "adf_result = ts.adfuller(df_samsung['Close'])\n", 36 | "pprint.pprint(adf_result)" 37 | ] 38 | }, 39 | { 40 | "cell_type": "code", 41 | "execution_count": 5, 42 | "metadata": { 43 | "collapsed": false 44 | }, 45 | "outputs": [ 46 | { 47 | "name": "stdout", 48 | "output_type": "stream", 49 | "text": [ 50 | "Hurst Exponent : Samsung=0.400488433297, Hanmi=0.574960441652\n" 51 | ] 52 | } 53 | ], 54 | "source": [ 55 | "import numpy as np\n", 56 | "\n", 57 | "def get_hurst_exponent(df):\n", 58 | " lags = range(2, 100)\n", 59 | " ts = np.log(df)\n", 60 | " \n", 61 | " tau = [np.sqrt(np.std(np.subtract(ts[lag:], ts[:-lag]))) for lag in lags]\n", 62 | " poly = np.polyfit(np.log(lags), np.log(tau), 1)\n", 63 | " \n", 64 | " result = poly[0] * 2.0\n", 65 | " \n", 66 | " return result\n", 67 | "\n", 68 | "df_samsung = load_stock_data('samsung.data')\n", 69 | "df_hanmi = load_stock_data('hanmi.data')\n", 70 | "\n", 71 | "hurst_samsung = get_hurst_exponent(df_samsung['Close'])\n", 72 | "hurst_hanmi = get_hurst_exponent(df_hanmi['Close'])\n", 73 | "print('Hurst Exponent : Samsung=%s, Hanmi=%s' % (hurst_samsung, hurst_hanmi))" 74 | ] 75 | }, 76 | { 77 | "cell_type": "code", 78 | "execution_count": 6, 79 | "metadata": { 80 | "collapsed": false 81 | }, 82 | "outputs": [ 83 | { 84 | "name": "stdout", 85 | "output_type": "stream", 86 | "text": [ 87 | "Helf_life : Samsung=34.919901243, Hanmi=719.235047305\n" 88 | ] 89 | } 90 | ], 91 | "source": [ 92 | "def get_half_life(df):\n", 93 | " price = pd.Series(df)\n", 94 | " lagged_price = price.shift(1).fillna(method='bfill')\n", 95 | " delta = price - lagged_price\n", 96 | " beta = np.polyfit(lagged_price, delta, 1)[0]\n", 97 | " half_life = (-1 * np.log(2) / beta)\n", 98 | " \n", 99 | " return half_life\n", 100 | "\n", 101 | "df_samsung = load_stock_data('samsung.data')\n", 102 | "df_hanmi = load_stock_data('hanmi.data')\n", 103 | "half_life_samsung = get_half_life(df_samsung['Close'])\n", 104 | "half_life_hanmi = get_half_life(df_hanmi['Close'])\n", 105 | "print('Helf_life : Samsung=%s, Hanmi=%s' % (half_life_samsung, half_life_hanmi))" 106 | ] 107 | } 108 | ], 109 | "metadata": { 110 | "kernelspec": { 111 | "display_name": "Python 3", 112 | "language": "python", 113 | "name": "python3" 114 | }, 115 | "language_info": { 116 | "codemirror_mode": { 117 | "name": "ipython", 118 | "version": 3 119 | }, 120 | "file_extension": ".py", 121 | "mimetype": "text/x-python", 122 | "name": "python", 123 | "nbconvert_exporter": "python", 124 | "pygments_lexer": "ipython3", 125 | "version": "3.5.2" 126 | } 127 | }, 128 | "nbformat": 4, 129 | "nbformat_minor": 2 130 | } 131 | -------------------------------------------------------------------------------- /chapter4_2_machineLearningModel.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 7, 6 | "metadata": { 7 | "collapsed": false 8 | }, 9 | "outputs": [ 10 | { 11 | "name": "stdout", 12 | "output_type": "stream", 13 | "text": [ 14 | "- Time Lags=1\n", 15 | "samsung : Hit Ratio - Logistic Regression=0.54, RandomForest=0.55, SVM=0.50\n", 16 | "hanmi : Hit Ratio - Logistic Regression=0.57, RandomForest=0.41, SVM=0.57\n", 17 | "- Time Lags=2\n", 18 | "samsung : Hit Ratio - Logistic Regression=0.54, RandomForest=0.52, SVM=0.50\n", 19 | "hanmi : Hit Ratio - Logistic Regression=0.57, RandomForest=0.39, SVM=0.59\n", 20 | "- Time Lags=3\n", 21 | "samsung : Hit Ratio - Logistic Regression=0.54, RandomForest=0.52, SVM=0.50\n", 22 | "hanmi : Hit Ratio - Logistic Regression=0.57, RandomForest=0.36, SVM=0.59" 23 | ] 24 | }, 25 | { 26 | "name": "stderr", 27 | "output_type": "stream", 28 | "text": [ 29 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 30 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n", 31 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 32 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n", 33 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 34 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n", 35 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 36 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n", 37 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 38 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n", 39 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 40 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n" 41 | ] 42 | }, 43 | { 44 | "name": "stdout", 45 | "output_type": "stream", 46 | "text": [ 47 | "\n", 48 | "- Time Lags=4\n", 49 | "samsung : Hit Ratio - Logistic Regression=0.55, RandomForest=0.52, SVM=0.50\n", 50 | "hanmi : Hit Ratio - Logistic Regression=0.55, RandomForest=0.38, SVM=0.57\n", 51 | "- Time Lags=5\n", 52 | "samsung : Hit Ratio - Logistic Regression=0.55, RandomForest=0.53, SVM=0.49\n", 53 | "hanmi : Hit Ratio - Logistic Regression=0.56, RandomForest=0.44, SVM=0.58\n" 54 | ] 55 | }, 56 | { 57 | "name": "stderr", 58 | "output_type": "stream", 59 | "text": [ 60 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 61 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n", 62 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 63 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n", 64 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 65 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n", 66 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:18: RuntimeWarning: invalid value encountered in sign\n", 67 | "C:\\Anaconda3\\envs\\tensorflow\\lib\\site-packages\\ipykernel\\__main__.py:19: RuntimeWarning: invalid value encountered in sign\n" 68 | ] 69 | } 70 | ], 71 | "source": [ 72 | "import pandas as pd\n", 73 | "\n", 74 | "def load_stock_data(file_name):\n", 75 | " df = pd.read_pickle(file_name)\n", 76 | " return df\n", 77 | "\n", 78 | "def make_dataset(df, time_lags=5):\n", 79 | " df_lag = pd.DataFrame(index=df.index)\n", 80 | " df_lag['Close'] = df['Close']\n", 81 | " df_lag['Volume'] = df['Volume']\n", 82 | " \n", 83 | " df_lag['Close_Lag%s' % str(time_lags)] = df['Close'].shift(time_lags)\n", 84 | " df_lag['Close_Lag%s_Change' % str(time_lags)] = df_lag['Close_Lag%s' % str(time_lags)].pct_change()*100.0\n", 85 | " \n", 86 | " df_lag['Volume_Lag%s' % str(time_lags)] = df['Volume'].shift(time_lags)\n", 87 | " df_lag['Volume_Lag%s_Change' % str(time_lags)] = df_lag['Volume_Lag%s' % str(time_lags)].pct_change()*100.0\n", 88 | " \n", 89 | " df_lag['Close_Direction'] = np.sign(df_lag['Close_Lag%s_Change' % str(time_lags)])\n", 90 | " df_lag['Volume_Direction'] = np.sign(df_lag['Volume_Lag%s_Change' % str(time_lags)])\n", 91 | " \n", 92 | " return df_lag.dropna(how='any')\n", 93 | "\n", 94 | "\n", 95 | "def split_dataset(df, input_column_array, output_column, split_ratio):\n", 96 | " split_date = get_date_by_percent(df.index[0], df.index[df.shape[0]-1], split_ratio)\n", 97 | " \n", 98 | " input_data = df[input_column_array]\n", 99 | " output_data = df[output_column]\n", 100 | " \n", 101 | " X_train = input_data[input_data.index < split_date]\n", 102 | " X_test = input_data[input_data.index >= split_date]\n", 103 | " Y_train = output_data[output_data.index < split_date]\n", 104 | " Y_test = output_data[output_data.index >= split_date]\n", 105 | " \n", 106 | " return X_train, X_test, Y_train, Y_test\n", 107 | "\n", 108 | "\n", 109 | "import numpy as np\n", 110 | "import datetime\n", 111 | "\n", 112 | "def get_date_by_percent(start_date, end_date, percent):\n", 113 | " days = (end_date - start_date).days\n", 114 | " target_days = np.trunc(days * percent)\n", 115 | " target_date = start_date + datetime.timedelta(days=target_days)\n", 116 | " return target_date\n", 117 | "\n", 118 | "\n", 119 | "from sklearn.linear_model import LogisticRegression\n", 120 | "from sklearn.ensemble import RandomForestClassifier\n", 121 | "from sklearn.svm import SVC\n", 122 | "\n", 123 | "def do_logistic_regression(x_train, y_train):\n", 124 | " classifier = LogisticRegression()\n", 125 | " classifier.fit(x_train, y_train)\n", 126 | " return classifier\n", 127 | "\n", 128 | "\n", 129 | "def do_random_forest(x_train, y_train):\n", 130 | " classifier = RandomForestClassifier()\n", 131 | " classifier.fit(x_train, y_train)\n", 132 | " return classifier\n", 133 | "\n", 134 | "\n", 135 | "def do_svm(x_train, y_train):\n", 136 | " classifier = SVC()\n", 137 | " classifier.fit(x_train, y_train)\n", 138 | " return classifier\n", 139 | "\n", 140 | "\n", 141 | "def test_classifier(classifier, x_test, y_test):\n", 142 | " pred = classifier.predict(x_test)\n", 143 | " \n", 144 | " hit_count = 0\n", 145 | " total_count = len(y_test)\n", 146 | " for index in range(total_count):\n", 147 | " if pred[index] == y_test[index]:\n", 148 | " hit_count = hit_count + 1\n", 149 | " \n", 150 | " hit_ratio = hit_count / total_count\n", 151 | " score = classifier.score(x_test, y_test)\n", 152 | " \n", 153 | " return hit_ratio, score\n", 154 | "\n", 155 | "\n", 156 | "if __name__ == '__main__':\n", 157 | " for time_lags in range(1, 6):\n", 158 | " print('- Time Lags=%s' % (time_lags))\n", 159 | " \n", 160 | " for company in ['samsung', 'hanmi']:\n", 161 | " df_company = load_stock_data('%s.data'%(company))\n", 162 | " \n", 163 | " df_dataset = make_dataset(df_company, time_lags)\n", 164 | " X_train, X_test, Y_train, Y_test = split_dataset(df_dataset, ['Close_Lag%s' % (time_lags)], 'Close_Direction', 0.75)\n", 165 | " \n", 166 | " lr_classifier = do_logistic_regression(X_train, Y_train)\n", 167 | " lr_hit_ratio, lr_score = test_classifier(lr_classifier, X_test, Y_test)\n", 168 | " \n", 169 | " rf_classifier = do_random_forest(X_train, Y_train)\n", 170 | " rf_hit_ratio, rf_score = test_classifier(rf_classifier, X_test, Y_test)\n", 171 | " \n", 172 | " svm_classifier = do_svm(X_train, Y_train)\n", 173 | " svm_hit_ratio, svm_score = test_classifier(svm_classifier, X_test, Y_test)\n", 174 | " \n", 175 | " print('%s : Hit Ratio - Logistic Regression=%0.2f, RandomForest=%0.2f, SVM=%0.2f' % (company, lr_hit_ratio, rf_hit_ratio, svm_hit_ratio))\n", 176 | " " 177 | ] 178 | } 179 | ], 180 | "metadata": { 181 | "kernelspec": { 182 | "display_name": "Python 3", 183 | "language": "python", 184 | "name": "python3" 185 | }, 186 | "language_info": { 187 | "codemirror_mode": { 188 | "name": "ipython", 189 | "version": 3 190 | }, 191 | "file_extension": ".py", 192 | "mimetype": "text/x-python", 193 | "name": "python", 194 | "nbconvert_exporter": "python", 195 | "pygments_lexer": "ipython3", 196 | "version": "3.5.2" 197 | } 198 | }, 199 | "nbformat": 4, 200 | "nbformat_minor": 2 201 | } 202 | -------------------------------------------------------------------------------- /hanmi.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/greentec/Algorithm-Trading-System-Book-Code/534116d594bea616ced11af621834341016f27c4/hanmi.data -------------------------------------------------------------------------------- /samsung.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/greentec/Algorithm-Trading-System-Book-Code/534116d594bea616ced11af621834341016f27c4/samsung.data -------------------------------------------------------------------------------- /services.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import division 3 | import os,sys 4 | 5 | 6 | class BaseService(): 7 | def __init__(self): 8 | self.items = {} 9 | 10 | def clear(self): 11 | self.items.clear() 12 | 13 | def register(self,name,value): 14 | self.items[name] = value 15 | 16 | def get(self,name): 17 | return self.items[name] 18 | 19 | 20 | class Configurator(BaseService): 21 | def __init__(self): 22 | self.items = {} 23 | 24 | def update(self,name,value): 25 | self.items[name] = value 26 | 27 | 28 | class Services(BaseService): 29 | def register(self,name,ref): 30 | self.items[name] = ref 31 | 32 | 33 | services = Services() 34 | -------------------------------------------------------------------------------- /stock_common.py: -------------------------------------------------------------------------------- 1 | #-*- coding: utf-8 -*- 2 | from datetime import date,datetime,timedelta 3 | import urllib 4 | import os,sys,math,pickle 5 | import csv 6 | import time 7 | import glob 8 | import re 9 | import pandas as pd 10 | import numpy 11 | 12 | 13 | #reload(sys) 14 | #sys.setdefaultencoding("utf-8") 15 | 16 | 17 | def getQuote(str): 18 | return "'%s'" % (str) 19 | 20 | def getToday(): 21 | return time.strftime("%Y%m%d") 22 | 23 | def getTime(): 24 | return time.strftime("%H%M") 25 | 26 | def clearString(value): 27 | new_value = value.replace("'",'`') 28 | new_value = new_value.replace('"',"'") 29 | return new_value 30 | 31 | def last_day(d, day_name): 32 | days_of_week = ['sunday','monday','tuesday','wednesday', 'thursday','friday','saturday'] 33 | target_day = days_of_week.index(day_name.lower()) 34 | delta_day = target_day - d.isoweekday() 35 | if delta_day >= 0: delta_day -= 7 # go back 7 days 36 | return d + timedelta(days=delta_day) 37 | 38 | def trim(value): 39 | words = ['\n','\r',' ',' '] 40 | new_str = str(value) 41 | for word in words: 42 | new_str = new_str.replace(word, '') 43 | return new_str 44 | 45 | def findBetween( s, first, last ): 46 | return (s.split(first))[1].split(last)[0] 47 | 48 | def findBetweenExt( s, first, last ): 49 | try: 50 | start = s.index( first ) + len( first ) 51 | end = s.index( last, start ) 52 | return s[start:end] 53 | except ValueError: 54 | return "" 55 | 56 | def getValue(str): 57 | new_str = trim(str) 58 | return clearString(new_str) 59 | 60 | 61 | def getNumericValue(str): 62 | new_str = trim(str) 63 | new_str = new_str.replace('"',"'") 64 | if new_str == "": 65 | return "0" 66 | return new_str 67 | 68 | def getSafeNumericValue(value): 69 | try: 70 | 71 | if value is None: 72 | return "0" 73 | 74 | if value=="": 75 | return "0" 76 | 77 | if math.isnan(float(value)): 78 | return "0" 79 | 80 | return str(value) 81 | except: 82 | print("Fatal Error!!! : getSafeNumericValue = %s" % (value)) 83 | return "0" 84 | 85 | 86 | def convertMarketType(str): 87 | if str=='kospiVal': 88 | return 1 89 | elif str=='kosdaqVal': 90 | return 2 91 | return -1 92 | 93 | 94 | def convertStringToDate(value): 95 | value_year = value[0:4] 96 | value_month = value[4:6] 97 | value_day = value[6:8] 98 | #print "convertStringToDate : %s, %s, %s" % (value_year,value_month,value_day) 99 | return datetime(int(value_year), int(value_month), int(value_day)).strftime('%Y-%m-%d %H:%M:%S') 100 | 101 | 102 | def getDateByPerent(start_date,end_date,percent): 103 | days = (end_date - start_date).days 104 | target_days = numpy.trunc(days * percent) 105 | target_date = start_date + timedelta(days=target_days) 106 | #print days, target_days,target_date 107 | return target_date 108 | 109 | 110 | def getPercentileIndex(percentile_arr,value): 111 | for index in range(len(percentile_arr)): 112 | if value<=percentile_arr[index]: 113 | return index 114 | 115 | return len(percentile_arr) 116 | 117 | 118 | def get_data_file_path(file_name): 119 | full_file_name = "%s/data/%s" % (os.path.dirname(os.path.abspath(__file__)),file_name) 120 | #print full_file_name 121 | return full_file_name 122 | 123 | def saveToFile(filename): 124 | new_file_name = get_data_file_path(file_name) 125 | pickle.dump(self,open( new_file_name, "wb" )) 126 | 127 | 128 | def loadFromFile(filename): 129 | new_file_name = get_data_file_path(file_name) 130 | return pickle.load(open( new_file_name, "rb" )) 131 | --------------------------------------------------------------------------------