├── EMA_sentiment.ipynb ├── LoughranMcDonald_Litigious.txt ├── LoughranMcDonald_Negative.txt ├── LoughranMcDonald_Positive.txt ├── LoughranMcDonald_Uncertainty.txt ├── README.md ├── backtest.ipynb ├── get_sentiment.ipynb ├── get_stock_data.ipynb ├── get_tickers.ipynb ├── reuters.ipynb └── util.py /LoughranMcDonald_Litigious.txt: -------------------------------------------------------------------------------- 1 | ABOVEMENTIONED 2 | ABROGATE 3 | ABROGATED 4 | ABROGATES 5 | ABROGATING 6 | ABROGATION 7 | ABROGATIONS 8 | ABSOLVE 9 | ABSOLVED 10 | ABSOLVES 11 | ABSOLVING 12 | ACCESSION 13 | ACCESSIONS 14 | ACQUIREES 15 | ACQUIRORS 16 | ACQUIT 17 | ACQUITS 18 | ACQUITTAL 19 | ACQUITTALS 20 | ACQUITTANCE 21 | ACQUITTANCES 22 | ACQUITTED 23 | ACQUITTING 24 | ADDENDUMS 25 | ADJOURN 26 | ADJOURNED 27 | ADJOURNING 28 | ADJOURNMENT 29 | ADJOURNMENTS 30 | ADJOURNS 31 | ADJUDGE 32 | ADJUDGED 33 | ADJUDGES 34 | ADJUDGING 35 | ADJUDICATE 36 | ADJUDICATED 37 | ADJUDICATES 38 | ADJUDICATING 39 | ADJUDICATION 40 | ADJUDICATIONS 41 | ADJUDICATIVE 42 | ADJUDICATOR 43 | ADJUDICATORS 44 | ADJUDICATORY 45 | ADMISSIBILITY 46 | ADMISSIBLE 47 | ADMISSIBLY 48 | ADMISSION 49 | ADMISSIONS 50 | AFFIDAVIT 51 | AFFIDAVITS 52 | AFFIRMANCE 53 | AFFREIGHTMENT 54 | AFOREDESCRIBED 55 | AFOREMENTIONED 56 | AFORESAID 57 | AFORESTATED 58 | AGGRIEVED 59 | ALLEGATION 60 | ALLEGATIONS 61 | ALLEGE 62 | ALLEGED 63 | ALLEGEDLY 64 | ALLEGES 65 | ALLEGING 66 | AMEND 67 | AMENDABLE 68 | AMENDATORY 69 | AMENDED 70 | AMENDING 71 | AMENDMENT 72 | AMENDMENTS 73 | AMENDS 74 | ANTECEDENT 75 | ANTECEDENTS 76 | ANTITRUST 77 | ANYWISE 78 | APPEAL 79 | APPEALABLE 80 | APPEALED 81 | APPEALING 82 | APPEALS 83 | APPELLANT 84 | APPELLANTS 85 | APPELLATE 86 | APPELLEES 87 | APPOINTOR 88 | APPURTENANCE 89 | APPURTENANCES 90 | APPURTENANT 91 | ARBITRABILITY 92 | ARBITRAL 93 | ARBITRATE 94 | ARBITRATED 95 | ARBITRATES 96 | ARBITRATING 97 | ARBITRATION 98 | ARBITRATIONAL 99 | ARBITRATIONS 100 | ARBITRATIVE 101 | ARBITRATOR 102 | ARBITRATORS 103 | ARREARAGE 104 | ARREARAGES 105 | ASCENDANCY 106 | ASCENDANT 107 | ASCENDANTS 108 | ASSERTABLE 109 | ASSIGNATION 110 | ASSIGNATIONS 111 | ASSUMABLE 112 | ATTEST 113 | ATTESTATION 114 | ATTESTATIONS 115 | ATTESTED 116 | ATTESTING 117 | ATTORN 118 | ATTORNEY 119 | ATTORNEYS 120 | ATTORNMENT 121 | ATTORNS 122 | BAIL 123 | BAILED 124 | BAILEE 125 | BAILEES 126 | BAILIFF 127 | BAILIFFS 128 | BAILMENT 129 | BENEFICIATION 130 | BONA 131 | BONAFIDE 132 | BREACH 133 | BREACHED 134 | BREACHES 135 | BREACHING 136 | CEDANT 137 | CEDANTS 138 | CERTIORARI 139 | CESSION 140 | CHATTEL 141 | CHATTELS 142 | CHOATE 143 | CLAIM 144 | CLAIMABLE 145 | CLAIMANT 146 | CLAIMANTS 147 | CLAIMS 148 | CODEFENDANT 149 | CODEFENDANTS 150 | CODICIL 151 | CODICILS 152 | CODIFICATION 153 | CODIFICATIONS 154 | CODIFIED 155 | CODIFIES 156 | CODIFY 157 | CODIFYING 158 | COLLUSION 159 | COMPENSATORY 160 | COMPLAINANT 161 | COMPLAINANTS 162 | CONDEMNOR 163 | CONFISCATORY 164 | CONSENT 165 | CONSENTED 166 | CONSENTING 167 | CONSENTS 168 | CONSERVATORSHIPS 169 | CONSTITUTION 170 | CONSTITUTIONAL 171 | CONSTITUTIONALITY 172 | CONSTITUTIONALLY 173 | CONSTITUTIONS 174 | CONSTITUTIVE 175 | CONSTRUE 176 | CONSTRUED 177 | CONSTRUES 178 | CONSTRUING 179 | CONTESTATION 180 | CONTRACT 181 | CONTRACTED 182 | CONTRACTHOLDER 183 | CONTRACTHOLDERS 184 | CONTRACTIBLE 185 | CONTRACTILE 186 | CONTRACTING 187 | CONTRACTS 188 | CONTRACTUAL 189 | CONTRACTUALLY 190 | CONTRAVENE 191 | CONTRAVENED 192 | CONTRAVENES 193 | CONTRAVENING 194 | CONTRAVENTION 195 | CONTRAVENTIONS 196 | CONTROVERT 197 | CONTROVERTED 198 | CONTROVERTING 199 | CONVENIENS 200 | CONVEYANCE 201 | CONVEYANCES 202 | CONVICT 203 | CONVICTED 204 | CONVICTING 205 | CONVICTION 206 | CONVICTIONS 207 | COTERMINOUS 208 | COUNSEL 209 | COUNSELED 210 | COUNSELLED 211 | COUNSELS 212 | COUNTERSIGNOR 213 | COUNTERSUED 214 | COUNTERSUIT 215 | COURT 216 | COURTROOM 217 | COURTS 218 | CRIME 219 | CRIMES 220 | CRIMINAL 221 | CRIMINALITY 222 | CRIMINALLY 223 | CRIMINALS 224 | CROSSCLAIM 225 | CROSSCLAIMS 226 | DECEDENT 227 | DECEDENTS 228 | DECLARANT 229 | DECREE 230 | DECREED 231 | DECREEING 232 | DECREES 233 | DEFALCATION 234 | DEFALCATIONS 235 | DEFEASANCE 236 | DEFEASANCES 237 | DEFEASE 238 | DEFEASED 239 | DEFEASING 240 | DEFECTIVELY 241 | DEFENDANT 242 | DEFENDANTS 243 | DEFERENCE 244 | DELEGABLE 245 | DELEGATABLE 246 | DELEGATEE 247 | DELEGEES 248 | DEMURRED 249 | DEMURRER 250 | DEMURRERS 251 | DEMURRING 252 | DEMURS 253 | DEPOSE 254 | DEPOSED 255 | DEPOSES 256 | DEPOSING 257 | DEPOSITION 258 | DEPOSITIONAL 259 | DEPOSITIONS 260 | DEROGATE 261 | DEROGATED 262 | DEROGATES 263 | DEROGATING 264 | DEROGATION 265 | DEROGATIONS 266 | DESIGNATOR 267 | DESIST 268 | DETAINER 269 | DEVISEES 270 | DISAFFILIATION 271 | DISAFFIRM 272 | DISAFFIRMANCE 273 | DISAFFIRMED 274 | DISAFFIRMS 275 | DISPOSITIVE 276 | DISPOSSESSION 277 | DISPOSSESSORY 278 | DISTRAINT 279 | DISTRIBUTEE 280 | DISTRIBUTEES 281 | DOCKET 282 | DOCKETED 283 | DOCKETING 284 | DOCKETS 285 | DONEES 286 | DULY 287 | EJECTMENT 288 | ENCUMBER 289 | ENCUMBERED 290 | ENCUMBERING 291 | ENCUMBERS 292 | ENCUMBRANCE 293 | ENCUMBRANCER 294 | ENCUMBRANCERS 295 | ENCUMBRANCES 296 | ENDORSEE 297 | ENFORCEABILITY 298 | ENFORCEABLE 299 | ENFORCEABLY 300 | ESCHEAT 301 | ESCHEATED 302 | ESCHEATMENT 303 | ESCROWING 304 | ESTOPPEL 305 | EVIDENTIAL 306 | EVIDENTIARY 307 | EXCEEDANCE 308 | EXCEEDANCES 309 | EXCEEDENCES 310 | EXCISED 311 | EXCULPATE 312 | EXCULPATED 313 | EXCULPATES 314 | EXCULPATING 315 | EXCULPATION 316 | EXCULPATIONS 317 | EXCULPATORY 318 | EXECUTOR 319 | EXECUTORS 320 | EXECUTORY 321 | EXECUTRICES 322 | EXECUTRIX 323 | EXECUTRIXES 324 | EXTRACONTRACTUAL 325 | EXTRACORPOREAL 326 | FACIE 327 | FACTO 328 | FELONIES 329 | FELONIOUS 330 | FELONY 331 | FIDE 332 | FORBADE 333 | FORBEAR 334 | FORBEARANCE 335 | FORBEARANCES 336 | FORBEARING 337 | FORBEARS 338 | FOREBEAR 339 | FOREBEARANCE 340 | FOREBEARS 341 | FORFEITABILITY 342 | FORFEITABLE 343 | FORTHWITH 344 | FORWHICH 345 | FUGITIVE 346 | FUGITIVES 347 | FURTHERANCE 348 | GRANTOR 349 | GRANTORS 350 | HENCEFORTH 351 | HENCEFORWARD 352 | HEREAFTER 353 | HEREBY 354 | HEREDITAMENTS 355 | HEREFOR 356 | HEREFROM 357 | HEREIN 358 | HEREINABOVE 359 | HEREINAFTER 360 | HEREINBEFORE 361 | HEREINBELOW 362 | HEREOF 363 | HEREON 364 | HERETO 365 | HERETOFORE 366 | HEREUNDER 367 | HEREUNTO 368 | HEREUPON 369 | HEREWITH 370 | IMMATERIALITY 371 | IMPLEADED 372 | INASMUCH 373 | INCAPACITY 374 | INCARCERATE 375 | INCARCERATED 376 | INCARCERATES 377 | INCARCERATING 378 | INCARCERATION 379 | INCARCERATIONS 380 | INCHOATE 381 | INCONTESTABILITY 382 | INCONTESTABLE 383 | INDEMNIFIABLE 384 | INDEMNIFICATION 385 | INDEMNIFICATIONS 386 | INDEMNIFIED 387 | INDEMNIFIES 388 | INDEMNIFY 389 | INDEMNIFYING 390 | INDEMNITEE 391 | INDEMNITEES 392 | INDEMNITIES 393 | INDEMNITOR 394 | INDEMNITORS 395 | INDEMNITY 396 | INDICT 397 | INDICTABLE 398 | INDICTED 399 | INDICTING 400 | INDICTMENT 401 | INDICTMENTS 402 | INDORSEES 403 | INFORCE 404 | INFRACTION 405 | INFRACTIONS 406 | INFRINGER 407 | INJUNCTION 408 | INJUNCTIONS 409 | INJUNCTIVE 410 | INSOFAR 411 | INTERLOCUTORY 412 | INTERPLEADER 413 | INTERPOSE 414 | INTERPOSED 415 | INTERPOSES 416 | INTERPOSING 417 | INTERPOSITION 418 | INTERPOSITIONS 419 | INTERROGATE 420 | INTERROGATED 421 | INTERROGATES 422 | INTERROGATING 423 | INTERROGATION 424 | INTERROGATIONS 425 | INTERROGATOR 426 | INTERROGATORIES 427 | INTERROGATORS 428 | INTERROGATORY 429 | INTESTACY 430 | INTESTATE 431 | IRREVOCABILITY 432 | IRREVOCABLE 433 | IRREVOCABLY 434 | JOINDER 435 | JUDICIAL 436 | JUDICIALLY 437 | JUDICIARIES 438 | JUDICIARY 439 | JURIES 440 | JURIS 441 | JURISDICTION 442 | JURISDICTIONAL 443 | JURISDICTIONALLY 444 | JURISDICTIONS 445 | JURISPRUDENCE 446 | JURIST 447 | JURISTS 448 | JUROR 449 | JURORS 450 | JURY 451 | JURYMAN 452 | JUSTICE 453 | JUSTICES 454 | LAW 455 | LAWFUL 456 | LAWFULLY 457 | LAWFULNESS 458 | LAWMAKERS 459 | LAWMAKING 460 | LAWS 461 | LAWSUIT 462 | LAWSUITS 463 | LAWYER 464 | LAWYERS 465 | LEGAL 466 | LEGALESE 467 | LEGALITY 468 | LEGALIZATION 469 | LEGALIZATIONS 470 | LEGALIZE 471 | LEGALIZED 472 | LEGALIZES 473 | LEGALIZING 474 | LEGALLY 475 | LEGALS 476 | LEGATEE 477 | LEGATEES 478 | LEGISLATE 479 | LEGISLATED 480 | LEGISLATES 481 | LEGISLATING 482 | LEGISLATION 483 | LEGISLATIONS 484 | LEGISLATIVE 485 | LEGISLATIVELY 486 | LEGISLATOR 487 | LEGISLATORS 488 | LEGISLATURE 489 | LEGISLATURES 490 | LIBEL 491 | LIBELED 492 | LIBELOUS 493 | LIBELS 494 | LICENSABLE 495 | LIENHOLDERS 496 | LITIGANT 497 | LITIGANTS 498 | LITIGATE 499 | LITIGATED 500 | LITIGATES 501 | LITIGATING 502 | LITIGATION 503 | LITIGATIONS 504 | LITIGATOR 505 | LITIGATORS 506 | LITIGIOUS 507 | LITIGIOUSNESS 508 | MAJEURE 509 | MANDAMUS 510 | MEDIATE 511 | MEDIATED 512 | MEDIATES 513 | MEDIATING 514 | MEDIATION 515 | MEDIATIONS 516 | MEDIATOR 517 | MEDIATORS 518 | MISDEMEANOR 519 | MISFEASANCE 520 | MISTRIAL 521 | MISTRIALS 522 | MOREOVER 523 | MOTIONS 524 | MUTANDIS 525 | NOLO 526 | NONAPPEALABLE 527 | NONBREACHING 528 | NONCONTINGENT 529 | NONCONTRACT 530 | NONCONTRACTUAL 531 | NONCONTRIBUTORY 532 | NONFEASANCE 533 | NONFIDUCIARY 534 | NONFORFEITABILITY 535 | NONFORFEITABLE 536 | NONFORFEITURE 537 | NONGUARANTOR 538 | NONINFRINGEMENT 539 | NONINFRINGING 540 | NONJUDICIAL 541 | NONJUDICIALLY 542 | NONJURISDICTIONAL 543 | NONSEVERABLE 544 | NONTERMINABLE 545 | NONUSURIOUS 546 | NOTARIAL 547 | NOTARIES 548 | NOTARIZATION 549 | NOTARIZATIONS 550 | NOTARIZE 551 | NOTARIZED 552 | NOTARIZING 553 | NOTARY 554 | NOTWITHSTANDING 555 | NOVO 556 | NULLIFICATION 557 | NULLIFICATIONS 558 | NULLIFIED 559 | NULLIFIES 560 | NULLIFY 561 | NULLIFYING 562 | NULLITIES 563 | NULLITY 564 | OBLIGEE 565 | OBLIGEES 566 | OBLIGOR 567 | OBLIGORS 568 | OFFENSE 569 | OFFEREE 570 | OFFEREES 571 | OFFEROR 572 | OFFERORS 573 | OPTIONEE 574 | OPTIONEES 575 | OVERRULE 576 | OVERRULED 577 | OVERRULES 578 | OVERRULING 579 | PARA 580 | PARI 581 | PASSU 582 | PECUNIARILY 583 | PERJURY 584 | PERMITTEE 585 | PERMITTEES 586 | PERPETRATE 587 | PERPETRATED 588 | PERPETRATES 589 | PERPETRATING 590 | PERPETRATION 591 | PERSONAM 592 | PETITION 593 | PETITIONED 594 | PETITIONER 595 | PETITIONERS 596 | PETITIONING 597 | PETITIONS 598 | PLAINTIFF 599 | PLAINTIFFS 600 | PLEADING 601 | PLEADINGS 602 | PLEADS 603 | PLEAS 604 | PLEDGEE 605 | PLEDGEES 606 | PLEDGOR 607 | PLEDGORS 608 | POSSESSORY 609 | POSTCLOSING 610 | POSTCLOSURE 611 | POSTCONTRACT 612 | POSTJUDGMENT 613 | PREAMENDMENT 614 | PREDECEASE 615 | PREDECEASED 616 | PREDECEASES 617 | PREDECEASING 618 | PREHEARING 619 | PREJUDICE 620 | PREJUDICED 621 | PREJUDICES 622 | PREJUDICIAL 623 | PREJUDICING 624 | PREPETITION 625 | PRESUMPTIVELY 626 | PRETRIAL 627 | PRIMA 628 | PRIVITY 629 | PROBATE 630 | PROBATED 631 | PROBATES 632 | PROBATING 633 | PROBATION 634 | PROBATIONAL 635 | PROBATIONARY 636 | PROBATIONER 637 | PROBATIONERS 638 | PROBATIONS 639 | PROMULGATE 640 | PROMULGATED 641 | PROMULGATES 642 | PROMULGATING 643 | PROMULGATION 644 | PROMULGATIONS 645 | PROMULGATOR 646 | PROMULGATORS 647 | PRORATA 648 | PRORATION 649 | PROSECUTE 650 | PROSECUTED 651 | PROSECUTES 652 | PROSECUTING 653 | PROSECUTION 654 | PROSECUTIONS 655 | PROSECUTOR 656 | PROSECUTORIAL 657 | PROSECUTORS 658 | PROVISO 659 | PROVISOES 660 | PROVISOS 661 | PUNISHABLE 662 | QUITCLAIM 663 | QUITCLAIMS 664 | RATA 665 | RATABLE 666 | RATABLY 667 | REARGUMENT 668 | REBUT 669 | REBUTS 670 | REBUTTABLE 671 | REBUTTABLY 672 | REBUTTAL 673 | REBUTTALS 674 | REBUTTED 675 | REBUTTING 676 | RECORDATION 677 | RECOUPABLE 678 | RECOUPMENT 679 | RECOUPMENTS 680 | RECOURSE 681 | RECOURSES 682 | RECTIFICATION 683 | RECTIFICATIONS 684 | RECUSAL 685 | RECUSE 686 | RECUSED 687 | RECUSING 688 | REDACT 689 | REDACTED 690 | REDACTING 691 | REDACTION 692 | REDACTIONS 693 | REFERENDA 694 | REFERENDUM 695 | REFERENDUMS 696 | REFILE 697 | REFILED 698 | REFILES 699 | REFILING 700 | REGULATE 701 | REGULATED 702 | REGULATES 703 | REGULATING 704 | REGULATION 705 | REGULATIONS 706 | REGULATIVE 707 | REGULATOR 708 | REGULATORS 709 | REGULATORY 710 | REHEAR 711 | REHEARD 712 | REHEARING 713 | REHEARINGS 714 | RELEASEES 715 | REMAND 716 | REMANDED 717 | REMANDING 718 | REMANDS 719 | REMEDIATE 720 | REMEDIATED 721 | REMEDIATING 722 | REMEDIATION 723 | REMEDIATIONS 724 | REMEDIED 725 | REMISED 726 | REPLEDGED 727 | REPLEVIN 728 | REQUESTER 729 | REQUESTOR 730 | REREGULATION 731 | RESCIND 732 | RESCINDED 733 | RESCINDING 734 | RESCINDS 735 | RESCISSION 736 | RESCISSIONS 737 | RESTITUTIONARY 738 | RETENDERING 739 | RETROCEDE 740 | RETROCEDED 741 | RETROCESSIONAIRES 742 | REVOCABILITY 743 | REVOCATION 744 | REVOCATIONS 745 | RULING 746 | RULINGS 747 | SENTENCED 748 | SENTENCING 749 | SEQUESTRATOR 750 | SETTLEMENT 751 | SETTLEMENTS 752 | SEVERABILITY 753 | SEVERABLE 754 | SEVERALLY 755 | SEVERANCE 756 | SEVERANCES 757 | SHALL 758 | STATUTE 759 | STATUTES 760 | STATUTORILY 761 | STATUTORY 762 | SUBCLAUSE 763 | SUBCLAUSES 764 | SUBDOCKET 765 | SUBLEASEE 766 | SUBLEASEHOLD 767 | SUBLESSORS 768 | SUBLICENSEE 769 | SUBLICENSOR 770 | SUBPARAGRAPH 771 | SUBPARAGRAPHS 772 | SUBPOENA 773 | SUBPOENAED 774 | SUBPOENAS 775 | SUBROGATED 776 | SUBROGATION 777 | SUBTRUST 778 | SUBTRUSTS 779 | SUE 780 | SUED 781 | SUES 782 | SUING 783 | SUMMONED 784 | SUMMONING 785 | SUMMONS 786 | SUMMONSES 787 | SUPERSEDE 788 | SUPERSEDEAS 789 | SUPERSEDED 790 | SUPERSEDES 791 | SUPERSEDING 792 | SURETIES 793 | SURETY 794 | TENANTABILITY 795 | TERMINABLE 796 | TERMINUS 797 | TESTAMENTARY 798 | TESTIFY 799 | TESTIFYING 800 | TESTIMONY 801 | THENCE 802 | THENCEFORTH 803 | THENCEFORWARD 804 | THEREAFTER 805 | THEREAT 806 | THEREFROM 807 | THEREIN 808 | THEREINAFTER 809 | THEREOF 810 | THEREON 811 | THEREOVER 812 | THERETO 813 | THERETOFOR 814 | THERETOFORE 815 | THEREUNDER 816 | THEREUNTO 817 | THEREUPON 818 | THEREWITH 819 | TORT 820 | TORTIOUS 821 | TORTIOUSLY 822 | TORTS 823 | TRANSFEROR 824 | TRANSFERORS 825 | UNAPPEALABLE 826 | UNAPPEALED 827 | UNCONSTITUTIONAL 828 | UNCONSTITUTIONALITY 829 | UNCONSTITUTIONALLY 830 | UNCONTRACTED 831 | UNDEFEASED 832 | UNDISCHARGED 833 | UNENCUMBERED 834 | UNENFORCEABILITY 835 | UNENFORCEABLE 836 | UNLAWFUL 837 | UNLAWFULLY 838 | UNLAWFULNESS 839 | UNREMEDIATED 840 | UNSTAYED 841 | UNTO 842 | USURIOUS 843 | USURP 844 | USURPATION 845 | USURPED 846 | USURPING 847 | USURPS 848 | USURY 849 | VENDEE 850 | VENDEES 851 | VERDICT 852 | VERDICTS 853 | VIATICAL 854 | VIOLATIVE 855 | VOIDABLE 856 | VOIDED 857 | VOIDING 858 | WARRANTEES 859 | WARRANTOR 860 | WHATEVER 861 | WHATSOEVER 862 | WHENSOEVER 863 | WHEREABOUTS 864 | WHEREAS 865 | WHEREAT 866 | WHEREBY 867 | WHEREFORE 868 | WHEREIN 869 | WHEREOF 870 | WHEREON 871 | WHERETO 872 | WHEREUNDER 873 | WHEREUPON 874 | WHEREWITH 875 | WHISTLEBLOWERS 876 | WHOMEVER 877 | WHOMSOEVER 878 | WHOSOEVER 879 | WILFUL 880 | WILLFUL 881 | WILLFULLY 882 | WILLFULNESS 883 | WITNESS 884 | WITNESSES 885 | WRIT 886 | WRITS -------------------------------------------------------------------------------- /LoughranMcDonald_Negative.txt: -------------------------------------------------------------------------------- 1 | ABANDON 2 | ABANDONED 3 | ABANDONING 4 | ABANDONMENT 5 | ABANDONMENTS 6 | ABANDONS 7 | ABDICATED 8 | ABDICATES 9 | ABDICATING 10 | ABDICATION 11 | ABDICATIONS 12 | ABERRANT 13 | ABERRATION 14 | ABERRATIONAL 15 | ABERRATIONS 16 | ABETTING 17 | ABNORMAL 18 | ABNORMALITIES 19 | ABNORMALITY 20 | ABNORMALLY 21 | ABOLISH 22 | ABOLISHED 23 | ABOLISHES 24 | ABOLISHING 25 | ABROGATE 26 | ABROGATED 27 | ABROGATES 28 | ABROGATING 29 | ABROGATION 30 | ABROGATIONS 31 | ABRUPT 32 | ABRUPTLY 33 | ABRUPTNESS 34 | ABSENCE 35 | ABSENCES 36 | ABSENTEEISM 37 | ABUSE 38 | ABUSED 39 | ABUSES 40 | ABUSING 41 | ABUSIVE 42 | ABUSIVELY 43 | ABUSIVENESS 44 | ACCIDENT 45 | ACCIDENTAL 46 | ACCIDENTALLY 47 | ACCIDENTS 48 | ACCUSATION 49 | ACCUSATIONS 50 | ACCUSE 51 | ACCUSED 52 | ACCUSES 53 | ACCUSING 54 | ACQUIESCE 55 | ACQUIESCED 56 | ACQUIESCES 57 | ACQUIESCING 58 | ACQUIT 59 | ACQUITS 60 | ACQUITTAL 61 | ACQUITTALS 62 | ACQUITTED 63 | ACQUITTING 64 | ADULTERATE 65 | ADULTERATED 66 | ADULTERATING 67 | ADULTERATION 68 | ADULTERATIONS 69 | ADVERSARIAL 70 | ADVERSARIES 71 | ADVERSARY 72 | ADVERSE 73 | ADVERSELY 74 | ADVERSITIES 75 | ADVERSITY 76 | AFTERMATH 77 | AFTERMATHS 78 | AGAINST 79 | AGGRAVATE 80 | AGGRAVATED 81 | AGGRAVATES 82 | AGGRAVATING 83 | AGGRAVATION 84 | AGGRAVATIONS 85 | ALERTED 86 | ALERTING 87 | ALIENATE 88 | ALIENATED 89 | ALIENATES 90 | ALIENATING 91 | ALIENATION 92 | ALIENATIONS 93 | ALLEGATION 94 | ALLEGATIONS 95 | ALLEGE 96 | ALLEGED 97 | ALLEGEDLY 98 | ALLEGES 99 | ALLEGING 100 | ANNOY 101 | ANNOYANCE 102 | ANNOYANCES 103 | ANNOYED 104 | ANNOYING 105 | ANNOYS 106 | ANNUL 107 | ANNULLED 108 | ANNULLING 109 | ANNULMENT 110 | ANNULMENTS 111 | ANNULS 112 | ANOMALIES 113 | ANOMALOUS 114 | ANOMALOUSLY 115 | ANOMALY 116 | ANTICOMPETITIVE 117 | ANTITRUST 118 | ARGUE 119 | ARGUED 120 | ARGUING 121 | ARGUMENT 122 | ARGUMENTATIVE 123 | ARGUMENTS 124 | ARREARAGE 125 | ARREARAGES 126 | ARREARS 127 | ARREST 128 | ARRESTED 129 | ARRESTS 130 | ARTIFICIALLY 131 | ASSAULT 132 | ASSAULTED 133 | ASSAULTING 134 | ASSAULTS 135 | ASSERTIONS 136 | ATTRITION 137 | AVERSELY 138 | BACKDATING 139 | BAD 140 | BAIL 141 | BAILOUT 142 | BALK 143 | BALKED 144 | BANKRUPT 145 | BANKRUPTCIES 146 | BANKRUPTCY 147 | BANKRUPTED 148 | BANKRUPTING 149 | BANKRUPTS 150 | BANS 151 | BARRED 152 | BARRIER 153 | BARRIERS 154 | BOTTLENECK 155 | BOTTLENECKS 156 | BOYCOTT 157 | BOYCOTTED 158 | BOYCOTTING 159 | BOYCOTTS 160 | BREACH 161 | BREACHED 162 | BREACHES 163 | BREACHING 164 | BREAK 165 | BREAKAGE 166 | BREAKAGES 167 | BREAKDOWN 168 | BREAKDOWNS 169 | BREAKING 170 | BREAKS 171 | BRIBE 172 | BRIBED 173 | BRIBERIES 174 | BRIBERY 175 | BRIBES 176 | BRIBING 177 | BRIDGE 178 | BROKEN 179 | BURDEN 180 | BURDENED 181 | BURDENING 182 | BURDENS 183 | BURDENSOME 184 | BURNED 185 | CALAMITIES 186 | CALAMITOUS 187 | CALAMITY 188 | CANCEL 189 | CANCELED 190 | CANCELING 191 | CANCELLATION 192 | CANCELLATIONS 193 | CANCELLED 194 | CANCELLING 195 | CANCELS 196 | CARELESS 197 | CARELESSLY 198 | CARELESSNESS 199 | CATASTROPHE 200 | CATASTROPHES 201 | CATASTROPHIC 202 | CATASTROPHICALLY 203 | CAUTION 204 | CAUTIONARY 205 | CAUTIONED 206 | CAUTIONING 207 | CAUTIONS 208 | CEASE 209 | CEASED 210 | CEASES 211 | CEASING 212 | CENSURE 213 | CENSURED 214 | CENSURES 215 | CENSURING 216 | CHALLENGE 217 | CHALLENGED 218 | CHALLENGES 219 | CHALLENGING 220 | CHARGEOFFS 221 | CIRCUMVENT 222 | CIRCUMVENTED 223 | CIRCUMVENTING 224 | CIRCUMVENTION 225 | CIRCUMVENTIONS 226 | CIRCUMVENTS 227 | CLAIMING 228 | CLAIMS 229 | CLAWBACK 230 | CLOSED 231 | CLOSEOUT 232 | CLOSEOUTS 233 | CLOSING 234 | CLOSINGS 235 | CLOSURE 236 | CLOSURES 237 | COERCE 238 | COERCED 239 | COERCES 240 | COERCING 241 | COERCION 242 | COERCIVE 243 | COLLAPSE 244 | COLLAPSED 245 | COLLAPSES 246 | COLLAPSING 247 | COLLISION 248 | COLLISIONS 249 | COLLUDE 250 | COLLUDED 251 | COLLUDES 252 | COLLUDING 253 | COLLUSION 254 | COLLUSIONS 255 | COLLUSIVE 256 | COMPLAIN 257 | COMPLAINED 258 | COMPLAINING 259 | COMPLAINS 260 | COMPLAINT 261 | COMPLAINTS 262 | COMPLICATE 263 | COMPLICATED 264 | COMPLICATES 265 | COMPLICATING 266 | COMPLICATION 267 | COMPLICATIONS 268 | COMPULSION 269 | CONCEALED 270 | CONCEALING 271 | CONCEDE 272 | CONCEDED 273 | CONCEDES 274 | CONCEDING 275 | CONCERN 276 | CONCERNED 277 | CONCERNS 278 | CONCILIATING 279 | CONCILIATION 280 | CONCILIATIONS 281 | CONDEMN 282 | CONDEMNATION 283 | CONDEMNATIONS 284 | CONDEMNED 285 | CONDEMNING 286 | CONDEMNS 287 | CONDONE 288 | CONDONED 289 | CONFESS 290 | CONFESSED 291 | CONFESSES 292 | CONFESSING 293 | CONFESSION 294 | CONFINE 295 | CONFINED 296 | CONFINEMENT 297 | CONFINEMENTS 298 | CONFINES 299 | CONFINING 300 | CONFISCATE 301 | CONFISCATED 302 | CONFISCATES 303 | CONFISCATING 304 | CONFISCATION 305 | CONFISCATIONS 306 | CONFLICT 307 | CONFLICTED 308 | CONFLICTING 309 | CONFLICTS 310 | CONFRONT 311 | CONFRONTATION 312 | CONFRONTATIONAL 313 | CONFRONTATIONS 314 | CONFRONTED 315 | CONFRONTING 316 | CONFRONTS 317 | CONFUSE 318 | CONFUSED 319 | CONFUSES 320 | CONFUSING 321 | CONFUSINGLY 322 | CONFUSION 323 | CONSPIRACIES 324 | CONSPIRACY 325 | CONSPIRATOR 326 | CONSPIRATORIAL 327 | CONSPIRATORS 328 | CONSPIRE 329 | CONSPIRED 330 | CONSPIRES 331 | CONSPIRING 332 | CONTEMPT 333 | CONTEND 334 | CONTENDED 335 | CONTENDING 336 | CONTENDS 337 | CONTENTION 338 | CONTENTIONS 339 | CONTENTIOUS 340 | CONTENTIOUSLY 341 | CONTESTED 342 | CONTESTING 343 | CONTRACTION 344 | CONTRACTIONS 345 | CONTRADICT 346 | CONTRADICTED 347 | CONTRADICTING 348 | CONTRADICTION 349 | CONTRADICTIONS 350 | CONTRADICTORY 351 | CONTRADICTS 352 | CONTRARY 353 | CONTROVERSIAL 354 | CONTROVERSIES 355 | CONTROVERSY 356 | CONVICT 357 | CONVICTED 358 | CONVICTING 359 | CONVICTION 360 | CONVICTIONS 361 | CORRECTED 362 | CORRECTING 363 | CORRECTION 364 | CORRECTIONS 365 | CORRECTS 366 | CORRUPT 367 | CORRUPTED 368 | CORRUPTING 369 | CORRUPTION 370 | CORRUPTIONS 371 | CORRUPTLY 372 | CORRUPTNESS 373 | COSTLY 374 | COUNTERCLAIM 375 | COUNTERCLAIMED 376 | COUNTERCLAIMING 377 | COUNTERCLAIMS 378 | COUNTERFEIT 379 | COUNTERFEITED 380 | COUNTERFEITER 381 | COUNTERFEITERS 382 | COUNTERFEITING 383 | COUNTERFEITS 384 | COUNTERMEASURE 385 | COUNTERMEASURES 386 | CRIME 387 | CRIMES 388 | CRIMINAL 389 | CRIMINALLY 390 | CRIMINALS 391 | CRISES 392 | CRISIS 393 | CRITICAL 394 | CRITICALLY 395 | CRITICISM 396 | CRITICISMS 397 | CRITICIZE 398 | CRITICIZED 399 | CRITICIZES 400 | CRITICIZING 401 | CRUCIAL 402 | CRUCIALLY 403 | CULPABILITY 404 | CULPABLE 405 | CULPABLY 406 | CUMBERSOME 407 | CURTAIL 408 | CURTAILED 409 | CURTAILING 410 | CURTAILMENT 411 | CURTAILMENTS 412 | CURTAILS 413 | CUT 414 | CUTBACK 415 | CUTBACKS 416 | DAMAGE 417 | DAMAGED 418 | DAMAGES 419 | DAMAGING 420 | DAMPEN 421 | DAMPENED 422 | DANGER 423 | DANGEROUS 424 | DANGEROUSLY 425 | DANGERS 426 | DEADLOCK 427 | DEADLOCKED 428 | DEADLOCKING 429 | DEADLOCKS 430 | DEADWEIGHT 431 | DEADWEIGHTS 432 | DEBARMENT 433 | DEBARMENTS 434 | DEBARRED 435 | DECEASED 436 | DECEIT 437 | DECEITFUL 438 | DECEITFULNESS 439 | DECEIVE 440 | DECEIVED 441 | DECEIVES 442 | DECEIVING 443 | DECEPTION 444 | DECEPTIONS 445 | DECEPTIVE 446 | DECEPTIVELY 447 | DECLINE 448 | DECLINED 449 | DECLINES 450 | DECLINING 451 | DEFACE 452 | DEFACED 453 | DEFACEMENT 454 | DEFAMATION 455 | DEFAMATIONS 456 | DEFAMATORY 457 | DEFAME 458 | DEFAMED 459 | DEFAMES 460 | DEFAMING 461 | DEFAULT 462 | DEFAULTED 463 | DEFAULTING 464 | DEFAULTS 465 | DEFEAT 466 | DEFEATED 467 | DEFEATING 468 | DEFEATS 469 | DEFECT 470 | DEFECTIVE 471 | DEFECTS 472 | DEFEND 473 | DEFENDANT 474 | DEFENDANTS 475 | DEFENDED 476 | DEFENDING 477 | DEFENDS 478 | DEFENSIVE 479 | DEFER 480 | DEFICIENCIES 481 | DEFICIENCY 482 | DEFICIENT 483 | DEFICIT 484 | DEFICITS 485 | DEFRAUD 486 | DEFRAUDED 487 | DEFRAUDING 488 | DEFRAUDS 489 | DEFUNCT 490 | DEGRADATION 491 | DEGRADATIONS 492 | DEGRADE 493 | DEGRADED 494 | DEGRADES 495 | DEGRADING 496 | DELAY 497 | DELAYED 498 | DELAYING 499 | DELAYS 500 | DELETERIOUS 501 | DELIBERATE 502 | DELIBERATED 503 | DELIBERATELY 504 | DELINQUENCIES 505 | DELINQUENCY 506 | DELINQUENT 507 | DELINQUENTLY 508 | DELINQUENTS 509 | DELIST 510 | DELISTED 511 | DELISTING 512 | DELISTS 513 | DEMISE 514 | DEMISED 515 | DEMISES 516 | DEMISING 517 | DEMOLISH 518 | DEMOLISHED 519 | DEMOLISHES 520 | DEMOLISHING 521 | DEMOLITION 522 | DEMOLITIONS 523 | DEMOTE 524 | DEMOTED 525 | DEMOTES 526 | DEMOTING 527 | DEMOTION 528 | DEMOTIONS 529 | DENIAL 530 | DENIALS 531 | DENIED 532 | DENIES 533 | DENIGRATE 534 | DENIGRATED 535 | DENIGRATES 536 | DENIGRATING 537 | DENIGRATION 538 | DENY 539 | DENYING 540 | DEPLETE 541 | DEPLETED 542 | DEPLETES 543 | DEPLETING 544 | DEPLETION 545 | DEPLETIONS 546 | DEPRECATION 547 | DEPRESS 548 | DEPRESSED 549 | DEPRESSES 550 | DEPRESSING 551 | DEPRIVATION 552 | DEPRIVE 553 | DEPRIVED 554 | DEPRIVES 555 | DEPRIVING 556 | DERELICT 557 | DERELICTION 558 | DEROGATORY 559 | DESTABILIZATION 560 | DESTABILIZE 561 | DESTABILIZED 562 | DESTABILIZING 563 | DESTROY 564 | DESTROYED 565 | DESTROYING 566 | DESTROYS 567 | DESTRUCTION 568 | DESTRUCTIVE 569 | DETAIN 570 | DETAINED 571 | DETENTION 572 | DETENTIONS 573 | DETER 574 | DETERIORATE 575 | DETERIORATED 576 | DETERIORATES 577 | DETERIORATING 578 | DETERIORATION 579 | DETERIORATIONS 580 | DETERRED 581 | DETERRENCE 582 | DETERRENCES 583 | DETERRENT 584 | DETERRENTS 585 | DETERRING 586 | DETERS 587 | DETRACT 588 | DETRACTED 589 | DETRACTING 590 | DETRIMENT 591 | DETRIMENTAL 592 | DETRIMENTALLY 593 | DETRIMENTS 594 | DEVALUE 595 | DEVALUED 596 | DEVALUES 597 | DEVALUING 598 | DEVASTATE 599 | DEVASTATED 600 | DEVASTATING 601 | DEVASTATION 602 | DEVIATE 603 | DEVIATED 604 | DEVIATES 605 | DEVIATING 606 | DEVIATION 607 | DEVIATIONS 608 | DEVOLVE 609 | DEVOLVED 610 | DEVOLVES 611 | DEVOLVING 612 | DIFFICULT 613 | DIFFICULTIES 614 | DIFFICULTLY 615 | DIFFICULTY 616 | DIMINISH 617 | DIMINISHED 618 | DIMINISHES 619 | DIMINISHING 620 | DIMINUTION 621 | DISADVANTAGE 622 | DISADVANTAGED 623 | DISADVANTAGEOUS 624 | DISADVANTAGES 625 | DISAFFILIATION 626 | DISAGREE 627 | DISAGREEABLE 628 | DISAGREED 629 | DISAGREEING 630 | DISAGREEMENT 631 | DISAGREEMENTS 632 | DISAGREES 633 | DISALLOW 634 | DISALLOWANCE 635 | DISALLOWANCES 636 | DISALLOWED 637 | DISALLOWING 638 | DISALLOWS 639 | DISAPPEAR 640 | DISAPPEARANCE 641 | DISAPPEARANCES 642 | DISAPPEARED 643 | DISAPPEARING 644 | DISAPPEARS 645 | DISAPPOINT 646 | DISAPPOINTED 647 | DISAPPOINTING 648 | DISAPPOINTINGLY 649 | DISAPPOINTMENT 650 | DISAPPOINTMENTS 651 | DISAPPOINTS 652 | DISAPPROVAL 653 | DISAPPROVALS 654 | DISAPPROVE 655 | DISAPPROVED 656 | DISAPPROVES 657 | DISAPPROVING 658 | DISASSOCIATES 659 | DISASSOCIATING 660 | DISASSOCIATION 661 | DISASSOCIATIONS 662 | DISASTER 663 | DISASTERS 664 | DISASTROUS 665 | DISASTROUSLY 666 | DISAVOW 667 | DISAVOWAL 668 | DISAVOWED 669 | DISAVOWING 670 | DISAVOWS 671 | DISCIPLINARY 672 | DISCLAIM 673 | DISCLAIMED 674 | DISCLAIMER 675 | DISCLAIMERS 676 | DISCLAIMING 677 | DISCLAIMS 678 | DISCLOSE 679 | DISCLOSED 680 | DISCLOSES 681 | DISCLOSING 682 | DISCONTINUANCE 683 | DISCONTINUANCES 684 | DISCONTINUATION 685 | DISCONTINUATIONS 686 | DISCONTINUE 687 | DISCONTINUED 688 | DISCONTINUES 689 | DISCONTINUING 690 | DISCOURAGE 691 | DISCOURAGED 692 | DISCOURAGES 693 | DISCOURAGING 694 | DISCREDIT 695 | DISCREDITED 696 | DISCREDITING 697 | DISCREDITS 698 | DISCREPANCIES 699 | DISCREPANCY 700 | DISFAVOR 701 | DISFAVORED 702 | DISFAVORING 703 | DISFAVORS 704 | DISGORGE 705 | DISGORGED 706 | DISGORGEMENT 707 | DISGORGEMENTS 708 | DISGORGES 709 | DISGORGING 710 | DISGRACE 711 | DISGRACEFUL 712 | DISGRACEFULLY 713 | DISHONEST 714 | DISHONESTLY 715 | DISHONESTY 716 | DISHONOR 717 | DISHONORABLE 718 | DISHONORABLY 719 | DISHONORED 720 | DISHONORING 721 | DISHONORS 722 | DISINCENTIVES 723 | DISINTERESTED 724 | DISINTERESTEDLY 725 | DISINTERESTEDNESS 726 | DISLOYAL 727 | DISLOYALLY 728 | DISLOYALTY 729 | DISMAL 730 | DISMALLY 731 | DISMISS 732 | DISMISSAL 733 | DISMISSALS 734 | DISMISSED 735 | DISMISSES 736 | DISMISSING 737 | DISORDERLY 738 | DISPARAGE 739 | DISPARAGED 740 | DISPARAGEMENT 741 | DISPARAGEMENTS 742 | DISPARAGES 743 | DISPARAGING 744 | DISPARAGINGLY 745 | DISPARITIES 746 | DISPARITY 747 | DISPLACE 748 | DISPLACED 749 | DISPLACEMENT 750 | DISPLACEMENTS 751 | DISPLACES 752 | DISPLACING 753 | DISPOSE 754 | DISPOSSESS 755 | DISPOSSESSED 756 | DISPOSSESSES 757 | DISPOSSESSING 758 | DISPROPORTION 759 | DISPROPORTIONAL 760 | DISPROPORTIONATE 761 | DISPROPORTIONATELY 762 | DISPUTE 763 | DISPUTED 764 | DISPUTES 765 | DISPUTING 766 | DISQUALIFICATION 767 | DISQUALIFICATIONS 768 | DISQUALIFIED 769 | DISQUALIFIES 770 | DISQUALIFY 771 | DISQUALIFYING 772 | DISREGARD 773 | DISREGARDED 774 | DISREGARDING 775 | DISREGARDS 776 | DISREPUTABLE 777 | DISREPUTE 778 | DISRUPT 779 | DISRUPTED 780 | DISRUPTING 781 | DISRUPTION 782 | DISRUPTIONS 783 | DISRUPTIVE 784 | DISRUPTS 785 | DISSATISFACTION 786 | DISSATISFIED 787 | DISSENT 788 | DISSENTED 789 | DISSENTER 790 | DISSENTERS 791 | DISSENTING 792 | DISSENTS 793 | DISSIDENT 794 | DISSIDENTS 795 | DISSOLUTION 796 | DISSOLUTIONS 797 | DISTORT 798 | DISTORTED 799 | DISTORTING 800 | DISTORTION 801 | DISTORTIONS 802 | DISTORTS 803 | DISTRACT 804 | DISTRACTED 805 | DISTRACTING 806 | DISTRACTION 807 | DISTRACTIONS 808 | DISTRACTS 809 | DISTRESS 810 | DISTRESSED 811 | DISTURB 812 | DISTURBANCE 813 | DISTURBANCES 814 | DISTURBED 815 | DISTURBING 816 | DISTURBS 817 | DIVERSION 818 | DIVERT 819 | DIVERTED 820 | DIVERTING 821 | DIVERTS 822 | DIVEST 823 | DIVESTED 824 | DIVESTING 825 | DIVESTITURE 826 | DIVESTITURES 827 | DIVESTMENT 828 | DIVESTMENTS 829 | DIVESTS 830 | DIVORCE 831 | DIVORCED 832 | DIVULGE 833 | DIVULGED 834 | DIVULGES 835 | DIVULGING 836 | DOUBT 837 | DOUBTED 838 | DOUBTFUL 839 | DOUBTS 840 | DOWNGRADE 841 | DOWNGRADED 842 | DOWNGRADES 843 | DOWNGRADING 844 | DOWNSIZE 845 | DOWNSIZED 846 | DOWNSIZES 847 | DOWNSIZING 848 | DOWNSIZINGS 849 | DOWNTIME 850 | DOWNTIMES 851 | DOWNTURN 852 | DOWNTURNS 853 | DOWNWARD 854 | DOWNWARDS 855 | DRAG 856 | DRASTIC 857 | DRASTICALLY 858 | DRAWBACK 859 | DRAWBACKS 860 | DROPPED 861 | DROUGHT 862 | DROUGHTS 863 | DURESS 864 | DYSFUNCTION 865 | DYSFUNCTIONAL 866 | DYSFUNCTIONS 867 | EASING 868 | EGREGIOUS 869 | EGREGIOUSLY 870 | EMBARGO 871 | EMBARGOED 872 | EMBARGOES 873 | EMBARGOING 874 | EMBARRASS 875 | EMBARRASSED 876 | EMBARRASSES 877 | EMBARRASSING 878 | EMBARRASSMENT 879 | EMBARRASSMENTS 880 | EMBEZZLE 881 | EMBEZZLED 882 | EMBEZZLEMENT 883 | EMBEZZLEMENTS 884 | EMBEZZLER 885 | EMBEZZLES 886 | EMBEZZLING 887 | ENCROACH 888 | ENCROACHED 889 | ENCROACHES 890 | ENCROACHING 891 | ENCROACHMENT 892 | ENCROACHMENTS 893 | ENCUMBER 894 | ENCUMBERED 895 | ENCUMBERING 896 | ENCUMBERS 897 | ENCUMBRANCE 898 | ENCUMBRANCES 899 | ENDANGER 900 | ENDANGERED 901 | ENDANGERING 902 | ENDANGERMENT 903 | ENDANGERS 904 | ENJOIN 905 | ENJOINED 906 | ENJOINING 907 | ENJOINS 908 | ERODE 909 | ERODED 910 | ERODES 911 | ERODING 912 | EROSION 913 | ERRATIC 914 | ERRATICALLY 915 | ERRED 916 | ERRING 917 | ERRONEOUS 918 | ERRONEOUSLY 919 | ERROR 920 | ERRORS 921 | ERRS 922 | ESCALATE 923 | ESCALATED 924 | ESCALATES 925 | ESCALATING 926 | EVADE 927 | EVADED 928 | EVADES 929 | EVADING 930 | EVASION 931 | EVASIONS 932 | EVASIVE 933 | EVICT 934 | EVICTED 935 | EVICTING 936 | EVICTION 937 | EVICTIONS 938 | EVICTS 939 | EXACERBATE 940 | EXACERBATED 941 | EXACERBATES 942 | EXACERBATING 943 | EXACERBATION 944 | EXACERBATIONS 945 | EXAGGERATE 946 | EXAGGERATED 947 | EXAGGERATES 948 | EXAGGERATING 949 | EXAGGERATION 950 | EXCESSIVE 951 | EXCESSIVELY 952 | EXCULPATE 953 | EXCULPATED 954 | EXCULPATES 955 | EXCULPATING 956 | EXCULPATION 957 | EXCULPATIONS 958 | EXCULPATORY 959 | EXONERATE 960 | EXONERATED 961 | EXONERATES 962 | EXONERATING 963 | EXONERATION 964 | EXONERATIONS 965 | EXPLOIT 966 | EXPLOITATION 967 | EXPLOITATIONS 968 | EXPLOITATIVE 969 | EXPLOITED 970 | EXPLOITING 971 | EXPLOITS 972 | EXPOSE 973 | EXPOSED 974 | EXPOSES 975 | EXPOSING 976 | EXPROPRIATE 977 | EXPROPRIATED 978 | EXPROPRIATES 979 | EXPROPRIATING 980 | EXPROPRIATION 981 | EXPROPRIATIONS 982 | EXPULSION 983 | EXPULSIONS 984 | EXTENUATING 985 | FAIL 986 | FAILED 987 | FAILING 988 | FAILINGS 989 | FAILS 990 | FAILURE 991 | FAILURES 992 | FALLOUT 993 | FALSE 994 | FALSELY 995 | FALSIFICATION 996 | FALSIFICATIONS 997 | FALSIFIED 998 | FALSIFIES 999 | FALSIFY 1000 | FALSIFYING 1001 | FALSITY 1002 | FATALITIES 1003 | FATALITY 1004 | FATALLY 1005 | FAULT 1006 | FAULTED 1007 | FAULTS 1008 | FAULTY 1009 | FEAR 1010 | FEARS 1011 | FELONIES 1012 | FELONIOUS 1013 | FELONY 1014 | FICTITIOUS 1015 | FINED 1016 | FINES 1017 | FIRED 1018 | FIRING 1019 | FLAW 1020 | FLAWED 1021 | FLAWS 1022 | FORBID 1023 | FORBIDDEN 1024 | FORBIDDING 1025 | FORBIDS 1026 | FORCE 1027 | FORCED 1028 | FORCING 1029 | FORECLOSE 1030 | FORECLOSED 1031 | FORECLOSES 1032 | FORECLOSING 1033 | FORECLOSURE 1034 | FORECLOSURES 1035 | FOREGO 1036 | FOREGOES 1037 | FOREGONE 1038 | FORESTALL 1039 | FORESTALLED 1040 | FORESTALLING 1041 | FORESTALLS 1042 | FORFEIT 1043 | FORFEITED 1044 | FORFEITING 1045 | FORFEITS 1046 | FORFEITURE 1047 | FORFEITURES 1048 | FORGERS 1049 | FORGERY 1050 | FRAUD 1051 | FRAUDS 1052 | FRAUDULENCE 1053 | FRAUDULENT 1054 | FRAUDULENTLY 1055 | FRIVOLOUS 1056 | FRIVOLOUSLY 1057 | FRUSTRATE 1058 | FRUSTRATED 1059 | FRUSTRATES 1060 | FRUSTRATING 1061 | FRUSTRATINGLY 1062 | FRUSTRATION 1063 | FRUSTRATIONS 1064 | FUGITIVE 1065 | FUGITIVES 1066 | GRATUITOUS 1067 | GRATUITOUSLY 1068 | GRIEVANCE 1069 | GRIEVANCES 1070 | GROSSLY 1071 | GROUNDLESS 1072 | GUILTY 1073 | HALT 1074 | HALTED 1075 | HAMPER 1076 | HAMPERED 1077 | HAMPERING 1078 | HAMPERS 1079 | HARASS 1080 | HARASSED 1081 | HARASSING 1082 | HARASSMENT 1083 | HARDSHIP 1084 | HARDSHIPS 1085 | HARM 1086 | HARMED 1087 | HARMFUL 1088 | HARMFULLY 1089 | HARMING 1090 | HARMS 1091 | HARSH 1092 | HARSHER 1093 | HARSHEST 1094 | HARSHLY 1095 | HARSHNESS 1096 | HAZARD 1097 | HAZARDOUS 1098 | HAZARDS 1099 | HINDER 1100 | HINDERED 1101 | HINDERING 1102 | HINDERS 1103 | HINDRANCE 1104 | HINDRANCES 1105 | HOSTILE 1106 | HOSTILITY 1107 | HURT 1108 | HURTING 1109 | IDLE 1110 | IDLED 1111 | IDLING 1112 | IGNORE 1113 | IGNORED 1114 | IGNORES 1115 | IGNORING 1116 | ILL 1117 | ILLEGAL 1118 | ILLEGALITIES 1119 | ILLEGALITY 1120 | ILLEGALLY 1121 | ILLEGIBLE 1122 | ILLICIT 1123 | ILLICITLY 1124 | ILLIQUID 1125 | ILLIQUIDITY 1126 | IMBALANCE 1127 | IMBALANCES 1128 | IMMATURE 1129 | IMMORAL 1130 | IMPAIR 1131 | IMPAIRED 1132 | IMPAIRING 1133 | IMPAIRMENT 1134 | IMPAIRMENTS 1135 | IMPAIRS 1136 | IMPASSE 1137 | IMPASSES 1138 | IMPEDE 1139 | IMPEDED 1140 | IMPEDES 1141 | IMPEDIMENT 1142 | IMPEDIMENTS 1143 | IMPEDING 1144 | IMPENDING 1145 | IMPERATIVE 1146 | IMPERFECTION 1147 | IMPERFECTIONS 1148 | IMPERIL 1149 | IMPERMISSIBLE 1150 | IMPLICATE 1151 | IMPLICATED 1152 | IMPLICATES 1153 | IMPLICATING 1154 | IMPOSSIBILITY 1155 | IMPOSSIBLE 1156 | IMPOUND 1157 | IMPOUNDED 1158 | IMPOUNDING 1159 | IMPOUNDS 1160 | IMPRACTICABLE 1161 | IMPRACTICAL 1162 | IMPRACTICALITIES 1163 | IMPRACTICALITY 1164 | IMPRISONMENT 1165 | IMPROPER 1166 | IMPROPERLY 1167 | IMPROPRIETIES 1168 | IMPROPRIETY 1169 | IMPRUDENT 1170 | IMPRUDENTLY 1171 | INABILITY 1172 | INACCESSIBLE 1173 | INACCURACIES 1174 | INACCURACY 1175 | INACCURATE 1176 | INACCURATELY 1177 | INACTION 1178 | INACTIONS 1179 | INACTIVATE 1180 | INACTIVATED 1181 | INACTIVATES 1182 | INACTIVATING 1183 | INACTIVATION 1184 | INACTIVATIONS 1185 | INACTIVITY 1186 | INADEQUACIES 1187 | INADEQUACY 1188 | INADEQUATE 1189 | INADEQUATELY 1190 | INADVERTENT 1191 | INADVERTENTLY 1192 | INADVISABILITY 1193 | INADVISABLE 1194 | INAPPROPRIATE 1195 | INAPPROPRIATELY 1196 | INATTENTION 1197 | INCAPABLE 1198 | INCAPACITATED 1199 | INCAPACITY 1200 | INCARCERATE 1201 | INCARCERATED 1202 | INCARCERATES 1203 | INCARCERATING 1204 | INCARCERATION 1205 | INCARCERATIONS 1206 | INCIDENCE 1207 | INCIDENCES 1208 | INCIDENT 1209 | INCIDENTS 1210 | INCOMPATIBILITIES 1211 | INCOMPATIBILITY 1212 | INCOMPATIBLE 1213 | INCOMPETENCE 1214 | INCOMPETENCY 1215 | INCOMPETENT 1216 | INCOMPETENTLY 1217 | INCOMPETENTS 1218 | INCOMPLETE 1219 | INCOMPLETELY 1220 | INCOMPLETENESS 1221 | INCONCLUSIVE 1222 | INCONSISTENCIES 1223 | INCONSISTENCY 1224 | INCONSISTENT 1225 | INCONSISTENTLY 1226 | INCONVENIENCE 1227 | INCONVENIENCES 1228 | INCONVENIENT 1229 | INCORRECT 1230 | INCORRECTLY 1231 | INCORRECTNESS 1232 | INDECENCY 1233 | INDECENT 1234 | INDEFEASIBLE 1235 | INDEFEASIBLY 1236 | INDICT 1237 | INDICTABLE 1238 | INDICTED 1239 | INDICTING 1240 | INDICTMENT 1241 | INDICTMENTS 1242 | INEFFECTIVE 1243 | INEFFECTIVELY 1244 | INEFFECTIVENESS 1245 | INEFFICIENCIES 1246 | INEFFICIENCY 1247 | INEFFICIENT 1248 | INEFFICIENTLY 1249 | INELIGIBILITY 1250 | INELIGIBLE 1251 | INEQUITABLE 1252 | INEQUITABLY 1253 | INEQUITIES 1254 | INEQUITY 1255 | INEVITABLE 1256 | INEXPERIENCE 1257 | INEXPERIENCED 1258 | INFERIOR 1259 | INFLICTED 1260 | INFRACTION 1261 | INFRACTIONS 1262 | INFRINGE 1263 | INFRINGED 1264 | INFRINGEMENT 1265 | INFRINGEMENTS 1266 | INFRINGES 1267 | INFRINGING 1268 | INHIBITED 1269 | INIMICAL 1270 | INJUNCTION 1271 | INJUNCTIONS 1272 | INJURE 1273 | INJURED 1274 | INJURES 1275 | INJURIES 1276 | INJURING 1277 | INJURIOUS 1278 | INJURY 1279 | INORDINATE 1280 | INORDINATELY 1281 | INQUIRY 1282 | INSECURE 1283 | INSENSITIVE 1284 | INSOLVENCIES 1285 | INSOLVENCY 1286 | INSOLVENT 1287 | INSTABILITY 1288 | INSUBORDINATION 1289 | INSUFFICIENCY 1290 | INSUFFICIENT 1291 | INSUFFICIENTLY 1292 | INSURRECTION 1293 | INSURRECTIONS 1294 | INTENTIONAL 1295 | INTERFERE 1296 | INTERFERED 1297 | INTERFERENCE 1298 | INTERFERENCES 1299 | INTERFERES 1300 | INTERFERING 1301 | INTERMITTENT 1302 | INTERMITTENTLY 1303 | INTERRUPT 1304 | INTERRUPTED 1305 | INTERRUPTING 1306 | INTERRUPTION 1307 | INTERRUPTIONS 1308 | INTERRUPTS 1309 | INTIMIDATION 1310 | INTRUSION 1311 | INVALID 1312 | INVALIDATE 1313 | INVALIDATED 1314 | INVALIDATES 1315 | INVALIDATING 1316 | INVALIDATION 1317 | INVALIDITY 1318 | INVESTIGATE 1319 | INVESTIGATED 1320 | INVESTIGATES 1321 | INVESTIGATING 1322 | INVESTIGATION 1323 | INVESTIGATIONS 1324 | INVOLUNTARILY 1325 | INVOLUNTARY 1326 | IRRECONCILABLE 1327 | IRRECONCILABLY 1328 | IRRECOVERABLE 1329 | IRRECOVERABLY 1330 | IRREGULAR 1331 | IRREGULARITIES 1332 | IRREGULARITY 1333 | IRREGULARLY 1334 | IRREPARABLE 1335 | IRREPARABLY 1336 | IRREVERSIBLE 1337 | JEOPARDIZE 1338 | JEOPARDIZED 1339 | JUSTIFIABLE 1340 | KICKBACK 1341 | KICKBACKS 1342 | KNOWINGLY 1343 | LACK 1344 | LACKED 1345 | LACKING 1346 | LACKLUSTER 1347 | LACKS 1348 | LAG 1349 | LAGGED 1350 | LAGGING 1351 | LAGS 1352 | LAPSE 1353 | LAPSED 1354 | LAPSES 1355 | LAPSING 1356 | LATE 1357 | LAUNDERING 1358 | LAYOFF 1359 | LAYOFFS 1360 | LIE 1361 | LIMITATION 1362 | LIMITATIONS 1363 | LINGERING 1364 | LIQUIDATE 1365 | LIQUIDATED 1366 | LIQUIDATES 1367 | LIQUIDATING 1368 | LIQUIDATION 1369 | LIQUIDATIONS 1370 | LIQUIDATOR 1371 | LIQUIDATORS 1372 | LITIGANT 1373 | LITIGANTS 1374 | LITIGATE 1375 | LITIGATED 1376 | LITIGATES 1377 | LITIGATING 1378 | LITIGATION 1379 | LITIGATIONS 1380 | LOCKOUT 1381 | LOCKOUTS 1382 | LOSE 1383 | LOSES 1384 | LOSING 1385 | LOSS 1386 | LOSSES 1387 | LOST 1388 | LYING 1389 | MALFEASANCE 1390 | MALFUNCTION 1391 | MALFUNCTIONED 1392 | MALFUNCTIONING 1393 | MALFUNCTIONS 1394 | MALICE 1395 | MALICIOUS 1396 | MALICIOUSLY 1397 | MALPRACTICE 1398 | MANIPULATE 1399 | MANIPULATED 1400 | MANIPULATES 1401 | MANIPULATING 1402 | MANIPULATION 1403 | MANIPULATIONS 1404 | MANIPULATIVE 1405 | MARKDOWN 1406 | MARKDOWNS 1407 | MISAPPLICATION 1408 | MISAPPLICATIONS 1409 | MISAPPLIED 1410 | MISAPPLIES 1411 | MISAPPLY 1412 | MISAPPLYING 1413 | MISAPPROPRIATE 1414 | MISAPPROPRIATED 1415 | MISAPPROPRIATES 1416 | MISAPPROPRIATING 1417 | MISAPPROPRIATION 1418 | MISAPPROPRIATIONS 1419 | MISBRANDED 1420 | MISCALCULATE 1421 | MISCALCULATED 1422 | MISCALCULATES 1423 | MISCALCULATING 1424 | MISCALCULATION 1425 | MISCALCULATIONS 1426 | MISCHIEF 1427 | MISCLASSIFICATION 1428 | MISCLASSIFIED 1429 | MISCONDUCT 1430 | MISDATED 1431 | MISDEMEANOR 1432 | MISDEMEANORS 1433 | MISDIRECTED 1434 | MISHANDLE 1435 | MISHANDLED 1436 | MISHANDLES 1437 | MISHANDLING 1438 | MISINFORM 1439 | MISINFORMATION 1440 | MISINFORMED 1441 | MISINFORMING 1442 | MISINFORMS 1443 | MISINTERPRET 1444 | MISINTERPRETATION 1445 | MISINTERPRETATIONS 1446 | MISINTERPRETED 1447 | MISINTERPRETING 1448 | MISINTERPRETS 1449 | MISJUDGE 1450 | MISJUDGED 1451 | MISJUDGES 1452 | MISJUDGING 1453 | MISJUDGMENT 1454 | MISJUDGMENTS 1455 | MISLABEL 1456 | MISLABELED 1457 | MISLABELING 1458 | MISLABELLED 1459 | MISLABELS 1460 | MISLEAD 1461 | MISLEADING 1462 | MISLEADINGLY 1463 | MISLEADS 1464 | MISLED 1465 | MISMANAGE 1466 | MISMANAGED 1467 | MISMANAGEMENT 1468 | MISMANAGES 1469 | MISMANAGING 1470 | MISMATCH 1471 | MISMATCHED 1472 | MISMATCHES 1473 | MISMATCHING 1474 | MISPLACED 1475 | MISREPRESENT 1476 | MISREPRESENTATION 1477 | MISREPRESENTATIONS 1478 | MISREPRESENTED 1479 | MISREPRESENTING 1480 | MISREPRESENTS 1481 | MISS 1482 | MISSED 1483 | MISSES 1484 | MISSTATE 1485 | MISSTATED 1486 | MISSTATEMENT 1487 | MISSTATEMENTS 1488 | MISSTATES 1489 | MISSTATING 1490 | MISSTEP 1491 | MISSTEPS 1492 | MISTAKE 1493 | MISTAKEN 1494 | MISTAKENLY 1495 | MISTAKES 1496 | MISTAKING 1497 | MISTRIAL 1498 | MISTRIALS 1499 | MISUNDERSTAND 1500 | MISUNDERSTANDING 1501 | MISUNDERSTANDINGS 1502 | MISUNDERSTOOD 1503 | MISUSE 1504 | MISUSED 1505 | MISUSES 1506 | MISUSING 1507 | MONOPOLISTIC 1508 | MONOPOLISTS 1509 | MONOPOLIZATION 1510 | MONOPOLIZE 1511 | MONOPOLIZED 1512 | MONOPOLIZES 1513 | MONOPOLIZING 1514 | MONOPOLY 1515 | MORATORIA 1516 | MORATORIUM 1517 | MORATORIUMS 1518 | MOTHBALLED 1519 | MOTHBALLING 1520 | NEGATIVE 1521 | NEGATIVELY 1522 | NEGATIVES 1523 | NEGLECT 1524 | NEGLECTED 1525 | NEGLECTFUL 1526 | NEGLECTING 1527 | NEGLECTS 1528 | NEGLIGENCE 1529 | NEGLIGENCES 1530 | NEGLIGENT 1531 | NEGLIGENTLY 1532 | NONATTAINMENT 1533 | NONCOMPETITIVE 1534 | NONCOMPLIANCE 1535 | NONCOMPLIANCES 1536 | NONCOMPLIANT 1537 | NONCOMPLYING 1538 | NONCONFORMING 1539 | NONCONFORMITIES 1540 | NONCONFORMITY 1541 | NONDISCLOSURE 1542 | NONFUNCTIONAL 1543 | NONPAYMENT 1544 | NONPAYMENTS 1545 | NONPERFORMANCE 1546 | NONPERFORMANCES 1547 | NONPERFORMING 1548 | NONPRODUCING 1549 | NONPRODUCTIVE 1550 | NONRECOVERABLE 1551 | NONRENEWAL 1552 | NUISANCE 1553 | NUISANCES 1554 | NULLIFICATION 1555 | NULLIFICATIONS 1556 | NULLIFIED 1557 | NULLIFIES 1558 | NULLIFY 1559 | NULLIFYING 1560 | OBJECTED 1561 | OBJECTING 1562 | OBJECTION 1563 | OBJECTIONABLE 1564 | OBJECTIONABLY 1565 | OBJECTIONS 1566 | OBSCENE 1567 | OBSCENITY 1568 | OBSOLESCENCE 1569 | OBSOLETE 1570 | OBSTACLE 1571 | OBSTACLES 1572 | OBSTRUCT 1573 | OBSTRUCTED 1574 | OBSTRUCTING 1575 | OBSTRUCTION 1576 | OBSTRUCTIONS 1577 | OFFENCE 1578 | OFFENCES 1579 | OFFEND 1580 | OFFENDED 1581 | OFFENDER 1582 | OFFENDERS 1583 | OFFENDING 1584 | OFFENDS 1585 | OMISSION 1586 | OMISSIONS 1587 | OMIT 1588 | OMITS 1589 | OMITTED 1590 | OMITTING 1591 | ONEROUS 1592 | OPPORTUNISTIC 1593 | OPPORTUNISTICALLY 1594 | OPPOSE 1595 | OPPOSED 1596 | OPPOSES 1597 | OPPOSING 1598 | OPPOSITION 1599 | OPPOSITIONS 1600 | OUTAGE 1601 | OUTAGES 1602 | OUTDATED 1603 | OUTMODED 1604 | OVERAGE 1605 | OVERAGES 1606 | OVERBUILD 1607 | OVERBUILDING 1608 | OVERBUILDS 1609 | OVERBUILT 1610 | OVERBURDEN 1611 | OVERBURDENED 1612 | OVERBURDENING 1613 | OVERCAPACITIES 1614 | OVERCAPACITY 1615 | OVERCHARGE 1616 | OVERCHARGED 1617 | OVERCHARGES 1618 | OVERCHARGING 1619 | OVERCOME 1620 | OVERCOMES 1621 | OVERCOMING 1622 | OVERDUE 1623 | OVERESTIMATE 1624 | OVERESTIMATED 1625 | OVERESTIMATES 1626 | OVERESTIMATING 1627 | OVERESTIMATION 1628 | OVERESTIMATIONS 1629 | OVERLOAD 1630 | OVERLOADED 1631 | OVERLOADING 1632 | OVERLOADS 1633 | OVERLOOK 1634 | OVERLOOKED 1635 | OVERLOOKING 1636 | OVERLOOKS 1637 | OVERPAID 1638 | OVERPAYMENT 1639 | OVERPAYMENTS 1640 | OVERPRODUCED 1641 | OVERPRODUCES 1642 | OVERPRODUCING 1643 | OVERPRODUCTION 1644 | OVERRUN 1645 | OVERRUNNING 1646 | OVERRUNS 1647 | OVERSHADOW 1648 | OVERSHADOWED 1649 | OVERSHADOWING 1650 | OVERSHADOWS 1651 | OVERSTATE 1652 | OVERSTATED 1653 | OVERSTATEMENT 1654 | OVERSTATEMENTS 1655 | OVERSTATES 1656 | OVERSTATING 1657 | OVERSUPPLIED 1658 | OVERSUPPLIES 1659 | OVERSUPPLY 1660 | OVERSUPPLYING 1661 | OVERTLY 1662 | OVERTURN 1663 | OVERTURNED 1664 | OVERTURNING 1665 | OVERTURNS 1666 | OVERVALUE 1667 | OVERVALUED 1668 | OVERVALUING 1669 | PANIC 1670 | PANICS 1671 | PENALIZE 1672 | PENALIZED 1673 | PENALIZES 1674 | PENALIZING 1675 | PENALTIES 1676 | PENALTY 1677 | PERIL 1678 | PERILS 1679 | PERJURY 1680 | PERPETRATE 1681 | PERPETRATED 1682 | PERPETRATES 1683 | PERPETRATING 1684 | PERPETRATION 1685 | PERSIST 1686 | PERSISTED 1687 | PERSISTENCE 1688 | PERSISTENT 1689 | PERSISTENTLY 1690 | PERSISTING 1691 | PERSISTS 1692 | PERVASIVE 1693 | PERVASIVELY 1694 | PERVASIVENESS 1695 | PETTY 1696 | PICKET 1697 | PICKETED 1698 | PICKETING 1699 | PLAINTIFF 1700 | PLAINTIFFS 1701 | PLEA 1702 | PLEAD 1703 | PLEADED 1704 | PLEADING 1705 | PLEADINGS 1706 | PLEADS 1707 | PLEAS 1708 | PLED 1709 | POOR 1710 | POORLY 1711 | POSES 1712 | POSING 1713 | POSTPONE 1714 | POSTPONED 1715 | POSTPONEMENT 1716 | POSTPONEMENTS 1717 | POSTPONES 1718 | POSTPONING 1719 | PRECIPITATED 1720 | PRECIPITOUS 1721 | PRECIPITOUSLY 1722 | PRECLUDE 1723 | PRECLUDED 1724 | PRECLUDES 1725 | PRECLUDING 1726 | PREDATORY 1727 | PREJUDICE 1728 | PREJUDICED 1729 | PREJUDICES 1730 | PREJUDICIAL 1731 | PREJUDICING 1732 | PREMATURE 1733 | PREMATURELY 1734 | PRESSING 1735 | PRETRIAL 1736 | PREVENTING 1737 | PREVENTION 1738 | PREVENTS 1739 | PROBLEM 1740 | PROBLEMATIC 1741 | PROBLEMATICAL 1742 | PROBLEMS 1743 | PROLONG 1744 | PROLONGATION 1745 | PROLONGATIONS 1746 | PROLONGED 1747 | PROLONGING 1748 | PROLONGS 1749 | PRONE 1750 | PROSECUTE 1751 | PROSECUTED 1752 | PROSECUTES 1753 | PROSECUTING 1754 | PROSECUTION 1755 | PROSECUTIONS 1756 | PROTEST 1757 | PROTESTED 1758 | PROTESTER 1759 | PROTESTERS 1760 | PROTESTING 1761 | PROTESTOR 1762 | PROTESTORS 1763 | PROTESTS 1764 | PROTRACTED 1765 | PROTRACTION 1766 | PROVOKE 1767 | PROVOKED 1768 | PROVOKES 1769 | PROVOKING 1770 | PUNISHED 1771 | PUNISHES 1772 | PUNISHING 1773 | PUNISHMENT 1774 | PUNISHMENTS 1775 | PUNITIVE 1776 | PURPORT 1777 | PURPORTED 1778 | PURPORTEDLY 1779 | PURPORTING 1780 | PURPORTS 1781 | QUESTION 1782 | QUESTIONABLE 1783 | QUESTIONABLY 1784 | QUESTIONED 1785 | QUESTIONING 1786 | QUESTIONS 1787 | QUIT 1788 | QUITTING 1789 | RACKETEER 1790 | RACKETEERING 1791 | RATIONALIZATION 1792 | RATIONALIZATIONS 1793 | RATIONALIZE 1794 | RATIONALIZED 1795 | RATIONALIZES 1796 | RATIONALIZING 1797 | REASSESSMENT 1798 | REASSESSMENTS 1799 | REASSIGN 1800 | REASSIGNED 1801 | REASSIGNING 1802 | REASSIGNMENT 1803 | REASSIGNMENTS 1804 | REASSIGNS 1805 | RECALL 1806 | RECALLED 1807 | RECALLING 1808 | RECALLS 1809 | RECESSION 1810 | RECESSIONARY 1811 | RECESSIONS 1812 | RECKLESS 1813 | RECKLESSLY 1814 | RECKLESSNESS 1815 | REDACT 1816 | REDACTED 1817 | REDACTING 1818 | REDACTION 1819 | REDACTIONS 1820 | REDEFAULTED 1821 | REDRESS 1822 | REDRESSED 1823 | REDRESSES 1824 | REDRESSING 1825 | REFUSAL 1826 | REFUSALS 1827 | REFUSE 1828 | REFUSED 1829 | REFUSES 1830 | REFUSING 1831 | REJECT 1832 | REJECTED 1833 | REJECTING 1834 | REJECTION 1835 | REJECTIONS 1836 | REJECTS 1837 | RELINQUISH 1838 | RELINQUISHED 1839 | RELINQUISHES 1840 | RELINQUISHING 1841 | RELINQUISHMENT 1842 | RELINQUISHMENTS 1843 | RELUCTANCE 1844 | RELUCTANT 1845 | RENEGOTIATE 1846 | RENEGOTIATED 1847 | RENEGOTIATES 1848 | RENEGOTIATING 1849 | RENEGOTIATION 1850 | RENEGOTIATIONS 1851 | RENOUNCE 1852 | RENOUNCED 1853 | RENOUNCEMENT 1854 | RENOUNCEMENTS 1855 | RENOUNCES 1856 | RENOUNCING 1857 | REPARATION 1858 | REPARATIONS 1859 | REPOSSESSED 1860 | REPOSSESSES 1861 | REPOSSESSING 1862 | REPOSSESSION 1863 | REPOSSESSIONS 1864 | REPUDIATE 1865 | REPUDIATED 1866 | REPUDIATES 1867 | REPUDIATING 1868 | REPUDIATION 1869 | REPUDIATIONS 1870 | RESIGN 1871 | RESIGNATION 1872 | RESIGNATIONS 1873 | RESIGNED 1874 | RESIGNING 1875 | RESIGNS 1876 | RESTATE 1877 | RESTATED 1878 | RESTATEMENT 1879 | RESTATEMENTS 1880 | RESTATES 1881 | RESTATING 1882 | RESTRUCTURE 1883 | RESTRUCTURED 1884 | RESTRUCTURES 1885 | RESTRUCTURING 1886 | RESTRUCTURINGS 1887 | RETALIATE 1888 | RETALIATED 1889 | RETALIATES 1890 | RETALIATING 1891 | RETALIATION 1892 | RETALIATIONS 1893 | RETALIATORY 1894 | RETRIBUTION 1895 | RETRIBUTIONS 1896 | REVOCATION 1897 | REVOCATIONS 1898 | REVOKE 1899 | REVOKED 1900 | REVOKES 1901 | REVOKING 1902 | RIDICULE 1903 | RIDICULED 1904 | RIDICULES 1905 | RIDICULING 1906 | RISKIER 1907 | RISKIEST 1908 | RISKY 1909 | SABOTAGE 1910 | SACRIFICE 1911 | SACRIFICED 1912 | SACRIFICES 1913 | SACRIFICIAL 1914 | SACRIFICING 1915 | SCANDALOUS 1916 | SCANDALS 1917 | SCRUTINIZE 1918 | SCRUTINIZED 1919 | SCRUTINIZES 1920 | SCRUTINIZING 1921 | SCRUTINY 1922 | SECRECY 1923 | SEIZE 1924 | SEIZED 1925 | SEIZES 1926 | SEIZING 1927 | SENTENCED 1928 | SENTENCING 1929 | SERIOUS 1930 | SERIOUSLY 1931 | SERIOUSNESS 1932 | SETBACK 1933 | SETBACKS 1934 | SEVER 1935 | SEVERE 1936 | SEVERED 1937 | SEVERELY 1938 | SEVERITIES 1939 | SEVERITY 1940 | SHARPLY 1941 | SHOCKED 1942 | SHORTAGE 1943 | SHORTAGES 1944 | SHORTFALL 1945 | SHORTFALLS 1946 | SHRINKAGE 1947 | SHRINKAGES 1948 | SHUT 1949 | SHUTDOWN 1950 | SHUTDOWNS 1951 | SHUTS 1952 | SHUTTING 1953 | SLANDER 1954 | SLANDERED 1955 | SLANDEROUS 1956 | SLANDERS 1957 | SLIPPAGE 1958 | SLIPPAGES 1959 | SLOW 1960 | SLOWDOWN 1961 | SLOWDOWNS 1962 | SLOWED 1963 | SLOWER 1964 | SLOWEST 1965 | SLOWING 1966 | SLOWLY 1967 | SLOWNESS 1968 | SLUGGISH 1969 | SLUGGISHLY 1970 | SLUGGISHNESS 1971 | SOLVENCIES 1972 | SOLVENCY 1973 | STAGGERING 1974 | STAGNANT 1975 | STAGNATE 1976 | STAGNATED 1977 | STAGNATES 1978 | STAGNATING 1979 | STAGNATION 1980 | STANDSTILL 1981 | STANDSTILLS 1982 | STOLEN 1983 | STOPPAGE 1984 | STOPPAGES 1985 | STOPPED 1986 | STOPPING 1987 | STOPS 1988 | STRAIN 1989 | STRAINED 1990 | STRAINING 1991 | STRAINS 1992 | STRESS 1993 | STRESSED 1994 | STRESSES 1995 | STRESSFUL 1996 | STRESSING 1997 | STRINGENT 1998 | SUBJECTED 1999 | SUBJECTING 2000 | SUBJECTION 2001 | SUBPOENA 2002 | SUBPOENAED 2003 | SUBPOENAS 2004 | SUBSTANDARD 2005 | SUE 2006 | SUED 2007 | SUES 2008 | SUFFER 2009 | SUFFERED 2010 | SUFFERING 2011 | SUFFERS 2012 | SUING 2013 | SUMMONED 2014 | SUMMONING 2015 | SUMMONS 2016 | SUMMONSES 2017 | SUSCEPTIBILITY 2018 | SUSCEPTIBLE 2019 | SUSPECT 2020 | SUSPECTED 2021 | SUSPECTS 2022 | SUSPEND 2023 | SUSPENDED 2024 | SUSPENDING 2025 | SUSPENDS 2026 | SUSPENSION 2027 | SUSPENSIONS 2028 | SUSPICION 2029 | SUSPICIONS 2030 | SUSPICIOUS 2031 | SUSPICIOUSLY 2032 | TAINT 2033 | TAINTED 2034 | TAINTING 2035 | TAINTS 2036 | TAMPERED 2037 | TENSE 2038 | TERMINATE 2039 | TERMINATED 2040 | TERMINATES 2041 | TERMINATING 2042 | TERMINATION 2043 | TERMINATIONS 2044 | TESTIFY 2045 | TESTIFYING 2046 | THREAT 2047 | THREATEN 2048 | THREATENED 2049 | THREATENING 2050 | THREATENS 2051 | THREATS 2052 | TIGHTENING 2053 | TOLERATE 2054 | TOLERATED 2055 | TOLERATES 2056 | TOLERATING 2057 | TOLERATION 2058 | TORTUOUS 2059 | TORTUOUSLY 2060 | TRAGEDIES 2061 | TRAGEDY 2062 | TRAGIC 2063 | TRAGICALLY 2064 | TRAUMATIC 2065 | TROUBLE 2066 | TROUBLED 2067 | TROUBLES 2068 | TURBULENCE 2069 | TURMOIL 2070 | UNABLE 2071 | UNACCEPTABLE 2072 | UNACCEPTABLY 2073 | UNACCOUNTED 2074 | UNANNOUNCED 2075 | UNANTICIPATED 2076 | UNAPPROVED 2077 | UNATTRACTIVE 2078 | UNAUTHORIZED 2079 | UNAVAILABILITY 2080 | UNAVAILABLE 2081 | UNAVOIDABLE 2082 | UNAVOIDABLY 2083 | UNAWARE 2084 | UNCOLLECTABLE 2085 | UNCOLLECTED 2086 | UNCOLLECTIBILITY 2087 | UNCOLLECTIBLE 2088 | UNCOLLECTIBLES 2089 | UNCOMPETITIVE 2090 | UNCOMPLETED 2091 | UNCONSCIONABLE 2092 | UNCONSCIONABLY 2093 | UNCONTROLLABLE 2094 | UNCONTROLLABLY 2095 | UNCONTROLLED 2096 | UNCORRECTED 2097 | UNCOVER 2098 | UNCOVERED 2099 | UNCOVERING 2100 | UNCOVERS 2101 | UNDELIVERABLE 2102 | UNDELIVERED 2103 | UNDERCAPITALIZED 2104 | UNDERCUT 2105 | UNDERCUTS 2106 | UNDERCUTTING 2107 | UNDERESTIMATE 2108 | UNDERESTIMATED 2109 | UNDERESTIMATES 2110 | UNDERESTIMATING 2111 | UNDERESTIMATION 2112 | UNDERFUNDED 2113 | UNDERINSURED 2114 | UNDERMINE 2115 | UNDERMINED 2116 | UNDERMINES 2117 | UNDERMINING 2118 | UNDERPAID 2119 | UNDERPAYMENT 2120 | UNDERPAYMENTS 2121 | UNDERPAYS 2122 | UNDERPERFORM 2123 | UNDERPERFORMANCE 2124 | UNDERPERFORMED 2125 | UNDERPERFORMING 2126 | UNDERPRODUCED 2127 | UNDERPRODUCTION 2128 | UNDERREPORTING 2129 | UNDERSTATE 2130 | UNDERSTATED 2131 | UNDERSTATEMENT 2132 | UNDERSTATEMENTS 2133 | UNDERSTATES 2134 | UNDERSTATING 2135 | UNDERUTILIZATION 2136 | UNDERUTILIZED 2137 | UNDESIRABLE 2138 | UNDESIRED 2139 | UNDETECTED 2140 | UNDETERMINED 2141 | UNDISCLOSED 2142 | UNDOCUMENTED 2143 | UNDUE 2144 | UNDULY 2145 | UNECONOMIC 2146 | UNECONOMICAL 2147 | UNECONOMICALLY 2148 | UNEMPLOYED 2149 | UNEMPLOYMENT 2150 | UNETHICAL 2151 | UNETHICALLY 2152 | UNEXCUSED 2153 | UNEXPECTED 2154 | UNEXPECTEDLY 2155 | UNFAIR 2156 | UNFAIRLY 2157 | UNFAVORABLE 2158 | UNFAVORABLY 2159 | UNFAVOURABLE 2160 | UNFEASIBLE 2161 | UNFIT 2162 | UNFITNESS 2163 | UNFORESEEABLE 2164 | UNFORESEEN 2165 | UNFORSEEN 2166 | UNFORTUNATE 2167 | UNFORTUNATELY 2168 | UNFOUNDED 2169 | UNFRIENDLY 2170 | UNFULFILLED 2171 | UNFUNDED 2172 | UNINSURED 2173 | UNINTENDED 2174 | UNINTENTIONAL 2175 | UNINTENTIONALLY 2176 | UNJUST 2177 | UNJUSTIFIABLE 2178 | UNJUSTIFIABLY 2179 | UNJUSTIFIED 2180 | UNJUSTLY 2181 | UNKNOWING 2182 | UNKNOWINGLY 2183 | UNLAWFUL 2184 | UNLAWFULLY 2185 | UNLICENSED 2186 | UNLIQUIDATED 2187 | UNMARKETABLE 2188 | UNMERCHANTABLE 2189 | UNNECESSARILY 2190 | UNNECESSARY 2191 | UNNEEDED 2192 | UNOBTAINABLE 2193 | UNOCCUPIED 2194 | UNPAID 2195 | UNPERFORMED 2196 | UNPLANNED 2197 | UNPOPULAR 2198 | UNPREDICTABILITY 2199 | UNPREDICTABLE 2200 | UNPREDICTABLY 2201 | UNPREDICTED 2202 | UNPRODUCTIVE 2203 | UNPROFITABILITY 2204 | UNPROFITABLE 2205 | UNQUALIFIED 2206 | UNREALISTIC 2207 | UNREASONABLE 2208 | UNREASONABLENESS 2209 | UNREASONABLY 2210 | UNRECOVERABLE 2211 | UNRECOVERED 2212 | UNREIMBURSED 2213 | UNRELIABLE 2214 | UNREMEDIED 2215 | UNREPORTED 2216 | UNRESOLVED 2217 | UNREST 2218 | UNSAFE 2219 | UNSALABLE 2220 | UNSALEABLE 2221 | UNSATISFACTORY 2222 | UNSATISFIED 2223 | UNSAVORY 2224 | UNSCHEDULED 2225 | UNSOLD 2226 | UNSOUND 2227 | UNSTABLE 2228 | UNSUBSTANTIATED 2229 | UNSUCCESSFUL 2230 | UNSUCCESSFULLY 2231 | UNSUITABILITY 2232 | UNSUITABLE 2233 | UNSUITABLY 2234 | UNSUITED 2235 | UNSURE 2236 | UNSUSPECTED 2237 | UNSUSPECTING 2238 | UNSUSTAINABLE 2239 | UNTENABLE 2240 | UNTIMELY 2241 | UNTRUTH 2242 | UNTRUTHFUL 2243 | UNTRUTHFULLY 2244 | UNTRUTHFULNESS 2245 | UNTRUTHS 2246 | UNUSABLE 2247 | UNWANTED 2248 | UNWARRANTED 2249 | UNWELCOME 2250 | UNWILLING 2251 | UNWILLINGNESS 2252 | UPSET 2253 | URGENCY 2254 | URGENT 2255 | USURIOUS 2256 | USURP 2257 | USURPED 2258 | USURPING 2259 | USURPS 2260 | USURY 2261 | VANDALISM 2262 | VERDICT 2263 | VERDICTS 2264 | VETOED 2265 | VICTIMS 2266 | VIOLATE 2267 | VIOLATED 2268 | VIOLATES 2269 | VIOLATING 2270 | VIOLATION 2271 | VIOLATIONS 2272 | VIOLATIVE 2273 | VIOLATOR 2274 | VIOLATORS 2275 | VIOLENCE 2276 | VIOLENT 2277 | VIOLENTLY 2278 | VITIATE 2279 | VITIATED 2280 | VITIATES 2281 | VITIATING 2282 | VITIATION 2283 | VOIDED 2284 | VOIDING 2285 | VOLATILE 2286 | VOLATILITY 2287 | VULNERABILITIES 2288 | VULNERABILITY 2289 | VULNERABLE 2290 | VULNERABLY 2291 | WARN 2292 | WARNED 2293 | WARNING 2294 | WARNINGS 2295 | WARNS 2296 | WASTED 2297 | WASTEFUL 2298 | WASTING 2299 | WEAK 2300 | WEAKEN 2301 | WEAKENED 2302 | WEAKENING 2303 | WEAKENS 2304 | WEAKER 2305 | WEAKEST 2306 | WEAKLY 2307 | WEAKNESS 2308 | WEAKNESSES 2309 | WILLFULLY 2310 | WORRIES 2311 | WORRY 2312 | WORRYING 2313 | WORSE 2314 | WORSEN 2315 | WORSENED 2316 | WORSENING 2317 | WORSENS 2318 | WORST 2319 | WORTHLESS 2320 | WRITEDOWN 2321 | WRITEDOWNS 2322 | WRITEOFF 2323 | WRITEOFFS 2324 | WRONG 2325 | WRONGDOING 2326 | WRONGDOINGS 2327 | WRONGFUL 2328 | WRONGFULLY 2329 | WRONGLY -------------------------------------------------------------------------------- /LoughranMcDonald_Positive.txt: -------------------------------------------------------------------------------- 1 | ABLE 2 | ABUNDANCE 3 | ABUNDANT 4 | ACCLAIMED 5 | ACCOMPLISH 6 | ACCOMPLISHED 7 | ACCOMPLISHES 8 | ACCOMPLISHING 9 | ACCOMPLISHMENT 10 | ACCOMPLISHMENTS 11 | ACHIEVE 12 | ACHIEVED 13 | ACHIEVEMENT 14 | ACHIEVEMENTS 15 | ACHIEVES 16 | ACHIEVING 17 | ADEQUATELY 18 | ADVANCEMENT 19 | ADVANCEMENTS 20 | ADVANCES 21 | ADVANCING 22 | ADVANTAGE 23 | ADVANTAGED 24 | ADVANTAGEOUS 25 | ADVANTAGEOUSLY 26 | ADVANTAGES 27 | ALLIANCE 28 | ALLIANCES 29 | ASSURE 30 | ASSURED 31 | ASSURES 32 | ASSURING 33 | ATTAIN 34 | ATTAINED 35 | ATTAINING 36 | ATTAINMENT 37 | ATTAINMENTS 38 | ATTAINS 39 | ATTRACTIVE 40 | ATTRACTIVENESS 41 | BEAUTIFUL 42 | BEAUTIFULLY 43 | BENEFICIAL 44 | BENEFICIALLY 45 | BENEFIT 46 | BENEFITED 47 | BENEFITING 48 | BENEFITTED 49 | BENEFITTING 50 | BEST 51 | BETTER 52 | BOLSTERED 53 | BOLSTERING 54 | BOLSTERS 55 | BOOM 56 | BOOMING 57 | BOOST 58 | BOOSTED 59 | BREAKTHROUGH 60 | BREAKTHROUGHS 61 | BRILLIANT 62 | CHARITABLE 63 | COLLABORATE 64 | COLLABORATED 65 | COLLABORATES 66 | COLLABORATING 67 | COLLABORATION 68 | COLLABORATIONS 69 | COLLABORATIVE 70 | COLLABORATOR 71 | COLLABORATORS 72 | COMPLIMENT 73 | COMPLIMENTARY 74 | COMPLIMENTED 75 | COMPLIMENTING 76 | COMPLIMENTS 77 | CONCLUSIVE 78 | CONCLUSIVELY 79 | CONDUCIVE 80 | CONFIDENT 81 | CONSTRUCTIVE 82 | CONSTRUCTIVELY 83 | COURTEOUS 84 | CREATIVE 85 | CREATIVELY 86 | CREATIVENESS 87 | CREATIVITY 88 | DELIGHT 89 | DELIGHTED 90 | DELIGHTFUL 91 | DELIGHTFULLY 92 | DELIGHTING 93 | DELIGHTS 94 | DEPENDABILITY 95 | DEPENDABLE 96 | DESIRABLE 97 | DESIRED 98 | DESPITE 99 | DESTINED 100 | DILIGENT 101 | DILIGENTLY 102 | DISTINCTION 103 | DISTINCTIONS 104 | DISTINCTIVE 105 | DISTINCTIVELY 106 | DISTINCTIVENESS 107 | DREAM 108 | EASIER 109 | EASILY 110 | EASY 111 | EFFECTIVE 112 | EFFICIENCIES 113 | EFFICIENCY 114 | EFFICIENT 115 | EFFICIENTLY 116 | EMPOWER 117 | EMPOWERED 118 | EMPOWERING 119 | EMPOWERS 120 | ENABLE 121 | ENABLED 122 | ENABLES 123 | ENABLING 124 | ENCOURAGED 125 | ENCOURAGEMENT 126 | ENCOURAGES 127 | ENCOURAGING 128 | ENHANCE 129 | ENHANCED 130 | ENHANCEMENT 131 | ENHANCEMENTS 132 | ENHANCES 133 | ENHANCING 134 | ENJOY 135 | ENJOYABLE 136 | ENJOYABLY 137 | ENJOYED 138 | ENJOYING 139 | ENJOYMENT 140 | ENJOYS 141 | ENTHUSIASM 142 | ENTHUSIASTIC 143 | ENTHUSIASTICALLY 144 | EXCELLENCE 145 | EXCELLENT 146 | EXCELLING 147 | EXCELS 148 | EXCEPTIONAL 149 | EXCEPTIONALLY 150 | EXCITED 151 | EXCITEMENT 152 | EXCITING 153 | EXCLUSIVE 154 | EXCLUSIVELY 155 | EXCLUSIVENESS 156 | EXCLUSIVES 157 | EXCLUSIVITY 158 | EXEMPLARY 159 | FANTASTIC 160 | FAVORABLE 161 | FAVORABLY 162 | FAVORED 163 | FAVORING 164 | FAVORITE 165 | FAVORITES 166 | FRIENDLY 167 | GAIN 168 | GAINED 169 | GAINING 170 | GAINS 171 | GOOD 172 | GREAT 173 | GREATER 174 | GREATEST 175 | GREATLY 176 | GREATNESS 177 | HAPPIEST 178 | HAPPILY 179 | HAPPINESS 180 | HAPPY 181 | HIGHEST 182 | HONOR 183 | HONORABLE 184 | HONORED 185 | HONORING 186 | HONORS 187 | IDEAL 188 | IMPRESS 189 | IMPRESSED 190 | IMPRESSES 191 | IMPRESSING 192 | IMPRESSIVE 193 | IMPRESSIVELY 194 | IMPROVE 195 | IMPROVED 196 | IMPROVEMENT 197 | IMPROVEMENTS 198 | IMPROVES 199 | IMPROVING 200 | INCREDIBLE 201 | INCREDIBLY 202 | INFLUENTIAL 203 | INFORMATIVE 204 | INGENUITY 205 | INNOVATE 206 | INNOVATED 207 | INNOVATES 208 | INNOVATING 209 | INNOVATION 210 | INNOVATIONS 211 | INNOVATIVE 212 | INNOVATIVENESS 213 | INNOVATOR 214 | INNOVATORS 215 | INSIGHTFUL 216 | INSPIRATION 217 | INSPIRATIONAL 218 | INTEGRITY 219 | INVENT 220 | INVENTED 221 | INVENTING 222 | INVENTION 223 | INVENTIONS 224 | INVENTIVE 225 | INVENTIVENESS 226 | INVENTOR 227 | INVENTORS 228 | LEADERSHIP 229 | LEADING 230 | LOYAL 231 | LUCRATIVE 232 | MERITORIOUS 233 | OPPORTUNITIES 234 | OPPORTUNITY 235 | OPTIMISTIC 236 | OUTPERFORM 237 | OUTPERFORMED 238 | OUTPERFORMING 239 | OUTPERFORMS 240 | PERFECT 241 | PERFECTED 242 | PERFECTLY 243 | PERFECTS 244 | PLEASANT 245 | PLEASANTLY 246 | PLEASED 247 | PLEASURE 248 | PLENTIFUL 249 | POPULAR 250 | POPULARITY 251 | POSITIVE 252 | POSITIVELY 253 | PREEMINENCE 254 | PREEMINENT 255 | PREMIER 256 | PREMIERE 257 | PRESTIGE 258 | PRESTIGIOUS 259 | PROACTIVE 260 | PROACTIVELY 261 | PROFICIENCY 262 | PROFICIENT 263 | PROFICIENTLY 264 | PROFITABILITY 265 | PROFITABLE 266 | PROFITABLY 267 | PROGRESS 268 | PROGRESSED 269 | PROGRESSES 270 | PROGRESSING 271 | PROSPERED 272 | PROSPERING 273 | PROSPERITY 274 | PROSPEROUS 275 | PROSPERS 276 | REBOUND 277 | REBOUNDED 278 | REBOUNDING 279 | RECEPTIVE 280 | REGAIN 281 | REGAINED 282 | REGAINING 283 | RESOLVE 284 | REVOLUTIONIZE 285 | REVOLUTIONIZED 286 | REVOLUTIONIZES 287 | REVOLUTIONIZING 288 | REWARD 289 | REWARDED 290 | REWARDING 291 | REWARDS 292 | SATISFACTION 293 | SATISFACTORILY 294 | SATISFACTORY 295 | SATISFIED 296 | SATISFIES 297 | SATISFY 298 | SATISFYING 299 | SMOOTH 300 | SMOOTHING 301 | SMOOTHLY 302 | SMOOTHS 303 | SOLVES 304 | SOLVING 305 | SPECTACULAR 306 | SPECTACULARLY 307 | STABILITY 308 | STABILIZATION 309 | STABILIZATIONS 310 | STABILIZE 311 | STABILIZED 312 | STABILIZES 313 | STABILIZING 314 | STABLE 315 | STRENGTH 316 | STRENGTHEN 317 | STRENGTHENED 318 | STRENGTHENING 319 | STRENGTHENS 320 | STRENGTHS 321 | STRONG 322 | STRONGER 323 | STRONGEST 324 | SUCCEED 325 | SUCCEEDED 326 | SUCCEEDING 327 | SUCCEEDS 328 | SUCCESS 329 | SUCCESSES 330 | SUCCESSFUL 331 | SUCCESSFULLY 332 | SUPERIOR 333 | SURPASS 334 | SURPASSED 335 | SURPASSES 336 | SURPASSING 337 | TRANSPARENCY 338 | TREMENDOUS 339 | TREMENDOUSLY 340 | UNMATCHED 341 | UNPARALLELED 342 | UNSURPASSED 343 | UPTURN 344 | UPTURNS 345 | VALUABLE 346 | VERSATILE 347 | VERSATILITY 348 | VIBRANCY 349 | VIBRANT 350 | WIN 351 | WINNER 352 | WINNERS 353 | WINNING 354 | WORTHY -------------------------------------------------------------------------------- /LoughranMcDonald_Uncertainty.txt: -------------------------------------------------------------------------------- 1 | ABEYANCE 2 | ABEYANCES 3 | ALMOST 4 | ALTERATION 5 | ALTERATIONS 6 | AMBIGUITIES 7 | AMBIGUITY 8 | AMBIGUOUS 9 | ANOMALIES 10 | ANOMALOUS 11 | ANOMALOUSLY 12 | ANOMALY 13 | ANTICIPATE 14 | ANTICIPATED 15 | ANTICIPATES 16 | ANTICIPATING 17 | ANTICIPATION 18 | ANTICIPATIONS 19 | APPARENT 20 | APPARENTLY 21 | APPEAR 22 | APPEARED 23 | APPEARING 24 | APPEARS 25 | APPROXIMATE 26 | APPROXIMATED 27 | APPROXIMATELY 28 | APPROXIMATES 29 | APPROXIMATING 30 | APPROXIMATION 31 | APPROXIMATIONS 32 | ARBITRARILY 33 | ARBITRARINESS 34 | ARBITRARY 35 | ASSUME 36 | ASSUMED 37 | ASSUMES 38 | ASSUMING 39 | ASSUMPTION 40 | ASSUMPTIONS 41 | BELIEVE 42 | BELIEVED 43 | BELIEVES 44 | BELIEVING 45 | CAUTIOUS 46 | CAUTIOUSLY 47 | CAUTIOUSNESS 48 | CLARIFICATION 49 | CLARIFICATIONS 50 | CONCEIVABLE 51 | CONCEIVABLY 52 | CONDITIONAL 53 | CONDITIONALLY 54 | CONFUSES 55 | CONFUSING 56 | CONFUSINGLY 57 | CONFUSION 58 | CONTINGENCIES 59 | CONTINGENCY 60 | CONTINGENT 61 | CONTINGENTLY 62 | CONTINGENTS 63 | COULD 64 | CROSSROAD 65 | CROSSROADS 66 | DEPEND 67 | DEPENDED 68 | DEPENDENCE 69 | DEPENDENCIES 70 | DEPENDENCY 71 | DEPENDENT 72 | DEPENDING 73 | DEPENDS 74 | DESTABILIZING 75 | DEVIATE 76 | DEVIATED 77 | DEVIATES 78 | DEVIATING 79 | DEVIATION 80 | DEVIATIONS 81 | DIFFER 82 | DIFFERED 83 | DIFFERING 84 | DIFFERS 85 | DOUBT 86 | DOUBTED 87 | DOUBTFUL 88 | DOUBTS 89 | EXPOSURE 90 | EXPOSURES 91 | FLUCTUATE 92 | FLUCTUATED 93 | FLUCTUATES 94 | FLUCTUATING 95 | FLUCTUATION 96 | FLUCTUATIONS 97 | HIDDEN 98 | HINGES 99 | IMPRECISE 100 | IMPRECISION 101 | IMPRECISIONS 102 | IMPROBABILITY 103 | IMPROBABLE 104 | INCOMPLETENESS 105 | INDEFINITE 106 | INDEFINITELY 107 | INDEFINITENESS 108 | INDETERMINABLE 109 | INDETERMINATE 110 | INEXACT 111 | INEXACTNESS 112 | INSTABILITIES 113 | INSTABILITY 114 | INTANGIBLE 115 | INTANGIBLES 116 | LIKELIHOOD 117 | MAY 118 | MAYBE 119 | MIGHT 120 | NEARLY 121 | NONASSESSABLE 122 | OCCASIONALLY 123 | ORDINARILY 124 | PENDING 125 | PERHAPS 126 | POSSIBILITIES 127 | POSSIBILITY 128 | POSSIBLE 129 | POSSIBLY 130 | PRECAUTION 131 | PRECAUTIONARY 132 | PRECAUTIONS 133 | PREDICT 134 | PREDICTABILITY 135 | PREDICTED 136 | PREDICTING 137 | PREDICTION 138 | PREDICTIONS 139 | PREDICTIVE 140 | PREDICTOR 141 | PREDICTORS 142 | PREDICTS 143 | PRELIMINARILY 144 | PRELIMINARY 145 | PRESUMABLY 146 | PRESUME 147 | PRESUMED 148 | PRESUMES 149 | PRESUMING 150 | PRESUMPTION 151 | PRESUMPTIONS 152 | PROBABILISTIC 153 | PROBABILITIES 154 | PROBABILITY 155 | PROBABLE 156 | PROBABLY 157 | RANDOM 158 | RANDOMIZE 159 | RANDOMIZED 160 | RANDOMIZES 161 | RANDOMIZING 162 | RANDOMLY 163 | RANDOMNESS 164 | REASSESS 165 | REASSESSED 166 | REASSESSES 167 | REASSESSING 168 | REASSESSMENT 169 | REASSESSMENTS 170 | RECALCULATE 171 | RECALCULATED 172 | RECALCULATES 173 | RECALCULATING 174 | RECALCULATION 175 | RECALCULATIONS 176 | RECONSIDER 177 | RECONSIDERED 178 | RECONSIDERING 179 | RECONSIDERS 180 | REEXAMINATION 181 | REEXAMINE 182 | REEXAMINING 183 | REINTERPRET 184 | REINTERPRETATION 185 | REINTERPRETATIONS 186 | REINTERPRETED 187 | REINTERPRETING 188 | REINTERPRETS 189 | REVISE 190 | REVISED 191 | RISK 192 | RISKED 193 | RISKIER 194 | RISKIEST 195 | RISKINESS 196 | RISKING 197 | RISKS 198 | RISKY 199 | ROUGHLY 200 | RUMORS 201 | SEEMS 202 | SELDOM 203 | SELDOMLY 204 | SOMETIME 205 | SOMETIMES 206 | SOMEWHAT 207 | SOMEWHERE 208 | SPECULATE 209 | SPECULATED 210 | SPECULATES 211 | SPECULATING 212 | SPECULATION 213 | SPECULATIONS 214 | SPECULATIVE 215 | SPECULATIVELY 216 | SPORADIC 217 | SPORADICALLY 218 | SUDDEN 219 | SUDDENLY 220 | SUGGEST 221 | SUGGESTED 222 | SUGGESTING 223 | SUGGESTS 224 | SUSCEPTIBILITY 225 | TENDING 226 | TENTATIVE 227 | TENTATIVELY 228 | TURBULENCE 229 | UNCERTAIN 230 | UNCERTAINLY 231 | UNCERTAINTIES 232 | UNCERTAINTY 233 | UNCLEAR 234 | UNCONFIRMED 235 | UNDECIDED 236 | UNDEFINED 237 | UNDESIGNATED 238 | UNDETECTABLE 239 | UNDETERMINABLE 240 | UNDETERMINED 241 | UNDOCUMENTED 242 | UNEXPECTED 243 | UNEXPECTEDLY 244 | UNFAMILIAR 245 | UNFAMILIARITY 246 | UNFORECASTED 247 | UNFORSEEN 248 | UNGUARANTEED 249 | UNHEDGED 250 | UNIDENTIFIABLE 251 | UNIDENTIFIED 252 | UNKNOWN 253 | UNKNOWNS 254 | UNOBSERVABLE 255 | UNPLANNED 256 | UNPREDICTABILITY 257 | UNPREDICTABLE 258 | UNPREDICTABLY 259 | UNPREDICTED 260 | UNPROVED 261 | UNPROVEN 262 | UNQUANTIFIABLE 263 | UNQUANTIFIED 264 | UNRECONCILED 265 | UNSEASONABLE 266 | UNSEASONABLY 267 | UNSETTLED 268 | UNSPECIFIC 269 | UNSPECIFIED 270 | UNTESTED 271 | UNUSUAL 272 | UNUSUALLY 273 | UNWRITTEN 274 | VAGARIES 275 | VAGUE 276 | VAGUELY 277 | VAGUENESS 278 | VAGUENESSES 279 | VAGUER 280 | VAGUEST 281 | VARIABILITY 282 | VARIABLE 283 | VARIABLES 284 | VARIABLY 285 | VARIANCE 286 | VARIANCES 287 | VARIANT 288 | VARIANTS 289 | VARIATION 290 | VARIATIONS 291 | VARIED 292 | VARIES 293 | VARY 294 | VARYING 295 | VOLATILE 296 | VOLATILITIES 297 | VOLATILITY -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Algorithmic-Trading 2 | Algorithmic trading signal prediction. The project aims at analyzing how SMA (short moving average) and EMA (exponential moving average) can be used to generate buy/sell signals. 3 | 4 | For this project I'm using `Adjusted Closing Price` to compare with EMA. This is done because ACP provides a more accurate inight into the stock's market movement, while `Closing Price` only shows the price at which the stock was last traded at. 5 | 6 | As stock prices are highly affected by financial news, I'm using `Sentiment Score` of news articles as a feature while defining the trading startegy. The news aricles are scraped from `Reuters`. 7 | 8 | The list of words to calculate Sentiments is taken from the work presented [here](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1331573) 9 | 10 | # Backtesting and Value-at-Risk 11 | In order to test the implemeted strategy, I have implemented backtesting as well. The idea is to start with an amount of $100000 and using the trading signals generated from the strategy, calculate the annual return from stock and VAR from the returns. 12 | 13 | VAR is calculated using the Variance-Covariance method. 14 | -------------------------------------------------------------------------------- /backtest.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Backtesting\n", 8 | "\n", 9 | "Using 2 strategies\n", 10 | "\n", 11 | "- self defined strategy\n", 12 | "- buy and hold\n", 13 | "\n", 14 | "## Self Strategy\n", 15 | "\n", 16 | "Initial cash = $100000\n", 17 | "\n", 18 | "Every buy/sell order = 100 stocks\n", 19 | "\n", 20 | "## Buy and Hold\n", 21 | "\n", 22 | "Buy on first day and hold till last.\n", 23 | "\n", 24 | "## Value-at-risk\n", 25 | "\n", 26 | "The maximum loss we can incur using self defined stratefy with `99%` confidence. VAR is calculted using the variance-covariance method." 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 1, 32 | "metadata": {}, 33 | "outputs": [], 34 | "source": [ 35 | "import numpy as np\n", 36 | "import pandas as pd\n", 37 | "import matplotlib.pyplot as plt\n", 38 | "import matplotlib.dates as mdates\n", 39 | "%matplotlib inline\n", 40 | "import seaborn as sns\n", 41 | "sns.set(style='darkgrid', context='talk', palette='Dark2')\n", 42 | "my_year_month_fmt = mdates.DateFormatter('%m/%y')\n", 43 | "from scipy.stats import norm" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": 2, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [ 52 | "data = pd.read_csv(\"formatted_aapl_stock_data_sentiment.csv\")\n", 53 | "data[['date']] = data[['date']].apply(pd.to_datetime)" 54 | ] 55 | }, 56 | { 57 | "cell_type": "code", 58 | "execution_count": 3, 59 | "metadata": {}, 60 | "outputs": [], 61 | "source": [ 62 | "def var_cov_var(P, c, mu, sigma):\n", 63 | " \"\"\"\n", 64 | " Variance-Covariance calculation of daily Value-at-Risk\n", 65 | " using confidence level c, with mean of returns mu\n", 66 | " and standard deviation of returns sigma, on a portfolio\n", 67 | " of value P.\n", 68 | " \"\"\"\n", 69 | " alpha = norm.ppf(1-c, mu, sigma)\n", 70 | " return P - P*(alpha + 1)" 71 | ] 72 | }, 73 | { 74 | "cell_type": "code", 75 | "execution_count": 4, 76 | "metadata": {}, 77 | "outputs": [], 78 | "source": [ 79 | "def backtest(data):\n", 80 | " cash = 100000\n", 81 | " position = 0\n", 82 | " total = 0\n", 83 | " \n", 84 | " data['Total'] = 100000\n", 85 | " data['BuyHold'] = 100000\n", 86 | " # To compute the Buy and Hold value, invest all cash in the Adj Close on the first day of the backtest\n", 87 | " positionBeginning = int(100000/float(data.iloc[0]['Adj Close']))\n", 88 | " increment = 100\n", 89 | " rets = []\n", 90 | " \n", 91 | " for row in data.iterrows():\n", 92 | " price = float(row[1]['Adj Close'])\n", 93 | " signal = float(row[1]['trading_positions'])\n", 94 | " rets.append(cash)\n", 95 | " if(signal > 0 and cash - increment * price > 0):\n", 96 | " # Buy only if signal is buy and enough funds to buy\n", 97 | " cash = cash - increment * price\n", 98 | " position = position + increment\n", 99 | " print(row[1]['date'].strftime('%d %b %Y')+\" Position = \"+str(position)+\" Cash = \"+str(cash)+\" // Total = {:,}\".format(int(position*price+cash)))\n", 100 | " \n", 101 | " elif(signal < 0 and abs(position*price) < cash and position > 0):\n", 102 | " # Sell only if signal is sell and you are at a loss position\n", 103 | " cash = cash + increment * price\n", 104 | " position = position - increment\n", 105 | " print(row[1]['date'].strftime('%d %b %Y')+\" Position = \"+str(position)+\" Cash = \"+str(cash)+\" // Total = {:,}\".format(int(position*price+cash)))\n", 106 | " \n", 107 | " data.loc[data.date == row[1]['date'], 'Total'] = float(position*price+cash)\n", 108 | " data.loc[data.date == row[1]['date'], 'BuyHold'] = price*positionBeginning\n", 109 | " \n", 110 | " return position*price+cash, rets" 111 | ] 112 | }, 113 | { 114 | "cell_type": "code", 115 | "execution_count": 5, 116 | "metadata": {}, 117 | "outputs": [ 118 | { 119 | "name": "stdout", 120 | "output_type": "stream", 121 | "text": [ 122 | "31 Dec 1999 Position = 100 Cash = 99754.1081 // Total = 100,000\n", 123 | "23 Oct 2007 Position = 0 Cash = 101535.0287 // Total = 101,535\n", 124 | "12 Nov 2007 Position = 100 Cash = 100064.0667 // Total = 101,535\n", 125 | "23 Jan 2008 Position = 200 Cash = 98733.6378 // Total = 101,394\n", 126 | "24 Jan 2008 Position = 300 Cash = 97436.4051 // Total = 101,328\n", 127 | "25 Jan 2008 Position = 400 Cash = 96192.65000000001 // Total = 101,167\n", 128 | "28 Jan 2008 Position = 500 Cash = 94948.89490000001 // Total = 101,167\n", 129 | "29 Jan 2008 Position = 600 Cash = 93690.50290000002 // Total = 101,240\n", 130 | "30 Jan 2008 Position = 700 Cash = 92425.98830000003 // Total = 101,277\n", 131 | "06 Feb 2008 Position = 800 Cash = 91258.86190000003 // Total = 100,595\n", 132 | "07 Feb 2008 Position = 900 Cash = 90099.00570000004 // Total = 100,537\n", 133 | "17 Sep 2008 Position = 1000 Cash = 88876.10560000004 // Total = 101,105\n", 134 | "23 Sep 2008 Position = 1100 Cash = 87662.67630000004 // Total = 101,010\n", 135 | "29 Sep 2008 Position = 1200 Cash = 86655.69480000004 // Total = 98,739\n", 136 | "30 Sep 2008 Position = 1300 Cash = 85568.35370000004 // Total = 99,703\n", 137 | "01 Oct 2008 Position = 1400 Cash = 84524.44510000004 // Total = 99,139\n", 138 | "02 Oct 2008 Position = 1500 Cash = 83566.82710000004 // Total = 97,931\n", 139 | "03 Oct 2008 Position = 1600 Cash = 82638.19620000003 // Total = 97,496\n", 140 | "06 Oct 2008 Position = 1700 Cash = 81699.32890000004 // Total = 97,660\n", 141 | "07 Oct 2008 Position = 1800 Cash = 80846.36970000004 // Total = 96,199\n", 142 | "08 Oct 2008 Position = 1900 Cash = 79987.38360000004 // Total = 96,308\n", 143 | "09 Oct 2008 Position = 2000 Cash = 79138.44270000004 // Total = 96,117\n", 144 | "22 Apr 2010 Position = 1900 Cash = 81687.65740000004 // Total = 130,122\n", 145 | "23 Apr 2010 Position = 1800 Cash = 84278.58260000004 // Total = 130,915\n", 146 | "26 Apr 2010 Position = 1700 Cash = 86856.78480000004 // Total = 130,686\n", 147 | "15 Oct 2010 Position = 1600 Cash = 89867.77910000004 // Total = 138,043\n", 148 | "18 Oct 2010 Position = 1500 Cash = 92909.96150000005 // Total = 138,542\n", 149 | "20 Jul 2011 Position = 1400 Cash = 96611.28370000004 // Total = 148,429\n", 150 | "21 Jul 2011 Position = 1300 Cash = 100316.33740000005 // Total = 148,482\n", 151 | "26 Jul 2011 Position = 1200 Cash = 104175.60440000004 // Total = 150,486\n", 152 | "27 Jul 2011 Position = 1100 Cash = 107931.36120000004 // Total = 149,244\n", 153 | "19 Sep 2011 Position = 1000 Cash = 111869.26590000004 // Total = 151,248\n", 154 | "20 Sep 2011 Position = 900 Cash = 115824.58170000004 // Total = 151,422\n", 155 | "25 Jan 2012 Position = 800 Cash = 120097.60420000005 // Total = 154,281\n", 156 | "27 Jan 2012 Position = 700 Cash = 124376.55850000004 // Total = 154,329\n", 157 | "30 Jan 2012 Position = 600 Cash = 128710.32850000005 // Total = 154,712\n", 158 | "01 Feb 2012 Position = 500 Cash = 133074.52070000005 // Total = 154,895\n", 159 | "03 Feb 2012 Position = 400 Cash = 137472.09990000006 // Total = 155,062\n", 160 | "06 Feb 2012 Position = 300 Cash = 141910.72070000006 // Total = 155,226\n", 161 | "07 Feb 2012 Position = 200 Cash = 146395.83580000006 // Total = 155,366\n", 162 | "08 Feb 2012 Position = 100 Cash = 150956.04770000005 // Total = 155,516\n", 163 | "09 Feb 2012 Position = 0 Cash = 155674.01420000006 // Total = 155,674\n", 164 | "20 Apr 2012 Position = 100 Cash = 150192.53800000006 // Total = 155,674\n", 165 | "06 Jul 2012 Position = 0 Cash = 155988.75730000006 // Total = 155,988\n", 166 | "08 Oct 2012 Position = 100 Cash = 149695.29340000005 // Total = 155,988\n", 167 | "01 Nov 2012 Position = 200 Cash = 143812.37450000006 // Total = 155,578\n", 168 | "06 Nov 2012 Position = 300 Cash = 138064.46230000007 // Total = 155,308\n", 169 | "12 Nov 2012 Position = 400 Cash = 132535.24210000006 // Total = 154,652\n", 170 | "14 Nov 2012 Position = 500 Cash = 127066.62790000006 // Total = 154,409\n", 171 | "15 Nov 2012 Position = 600 Cash = 121712.70680000006 // Total = 153,836\n", 172 | "17 Dec 2012 Position = 700 Cash = 116427.94840000005 // Total = 153,421\n", 173 | "26 Dec 2012 Position = 800 Cash = 111202.57300000005 // Total = 153,005\n", 174 | "14 Jan 2013 Position = 900 Cash = 106091.79080000005 // Total = 152,088\n", 175 | "28 Jan 2013 Position = 1000 Cash = 101509.85990000004 // Total = 147,329\n", 176 | "30 Jan 2013 Position = 1100 Cash = 96856.62730000004 // Total = 148,042\n", 177 | "31 Jan 2013 Position = 1200 Cash = 92217.04450000003 // Total = 147,892\n", 178 | "01 Feb 2013 Position = 1300 Cash = 87596.50960000003 // Total = 147,663\n", 179 | "04 Mar 2013 Position = 1400 Cash = 83137.04000000004 // Total = 145,569\n", 180 | "06 Mar 2013 Position = 1500 Cash = 78618.01190000004 // Total = 146,403\n", 181 | "02 May 2013 Position = 1400 Cash = 83347.88360000004 // Total = 149,566\n", 182 | "09 May 2013 Position = 1300 Cash = 88431.16870000004 // Total = 154,513\n", 183 | "13 May 2013 Position = 1200 Cash = 93491.86320000004 // Total = 154,220\n", 184 | "28 Jun 2013 Position = 1300 Cash = 89078.97520000003 // Total = 146,446\n", 185 | "29 Jul 2013 Position = 1200 Cash = 94062.32480000003 // Total = 153,862\n", 186 | "30 Jul 2013 Position = 1100 Cash = 99107.21540000003 // Total = 154,601\n", 187 | "01 Aug 2013 Position = 1000 Cash = 104189.49840000003 // Total = 155,012\n", 188 | "02 Aug 2013 Position = 900 Cash = 109336.99630000003 // Total = 155,664\n", 189 | "06 Aug 2013 Position = 800 Cash = 114514.65320000003 // Total = 155,935\n", 190 | "07 Aug 2013 Position = 700 Cash = 119689.30490000003 // Total = 155,911\n", 191 | "08 Aug 2013 Position = 600 Cash = 125066.68370000004 // Total = 157,330\n", 192 | "09 Aug 2013 Position = 500 Cash = 130367.54350000004 // Total = 156,871\n", 193 | "12 Aug 2013 Position = 400 Cash = 135818.99120000005 // Total = 157,624\n", 194 | "14 Aug 2013 Position = 300 Cash = 141633.66600000006 // Total = 159,077\n", 195 | "16 Aug 2013 Position = 200 Cash = 147493.01510000005 // Total = 159,211\n", 196 | "19 Aug 2013 Position = 100 Cash = 153415.46880000006 // Total = 159,337\n", 197 | "20 Aug 2013 Position = 0 Cash = 159260.12100000007 // Total = 159,260\n", 198 | "13 Sep 2013 Position = 100 Cash = 153837.36860000007 // Total = 159,260\n", 199 | "18 Oct 2013 Position = 0 Cash = 159773.23630000008 // Total = 159,773\n", 200 | "31 Jan 2014 Position = 100 Cash = 153686.76210000008 // Total = 159,773\n", 201 | "03 Feb 2014 Position = 200 Cash = 147588.98150000008 // Total = 159,784\n", 202 | "13 Feb 2014 Position = 100 Cash = 154496.04330000008 // Total = 161,403\n", 203 | "14 Feb 2014 Position = 0 Cash = 161397.5257000001 // Total = 161,397\n", 204 | "16 Oct 2014 Position = 100 Cash = 152458.86070000008 // Total = 161,397\n", 205 | "21 Oct 2014 Position = 0 Cash = 161974.18280000007 // Total = 161,974\n", 206 | "02 Jan 2015 Position = 100 Cash = 151777.81970000008 // Total = 161,974\n", 207 | "22 Jan 2015 Position = 0 Cash = 162260.49870000008 // Total = 162,260\n", 208 | "25 Mar 2015 Position = 100 Cash = 150708.3892000001 // Total = 162,260\n", 209 | "23 Apr 2015 Position = 0 Cash = 162849.4353000001 // Total = 162,849\n", 210 | "29 Jun 2015 Position = 100 Cash = 151140.9461000001 // Total = 162,849\n", 211 | "09 Jul 2015 Position = 200 Cash = 139851.7936000001 // Total = 162,430\n", 212 | "16 Jul 2015 Position = 100 Cash = 151934.4878000001 // Total = 164,017\n", 213 | "17 Jul 2015 Position = 0 Cash = 164121.54450000008 // Total = 164,121\n", 214 | "29 Jul 2015 Position = 100 Cash = 152557.85130000007 // Total = 164,121\n", 215 | "31 Jul 2015 Position = 200 Cash = 141153.05160000006 // Total = 163,962\n", 216 | "07 Aug 2015 Position = 300 Cash = 130242.53300000007 // Total = 162,974\n", 217 | "04 Sep 2015 Position = 400 Cash = 119922.30980000008 // Total = 161,203\n", 218 | "22 Oct 2015 Position = 300 Cash = 130830.94090000007 // Total = 163,556\n", 219 | "29 Oct 2015 Position = 200 Cash = 142214.63990000007 // Total = 164,982\n", 220 | "30 Oct 2015 Position = 100 Cash = 153501.05810000008 // Total = 164,787\n", 221 | "02 Nov 2015 Position = 0 Cash = 164946.1478000001 // Total = 164,946\n", 222 | "13 Nov 2015 Position = 100 Cash = 154290.5547000001 // Total = 164,946\n", 223 | "19 Nov 2015 Position = 0 Cash = 165556.99070000008 // Total = 165,556\n", 224 | "11 Dec 2015 Position = 100 Cash = 154821.7200000001 // Total = 165,556\n", 225 | "14 Dec 2015 Position = 200 Cash = 144152.84720000008 // Total = 165,490\n", 226 | "21 Dec 2015 Position = 300 Cash = 133972.45860000007 // Total = 164,513\n", 227 | "22 Dec 2015 Position = 400 Cash = 123801.55480000007 // Total = 164,485\n", 228 | "29 Dec 2015 Position = 500 Cash = 113487.42590000007 // Total = 165,058\n", 229 | "12 Jan 2016 Position = 600 Cash = 104006.09120000008 // Total = 160,894\n", 230 | "13 Jan 2016 Position = 700 Cash = 94768.52250000008 // Total = 159,431\n", 231 | "14 Jan 2016 Position = 800 Cash = 85328.92210000008 // Total = 160,845\n", 232 | "19 Jan 2016 Position = 900 Cash = 76160.59630000009 // Total = 158,675\n", 233 | "21 Jan 2016 Position = 1000 Cash = 67026.41660000008 // Total = 158,368\n", 234 | "01 Feb 2016 Position = 1100 Cash = 57879.90700000009 // Total = 158,491\n", 235 | "02 Feb 2016 Position = 1200 Cash = 48918.356100000085 // Total = 156,456\n", 236 | "10 Feb 2016 Position = 1300 Cash = 39928.20410000009 // Total = 156,800\n", 237 | "11 Feb 2016 Position = 1400 Cash = 30992.41230000009 // Total = 156,093\n", 238 | "02 May 2016 Position = 1500 Cash = 22062.34260000009 // Total = 156,013\n", 239 | "11 May 2016 Position = 1600 Cash = 13186.321800000092 // Total = 155,202\n", 240 | "24 Jun 2016 Position = 1700 Cash = 4224.908200000093 // Total = 156,568\n", 241 | "Backtest => 386,648.56630000006 USD\n", 242 | "6846\n", 243 | "Annual return => 15.073544240140233%\n", 244 | "\n", 245 | "Value-at-Risk => 3,652.8960335396405 USD\n", 246 | "\n", 247 | "Buy and Hold => 9,180,457 USD\n", 248 | "Annual return => 477.49993745692973%\n", 249 | "\n" 250 | ] 251 | } 252 | ], 253 | "source": [ 254 | "# Backtest\n", 255 | "backtestResult, rets = backtest(data)\n", 256 | "print((\"Backtest => {:,} USD\").format(backtestResult))\n", 257 | "perf = (float(backtestResult)/100000-1)*100\n", 258 | "daysDiff = (data.tail(1).date-data.head(1).date[0]).iloc[0].days\n", 259 | "print(daysDiff)\n", 260 | "perf = (perf/(daysDiff))*360\n", 261 | "print(\"Annual return => \"+str(perf)+\"%\")\n", 262 | "print()\n", 263 | "\n", 264 | "data['rets'] = rets\n", 265 | "data['rets_percent_change'] = data['rets'].pct_change()\n", 266 | "P = 100000 # 100,000 USD\n", 267 | "c = 0.99 # 99% confidence interval\n", 268 | "mu = np.mean(data[\"rets_percent_change\"])\n", 269 | "sigma = np.std(data[\"rets_percent_change\"])\n", 270 | "\n", 271 | "var = var_cov_var(P, c, mu, sigma)\n", 272 | "print((\"Value-at-Risk => {:,} USD\").format(var))\n", 273 | "print()\n", 274 | " \n", 275 | "# Buy and Hold\n", 276 | "perfBuyAndHold = float(data.tail(1)['Close'])/float(data.head(1)['Adj Close'])-1\n", 277 | "print((\"Buy and Hold => {:,} USD\").format(int((1+perfBuyAndHold)*100000)))\n", 278 | "perfBuyAndHold = (perfBuyAndHold/(daysDiff))*360\n", 279 | "print(\"Annual return => \"+str(perfBuyAndHold*100)+\"%\")\n", 280 | "print()" 281 | ] 282 | }, 283 | { 284 | "cell_type": "code", 285 | "execution_count": 6, 286 | "metadata": {}, 287 | "outputs": [ 288 | { 289 | "data": { 290 | "text/plain": [ 291 | "" 292 | ] 293 | }, 294 | "execution_count": 6, 295 | "metadata": {}, 296 | "output_type": "execute_result" 297 | }, 298 | { 299 | "data": { 300 | "image/png": "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7tXkyZtlOUIAAAAAucCIs5mUJPUcfVyGI8kskts8UVFRpa222jqibObMnXTwwbO0cOETOuusc7MUGQAAAICc0hM/ubXLKzIcSGYxLTmPlZSUqrS0TIYRuN911xmaP/+OiDrhU4IfeeRB7brrDK1c+XVEnccee1h77rmzWoe5NfgHH7yvn//8TO2//57af/89dcklF2n16lWDtnnssUd07LGHa6+9dtHZZ5+mNWu+Gda7AQAAAEQaaOTWdpdkOJLMKvyRW49HjgSJVio4nIEM0/bZcZ/7Nxwvud0jeIMtb9ii8NbWFj300N/V3d2lgw46NKlvmDXrAN1881/1zDML9eMf/yxYvmjRU9pll91UU1Mbitfvi3hfMAo78ud7443/6YILztEOO8zUxRdfps7OTs2bN1ezZ/9Ed931N40a1RDzHY888qCuv/7POuqo47TzzrvozTdf19VX/zGpnwEAAADAIDo7VXPqj+I/KyvNbCwZVtjJrcejUbvMkHP5F9mORL5Jm6rp5TeHneC+9dYb2mOPnWLKzzzzHE2cOCmp76ipqdH3v7+7nn46lNx+9dUKffDBe7r66r9E1J0z5/QBv8fpdAav5869WZMmbaqrr/6LHI7ARIDp07fV8ccfrgceuC9murRt25o//07tvfe+Ovfc8yVJO+64kzo7O/TYY48k9XMAAAAAiK98/p1yv/5a8L7t2htUff45kiTv5M2zFVZGFHZyW0CmTJmm88//pSTJ7/erpaVFixc/p1tuuUFud4mOOurYpL7noIMO1fPPn60PP/xA06ZtpUWLnlRDQ4Nmztw5ot5FF12szTffIqb9P//5Dz311OOSpK6uLlnWUp166uxgYitJ48aN0/Tp28bdyXnFii/V3Nyk739/94jyvfaaRXILAAAAjJBj7bfBa9vhUPdJp6h3l+9LJSVSVVUWI0u/wk5u3W41vfxmRqYlO/umJfvSNC25oqJSW245NaJs55130bffrtEdd9yqww8/KqnvmTFjR22wwVg9/fSTmjp1mp55ZqH22+/AiNFYSZowYVLM+yTp5Zf/G7xub2+TbdtqaIidejxqVIO++SZ2HW3/ut66uvqI8oaG0UnFDwAAAGBg/vBlgX2b8/iL5GSVwk5uJcntln+TiWl/jdGX3PoHSG7TZYstTL355utav7458H6/P+J5V1dXxL3D4dABBxysf/3rMe277wFavXqVDjjgkGG9u7KySoZhqLGxMeZZY+M61dXVxZTX1gbKmpqaIspbWtYPKwYAAAAAIXZ92CCSo7j2Dy6un7YALV36kaqra1RXV6/Kykp9++2aiOfvv/9uTJsDDzxEzc1N+r//u0lTpkzVpptOHta7KyoqZJpT9O9/PxuRVK9Z843ef/9dTZ++TUybCRM20QYbjNXixc9FlIePCAMAAAAYpvCEtsB3R45W+CO3BaKzs10ffPB+8L63t0fPPLNQS5a8pdNOO1NOp1Pf+9739cwzi7TlllO18cYTtHDhv7Ry5Vcx37XRRhtrm22+q3feeVu/+MUvRxTXaaedqQsuOEe//OV5OuywI9XZ2aF5825TRUWljj76hJj6hmHojDPm6LLLLtbVV/9Re+yxtz744D099tjDI4oDAAAAgKSwE086z/1FFgPJPJLbPLF06UeaPfvHwfuysjJtsslEnXfehTr88KMlSXPmnCev16ubb/6rnE6n9tlnX82efbb+/OcrYr7ve9/7vj766APts89+I4prxx130rXX3qh58+bqkksuUllZmXbYYUedccY5Gj06/jraWbP2l8Ph0Pz5d2jRoic1efLmuvDCX+t3v/vNiGIBAAAAil54cnvGnCwGknlG9LmlOWy932/XNja2x33Y2BiYjtvQMDaTMQUl2lAq15xzzmw1NIzWpZf+IduhJBTet9n+PReS2tpySVJLS1eCmhgq+jZ96Nv0oF/Th75NH/o2PejX9MlU35bfdouqLr5I3qlbqfmFV9L6rlRqaKiSw2G0SIrduCdJjNwWmbvuul3Ll3+uJUve0u2335PtcAAAAACkktcnSbJdxZfqFd9PXOReeulFrVz5tebM+YW23HJKtsMBAAAAkEr905JdzsHrFSCS2yJz5533ZjsEAAAAAGli+PqSW2fxpXocBQQAAAAAhaJv5NZ2u7McSOaR3AIAAABAofB6Ap+M3OYvh8OQbfuzHQbSzLb9Mgwj22EAAAAAOcno21CqGNfcFlBy65TP5yXBLWB+v09er0fuIpxiAQAAACSlt1dSce6WXDDJbXl5pWzbr/b2VuXR2b1Ikt/vU0tLkyRbZWUV2Q4HAAAAyEmO5iZJkl1Xn+VIMq9g0vmSkjKVlVWoo6NF3d2dcjgyOwzv6PtnAj8DxylnGLY8nl7Ztq3q6nq53aXZDgkAAADISY51ayVJ/jEbZDmSzCuY5FaSamsbVFJSpu7uroyP3rr65rT39voy+t5iUFrqVnV1lSQ3iS0AAAAwAOfHS1Xy7+ckkdzmPcNwqKKiWhUV1Rl/d21tuSSppaUr4+8udPQtAAAAkNio3WYGr30TJ2UvkCwpmDW3AAAAAIAA/+gx2Q4h40huAQAAACDfRS3L9G63fZYCyR6SWwAAAADIc0bfLslBJSXZCSSLSG4BAAAAIM8ZHk/wuhg3k5JIbgEAAAAg/4WdSbr+oX9mMZDsIbkFAAAAgHwXltza5eVZDCR7SG4BAAAAIN+FJbcyjOzFkUUktwAAAACQ78J3S3YUZ5pXnD81AAAAABSS8JFbklsAAAAAQF4iuSW5BQAAAIB8Z9gkt8X5UwMAAABAIfGH1tzaRnGmecX5UwMAAABAIQnfUIrdkgEAAAAAeYk1tyS3AAAAAJD3IpLb4hy5dSVb0TTN4yRdLGmypOWSrrAs655B6o+RdLWk/SSVSXpF0nmWZX06koABAAAAAFEYuU1u5NY0zaMk/U3SM5IOk/SCpLtN0zxygPqGpH9IOkDSRZJOkjRO0mLTNOtHHjYAAAAAoB+7JSc/cnuFpAWWZZ3Xd/+0aZqjJP1e0sNx6n9H0i6SftQ/umua5lJJn0n6gaS7RxQ1AAAAACAkfEOpIk1uE/7UpmlOlrSZpEeiHj0saUvTNDeN06ys77MtrKyp77NhqEECAAAAAAYRNi3ZVnGuuU0mpd+y79OKKl/W92lGN7As6z1JiyX91jTNLfvW394gqV3SY8OMFQAAAAAQD2tuk5qWXNv32RpV3j8qWzNAuzMkPS1pad99j6TDLMv6fEgRhjEMqba2fLjN08rlckrK3fjyGX2bHvRr+tC36UPfpgf9mj70bfrQt+lBv6ZPuvvWqHAHr2vrK6WyskFq555UHM2bTErf/xp7gHJ/VLlM05wi6TVJayX9UIEdk/8l6RHTNL8/vFABAAAAAHExcpvUyG1L32f0CG111PNw/RtP7WtZVrMkmab5rKT/Srpe0owhxikpsEa6paVrOE3Trv9fYHI1vnxG36YH/Zo+9G360LfpQb+mD32bPvRtetCv6ZPuvnW19aj/WJqWth7J5UvLe9KloaFqxKO3yaT0/WttN48q3zzqebiJkj7qT2wlybIsW9JLkqYNNUgAAAAAwMA4CiiJ5NayrGWSvpAUfabtEZI+tSxrRbxmkraKc6btTpKWDyNOAAAAAMBAwqclp2IBax5K9pzbyyXdZZpms6QnFDir9mhJx0pS327ImykwWtsq6TpJJypwHu6VkjolnSxp9/42AAAAAIAUIblNalqyLMuaL2m2AhtDPSZpD0knW5b1YF+VgyS9Kmm7vvrLJe0i6RtJ8yX9XdIESbPC2gAAAAAAUqDmlBOyHULWJTtyK8uy5kqaO8Cz+QokseFlSxUY4QUAAAAApIDR2CiXtVSenXcJjtAarS1ytMbb57e4FOdKYwAAAADIQ3WHHaC6ww5U6cNhE2K7urMXUA4huQUAAACAPOGyPpYkVVxzZbDM6OrMVjg5heQWAAAAAPKY0c3IrURyCwAAAAD5wecLXrq++Dx4b7S2ZiuinEJyCwAAAAB5wGiLTGJd770jSao/eFY2wsk5JLcAAAAAkAcc334bVeCQ+8UXshJLLiK5BQAAAIA84Fj5dcS98xNLdUdy+mo/klsAAAAAyAPOqOSWtbaRXNkOAAAAAAAwMKOpUUZXl4yWlqgndlbiyVWM3AIAAABArvJ61bDdNDV8d6qcX34R8cj51VcR9z17z1Lr7fMzGFxuYeQWAAAAAHKU0doio7NTklQ+/86IZ+V33R5x3/rAIxmLKxcxcgsAAAAAucrnH/CR0dWVwUByH8ktAAAAAOQow9ObVD3fJhPTHEnuI7kFAAAAgFzVm1xy2/Lgo2kOJPeR3AIAAABAjjI8nqTq+Tb7TpojyX0ktwAAAACQo4yuzoh734bj5d3CzFI0uY3kFgAAAABylNHWFrz27DBTTe8slXerrbMYUe4iuQUAAACAHGW0tkqS/FXVWv/ks5JhqONXv81yVLmJ5BYAAAAAcpTRFkhu7erqYJmfnZHjIrkFAAAAgBzlaGyUJNl1daFCw8hSNLmN5BYAAAAAcpRz+eeSJN/ESQPW6d1jrwxFk9tIbgEAAAAgRzm/XC5J8k3cdMA6rbfPz0wwOY7kFgAAAABylNHeLkmyR40asI5dWzfgs2JCcgsAAAAAucrvlyTZDlK3ROghAAAAAMg2r1fq7Iwt9/sCn0Zk6tb8xLPybL+D1j/0zwwElx9c2Q4AAAAAAIqa36/6fXaTY81qNb22JHKacd/IraJGbr07ztT6hc9nMMjcx8gtAAAAAGSR46sVcn30gRyNjSp5emHkQ78d+HQ6Mx9YniG5BQAAAIAscqxbG7y2K6sinhm+vmnJDs62TYTkFgAAAACyyLF6dejGFbVydIBpyYhFDwEAAABAFjka1wWvje6uyIc2uyUnix4CAAAAgCxxv/iCqi/8eaigKyq59cXfLRmx6CEAAAAAyIRVq1S33x6quPL3waK6I38QUaV83m2SJKOpUSXPLpLR2xt4wIZSCXEUEAAAAABkgPNXv5RzydtyL3lbnRddEreO+50lkqTak4+T+/XXQg+YlpwQPQQAAAAAGWC0toVuoqcf9+ndbU9JikxsJZLbJNBDAAAAAJAB9gZjgtfOVV/HrWM0N8VvS3KbED0EAAAAABngnD8/eO164/W4dcLPvI1QVpaGiAoLyS0AAAAApInr3SUqeeoJqbMzotz91puSbcfUd6xbG7fcP2aDtMVYKNhQCgAAAADSwe9X/azdJUmeB/4e8ciuqpK6u2OaGB6PjPXNsd/FbskJMXILAAAAAClQ+vCDqt9zFznff0+SIpJUx8KnIit7PTK6428q5fp4aUyZ7SC5TYTkFgAAAABSoObMn8n14fsatfeuqrrofDlXhjaNct5zT0Rdw+ORej1xv8e59KPYQoeR0lgLEdOSAQAAACDFyufdLufyLwau4PHI8IaS2+Ynn1X9QbMkSY6mxtj67JacED0EAAAAAGlQ8u/nBnxmeDwy2kLn3to1tcFr9xv/i21AcpsQPQQAAAAAmdbbq/q9dgne2uXlweuSxc/H1ie5TYgeAgAAAICRijrqZyC+CZtIkozubhleb7DcLisfqEkAyW1C9BAAAAAAjJDzm1VJ1QtOP+6JPAbIrqgYvB27JSdEcgsAAAAAI+RYvTqpev6xYyVJRm9v5IMEyS0jt4nRQwAAAAAwQo51a5Oq56+qliSV/Pc/UV+QIDUjuU2IHgIAAACAkfLEP7M2Wtnj/4gp6/rxqYkbktwmRA8BAAAAwEj5fElV6zzr3JiyrpN+nLihwxhqREWH5BYAAAAARshIMrnt3XtWbKEz8WZRtkHqlgg9BAAAAAAjlWRya1dXxxYmkdwyLTkxeggAAAAARirszNqB+LfffoDkNom0zO0eRlDFheQWAAAAAEaofN5twWvv1K3UMu8+2aWl6jz9TDW98Kp8c86Rd8HD8lfVxLRNasqxy5XKcAsSPQQAAAAAI+SyPg5eN7/wiiRp3cFrJduWDEO+na+VJNmrG2MbJ7Pm1knqlggjtwAAAACQLkbULsfl5bF1SkoSf48riXW5RY7kFgAAAAAyJTrZlWSXlCZux7TkhEhuAQAAACCL7NLY5Lb991dE1mFackIktwAAAACQQd2HHxVZECe59W06ObIgmeOCihzJLQAAAACMkL+2TpLUetPcxJXDElXbMGKmHPfusZc8M3eObMNRQAkxtg0AAAAAI2T09kiS7Pr6xJUdYWOMZWXBdbhNz7+kskcfUueZ58gui9p4Ks5aXUQiuQUAAACAkfD7ZXR1SZLsisqE1e2w5DZ8Mynf1tPVsfX0vgd2amMsAkxLBgAAAIAkOL5aodJHFki9vZEP+hJbSbLjHfUT80VhadhAxwAxUjtkjNwCAAAAQBLqDtlPzlUr1b5urbpOPytYbnR2Bq+TGbkNT27j7ZSM4WHkFgAAAAAS8fnkXLVSklR+260Rj4zOjuB1MiO3jubm4LXz669SFCBIbgEAAAAgAWP9+rCbyCnDRsS05IrE39XamtQ7m155S93HnqCm519KLsgix7RkAAAAAEjA0RIabTVaWiIf+nyha3cSKZYruTNrfZt/R2033Jq4IiQxcgsAAAAAgyp5dpFqTjwmeO9oWS/HN6uD94Y/LLl1JE6xbGdyyS2GhuQWAAAAAAZRe8LRci37NKKsbv+9QjfhI7fJJK5OJtCmA8ktAAAAAAzAaG+LW96/uZQ8HpXfckOw3HYkkdy63akIDVFIbgEAAABgAFUXnDvo87K771TZY4+GCpIYubXLykYaFuIguQUAAACAAZQ9+vCAz4w1a1Sy+PnIwmTW3CaxozKGjuQWAAAAAIbB/fabMrzeyMJkRm7LGblNB1YyAwAAAMAwlN91u4z29sjCJEZuVVaenoCKHCO3AAAAADAM/jEbyOhoT1wxil0eSm5tNpdKGZJbAAAAAEjS+gWPhW6cztiR2yTY4SO3JLcpQ3ILAAAAAEnybzxBXSf+KHDT2yOjrXXI3xGxW7JtpygykNwCAAAAQByOr1ZE3Pfsu798kzeTSkokSUZ3jxzr1w/5e3sPPDh47R89ZmRBIogNpQAAAAAgjuqoM25b71sgSbJLSiVJzi8+G9b3+sdtGLy2S0uHGR2iMXILAAAAoLjYtmqPPFR1B+wlDbJm1rF6VfwHfQmpa+lHEcWdZ/98yKH4Ntt8yG0QHyO3AAAAAIqK49s1KnlxsSSpZs5suV96UT0HHqz2v9wsGUawntHZFbd9vB2OG//3jvybTk46htYbblXZIwvU/ue/DDF6DISRWwAAAADFpbMzeFn65ONytKxX+QP3qWThkxHVeg79YfC6+ZkXgtfRU4m7TvrxkBJbSeo59gS1PPTPiCnKGBmSWwAAAABFxejujlvufvP1iHvfJhMlSf6GBnm33S70oCQyuXW/8VpqA8SwkNwCAAAAKCpGd/zpxv76UVEF/sDHqIaIYrtvt+QB2yErkl5za5rmcZIuljRZ0nJJV1iWdc8g9R2SfiXpp5I2lLR8WIHqAAAgAElEQVRM0h8ty/r7SAIGAAAAgJFwfP113HK7tjZ009ur6l/+oq9B1Jhg1LRk1s3mhqRGbk3TPErS3yQ9I+kwSS9Iuts0zSMHafYXSZdIuknSwZJek3S/aZoHjCRgAAAAABiJ6l+el7BO6T8eDl4bUWfZho/cdp5+pnxbmKkLDsOW7MjtFZIWWJbV/7fgadM0R0n6vaSHoyubprmZpLMknWZZ1p19xc+bprmFpP0lLRxZ2AAAAAAwPI516+I/8PmCl85VK4PXRli5pIiRW98WW6Y0NgxfwpFb0zQnS9pM0iNRjx6WtKVpmpvGaXaYpE5JEdOWLcva3bKsc+PUBwAAAICM6DruxPgP+tbYSlGjtR5PZLW6+tCN05nK0DACyUxL7v+nCCuqfFnfZ7wx+Ol99WeZpvmuaZpe0zQ/NU3zmGHGCQAAAACp4Yo8p9Y7ZaokyfCHjdx+tSJ4bXh6I+r7Jk4KPRtoFBgZl8y05P5V1a1R5W19nzVx2oyRtImkeQqsu/1C0qmS/m6a5reWZS0eRqwyDKm2tnw4TdPO5Qr8i02uxpfP6Nv0oF/Th75NH/o2PejX9KFv04e+TY9i6Vdnb+RuyQ53IC0qcztUUlsu+f0qeeKfoQq9vZF9Mm2L4GXZ+A0CbRIolr4dLsMY+Xckk9z2v8YeoNyvWCUKJLiHWJb1hCSZpvm8AqPAv5M0rOQWAAAAAEbKaG+PLOjfDdnfl/JEjcYaXm9kfZdL3htvkvHG6/KfeFKaosRQJZPctvR9Ro/QVkc9D9cmyafA7sqSJMuybNM0n1VgBHdYbFtqaYl/JlW29f8LTK7Gl8/o2/SgX9OHvk0f+jY96Nf0oW/Th75Nj2Lp19r1Lerf79hfXy+fDDkkdXd0q6ulS84vvlb0ybUxfXLMyYE/3X5pgHNzI95ZJH07XA0NVSMevU1mzW3/WtvNo8o3j3oe7tO+73ZHlZcodgQYAAAAADKmf+TWu+UUNS9+JbQpVN+aW+eK5VmKDCORMLm1LGuZAmtmo8+0PULSp5ZlrYhtpUUKTFs+ur/ANE2XAscA/XfY0QIAAADACBkdgeS268c/k3/8RpIRSIv6j/wpWfx81mLD8CV7zu3lku4yTbNZ0hOSfqBA4nqsJJmmOUaB44I+siyr1bKsf5um+ZSkG0zTrJL0iaQzJW0q6fgU/wwAAAAAkLT+kVu7sjLwWV4RKO8KTBk2mpsi6neeenoGo8NwJZXcWpY13zTNUkkXKLBm9nNJJ1uW9WBflYMk3SVpT0kv9JUdqUBSfJGkUZKWSJplWdZbKYseAAAAAIbI6Fsj25/U2tWB7YSM9sCBMEZn4HnXSaeod78D1LvLblmIEkOV7MitLMuaK2nuAM/mS5ofVdYl6cK+PwAAAACQExzr1wcuSgPbStlVVZIko60vue1PfutHqXffAzIfIIYlmQ2lAAAAAKAguN5/N3htu/uS29JSSVLZggdktLUGpyfbZWWZDxDDlvTILQAAAADku5In/hm87p+GXLbggWDZ6M02lm+DsZJC05aRHxi5BQAAAFA07Kqa0E154OxZo6cnoo7z2zWBuozc5hWSWwAAAADFo/9MW0m9e82SJHm2mh63qn/chhkJCalBcgsAAACg8PUd/2O0NEuSenfdTXIE0qH2K6+N28Q7fZvMxIaUILkFAAAAUNBKH7xfozfbSOVzb1bl9ddIkuzauuBz//jxcdv5N56QkfiQGmwoBQAAAKBgGS3rVTNntiSp6pJfBcsdK74MXtsVA2wcZRhpjQ2pxcgtAAAAgIJV+o9H4pa7w48EqqjMVDhII5JbAAAAAIXL7Y5b3Hb9TaGbvnNukd+YlgwAAACgcNl23OLu408K3YRNP+7Z/0A5vl2jzvN/me7IkGIktwAAAAAKltHVOcCDyPW0bdffJPcrL6ntmr8Gz79FfiG5BQAAAFCQjOYmVf0mdgQ23gZS3SecrO4TTs5EWEgT1twCAAAAKEh1B82KW+6bNDnDkSATSG4BAAAAFCTXsk/jlvvHjs1wJMgEklsAAAAABcXx+Wcas0FNRFnzv55R51nnyjtlqtqv+HOWIkM6seYWAAAAQEFp2Om7MWXeHWfKO3MndVz6+yxEhExg5BYAAABAQev49W9jdkdG4SG5BQAAAFDQuk49PdshIANIbgEAAAAUlJ79DwxeNz/3ouyq6ixGg0whuQUAAABQOHp6VLroKUkKbCA1fdssB4RMIbkFAAAAUDAqrwhtGGWXuLMYCTKN5BYAAABAwai45Ybgde8++2UxEmQayS0AAACAwmDbwUvfxEny7jAzi8Eg00huAQAAABQE938WB69b592bxUiQDSS3AAAAAAqCc9XK4LV3y6lZjATZQHILAAAAoDD0TUv2bTJJcrOZVLEhuQUAAABQEIy2VkmSXc25tsWI5BYAAABAQTBaA8mtn+S2KJHcAgAAACgIZffdLUnyb7hhliNBNpDcAgAAAMh/fr+c36yWJDm/+DzLwSAbSG4BAAAA5D2jvS143XPE0VmMBNlCcgsAAAAg7xlNTcHrnv0PymIkyBaSWwAAAAB5r39KsiT5x47LYiTIFpJbAAAAAHnPsWqlJMnf0CCVlWU5GmQDyS0AAACAvOdYHRi59Y8bn+VIkC0ktwAAAADynuObVZIkH8cAFS2SWwAAACDX+XzZjiDnlS56SpLk35CR22JFcgsAAABkQeVll6j2yEOlrq7Yh7Yt52efSj6fShY9pdGTxqn8lhvjfo9jzTeSbac52tzn/HK5JMn14fvZDQRZQ3ILAAAAZJrHo4qb/6qSFxer/J55MY/L5t2uUTtvr6qLLlDtycfK6OlR1e9+I8eKLyPr3Xe3GrbeQhV/viJTkec8z447ZzsEZAnJLQAAAJBhRltr8NqxZk3M8+pfXSBJKr/7zojyyj9dFlnvF3MC5ddcmeoQ845dWipJ8nx/tyxHgmwhuQUAAAAyzGhrC17bJe6k2zlXrEhHOAXFdjqzHQKyhOQWAAAAyDCjNTRya5dXJN3O/ebr6QinMPj9gU+DFKdY8ZsHAAAAMszRHhq5LXv4wSG1NdauTXU4haE/uXWQ4hQrfvMAAABAhoWP3Lqsj4fU1vX+O6kOpzCQ3BY9fvMAAABAhoVvKCVJxrp1oRuvd9C2dccewdE/0WxbRn+fkNwWLX7zAAAAQIaVPXh/xH3NWT+T+z+LJUlGZ0fC9mPG1sr96stpiS0vhSf7JLdFi988AAAAkGElfYls8H7x86o76tDACGRHbHLbs+/+MWV1hx6Qtvjyjs8XvLTZUKpo8ZsHAAAAMsw7ZVrccvfi51V5xe9jyh2N69S7x17pDit/9a+3lRi5LWKubAcAAAAAFBOjZb2cyz6J+6zu2MPjljtWrlTzK//U6MkbxX1uG0bK4stL4cmtk+S2WPGbBwAAADLIufwLGR7P0Np8s1p2VbWan14c97ldWZWK0PKW86sVoRtGbosWv3kAAAAgk7q6h97kp6dJkrzf3V4t8++PreAu7gmZVRecm+0QkANIbgEAAIAMMrq7JEm206m2625Mqk375VcEr30TNol57mhulnp6UhNgHnK/83boxjP4UUooXCS3AAAAQAYZ3YGRW7usXL7JmyXXyO0OXtp1dXGrOFavGnFs+co3cVLw2jtjh+wFgqwiuQUAAAAyqH/kVuVlsktKEtZv/82lEff+jSfEPRrIWYzJrc+nmh8dL5f1sSSp/Y9Xsea2iPGbBwAAADIpbOQ2fES2n7+6Rm3X/FXrPl+ptWta1HXu+ZEVDEOt8+6LaVd56a+Ten3ZfXer8tLfRO4wnKfKHrxfpQufCN57t5yaxWiQbcW98hwAAADIMKOrb81tWZkU5wif9Yv+Ld93thj8S+Ikxe53liR+uc+n6l/MkSR5p0xVz7EnJG6Twyov+VXw2rv5d+TZdbcsRoNsY+QWAAAAyKDwNbfx+DadnMSXDO9cW6OzI3hdMfeWYX1HLvGPHx+8bl78yrD7BYWB5BYAAADIoOCa27KyiPK2627Uuk9XSK7hTa70jx6d+N0doeTW9eH7w3pPphitLSp5emFwGncM25Zj7beSpLYrr5VKSzMYHXIRyS0AAACQSf1HAZWXyzt1K3m3nCLfxEnqPupY2bXxd0JOhrF+vWTbg9Yp/ccjw/7+jGpvV90Be6v2pGNUedUfYx4b65tVPWe2HE1NkiTv1tMzHSFyEMktAAAAkEFGV/+05DLJ5VLz4lfU9Mpbwx55tMsD05sNr1clzz8zaN2qqE2nym/6a2BkNEFSnFG2rTGTx8v16SeSpIqb/xrzfPQWE1W24IFQUU1tJiNEjiK5BQAAADIoNC25b82t0xl3g6hk+cMSu9rjj5Lji8+Tblt1+SUas8kGqjnpmGG/P9VKnl4Yce+vrIq4dy77NKaNXVmZ1piQH0huAQAAgEzx+1U+/05Jkj3CNaI9B/1AtmGo7a+RG0O5ln4Ut77zow8H/K7SZxbJsfyLEcWTMr09Ebfhm0ZJUsni52Ka+BsSrzdG4eMoIAAAACBDXK//L3jtXPbJiL6r9c57ZLS2yI4a2bTL4ifN5fNuH/T7Sl55SdomS+fE2rZcb78p3+bfCe4m3c83cVLEfdm98yPuvZtOlsrj7zyN4sLILQAAAJAqPp/c//2PjJb1cR87WkPlvu+YI3uXwyG7rj52SnN5RdzqdqIEsKtzZPGMQMkT/1T9AXurbv+95FzxZcQzo9cTed93TnDPIYep+bkX1fy/dzIWJ3IbyS0AAACQItWn/0R1Rxyi+j2+F/d57Ymhta0dv/5tWmIofeShuOV2xeDJbXQSmUkVt94kSXJ9tkzu/70a8Sy4RlmSbDuY/PbusZe807fNWIzIfSS3AAAAQIqUPf4PSZJz5dcJdyD2b7RxWmIov2ee5PFI3d1yvf2m5Pf3PYg/otvP/fpraYknGb7xGwWvS/6zWFLfbtJSxDm34Ykv62wRjeQWAAAASIeotaOZ5Fi3VtXnzFb9/nup/Ka/SEo8Lbn0ycczEVpc/g3Hx5R5twqcXev8cnnwHwpKnn06+Nxob8tIbMgfJLcAAABAKkSN1DpaWwZ9nk5GZ4fKHntUklT1h98FXl8yst2Z08muq4sp691nX0mSo2W9XO+8LUnyTdgk9Hz3vTITHPIGyS0AAACQAtGbSBmtrZEV+qcHS+o8Y056g+mOPE7H8eVyGd7B19T27r5nOiManM8XU9R91LHBa8fq1XK99mowyfVutrnssWMzFh7yA8ktAAAAkAKOdesi7l0fvh9ZISyB6znwkPTGsuabiPuGHaZLXfGnSffM2k+SZJeUpDWmQfm8MUX+8RvJP3qMJKnk38+p/gf7qfz+eyVJdv2ojIaH/EByCwAAAKSA+9WXI+5rTvtxZIXw0UmXM72xvLskpsyxdk3cur4p0yRJhid7uyUbnsjk1rPjTpLTKce6tZL6NskK46+tzVhsyB8ktwAAAEAKVJ9/zqDPjfDRSZcrpe/uOuWnEfflN1wfUyf6iJ1+dn8sPT1xnw+qs1Pul14M7M48En3te3fdTc1PPKv1jy8atLpNcos4SG4BAACAdOnslNE/XTls5NZ2pHbktv2q6yLuHR3tMXX84wI7Enu23iYUR0WlfJM2lSS53n9vyElqzeyfqO7wg1X5h98NLeAo/euB7ZpaeXecKTkGT1PsapJbxCK5BQAAANJkzKRxapi2mUofWSB5w6YlO1M8Ldkw1Pj+J4NWcb/0oiTJs0dol+HuY46Td8aOkiRHe5u0enXSr3R+9KFKFz0lSaq49cahRhypb1qy7XZHFIeffxvOWN88svehIJHcAgAAACPlDU059ldWRTwybFsV114loy1s9+QUT0uWJP/YcYNuCuXoOxfWLi1V8/P/VftvLlX7pX+QXRWK1/g2/rrceEbtsfPwg5VUdd7ZGrNBjRyrV0n9OzlH9YvRFv8sW6O7a0TvRmEiuQUAAABGyOjsCF53zT4rtoLPp5ozwtbFOtP0v+FJnKVrl5bKu/U26jr3fKmiQnZp6Pxb5+WXJ/eejo7EdQZR8vRClf/tHklSwzZbhjazihq57Tn0hxH3vrHjJEmd5104ovejMJHcAgAAACNkhCV7/jhTaV1ffC73W28G721n6kduA1+cOLn1bbV1ZJOSUHKrlV8n9Zp4uzEPRe1Jx0Tclz3090AsUcltx6W/j7hf//RirV3VJO92M0b0fhQmklsAAABghMJHbnv33Dtxg1Svue3n9yes0rtHVHyVlaHmJ56c1Guq/t95QworwmC7MkdNS7Zr6yLvXe60TOlGYSC5BQAAAEbI6OwMXttVVYFzWgeTruQ2iZHbeO/2bjklcFE68JrdiK/4bNlQoorg+uTjAZ9Fj9xKkm+TiaEbN4ktBkZyCwAAAIyQ0R46eseurIpYxxpXmpJbIyq57dnvgIj71tvnx21nuwNJreu8n8t56W8TvqfrtDMj7v319UnH6Fi5MtSuuibyoSs2ufVu891QnBWVMc+BfiS3AAAAwAj174Rsl5cHNkVKdE6rjEyEpY5fXhy87j76OPX84Idx6zlaWoLXziuvSPzFRmT8jubmiHN8B23a11e+sePkHz068mGckduI0dxBdoMGSG4BAACAEeofubWrqgOfObIu1LfV1mq542613Pug2m6aG5OUBnl6k/9S25ZryVuSJO/kzYLFzo+XJtXc0XdGrV1dre6TfxL51XH6rXfvWaGbgeIHJOXGf3UAAABAnjLaWlUzO3DMj9HUKEmy60cN3ihda27j6B1gtDacc/WqpL+v5PlnVPLqy5Ik/yYTpc8/C5Z3TdsqYfuq3/xSkuRa9qm6jz5OVZeFRpfjbRbVc+QxauvulnfK1KRjRHFi5BYAAAAYgfKbbwjd9E2h9W84fsD6XnNL2dHTcdOg44KLht94oCnGtq3a448K3vrHbRh61DdqPRT2mDFqfvLZ0H1JnLXKhqHuk06Rd8aOQ/5+FJekk1vTNI8zTfND0zS7TNNcappmcvuEB9pOME2zxTTNixPXBgAAAPKH69NPgtetN98uSfKPHTtg/Zb7H057TJLUee75w2/c1RW32PHVisj7b9eod6fvSZKcq1bGa5JY2Dpau6ZmkIrA4JJKbk3TPErS3yQ9I+kwSS9Iuts0zSOTaGtImieJv6kAAAAoOP6qquB17yGHSpLs8oqB64/ZIO0xSRrS1OfOU0+PuHd99GHcekZU0utvGB3czdj9n8UJ39M/bTuc7QxNRbarhz76C/RLduT2CkkLLMs6z7Kspy3LOkPSAkm/T6LtGZK2HG6AAAAAQC4rf+A+SZJn+xnBsnjntQaVlaU7pIAhJLcdl/1JLXfcHbwvv2de3HpGV+g8397v7arOc8+XZ4fAdGHn8i8Svsf13rvB69Ybbo35TpJbjETC5NY0zcmSNpP0SNSjhyVtaZrmpgnaXiXpZyMJEgAAAMh17rfeDF579tgrKzFEJNVD2VnY7VbvIYeF7gc4ysjo7g5etzz8uHxbmMHNsxwt66Woc3ZjhG0Y1XPM8ZIk3yaTgmXerbdJPmYgSjIjt/2jrlZU+bK+TzNeI9M0HZLmKzDiu2hY0QEAAAB5ou3Pfwle+8dtqMY33lPj+5+o+9gTMhaDXVs7/MaGId8ppwSuPZ7Y5x6PSp5eGHiPyxVKVMN3OPb7B3+H1xtq35d822PHqvlfz6j5yWcjNqgChiqZo4D6/wtpjSpv6/scaC3tzyVNlnTIMOKKyzCk2tryVH1dSrlcgWkfuRpfPqNv04N+TR/6Nn3o2/SgX9OHvk2fnOnbnp7gZdn226g0PJ7pUwKf8+6U56wz5Lj3XvlPPDGtMRu1ddK6dZKG1zeO0sBuxW75Y9o7rrlJrpv/GripqAg+N2pD64trK91SaZwdj/vjK+2bKu12R37/vnsOOdZ8kzN/Z3NUKo4wTia57X9N9ByD/vKYf54xTdOU9AdJR1iW1TL88AAAAIDc5Zh3Z+hmoFFTp1P2jjPl23Fm2uOxy0o1ohyhb1qzEWfk1vWbX4duwjbRiljbO9ARQv36Rm7jnWcLjFQyf6v6k9PoEdrqqOeSJNM0nZLulvSQpGdN0wx/h8M0TZdlWd7hBGvbUktL/G3Js63/X2ByNb58Rt+mB/2aPvRt+tC36UG/pg99mz650rcVX60K/g/1+tEbSdmO5+DDVPlhYKfj4fTNKJdbTkmezi61RrUftfEEOb/+SpLUM2Om2vqeu7p9qu+r09rUJtszcHpd0tKhWkm205n1312m5crf2VzV0FA14tHbZNbc9q+13TyqfPOo5/0mSJop6WRJnrA/knRZ2DUAAACQ14y2wMq93j32ksqzP92086xz1fanq9X0n9eG9wX9I7fd3XL/Z7GM1tA4ln9UQ/DaHj06dO2IHLl1frxUlb+7WI4vl8d8veFj5BbpkzC5tSxrmaQvJEWfaXuEpE8ty1oRVb5K0g5x/kjSrWHXAAAAQF5wvfaqag8/WK7X/xdR7mgNJLcZO7s2kbIydZ86W74pU4fXvqQk8PHSi6o76lDVHvPD0DNHaFjNs+12ofKIacl+VVxzpSpuuUENO0yX0Rh2rm1Pj6rOmyMp8mxbIFWS/Vt1uaS7TNNslvSEpB9IOlrSsZJkmuYYBY4L+siyrFZJb0Z/QWAZrlZZlhXzDAAAAMhl9T/YT5LkOH+Ouk6dLblc6j7hZBl9ya1dM9Aeq/kl+nze8OONHN9+K0nybPtd9Rx9XKhS+Cis16uS/74QvB09ZVOt+/Az2WPGqGzBA3K0B/akdTSFJb1AiiQzLVmWZc2XNFvSfpIek7SHpJMty3qwr8pBkl6VtF289gAAAEC+Mpqbgtcu62NVX/hzVZ93thyffyajo12SZFdWDdQ8v7hLYsv6zq41egM7Q3edeU7kObjO0LXh90VMX5ak0scflSSVzQ9tvhVvwypgpJKeD2BZ1lxJcwd4Nl+BM20Ha5+CzZ0BAACAzOo/2zWa8+uvZHQFNgeyKyri1sk77tj0wP3iC/LsvmfYGbWRo7sRU4y9cfaNLS2TJDnWrU1dnEAcTHYHAAAABlFzzhlxyyt/d7HcH7wnSbLLCyS5LYkduTU6O+VY+bWM/jN9ozeDijoKyOjoiHy87NPA93SzSzDSK6lpyQAAAEAxMvrWiMbTn9hKkp0DOyWnRNSaW0lyvfeOGr47NThKLZczqkIo2TX8scltxS03SN3dcjQ3pzxcIBzJLQAAADAA92uvJFWvYKYlxxm5rbz2qoj76J2OI44C8vqC65DDlT36UGriAwZBcgsAAAAMwGgbeOQ2XMFMSzaS2CYnenQ3bFqy0d4mw++XJLVf9qdgeeUfL0tJeMBgWHMLAAAARPP7ZXS0y2iPHYWMx25oSFwpH6xdl7CKXVkZWRA2Tdm54svgtXfaVsFrx9rAMUK9u+8p79bbqOeQQ0cYKBCL5BYAAACIUnPKCSp5/hn17rl3UvX9G4xNc0SZYbSsT1jHu23U6Z9hI7fOj5dKkuyyMvkmbxbTtnfX3dR17vkjCxIYANOSAQAAgHB+v0oXPSnD41HpM4uSa7LBBmkOKjN8p/5MdnX14JWipi6Hr8GtvO7qwIXDIf/YcTFN7YbRI44RGAjJLQAAABDGseabmLLOOecN2saurklXOJk1YYI8X63Uus9XJt/G6YwpMjo7Jbdb7b+5NKK8+/CjRhohMCCmJQMAAABhSv79XEyZ57vba+23rZLHI6O7S46vv1bNqSfL9ekngQrJbMSUL8rLZVfFf9T141NjC+PssNzPF7butvPMc6RC2VUaOYnkFgAAAOhjtLWq+ryzY8r9o8cELtxu2W63fFOmxh2xLGRdx5+k9t/9MfZBnMTeX1MrSbJLSoNlBXNcEnIW05IBAAAASeru1ujNNo77yD82dsOo9suvkCT17rVPWsPKBbZhqOOyP0rl5XGf++vrI+7br/lLoHzD8cGyZI9VAoaL5BYAAACQVPHXawd85t90ckyZZ4+91PjWB2q598F0hpV13YcfpaYlH8murRuwTtPr70bc+zaZGPEpSY7GxMcMASNBcgsAAABIKn3qX3HL7bKyAdv4J2wiud3pCimrWm+4Vd3HnqC262+Sf/xGg9a1a+vUOTs0nTu4wVZpaXBUt/v4k9IWKyCx5hYAAABFzGhuUumjD6n34EPl23iCXEs/iqnTeeacLESWfT3HnqCeY09IvoHXE7y0a0K7Rze99KacK5bLu92MVIYHxCC5BQAAQNGq+tUFKnv0YXkeXiD19sY8b7vuRnX/8MgsRJZ/jJ5Q//mrQmfl2mPGyDtmTDZCQpFhWjIAAACKVtmjD0uS3G+9IdenVsSzjosuVveJP5IqK7MRWt7p3XPv0A07IyMLGLkFAAAAJBnd3RH3XSf9OEuR5Kfe/Q5Q25XXyvvd7Qrr3F/kDZJbAAAAFCVj7dqYMn9VtXpn7Sv/+I1lM5V2aNxudf/kZ9mOAkWM5BYAAABFyfXBezFl3unbqG3uXVmIBsBIseYWAAAARcmxvjmmLNGRNwByF8ktAAAAio9tq+b0n8QUG22tWQgGQCqQ3AIAAKD49PTELbara+KWA8h9JLcAAAAoOkZ7e8R9xy8ulGf7Ger41SVZigjASLGhFAAAAIpO6dNPBa/brrxW3T/5mTovIrEF8hkjtwAAACg6xvr1wevuH8WuvQWQf0huAQAAUHScy7+QJPXsf6DkdGY5GgCpQHILAACAouP8MpDc+jbdLMuRAEgVklsAAAAUHaM5cMatf/SYLEcCIFVIbgEAAFBcOjrkspZKkvwbb5zlYACkCsktAAAAior7f6/K6O6W7XCod699sh0OgBQhuQUAAEBRKbv/XkmSb8o02bV1WY4GQKqQ3AIAAKB42LbKHv+HJMn14ftZDgZAKpHcAgAAoGiULHoq2yEASBOSWwAAABSN6nPOCF633npHFiMBkGoktwAAAGw3WsgAACAASURBVCganp13CV73HHF0FiMBkGoktwAAACgapYuelCT5K6uyHAmAVCO5BQAAQFFwfLk8dN3Rnr1AAKQFyS0AAACKQv3+e2Y7BABpRHILAACAouBobAxet11xTRYjAZAOJLcA8P/Zu+/oOKqzj+Pfme2rsqpu4G6z2PTeTO+9hRpqIIQECCUEkjckoQRIARISEiAhgdAh9I4B01uA0MtiY8DdklVWZbV15v1jpZVWWlVr1fz7nOOjmXvv3Hn2em3ts3fmjoiIrBNSU6cBEN95N6KnnTG8wYjIoFNyKyIiIiLrBssCIPodrZIsMhYpuRURERGRdYIRDgNgFweGORIRyQcltyIiIiIy9qVSmA2tyW1JyTAHIyL5oORWRERERMa+lpbMpl1QMIyBiEi+KLkVERERkTHPSMQz27bTNYyRiEi+KLkVERERkbEvkWzfdim5FRmLlNyKiIiIyJhnJBPtOy7n8AUiInmj5FZERERExr5Ee3Kry5JFxiYltyIiIiJjjW3jvet23POfHu5IBo9tY9TX4Vi0kMKfng+hUJcm7scfxf+nayAWSxc0N+N64zVIJrNnbt3uIQpaRIaSrskQERERGWNcLy2g6PyzAah7fD7J7bYf5ojWXuX47GfT2o8+SGJ1dWbfteB5AqedCEBqylRiRxxF0fln4X3kIQDq73u4/VjN3IqMSZq5FRERERlj3K++3L69YP4wRjJIbLtLkVFfD7W1mX3Xe+9kts1lyzCXLc0ktgBFF5zTfrDuuRUZk5TcioiIiIwxzk8/zmw7vv12GCMZJB2eUduRe+J4is7+Aa7XX8XzxKOZctebr1G+5UZZbR3Ll2W2NXMrMjYpuRUREREZS+Jx3C++kNntmPSNVt577ui+7v57KDn8QBzffpMp87zwXM8d6lFAImOSklsRERGRMcJcuoSyHbfOKjPicYhEhimiweG/+W+9tjH68xqV3IqMSUpuRURERMaIwPHfwbHkmy7lrnfeHvpgBlF8p50Ht0PDGNz+RGREUHIrIiIiMgZ4HnkQZ+iLnHUlRx06xNEMLqP10T7xebv067jE1ttS879Ps8u22mbQ4hKRkUXJrYiIiMgYUHzGqcMdQt4YDWEAkhttQuPVfyC2z369HtN84c+of+p5rPUnk9h400x5+La78xaniAwvrYMuIiIiIiOaGU4nt3ZxMdHTfkD0e2d0ee5tm8arr8H1zltEfvTjTFn9869QcOVlJLbYCnv8+CGJWUSGnmZuRURERMaY5ot/QfN5FxI78JBMmWtBLysIj0SWRcGVl+F6+00A7EBrQmsYJG+8Kech0VNPp/Gmf0FhYXuhadL8y8uIH3RIzmNEZGzQzK2IiIjIaNd6TypAw/V/I3bcCQA43/0vnicfA6Dk2CMJ3/MA8T33GZYQB8I9/xn811+b2beK22drrRNPIlFeQWzhVxT+4mIAbI8HTM3diKyr9K9fREREZJQz6+sy28kOCyalps/Maue5/54hi2mtxeMETjo2q8guK2vfcbmwDz0Uq7yivd7rG6roRGQEUnIrIiIiMsoZjY2ZbbuoqH27YzIIOL5ePGQxrS33M092KUvsOK9Lmd3hmbW2x5PXmERkZFNyKyIiIjLKOT/4X2a746W7nZ/n6vrgfbDtoQprwIw1a/DdfUeXcruwqGtjZ3tyi2ZuRdZpSm5FRERERjn3Ky+17xQUZNVZpaXZjTvcnztSle6zK+4Fz2f2Y/vuT90zC3I3drUvIWN3eu0ism5RcisiIiIyUkQiAzrM8flnAMR326NLXcNN/8raN+IjP7l1LFuatd9wx30kt9w6Z1u7w8ytVTkur3GJyMim5FZERERkBPDeegsVs9an4LJf9u/AeBznRx8A0HLyaV2qE7vvmbVvrl494BiHRCrVv/Zud2bTqqjooaGIjHVKbkVERESGWypF0cUXYCST+G66oV+HGrEoRut9tNbkyb229zz2MADeO26j+LtHQXNz/+PNo86LXiXnzO2xfWrmLGy/H9vpJPado/MZmoiMcHrOrYiIiMgwcz/dvjKwkUqBZfX5ea1Gh0uZbY83Z5v4Tjvjfv1VAKzxEzDWrKHoJz8GoHL6RKqrGgYa+qAzly7J2q9/5Kke21vjJ1D74htg21gzZvbYVkTGNs3cioiIiAwz9/PPZu2bK1f07UDbxnv7re273TwKp+Hvt2W2HV+GcCzLTiCxrL6db5A4336L0l13wP3k47iffxbPg/e3x9ea3NqmSc37n2GXlnXXTYY1fYYSWxHRzK2IiIjIcOv82BvHwi+xJk7qdvbW++9/UfTT87qUWxMn5WxvV1bSfMFFFFz3e/w33UBy8y2y6o2mRuyOjxDKs9KD9wEgcOp3M2W1m2xGaoMgjkULAUjM2xVrvfWHLCYRGf00cysiIiIyjBxffN6lrOTow/D/9jc52xsN4ZyJbfSY46GbmVuA2IGHZLbdL76Q3edQ3nfbzXN2zVUrAXAsDAGQ3GCDIQtJRMYGJbciIiIiw6hsl+1ylhf86Zqc5a7XXs1ZbgV6nnlNdViYyXvf3dmVyWSPxw4ms9OCURmWBakUzo8/AiA1OzhkMYnI2KDLkkVERESGSzezmFn1hpFVZMSiOZu2/OCsnvty9vCxbyiT2+amnOUlRx+WtZ+Yt8tQhCMiY4hmbkVERESGiblieY/1Rrg+xzG5F5uyS0oGHIfR32fLro2W3Ml5Z6nZuixZRPpHya2IiIjIMCm64JzMdv1/Hu1S73rvnfYd26bojFMovOwSAOK77ZHV1i4s6vV8qSnTclckEhg1NXgefQg6PFooH7qbeRYRWVtKbkVERESGSceFnRK77t6lvvj4o8CycD/2MIHDDsD7yEOZunjny3Y7Xb6cS9PlV+Usdyz+isCJx1D8/VMovPyXfYx+YIxoCwC2z0f16jCpHCs8d3ltIiJ9oORWREREZJjEDjgYAKtyXM56a/IU3E88SuD0k3G/+XqXuv5qW5G4s8Cp38X17n8B8P3rH/3ut1+i6Zlb2+sFw8CR45m+Df+6o0uZiEhvlNyKiIiIDBPb5QIgtv9BADT8/daseseSbwmcfnLOY41wmNTUaQBEjz6ujyfsZQGrIWC0Jbceb876NV9+i11SOpQhicgYoeRWREREZJi03X9qe9PPp43tvV+fj7UDARr+cRuRs86l+ZJL+3RM7Ohj+x3jYDPr6wCw/f4udanJU5TYisiA6VFAIiIiIsPEaEnff4rXl/5ZUNDrMdEjjsKIxYgdcjg4HCQ337LP57OLionP2wX3a68AkJw1G+eihV0bJpM9PzpoLRT+4mIAHN98DUB8591wv/oSAI3XXJ+Xc4rIukEztyIiIiLDJRYDWu8/bRXfcV63zesen0/jTf+k4dY7weEY0Cmjx52Q2Q4/+HjONsXfOyFn+WAyLAuA5NyNMmXWlP7fRywi0kYztyIiIiLDxGhqArLvP2248z6c776DWVtD8ZmnZcrXLFyCHRj4s2zbxA47koZUiuRW22CVV+Rs43nmKZwff0hyk83W+nzdsf3pWWrb58uUWaVleTufiIx9mrkVERERGWqWReDQ/XF98hEAqWAwU2UXFpHYbQ+Sc9pnNGN77zsoiS0ALhexY79LavYG0LqgVS6le+4MicTgnLOV2WFl5MbfXgNAYpfdMmWD9hpFZJ3U55nbYDB4HHAJMAP4Brg6FArd3kP7CcAVwD5AGRACfhcKhf6zNgGLiIiIjHbOTz7KerRPYpvturSxxo/PbBvJZH4C6e3ZuLFYjwlwf3n+c1/7qVsvS07M24WGG2/BmrTegC+1FhGBPs7cBoPBo4C7gPnAYcBLwL+DweB3umnvAZ4B9gZ+BRwBvAfc35oki4iIiKyzOj9vNtcKwW2X7QLYbnfeYgnfehfN511I5AdnEd95t6w67313U/Cr/+t1Bteoq8Vz390YDeEe2zmWLclsxw44qH37yKNJ7LBT/4MXEemgrzO3VwP3h0Kh81v3nw0Gg2WkZ2YfyNF+f2AzYNtQKPROa9lzwWBwCnAxcM9axCwiIiIyqhm1tZ0KcsygejyZTauiMm+xxA88mPiBB6dP+Z97MysXAxT9/EIAEtvtkGmTS/EZp+J++UUAal9/FyyLVHDDLu3aLktuOfV0PfJHRAZdrzO3wWBwBjATeLBT1QPAhsFgcHqOwxqAvwPvdir/orUvERERkXWW87NPM9tNl16Zu5FhEDvoUFLjJ9By1rlDE5iZ+6Nh55nmztoSW4CynbambOdt8d5xW5d2zo/T9xgnN5w78BhFRLrRl5nbtq/dQp3KF7X+DAJfd6wIhUILgAUdy4LBoAs4EPgUERERkXWY/6YbAIiccz4tPzqn23YN/7pjqEJK6ya5dXRIbo2aGsy6WlKzZmfKrJISzPr6rGO899xJ9MRT2rtevQrHiuUAJLfo+7N5RUT6qi/JbaD1Z0On8sbWn8V9PNfvgNmk79kdEMOAQMDXe8Nh4HSmF0AYqfGNZhrb/NC45o/GNn80tvmhcc2fXGNrvNG+kJRr5x1H1rjvmvsZu/7rr8X5+9/CqlW4dtwSGhpIvPc+zJkD0CWxBXC9+18CjhQUFgLguOTaTF3BDtvAWt5HrPdtfmhc80dj27Pe1rfri74sKNV2Grubcqung4PBoBEMBn8PnA/8IRQKPdq/EEVERETGCMvCtftumV17hx2HL5Zcpk8ncXfupVGMDz/AcdWVGHV1GKkU5ptvpCuam7vtzrnv3pltx99vbq/I4wJZIrLu6svMbduyd51naIs61XfRumrybcCxpBPbi/obYEe2DeFwy9p0kTdt38CM1PhGM41tfmhc80djmz8a2/zQuOZP57E1amuo6FAf9hTBCBt3Y5Ots2JsE//PQxTcfFNmP7pqDS3hFpwff0x3qar57rs0fvgZZm1Npk1y7saD8l7T+zY/NK75o7HtWXl54VrP3vZl5rbtXttZncpndarPEgwGi4HngKOB89Y2sRUREREZ7ZyffzbcIfTOmXvuo+APV2ftGw3pS5EdixZmlcfn7UJi2+0z++4XX6B0vz0y+8lNNh2sSEVEsvSa3IZCoUWkF4zq/EzbI4GFoVBoSedjgsGgA3gU2B44NhQKXT8IsYqIiIiMap4n2u/Oqn3xjWGMpAet9wX2xgynL97z//EPmbL4TjvT8O+7qX/w8UxZ0cUXZB3nXvD8IAQpItJVX59zezlwazAYrAOeAA4hPSN7LEAwGKwk/Yifz0KhUANwJrAbcDOwNBgMbt+hLzsUCr09OOGLiIiIjB5GUxMAyZmzSG208TBHk5vt6NvHQ89jDxM76FCcX3yeKQs//GRmO7b3vniee7Zr/7rfVkTypE//e4VCodta75+9EDgdWAycFAqF7mttciBwK7A78BLpWV2AH7T+6SjV1/OKiIiIjCnRKACJebsOcyA96Oay5M7MNWsoOeKgzH5yTvaza62Kyi7HWGVlNNx869rFJyLSjT4nmaFQ6GbSM7G56m4jvXBU2/4eudqJiIiIrMuMSHplYdvrHeZIetApuY3vtDPu11/t9bDoCSdn7VsTJ2Xth/99D/H9Dhic532IiOTQlwWlRERERGQQmLU1ANilpcMcSQ8c2ffctiXkbZLBDXMelpowMXt/ZvtapMnghsT3P1CJrYjklZJbERERkSFirloFgDV+wjBH0oNOCWjzpVdi+/2Z/bqnF9By4ildDrOmTM3aT20QbO+y9XJsEZF8UnIrIiIiMgQcH3+EY/kyAFJTpw1vML0I33U/TZdeSfU3q0jssBP1Dz6OVVFB06+ugMJCmi67qss9tqnJU7L2k5tu3qEyNRRhi8g6Tgs7iYiIiAyBwKknZLYTO+w0jJH0Lr73frD3fpn95FbbUPPpV+2zuoWFNP/qcgLHtT8p0i7pdKm1YWD7fBgtLV3uxxURyQcltyIiIiL51tKCY8k3AKTGT+hyX+uo0OlyZdvry643u14QWPf0AlxvvEr0pO/lMzIREUDJrYiIiEje+W69JbMdfuTJHlqOHrbH02ub1NyNSM3daAiiERHRPbciIiIieWe0RDLbqRmzemg5enScuY0efdwwRiIikqbkVkRERCTPjOb043SSwQ3HzuNwfO3P6k1usukwBiIikqbkVkRERCSfQiH8N/wJAGfoi2EOZvCkpkwjsfGmWGVlRA8/arjDERFRcisiIiLSX64Fz1M5rpjKccWQTHbbzrz3HtybbjyEkQ0hl4v6p1+g5oMvsMeNG+5oRESU3IqIiIj0iW3jfPstjIYw/r9enyl29DAba95//1BENnw8HvB6e28nIjIEtFqyiIiISB+4n36SwCnHk9h6W+yCgky5EY/lPsC2MT75JKuo9qU38xmiiMg6TTO3IiIiIh04334L14LnupT7//JHAFzv/jervHTf3akcV4z78UfbC22b8g2nYXz7DQB1L7xKdVWDHosjIpJHSm5FREREWhkNYUoP3oeSY4/E8cnHWXXOD9/PbLtffrHLsYHTTmxv+/ZbmHV1mf3kxlpNWEQk35TcioiIiLRyfvxRZrtsj52y6qyy8t47SCQoPvEYSg/ZN1OUvOWfY+fxPyIiI5iSWxEREZFW7meezNo3qqooOv1kSrffAkfV6l6PLzr7DDzPPp3Ztw44EOvEkwY9ThER6UoLSomIiIi0cr3zdtZ+xcazemyfnDWb+F774r/pBgC8Dz+YVW8Hg4MboIiIdEsztyIiIiKtjObmfrWvf/QZYgce0m29HQisbUgiItJHmrkVERERaWXWrOlXe7u8nGRFRbf11lFHr21IIiLSR5q5FREREQHMFcsx1/Sc3NZ8/GWng0wwDJp+89us4vBd91Pz1vswq+fLmkVEZPAouRUREZHRzbYpPO8sAkcchCP0BeaSbwfUjfvpJ9Ldeb1d6uI770b1yjqs8RNouOFmAKLHHJ+pbzk+e9Go+N77Yc2YOaA4RERkYJTcioiIyKhWss9u+O6+A/drr1C287aUb70Jzv+927WhbXfbh7l6FUU//ykAVkVll/r4XvuAwwFA7OjjqF5eQ+NfbmpvUFhI5JzzAWj6xa/X4tWIiMhAKbkVERGR0Scex2hqhFgM14fvd6ku3W8PymdPwfePGzGaGik5eF8qxwco+L+fYn7zdZf2rjdfz2w7li3tUm9Vdkp4Xa4ubZovuZSat96n5axzB/CCRERkbSm5FRERkdHFtgkcfRjlG8+m5LD9u21mhusp/MXF+K/5Ha633wTAf8vNlG+7Gf6rL6dyXDEFV6RnWdvqAcL/upOGv/0jfSrTpPmCn/a4InKGYaQvRXZqvU4RkeFg2D1cojPC1FuWHaipaRruOHIKBHwAhMMtwxzJ2KOxzQ+Na/5obPNHY5sfo21c3U89QeCU43tv2EfVq+opnzsDs7aWpksuo+XH6cuLjdWrsceNA8MYcN+jbWxHE41tfmhc80dj27Py8kJM0wgDJQPtQ18tioiIyKji/+MfBrU/9xOPYtbWAhDfY69MuT1+/KCeR0RE8kuXJYuIiMjo0dyc8x7b2jfeI7HJZplFnXIe+pOLSW44p0t54PSTM9vWpEmDE6eIiAw5JbciIiIy8tk27uefpXL6xC5VTZdfRWrWbOpfeJXmX16WVZeaNr19e+YsGm65vefTlJUPTrwiIjLklNyKiIjIyGDbuJ96AvPrxRSfdBwVk8owGhso/u5RVI4PEDj+qPamHg+pSeuRmjCRlhNPzeqm9s33SGy7PbVvvEfd868AkNh6W2KHHE5qgyDVVQ2s+WoZjVdnX97c9MvL8/8aRUQkb7Sg1CDRDeL5o7HND41r/mhs80djmx8jZVwLrrwM//XX9qlt+M77iM/bNb3Yk883sBNaFpUT2tctqV5Zl3mW7WAZKWM7Fmls80Pjmj8a254NxoJSmrkVERGREaEviW3N+59RXdVAfJ/9we8feGILYJrU3/sgAIktthz0xFZERIaWVksWERGREcH2eDBisZx1ydkbUPf6u4N+zsQee1P74htY66036H2LiMjQ0sytiIiIDD/bxuphMae6197J26lTG22MXVKat/5FRGRoaOZWREREho9t4//TNTjffw/HyhUApNZbH2vSeqSmz8D95OOEH34ifW+tiIhID5TcioiIyLBxvfISBVdfkdlPTVqP2vc+AbP14rI//RWc+rgiIiK902XJIiIiMmzcL7+YtR/f74D2xBaU2IqISJ8puRUREZHBFY/j+OxTSCZ7beq/4U9Z+7GDDs1XVCIiMsbp61ARERHpN6OuFv/f/kJy402IHXpEVl3ZjlvjWPINANVVDd324fji86x9q6SE5MabDHqsIiKybtDMrYiIiPSb79//wn/9tRR//xRKDtw7XdjUhPPd/2YSWwDfzX8FwPnxhzg+/wwSiUyd6732FZCrF6+g5uOFWrVYREQGTDO3IiIi0m/O9/+X2Xa98zZFZ34PTAfeB+7Lalf4y59jNDdT8NvfZMrqH36SZHAOReefDUDs4MOgsHBoAhcRkTFLya2IiIj0X6dH83gfeqDbph0TW4DCi87PmqGNnH3u4MYmIiLrJCW3IiIi0j+pFJ6nHh/w4c6FX2btJzffcm0jEhER0T23IiIi0j++G28Y0HGJrbftUtbw91u7zAKLiIgMhJJbERER6TPnO29TePkve23X8t2TsCrHZfat0lLC93S9dDk1ddpghiciIuswXZYsIiIifWJ++w2lbSsjA/Fddsf9yotZbVpOPg1z9UqaL7+KpquvAacTx8IvwePGDpRQXdVA5bjiTPvkxpsOWfwiIjK2aeZWREREembbON9+i/Jt2hPRhr/+nfADjxI94igArMIimn7xa5r+8Ecabr8Xu6gYvF5wOknNmUtqxqzMsbUvvkHLaWdQvbIOXK4hfzkiIjI2aeZWREREeuS74XoKr/hVZj85Yyaxo44FoPGvf6fpsquwx4/vc3+pjTZOz+qKiIgMIs3cioiICNh2+k9zc/pnK6OxISuxBah/fH77jsPRr8RWREQkX5TcioiIrMtsG+ceu+H2uqkcH6By+kS8d92eqXa98nJW87r5L2FXVg5xkCIiIr1TcisiIjLGORYtxFyxHGwb381/JXDYAZhLlwDg/+MfMF9/Pat90QXn4PjkYwDczz2TKa+uatAzaUVE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\n", 301 | "text/plain": [ 302 | "
" 303 | ] 304 | }, 305 | "metadata": { 306 | "needs_background": "light" 307 | }, 308 | "output_type": "display_data" 309 | } 310 | ], 311 | "source": [ 312 | "fig, ax = plt.subplots(figsize=(16,9))\n", 313 | "ax.plot(data.date, data['Total'], label='Total', color='g')\n", 314 | "ax.plot(data.date, data['BuyHold'], label='BuyHold', color='r')\n", 315 | "ax.legend(loc=0)" 316 | ] 317 | }, 318 | { 319 | "cell_type": "code", 320 | "execution_count": null, 321 | "metadata": {}, 322 | "outputs": [], 323 | "source": [] 324 | } 325 | ], 326 | "metadata": { 327 | "kernelspec": { 328 | "display_name": "Python 3", 329 | "language": "python", 330 | "name": "python3" 331 | }, 332 | "language_info": { 333 | "codemirror_mode": { 334 | "name": "ipython", 335 | "version": 3 336 | }, 337 | "file_extension": ".py", 338 | "mimetype": "text/x-python", 339 | "name": "python", 340 | "nbconvert_exporter": "python", 341 | "pygments_lexer": "ipython3", 342 | "version": "3.7.0" 343 | } 344 | }, 345 | "nbformat": 4, 346 | "nbformat_minor": 2 347 | } 348 | -------------------------------------------------------------------------------- /get_sentiment.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import re\n", 10 | "import pandas as pd\n", 11 | "from nltk.tokenize import RegexpTokenizer\n", 12 | "tokenizer = RegexpTokenizer(r'\\w+')\n", 13 | "from nltk.corpus import stopwords" 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": null, 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "def readCSV(filename):\n", 23 | " \"\"\"\n", 24 | " reads a csv file and returns a clean pandas dataframe\n", 25 | " \"\"\"\n", 26 | " df = pd.read_csv(filename, encoding='latin-1')\n", 27 | " df2 = df.loc[df['newsType'] == 'topStory']\n", 28 | " \n", 29 | " def getCorrectDate(wrongdate):\n", 30 | " wrongdate = str(wrongdate)\n", 31 | " year, month, day = wrongdate[:4], wrongdate[4:6], wrongdate[6:]\n", 32 | " return month + '/' + day + '/' + year\n", 33 | "\n", 34 | " df2['date'] = df2['date'].apply(lambda x: getCorrectDate(x))\n", 35 | " df2['date'] = pd.to_datetime(df2['date'])\n", 36 | " \n", 37 | " df2['text'] = df2['headline'] + df2['body']\n", 38 | " \n", 39 | " return df2" 40 | ] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "execution_count": null, 45 | "metadata": {}, 46 | "outputs": [], 47 | "source": [ 48 | "def cleanText(text):\n", 49 | " \"\"\"\n", 50 | " removes punctuation, stopwords and returns lowercase text in a list of single words\n", 51 | " \"\"\"\n", 52 | " text = text.lower() \n", 53 | " \n", 54 | " text = tokenizer.tokenize(text)\n", 55 | " \n", 56 | " clean = [word for word in text if word not in stopwords.words('english')]\n", 57 | " \n", 58 | " return clean" 59 | ] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "execution_count": null, 64 | "metadata": {}, 65 | "outputs": [], 66 | "source": [ 67 | "def loadPositive():\n", 68 | " \"\"\"\n", 69 | " loading positive dictionary\n", 70 | " \"\"\"\n", 71 | " myfile = open('./preprocessing/LoughranMcDonald_Positive.txt', \"r\")\n", 72 | " positives = myfile.readlines()\n", 73 | " positive = [pos.strip().lower() for pos in positives]\n", 74 | " return positive\n", 75 | "\n", 76 | "def loadNegative():\n", 77 | " \"\"\"\n", 78 | " loading positive dictionary\n", 79 | " \"\"\"\n", 80 | " myfile = open('./preprocessing/LoughranMcDonald_Negative.txt', \"r\")\n", 81 | " negatives = myfile.readlines()\n", 82 | " negative = [neg.strip().lower() for neg in negatives]\n", 83 | " return negative" 84 | ] 85 | }, 86 | { 87 | "cell_type": "code", 88 | "execution_count": null, 89 | "metadata": {}, 90 | "outputs": [], 91 | "source": [ 92 | "def countNeg(cleantext, negative):\n", 93 | " \"\"\"\n", 94 | " counts negative words in cleantext\n", 95 | " \"\"\"\n", 96 | " negs = [word for word in cleantext if word in negative]\n", 97 | " return len(negs)\n", 98 | "\n", 99 | "def countPos(cleantext, positive):\n", 100 | " \"\"\"\n", 101 | " counts negative words in cleantext\n", 102 | " \"\"\"\n", 103 | " pos = [word for word in cleantext if word in positive]\n", 104 | " return len(pos)" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": null, 110 | "metadata": {}, 111 | "outputs": [], 112 | "source": [ 113 | "def getSentiment(cleantext, negative, positive):\n", 114 | " \"\"\"\n", 115 | " counts negative and positive words in cleantext and returns a score category accordingly\n", 116 | " \"\"\"\n", 117 | " positive = loadPositive()\n", 118 | " negative = loadNegative()\n", 119 | " sentiment = countPos(cleantext, positive) - countNeg(cleantext, negative)\n", 120 | " if sentiment > 3:\n", 121 | " return 4\n", 122 | " elif sentiment > 0 and sentiment <=3:\n", 123 | " return 3\n", 124 | " elif sentiment < 0 and sentiment > -3:\n", 125 | " return 2\n", 126 | " elif sentiment <= -3:\n", 127 | " return 1\n", 128 | " else:\n", 129 | " return 0" 130 | ] 131 | }, 132 | { 133 | "cell_type": "code", 134 | "execution_count": null, 135 | "metadata": {}, 136 | "outputs": [], 137 | "source": [ 138 | "def updateSentimentDataFrame(df):\n", 139 | " \"\"\"\n", 140 | " performs sentiment analysis on single text entry of dataframe and returns dataframe with scores\n", 141 | " \"\"\"\n", 142 | " positive = loadPositive()\n", 143 | " negative = loadNegative() \n", 144 | " \n", 145 | " df['text'] = df['text'].apply(cleanText)\n", 146 | " df['score'] = df['text'].apply(lambda x: getSentiment(x,negative, positive))\n", 147 | " \n", 148 | " return df" 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": null, 154 | "metadata": {}, 155 | "outputs": [], 156 | "source": [ 157 | "df = readCSV('./input/news_reuters.csv')\n", 158 | "print('Performing Sentiment...')\n", 159 | "updateSentimentDataFrame(df).to_csv('./preprocessing/sentiments.csv')" 160 | ] 161 | }, 162 | { 163 | "cell_type": "code", 164 | "execution_count": null, 165 | "metadata": {}, 166 | "outputs": [], 167 | "source": [] 168 | } 169 | ], 170 | "metadata": { 171 | "kernelspec": { 172 | "display_name": "Python 3", 173 | "language": "python", 174 | "name": "python3" 175 | }, 176 | "language_info": { 177 | "codemirror_mode": { 178 | "name": "ipython", 179 | "version": 3 180 | }, 181 | "file_extension": ".py", 182 | "mimetype": "text/x-python", 183 | "name": "python", 184 | "nbconvert_exporter": "python", 185 | "pygments_lexer": "ipython3", 186 | "version": "3.7.0" 187 | } 188 | }, 189 | "nbformat": 4, 190 | "nbformat_minor": 2 191 | } 192 | -------------------------------------------------------------------------------- /get_stock_data.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import pandas_datareader.data as pdr\n", 10 | "import fix_yahoo_finance as fix\n", 11 | "fix.pdr_override()\n", 12 | "\n", 13 | "\n", 14 | "class GetData:\n", 15 | " def __init__(self, ticker, start, end):\n", 16 | " self.ticker = ticker\n", 17 | " self.start = start\n", 18 | " self.end = end\n", 19 | "\n", 20 | " # get stock data\n", 21 | " def get_stock_data(self):\n", 22 | " stock_data = pdr.get_data_yahoo(self.ticker, self.start, self.end)\n", 23 | " stock_data.to_csv(\"stock_data_\" + self.ticker + \".csv\")\n", 24 | "\n", 25 | "\n", 26 | "if __name__ == \"__main__\":\n", 27 | " data = GetData(\"AAPL\", \"2000-01-01\", \"2018-10-01\")\n", 28 | " data.get_stock_data()" 29 | ] 30 | } 31 | ], 32 | "metadata": { 33 | "kernelspec": { 34 | "display_name": "Python 3", 35 | "language": "python", 36 | "name": "python3" 37 | }, 38 | "language_info": { 39 | "codemirror_mode": { 40 | "name": "ipython", 41 | "version": 3 42 | }, 43 | "file_extension": ".py", 44 | "mimetype": "text/x-python", 45 | "name": "python", 46 | "nbconvert_exporter": "python", 47 | "pygments_lexer": "ipython3", 48 | "version": "3.7.0" 49 | } 50 | }, 51 | "nbformat": 4, 52 | "nbformat_minor": 2 53 | } 54 | -------------------------------------------------------------------------------- /get_tickers.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import csv\n", 10 | "import sys\n", 11 | "\n", 12 | "from urllib.request import urlopen\n", 13 | "\n", 14 | "import numpy as np\n", 15 | "\n", 16 | "\n", 17 | "def get_tickers(percent):\n", 18 | " \"\"\"Keep the top percent market-cap companies.\"\"\"\n", 19 | " assert isinstance(percent, int)\n", 20 | "\n", 21 | " file = open('./input/tickerList.csv', 'w')\n", 22 | " writer = csv.writer(file, delimiter=',')\n", 23 | " cap_stat, output = np.array([]), []\n", 24 | " for exchange in [\"NASDAQ\", \"NYSE\", \"AMEX\"]:\n", 25 | " url = \"http://www.nasdaq.com/screening/companies-by-industry.aspx?exchange=\"\n", 26 | " repeat_times = 10 # repeat downloading in case of http error\n", 27 | " for _ in range(repeat_times):\n", 28 | " try:\n", 29 | " print(\"Downloading tickers from {}...\".format(exchange))\n", 30 | " response = urlopen(url + exchange + '&render=download')\n", 31 | " content = response.read().decode('utf-8').split('\\n')\n", 32 | " for num, line in enumerate(content):\n", 33 | " line = line.strip().strip('\"').split('\",\"')\n", 34 | " if num == 0 or len(line) != 9:\n", 35 | " continue # filter unmatched format\n", 36 | " # ticker, name, last_sale, market_cap, IPO_year, sector, industry\n", 37 | " ticker, name, _, market_cap, _, _, _ = line[0:4] + line[5:8]\n", 38 | " cap_stat = np.append(cap_stat, float(market_cap))\n", 39 | " output.append([ticker, name.replace(',', '').replace('.', ''),\n", 40 | " exchange, market_cap])\n", 41 | " break\n", 42 | " except:\n", 43 | " continue\n", 44 | "\n", 45 | " for data in output:\n", 46 | " market_cap = float(data[3])\n", 47 | " if market_cap < np.percentile(cap_stat, 100 - percent):\n", 48 | " continue\n", 49 | " writer.writerow(data)\n", 50 | "\n", 51 | "\n", 52 | "def main():\n", 53 | " top_n = 20\n", 54 | " get_tickers(int(top_n)) # keep the top N% market-cap companies\n", 55 | "\n", 56 | "\n", 57 | "if __name__ == \"__main__\":\n", 58 | " main()" 59 | ] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "execution_count": null, 64 | "metadata": { 65 | "collapsed": true 66 | }, 67 | "outputs": [], 68 | "source": [] 69 | } 70 | ], 71 | "metadata": { 72 | "kernelspec": { 73 | "display_name": "Python 3", 74 | "language": "python", 75 | "name": "python3" 76 | }, 77 | "language_info": { 78 | "codemirror_mode": { 79 | "name": "ipython", 80 | "version": 3 81 | }, 82 | "file_extension": ".py", 83 | "mimetype": "text/x-python", 84 | "name": "python", 85 | "nbconvert_exporter": "python", 86 | "pygments_lexer": "ipython3", 87 | "version": "3.7.0" 88 | } 89 | }, 90 | "nbformat": 4, 91 | "nbformat_minor": 2 92 | } 93 | -------------------------------------------------------------------------------- /reuters.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import os\n", 10 | "import sys\n", 11 | "import time\n", 12 | "import datetime\n", 13 | "import util\n", 14 | "from bs4 import BeautifulSoup\n", 15 | "\n", 16 | "\n", 17 | "class ReutersCrawler(object):\n", 18 | "\n", 19 | " def __init__(self):\n", 20 | " self.ticker_list_filename = './input/apple_ticker.csv'\n", 21 | " self.news_filename = './input/news_reuters.csv'\n", 22 | "\n", 23 | " def fetch_content(self, task, date_range):\n", 24 | " # https://uk.reuters.com/info/disclaimer\n", 25 | " ticker, name, exchange, market_cap = task\n", 26 | " print(\"%s - %s - %s - %s\" % (ticker, name, exchange, market_cap))\n", 27 | "\n", 28 | " suffix = {'AMEX': '.A', 'NASDAQ': '.O', 'NYSE': '.N'}\n", 29 | " # e.g. https://www.reuters.com/finance/stocks/company-news/BIDU.O?date=09262017\n", 30 | " \n", 31 | "# url = \"https://www.reuters.com/finance/stocks/company-news/AAPL.O\"\n", 32 | " url = \"https://www.reuters.com/finance/stocks/company-news/\" + ticker.strip() + suffix[exchange]\n", 33 | " print(url)\n", 34 | " today = datetime.datetime.today().strftime(\"%Y%m%d\")\n", 35 | "\n", 36 | " news_num = self.get_news_num_whenever(url)\n", 37 | " print(news_num)\n", 38 | " if news_num:\n", 39 | " # this company has news, then fetch for N consecutive days in the past\n", 40 | " has_content, no_news_days = self.fetch_within_date_range(news_num, url, date_range, task, ticker)\n", 41 | " if not has_content:\n", 42 | " print('%s has no content within date range' % ticker)\n", 43 | " else:\n", 44 | " print(\"%s has no news at all, set as LOWEST priority\" % (ticker))\n", 45 | " \n", 46 | " def get_news_num_whenever(self, url):\n", 47 | " # check the website to see if the ticker has any news\n", 48 | " # return the number of news\n", 49 | " soup = util.get_soup_with_repeat(url, repeat_times=4)\n", 50 | " if soup:\n", 51 | " return len(soup.find_all(\"div\", {'class': ['topStory', 'feature']}))\n", 52 | " return 0\n", 53 | "\n", 54 | " def fetch_within_date_range(self, news_num, url, date_range, task, ticker):\n", 55 | " # if it doesn't have a single news for X consecutive days, stop iterating dates\n", 56 | " # set this ticker into the second-lowest priority list\n", 57 | " missing_days = 0\n", 58 | " has_content = False\n", 59 | " no_news_days = []\n", 60 | " for timestamp in date_range:\n", 61 | " print('trying '+timestamp) # print timestamp on the same line\n", 62 | " new_time = timestamp[4:] + timestamp[:4] # change 20151231 to 12312015 to match reuters format\n", 63 | " soup = util.get_soup_with_repeat(url + \"?date=\" + new_time)\n", 64 | " if soup and self.parse_and_save_news(soup, task, ticker, timestamp):\n", 65 | " missing_days = 0 # if get news, reset missing_days as 0\n", 66 | " has_content = True\n", 67 | " else:\n", 68 | " missing_days += 1\n", 69 | "\n", 70 | " return has_content, no_news_days\n", 71 | "\n", 72 | " def parse_and_save_news(self, soup, task, ticker, timestamp):\n", 73 | " content = soup.find_all(\"div\", {'class': ['topStory', 'feature']})\n", 74 | " if not content:\n", 75 | " return False\n", 76 | " with open(self.news_filename, 'a+', newline='\\n') as fout:\n", 77 | " for i in range(len(content)):\n", 78 | " title = content[i].h2.get_text().replace(\",\", \" \").replace(\"\\n\", \" \")\n", 79 | " body = content[i].p.get_text().replace(\",\", \" \").replace(\"\\n\", \" \")\n", 80 | "\n", 81 | " if i == 0 and soup.find_all(\"div\", class_=\"topStory\"):\n", 82 | " news_type = 'topStory'\n", 83 | " else:\n", 84 | " news_type = 'normal'\n", 85 | "\n", 86 | " try:\n", 87 | " fout.write(','.join([ticker, task[1], timestamp, title, body, news_type]) + '\\n')\n", 88 | " except:\n", 89 | " pass\n", 90 | "# fout.write(','.join([ticker, task[1], timestamp, title, body, news_type])+ '\\n')\n", 91 | " return True\n", 92 | "\n", 93 | " def run(self, numdays=1000, start_date='12/31/1999'):\n", 94 | " \"\"\"Start crawler back to numdays\"\"\"\n", 95 | " date_range = util.generate_past_n_days(numdays, start_date) # look back on the past X days\n", 96 | "# print(date_range)\n", 97 | " # store low-priority task and run later\n", 98 | " delayed_tasks = {'LOWEST': set(), 'LOW': set()}\n", 99 | " with open(self.ticker_list_filename, encoding=\"utf-8\") as ticker_list:\n", 100 | " for line in ticker_list: # iterate all possible tickers\n", 101 | " task = tuple(line.strip().split(','))\n", 102 | " if len(task) < 4:\n", 103 | " continue\n", 104 | " ticker, name, exchange, market_cap = task\n", 105 | " if ticker in finished_tickers:\n", 106 | " continue\n", 107 | " if ticker in failed_tickers:\n", 108 | " priority = failed_tickers[ticker]\n", 109 | " delayed_tasks[priority].add(task)\n", 110 | " continue\n", 111 | " self.fetch_content(task, date_range)\n", 112 | "\n", 113 | " # run task with low priority\n", 114 | " for task in delayed_tasks['LOW']:\n", 115 | " self.fetch_content(task, date_range)\n", 116 | " # run task with lowest priority\n", 117 | " for task in delayed_tasks['LOWEST']:\n", 118 | " self.fetch_content(task, date_range)\n", 119 | "\n", 120 | "\n", 121 | "def main():\n", 122 | " reuter_crawler = ReutersCrawler()\n", 123 | " reuter_crawler.run(6847, '07/12/2017')\n", 124 | "\n", 125 | "if __name__ == \"__main__\":\n", 126 | " main()" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": null, 132 | "metadata": { 133 | "collapsed": true 134 | }, 135 | "outputs": [], 136 | "source": [] 137 | } 138 | ], 139 | "metadata": { 140 | "kernelspec": { 141 | "display_name": "Python 3", 142 | "language": "python", 143 | "name": "python3" 144 | }, 145 | "language_info": { 146 | "codemirror_mode": { 147 | "name": "ipython", 148 | "version": 3 149 | }, 150 | "file_extension": ".py", 151 | "mimetype": "text/x-python", 152 | "name": "python", 153 | "nbconvert_exporter": "python", 154 | "pygments_lexer": "ipython3", 155 | "version": "3.7.0" 156 | } 157 | }, 158 | "nbformat": 4, 159 | "nbformat_minor": 2 160 | } 161 | -------------------------------------------------------------------------------- /util.py: -------------------------------------------------------------------------------- 1 | import time 2 | import datetime 3 | from urllib.request import urlopen 4 | from bs4 import BeautifulSoup 5 | 6 | def generate_past_n_days(numdays, start_date): 7 | """Generate N days until now, e.g., [20151231, 20151230].""" 8 | base = datetime.datetime.strptime(start_date, "%m/%d/%Y") 9 | date_range = [base + datetime.timedelta(days=x) for x in range(0, numdays)] 10 | return [x.strftime("%Y%m%d") for x in date_range] 11 | 12 | def get_soup_with_repeat(url, repeat_times=3, verbose=True): 13 | for i in range(repeat_times): # repeat in case of http failure 14 | try: 15 | time.sleep(np.random.poisson(3)) 16 | response = urlopen(url) 17 | data = response.read().decode('utf-8') 18 | return BeautifulSoup(data, "lxml") 19 | except Exception as e: 20 | if i == 0: 21 | print(e) 22 | if verbose: 23 | print('retry...') 24 | continue 25 | --------------------------------------------------------------------------------