├── .gitignore ├── README.md ├── analysts.png ├── caps.csv ├── preprocess.ipynb ├── price_targets.ipynb ├── ratings.png └── targets.csv /.gitignore: -------------------------------------------------------------------------------- 1 | .ipynb_checkpoints 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Price Targets Analysis 2 | 3 | [Blog writeup](http://blog.ayoungprogrammer.com/2017/05/using-python-and-pandas-to-analyze-price-targets-and-ratings.html/) 4 | 5 | [Preprocessing notebook](https://github.com/ayoungprogrammer/price-targets/blob/master/preprocess.ipynb) 6 | 7 | [Analysis notebook](http://github.com/ayoungprogrammer/price-targets/blob/master/price_targets.ipynb) 8 | 9 | ![analysts](https://github.com/ayoungprogrammer/price-targets/raw/master/analysts.png "Analysts") 10 | 11 | ![ratings](https://github.com/ayoungprogrammer/price-targets/raw/master/ratings.png "ratings") 12 | 13 | ## Data 14 | 15 | ``` 16 | caps.csv: Market caps data 17 | targets.csv: Price targets data 18 | ``` -------------------------------------------------------------------------------- /analysts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayoungprogrammer/price-targets/04bd7c5b6341599dcba0dae28199919f724ace11/analysts.png -------------------------------------------------------------------------------- /caps.csv: -------------------------------------------------------------------------------- 1 | RY Royal Bank of Canada $98.29 $99.90 $70.99 1,475,123,916 $144,989,929,703 2 | TD Toronto-Dominion Bank (The) $69.62 $71.31 $53.40 1,859,749,030 $129,475,727,468 3 | BNS Bank of Nova Scotia (The) $79.96 $82.30 $59.40 1,209,451,582 $96,707,748,496 4 | CNR Canadian National Railway Company $96.31 $96.43 $72.78 762,208,062 $73,408,258,451 5 | SU Suncor Energy Inc. $41.76 $44.90 $32.69 1,668,503,680 $69,676,713,676 6 | BMO Bank of Montreal $102.85 $103.54 $75.75 648,669,628 $66,715,671,239 7 | GMM.U General Motors Company $38.24 $38.35 $27.56 1,500,039,985 $57,361,529,026 8 | TRP TransCanada Corporation $60.84 $65.24 $46.81 863,759,075 $52,551,102,123 9 | ENB Enbridge Inc. $54.84 $59.19 $48.59 943,186,589 $51,724,352,540 10 | BCE BCE Inc. $57.98 $63.41 $56.80 870,803,292 $50,489,174,870 11 | MFC Manulife Financial Corporation $24.45 $25.57 $16.43 1,975,675,118 $48,305,256,635 12 | BAM.A Brookfield Asset Management Inc. Class... $48.42 $49.33 $41.62 986,332,662 $47,758,227,494 13 | CM Canadian Imperial Bank Of Commerce $119.20 $120.83 $92.38 397,841,070 $47,422,655,544 14 | CNQ Canadian Natural Resources Limited $41.81 $46.74 $33.11 1,110,952,499 $46,448,923,983 15 | TRI Thomson Reuters Corporation $57.38 $60.13 $48.64 727,443,301 $41,740,696,611 16 | GWO Great-West Lifeco Inc. $36.48 $37.75 $30.83 986,398,335 $35,983,811,260 17 | IMO Imperial Oil Limited $41.11 $48.72 $38.41 847,599,011 $34,844,795,342 18 | SLF Sun Life Financial Inc. $48.74 $53.75 $40.00 613,580,091 $29,905,893,635 19 | CP Canadian Pacific Railway Limited $199.55 $209.12 $156.01 146,357,135 $29,205,566,289 20 | ABX Barrick Gold Corporation $24.43 $30.45 $16.95 1,165,574,071 $28,474,974,554 21 | L Loblaw Companies Limited $69.86 $74.59 $62.33 400,842,385 $28,002,849,016 22 | ATD.B Alimentation Couche-Tard Inc. Class B ... $62.67 $68.63 $51.21 420,134,840 $26,329,850,422 23 | T TELUS Corporation $43.02 $44.41 $39.02 590,430,372 $25,400,314,603 24 | PWF Power Financial Corporation $35.43 $35.91 $28.97 713,269,660 $25,271,144,053 25 | RCI.B Rogers Communications Inc. Class B Non... $55.94 $58.99 $48.34 402,396,133 $22,510,039,680 26 | MG Magna International Inc. $58.06 $62.10 $42.73 382,256,855 $22,193,833,001 27 | WCN Waste Connections Inc. $117.46 $118.69 $85.00 175,426,824 $20,605,634,747 28 | NA National Bank of Canada $58.25 $59.05 $39.19 340,738,776 $19,848,033,702 29 | POT Potash Corporation of Saskatchewan Inc. $22.90 $26.62 $19.93 839,810,179 $19,231,653,099 30 | SAP Saputo Inc. $46.27 $48.98 $36.40 386,653,541 $17,890,459,342 31 | AGU Agrium Inc. $127.58 $146.99 $104.70 138,176,000 $17,628,494,080 32 | G Goldcorp Inc. $20.25 $26.56 $15.95 853,811,565 $17,289,684,191 33 | QSR Restaurant Brands International Inc. $73.25 $76.29 $48.80 234,617,984 $17,185,767,328 34 | PPL Pembina Pipeline Corporation $42.82 $43.49 $33.35 397,892,381 $17,037,751,754 35 | FTS Fortis Inc. $42.37 $44.87 $38.52 401,623,515 $17,016,788,330 36 | QSP.UN Restaurant Brands International Limite... $73.54 $76.98 $49.00 226,932,923 $16,688,647,157 37 | GIB.A CGI Group Inc. Class A Subordinate Vo... $62.36 $67.14 $53.55 266,396,598 $16,612,491,851 38 | HSE Husky Energy Inc. $16.11 $18.10 $13.92 1,005,451,854 $16,197,829,367 39 | TECK.B Teck Resources Limited Class B Subordi... $27.30 $35.67 $8.70 567,546,513 $15,494,019,804 40 | FNV Franco-Nevada Corporation $83.80 $105.69 $71.44 178,482,139 $14,956,803,248 41 | ECA Encana Corporation $15.31 $18.13 $6.91 972,970,070 $14,896,171,771 42 | FFH Fairfax Financial Holdings Limited Sub... $619.22 $777.45 $586.00 23,004,207 $14,244,665,058 43 | CVE Cenovus Energy Inc. $17.09 $22.06 $16.12 833,195,031 $14,239,303,079 44 | WN George Weston Limited $111.16 $120.10 $100.41 127,898,582 $14,217,206,375 45 | H Hydro One Limited $23.57 $26.80 $22.06 595,000,000 $14,024,150,000 46 | CSU Constellation Software Inc. $642.37 $650.00 $457.67 21,191,530 $13,612,803,126 47 | POW Power Corporation of Canada Subordinat... $31.87 $32.31 $26.63 414,600,697 $13,213,324,213 48 | SJR.B Shaw Communications Inc. Class B Non-v... $27.74 $28.63 $23.03 467,830,221 $12,977,610,330 49 | BIP.UN Brookfield Infrastructure Partners L.P. $47.85 $48.86 $33.41 267,589,045 $12,804,135,803 50 | AEM Agnico Eagle Mines Limited $55.16 $78.35 $44.07 225,740,477 $12,451,844,711 51 | IFC Intact Financial Corporation $94.94 $97.56 $84.88 131,034,834 $12,440,447,139 52 | DOL Dollarama Inc. $102.51 $104.94 $74.38 114,565,749 $11,744,134,929 53 | OTEX Open Text Corporation $44.47 $45.99 $31.99 263,141,058 $11,701,882,849 54 | SLW Silver Wheaton Corp. $26.03 $40.80 $20.51 441,484,717 $11,491,847,183 55 | FM First Quantum Minerals Ltd. $15.26 $17.55 $5.38 689,373,818 $10,519,844,462 56 | IPL Inter Pipeline Ltd. $27.77 $30.07 $24.89 368,779,915 $10,241,018,239 57 | CTC.A Canadian Tire Corporation Limited Clas... $152.62 $159.79 $128.12 67,059,281 $10,234,587,466 58 | IGM IGM Financial Inc. $40.92 $42.25 $34.58 240,520,828 $9,842,112,281 59 | ATD.A Alimentation Couche-Tard Inc. Class A ... $66.44 $69.48 $51.07 147,766,540 $9,817,608,917 60 | ONEX ONEX Corporation Subordinate Voting Sh... $94.50 $96.49 $74.33 102,789,607 $9,713,617,861 61 | EMA Emera Incorporated $45.42 $50.19 $43.76 210,024,388 $9,539,307,702 62 | CCL.B CCL Industries Inc. Unlimited Class B ... $286.71 $293.14 $214.25 32,822,296 $9,410,480,486 63 | TRQ Turquoise Hill Resources Ltd. $4.44 $5.03 $3.22 2,012,314,469 $8,934,676,242 64 | MRU Metro Inc. $38.89 $48.19 $38.00 229,564,440 $8,927,761,071 65 | VII Seven Generations Energy Ltd. class A ... $24.84 $32.90 $16.51 350,481,607 $8,705,963,117 66 | REI.UN RioCan Real Estate Investment Trust $26.35 $30.35 $25.10 325,534,313 $8,577,829,147 67 | SNC SNC-Lavalin Group Inc. $54.75 $59.63 $44.84 150,371,003 $8,232,812,414 68 | CPG Crescent Point Energy Corp. $15.04 $24.01 $13.79 541,742,592 $8,147,808,583 69 | GIL Gildan Activewear Inc. $34.58 $41.48 $30.97 230,250,032 $7,962,046,106 70 | TOU Tourmaline Oil Corp. $29.24 $39.77 $24.62 269,070,812 $7,867,630,542 71 | BPY.UN Brookfield Property Partners L.P. $30.22 $32.80 $27.40 260,222,314 $7,863,918,329 72 | KEY Keyera Corp. $38.97 $43.21 $36.03 186,068,896 $7,251,104,877 73 | CIX CI Financial Corp. $26.97 $29.95 $23.52 265,875,042 $7,170,649,882 74 | CU Canadian Utilities Limited Class A Non... $36.46 $40.78 $34.15 194,259,602 $7,082,705,088 75 | PSK PrairieSky Royalty Ltd. $29.84 $34.32 $22.59 237,215,530 $7,078,511,415 76 | ARX ARC Resources Ltd. $19.26 $24.94 $17.43 353,522,699 $6,808,847,182 77 | HR.UN H&R Real Estate Investment Trust $23.15 $23.83 $19.32 285,744,257 $6,614,979,549 78 | BEP.UN Brookfield Renewable Partners L.P. $38.86 $41.94 $36.10 166,839,324 $6,483,376,130 79 | RCI.A Rogers Communications Inc. Class A Shares $56.95 $60.98 $48.39 112,411,992 $6,401,862,944 80 | SHOP Shopify Inc. Class A Subordinate Votin... $80.65 $84.29 $33.03 77,151,899 $6,222,300,654 81 | LUN Lundin Mining Corporation $8.42 $8.94 $3.70 726,421,532 $6,116,469,299 82 | VET Vermilion Energy Inc. $51.59 $58.98 $34.86 118,486,757 $6,112,731,793 83 | IAG Industrial Alliance Insurance and Fina... $56.34 $59.32 $36.82 106,264,892 $5,986,964,015 84 | VRX Valeant Pharmaceuticals International ... $17.48 $93.40 $17.19 341,190,987 $5,964,018,452 85 | MX Methanex Corporation $66.31 $69.88 $35.01 89,842,838 $5,957,478,587 86 | CCO Cameco Corporation $14.53 $17.67 $9.88 395,792,522 $5,750,865,344 87 | K Kinross Gold Corporation $4.49 $7.56 $3.61 1,245,061,732 $5,590,327,176 88 | EFN Element Fleet Management Corp. $14.29 $16.57 $11.00 387,116,660 $5,531,897,071 89 | CAE CAE Inc. $20.32 $20.72 $14.50 268,339,716 $5,452,663,029 90 | ALA AltaGas Ltd. $31.05 $35.55 $28.86 171,323,404 $5,319,591,694 91 | FCR First Capital Realty Inc. $20.30 $23.31 $19.19 243,524,645 $4,943,550,293 92 | WSP WSP Global Inc. $47.98 $48.50 $35.76 101,858,881 $4,887,189,110 93 | BB BlackBerry Limited $9.21 $11.18 $8.15 530,487,882 $4,885,793,393 94 | ACO.X ATCO Ltd. Class I Non-voting Shares $46.49 $49.65 $37.44 101,235,523 $4,706,439,464 95 | BBD.B Bombardier Inc. Class B Subordinate Vo... $2.42 $2.76 $1.10 1,932,675,863 $4,677,075,588 96 | AQN Algonquin Power & Utilities Corp. $12.40 $12.67 $10.47 372,952,095 $4,624,605,978 97 | RBA Ritchie Bros. Auctioneers Incorporated $43.04 $52.88 $32.14 106,822,475 $4,597,639,324 98 | WFT West Fraser Timber Co. Ltd. $58.49 $58.89 $35.35 75,882,056 $4,438,341,455 99 | PEY Peyto Exploration & Development Corp. $26.56 $39.41 $26.50 164,776,923 $4,376,475,074 100 | FTT Finning International Inc. $25.81 $28.02 $18.37 168,167,202 $4,340,395,483 101 | SRU.UN Smart Real Estate Investment Trust $33.14 $38.91 $29.22 130,266,419 $4,317,029,125 102 | CAR.UN Canadian Apartment Properties Real Est... $31.71 $33.64 $28.14 135,573,857 $4,299,047,005 103 | ENF Enbridge Income Fund Holdings Inc. $34.06 $36.31 $27.78 124,320,723 $4,234,363,825 104 | CEF.A Central Fund of Canada Limited Class A... $16.72 $19.54 $15.05 252,116,003 $4,215,379,570 105 | VSN Veresen Inc. $13.44 $14.41 $7.51 313,628,855 $4,215,171,811 106 | MFI Maple Leaf Foods Inc. $31.62 $31.77 $25.83 131,479,589 $4,157,384,604 107 | NPI Northland Power Inc. $23.70 $25.14 $20.02 172,158,534 $4,080,157,255 108 | LNR Linamar Corporation $61.80 $65.50 $42.24 65,276,526 $4,034,089,306 109 | WCP Whitecap Resources Inc. $10.88 $12.90 $7.03 368,350,665 $4,007,655,235 110 | STN Stantec Inc. $34.58 $36.85 $28.74 114,081,229 $3,944,928,898 111 | BTO B2Gold Corp. $4.02 $4.74 $1.64 964,892,433 $3,878,867,580 112 | X TMX Group Limited $70.01 $76.31 $42.13 55,169,867 $3,862,442,388 113 | AC Air Canada Voting and Variable Voting ... $13.71 $14.85 $7.88 273,214,252 $3,745,767,394 114 | TIH Toromont Industries Ltd. $47.13 $48.86 $31.26 78,398,456 $3,694,919,231 115 | ENDP Endo International plc $16.36 $59.00 $14.98 222,957,818 $3,647,589,902 116 | REF.UN Canadian Real Estate Investment Trust $49.14 $51.49 $43.00 73,246,560 $3,599,335,958 117 | MIC Genworth MI Canada Inc. $38.17 $38.85 $27.39 91,864,100 $3,506,452,697 118 | PAAS Pan American Silver Corp. $22.49 $27.99 $12.92 152,967,456 $3,440,238,085 119 | THO Tahoe Resources Inc. $10.92 $22.13 $10.57 311,585,516 $3,402,513,834 120 | OSB Norbord Inc. $39.03 $40.06 $23.11 85,830,702 $3,349,972,299 121 | RNW TransAlta Renewables Inc. $14.83 $15.09 $11.53 224,129,357 $3,323,838,364 122 | YRI Yamana Gold Inc. $3.50 $7.87 $3.29 947,797,593 $3,317,291,575 123 | UFS Domtar Corporation $50.84 $58.31 $42.74 65,001,104 $3,304,656,127 124 | WPK Winpak Ltd. $50.78 $52.52 $42.40 65,000,000 $3,300,700,000 125 | IVN Ivanhoe Mines Ltd. $4.17 $5.11 $0.77 782,085,485 $3,261,296,472 126 | CGX Cineplex Inc. $50.35 $53.41 $48.26 63,515,875 $3,198,024,306 127 | CEE Centamin plc Ordinary Shares $2.71 $3.05 $1.59 1,152,107,984 $3,122,212,636 128 | QBR.B Quebecor Inc. Class B Subordinate Voti... $37.64 $41.22 $31.53 82,811,692 $3,117,032,086 129 | ELF E-L Financial Corporation Limited $770.00 $776.98 $650.00 4,019,409 $3,094,944,930 130 | AP.UN Allied Properties Real Estate Investme... $35.88 $39.70 $32.37 84,734,469 $3,040,272,747 131 | CSH.UN Chartwell Retirement Residences $15.68 $16.14 $13.11 191,610,859 $3,004,458,269 132 | TFII TFI International Inc. $32.65 $35.83 $21.22 91,604,977 $2,990,902,499 133 | MBT Manitoba Telecom Services Inc. $39.26 $39.65 $31.39 74,398,389 $2,920,880,752 134 | SJ Stella-Jones Inc. $41.96 $51.55 $37.17 69,303,307 $2,907,966,761 135 | EMP.A Empire Company Limited Non-Voting Clas... $16.59 $27.03 $14.74 173,537,901 $2,878,993,777 136 | ELD Eldorado Gold Corporation $3.95 $6.71 $3.46 716,587,134 $2,830,519,179 137 | AGI Alamos Gold Inc. $9.45 $13.65 $6.30 298,682,686 $2,822,551,382 138 | ERF Enerplus Corporation $11.73 $13.55 $4.34 240,482,929 $2,820,864,757 139 | AYA Amaya Inc. $19.06 $23.41 $13.71 145,559,224 $2,774,358,809 140 | NFI New Flyer Industries Inc. $44.81 $45.54 $26.00 61,803,213 $2,769,401,974 141 | CWB Canadian Western Bank $31.07 $32.29 $22.75 88,253,213 $2,742,027,327 142 | PKI Parkland Fuel Corporation $28.20 $31.77 $20.50 96,357,180 $2,717,272,476 143 | DGC Detour Gold Corporation $15.55 $35.93 $15.01 174,579,612 $2,714,712,966 144 | CU.X Canadian Utilities Limited Unlimited C... $36.33 $40.40 $34.25 74,294,183 $2,699,107,668 145 | GEI Gibson Energy Inc. $18.69 $19.88 $13.95 141,733,032 $2,648,990,368 146 | CUF.UN Cominar Real Estate Investment Trust $14.52 $18.33 $13.53 182,336,732 $2,647,529,348 147 | PEN Pacific Exploration & Production Corpo... $52.70 $60.05 $45.00 50,002,537 $2,635,133,699 148 | FSV FirstService Corporation Subordinate V... $76.01 $77.29 $51.74 34,516,917 $2,623,630,861 149 | SCL ShawCor Ltd. $37.40 $38.25 $26.54 69,895,391 $2,614,087,623 150 | HBM Hudbay Minerals Inc. $11.00 $11.95 $3.77 237,271,188 $2,609,983,068 151 | WJA WestJet Airlines Ltd. variable voting ... $22.10 $24.98 $18.33 117,200,439 $2,590,129,701 152 | PXT Parex Resources Inc. $16.83 $18.22 $10.13 153,058,827 $2,575,980,058 153 | DH DH Corporation $23.96 $40.22 $14.06 106,881,956 $2,560,891,665 154 | CPX Capital Power Corporation $25.86 $26.30 $16.93 96,152,416 $2,486,501,477 155 | CIGI Colliers International Group Inc. Subo... $66.33 $70.30 $42.80 37,324,717 $2,475,748,478 156 | CJR.B Corus Entertainment Inc. Class B Non-V... $12.59 $14.10 $10.42 196,436,119 $2,473,130,738 157 | CFP Canfor Corporation $18.51 $18.53 $11.96 132,804,543 $2,458,212,090 158 | OGC OceanaGold Corporation $3.92 $5.56 $3.24 611,367,916 $2,396,562,230 159 | CCA Cogeco Communications Inc. Subordinate... $70.84 $73.95 $60.12 33,750,723 $2,390,901,217 160 | PVG Pretium Resources Inc. $13.16 $16.48 $6.49 180,607,927 $2,376,800,319 161 | MDA MacDonald Dettwiler and Associates Ltd. $65.18 $92.92 $63.52 36,397,607 $2,372,396,024 162 | PEG Pattern Energy Group Inc. $26.89 $33.00 $23.24 87,520,754 $2,353,433,075 163 | IMG IAMGOLD Corporation $5.08 $7.65 $2.62 461,229,236 $2,343,044,518 164 | MRC Morguard Corporation $187.85 $189.00 $137.85 11,922,583 $2,239,657,216 165 | EDV Endeavour Mining Corporation Ordinary ... $23.94 $28.81 $10.11 93,546,349 $2,239,499,595 166 | CLS Celestica Inc. Subordinate Voting Shares $18.12 $19.06 $11.50 121,946,990 $2,209,679,458 167 | DSG Descartes Systems Group Inc. (The) $28.97 $30.57 $21.60 75,818,684 $2,196,467,275 168 | NG NovaGold Resources Inc. $6.81 $9.56 $5.09 321,531,676 $2,189,630,713 169 | GRT.UN Granite Real Estate Investment Trust $46.24 $47.04 $36.06 47,123,006 $2,178,967,797 170 | PHY.U Sprott Physical Gold Trust transferabl... $10.13 $11.65 $9.20 213,956,205 $2,167,376,356 171 | HBC Hudson's Bay Company $11.85 $19.69 $8.97 182,226,704 $2,159,386,442 172 | TA TransAlta Corporation $7.48 $8.12 $5.11 287,903,467 $2,153,517,933 173 | PBH Premium Brands Holdings Corporation $71.88 $72.40 $44.20 29,860,239 $2,146,353,979 174 | MEG MEG Energy Corp. $7.06 $9.83 $4.72 293,282,107 $2,070,571,675 175 | RRX Raging River Exploration Inc. $8.92 $11.87 $8.63 231,144,656 $2,061,810,331 176 | BEI.UN Boardwalk Real Estate Investment Trust $44.05 $59.76 $41.00 46,077,375 $2,029,708,368 177 | TPX.B Molson Coors Canada Inc. Class B Excha... $133.38 $147.85 $117.98 15,107,753 $2,015,072,095 178 | TXG Torex Gold Resources Inc. $25.27 $35.17 $16.00 79,732,159 $2,014,831,657 179 | BCB Cott Corporation $14.47 $22.66 $13.42 138,630,060 $2,005,976,968 180 | LB Laurentian Bank of Canada $59.22 $61.67 $46.02 33,843,987 $2,004,240,910 181 | ECI EnerCare Inc. $19.11 $19.76 $15.03 104,296,163 $1,993,099,674 182 | PD Precision Drilling Corporation $6.79 $8.21 $4.66 293,238,858 $1,991,091,845 183 | WTE Westshore Terminals Investment Corpora... $27.04 $29.05 $14.70 73,549,854 $1,988,788,052 184 | D.UN Dream Office Real Estate Investment Trust $18.96 $21.47 $15.95 104,759,223 $1,986,234,868 185 | CEU Canadian Energy Services & Technology ... $7.47 $8.65 $2.85 264,084,744 $1,972,713,037 186 | NGD New Gold Inc. $3.83 $7.87 $3.11 513,724,132 $1,967,563,425 187 | AX.UN Artis Real Estate Investment Trust $12.88 $13.77 $11.37 150,577,071 $1,939,432,674 188 | CG Centerra Gold Inc. $6.49 $8.13 $5.56 291,276,068 $1,890,381,681 189 | WEED Canopy Growth Corporation $11.80 $17.86 $2.40 159,143,476 $1,877,893,016 190 | KL Kirkland Lake Gold Ltd. $9.17 $11.15 $4.21 203,031,934 $1,861,802,834 191 | SPB Superior Plus Corp. $12.74 $13.24 $8.78 142,842,820 $1,819,817,526 192 | KXS Kinaxis Inc. $72.65 $76.17 $33.50 24,952,614 $1,812,807,407 193 | BIR Birchcliff Energy Ltd. $6.88 $10.50 $4.04 263,257,404 $1,811,210,939 194 | FR First Majestic Silver Corp. $10.99 $24.96 $6.72 164,461,567 $1,807,432,621 195 | POU Paramount Resources Ltd. Class A Commo... $16.91 $19.25 $5.79 106,119,095 $1,794,473,896 196 | MST.UN Milestone Apartments Real Estate Inves... $21.82 $21.92 $16.28 80,478,063 $1,756,031,334 197 | MTL Mullen Group Ltd. $16.83 $20.32 $13.28 103,654,316 $1,744,502,138 198 | SES Secure Energy Services Inc. $10.67 $12.04 $7.61 162,104,088 $1,729,650,618 199 | HCG Home Capital Group Inc. $26.16 $39.84 $23.41 64,273,519 $1,681,395,257 200 | SSO Silver Standard Resources Inc. $14.05 $20.48 $6.92 119,412,787 $1,677,749,657 201 | FRU Freehold Royalties Ltd. $14.19 $15.16 $9.66 117,918,274 $1,673,260,308 202 | RUS Russel Metals Inc. $27.02 $29.78 $18.30 61,735,485 $1,668,092,804 203 | FN First National Financial Corporation $27.04 $32.23 $22.43 59,967,429 $1,621,519,280 204 | CNU CNOOC Limited american depositary rece... $161.00 $183.15 $150.00 10,063,022 $1,620,146,542 205 | EFX Enerflex Ltd. $18.29 $19.17 $8.59 88,296,818 $1,614,948,801 206 | BYD.UN Boyd Group Income Fund $88.45 $91.31 $62.33 18,065,060 $1,597,854,557 207 | PJC.A Jean Coutu Group (PJC) Inc. (The) Clas... $19.90 $22.41 $18.56 80,183,204 $1,595,645,759 208 | RCH Richelieu Hardware Ltd. $27.10 $28.88 $21.07 57,942,766 $1,570,248,958 209 | BLX Boralex Inc. Class A Shares $20.70 $21.17 $15.60 75,727,411 $1,567,557,407 210 | POW.PR.E Power Corporation of Canada Participat... $32.00 $32.00 $28.50 48,854,772 $1,563,352,704 211 | INE Innergex Renewable Energy Inc. $14.42 $15.80 $12.43 108,375,159 $1,562,769,792 212 | OR Osisko Gold Royalties Ltd $14.65 $18.64 $11.90 106,530,788 $1,560,676,044 213 | GUD Knight Therapeutics Inc. $10.80 $11.03 $7.20 142,713,489 $1,541,305,681 214 | PSI Pason Systems Inc. $18.19 $20.46 $14.79 84,649,086 $1,539,766,874 215 | MAG MAG Silver Corp. $18.96 $23.32 $10.39 80,710,204 $1,530,265,467 216 | PLI ProMetic Life Sciences Inc. $2.43 $3.49 $1.47 623,549,331 $1,515,224,874 217 | FIH.U Fairfax India Holdings Corporation Sub... $12.51 $12.99 $9.30 117,434,531 $1,469,105,982 218 | ENGH Enghouse Systems Limited $54.29 $61.99 $48.40 26,936,462 $1,462,380,521 219 | QBR.A Quebecor Inc. Class A Multiple Voting ... $37.62 $41.88 $31.74 38,788,072 $1,459,207,268 220 | UNS Uni-Select Inc. $34.36 $35.47 $26.59 42,248,628 $1,451,662,858 221 | GC Great Canadian Gaming Corporation $23.58 $26.20 $16.55 61,466,930 $1,449,390,209 222 | AAR.UN Pure Industrial Real Estate Trust $5.87 $6.08 $4.57 245,682,372 $1,442,155,523 223 | NWC The North West Company Inc. $29.60 $32.50 $24.08 48,681,835 $1,440,982,316 224 | AAV Advantage Oil & Gas Ltd. $7.68 $10.33 $6.41 184,828,085 $1,419,479,692 225 | TCL.A Transcontinental Inc. Class A Subordin... $22.30 $23.12 $16.27 63,351,272 $1,412,733,365 226 | ECN ECN Capital Corp. $3.62 $3.70 $2.60 387,112,489 $1,401,347,210 227 | AIM Aimia Inc. $9.12 $9.49 $6.90 152,294,611 $1,388,926,852 228 | GTE Gran Tierra Energy Inc. $3.55 $4.44 $2.98 390,807,191 $1,387,365,528 229 | SPE Spartan Energy Corp. $2.62 $3.65 $2.49 525,825,255 $1,377,662,168 230 | CRT.UN CT Real Estate Investment Trust $15.10 $15.76 $13.80 90,479,102 $1,366,234,440 231 | TOG TORC Oil & Gas Ltd. $7.36 $9.23 $6.70 183,354,150 $1,349,486,544 232 | MUX McEwen Mining Inc. $4.39 $6.44 $2.30 299,569,826 $1,315,111,536 233 | CHP.UN Choice Properties Real Estate Investme... $14.19 $14.69 $12.12 92,568,828 $1,313,551,669 234 | SMF Semafo Inc. $3.99 $7.46 $3.60 324,840,476 $1,296,113,499 235 | IFP Interfor Corporation $18.49 $18.75 $10.21 70,030,455 $1,294,863,112 236 | ET Evertz Technologies Limited $17.10 $19.24 $15.72 75,619,746 $1,293,097,656 237 | ITP Intertape Polymer Group Inc. $21.76 $25.74 $16.48 59,060,335 $1,285,152,889 238 | CAS Cascades Inc. $13.43 $14.39 $7.72 94,606,610 $1,270,566,772 239 | TMR TMAC Resources Inc. $15.11 $20.18 $8.50 83,592,066 $1,263,076,117 240 | ESI Ensign Energy Services Inc. $8.19 $10.41 $5.56 154,140,909 $1,262,414,044 241 | CHE.UN Chemtrade Logistics Income Fund $18.17 $19.22 $16.10 69,172,785 $1,256,869,503 242 | ATA ATS Automation Tooling Systems Inc. $13.47 $13.88 $9.16 92,565,609 $1,246,858,753 243 | LNF Leon's Furniture Limited $17.29 $19.36 $14.05 71,949,454 $1,244,006,059 244 | SW Sierra Wireless Inc. $38.60 $39.80 $16.48 31,859,960 $1,229,794,456 245 | TCN Tricon Capital Group Inc. $10.86 $11.16 $8.10 112,754,769 $1,224,516,791 246 | LIF Labrador Iron Ore Royalty Corporation $19.07 $20.67 $11.06 64,000,000 $1,220,480,000 247 | ZZZ Sleep Country Canada Holdings Inc. $32.40 $34.15 $18.30 37,648,349 $1,219,806,507 248 | CRR.UN Crombie Real Estate Investment Trust $13.69 $15.79 $13.02 87,855,116 $1,202,736,538 249 | UNC United Corporations Limited $98.49 $98.49 $90.66 12,194,193 $1,201,006,068 250 | DRG.UN Dream Global Real Estate Investment Trust $9.55 $10.00 $8.36 125,632,095 $1,199,786,507 251 | KDX Klondex Mines Ltd. $6.79 $7.95 $3.40 175,835,809 $1,193,925,143 252 | BAD Badger Daylighting Ltd. $32.01 $35.19 $19.50 37,100,681 $1,187,592,798 253 | EQB Equitable Group Inc. $71.84 $74.66 $49.70 16,460,142 $1,182,496,601 254 | EIF Exchange Income Corporation $37.90 $45.28 $25.50 31,096,804 $1,178,568,871 255 | JE Just Energy Group Inc. $7.82 $8.73 $6.41 147,822,639 $1,155,973,036 256 | GUY Guyana Goldfields Inc. $6.64 $10.35 $4.29 171,148,473 $1,136,425,860 257 | FVI Fortuna Silver Mines Inc. $7.07 $12.73 $4.66 158,851,923 $1,123,083,095 258 | BTE Baytex Energy Corp. $4.81 $9.04 $4.38 233,448,990 $1,122,889,641 259 | PWT Penn West Petroleum Ltd. $2.23 $2.72 $0.78 502,765,488 $1,121,167,038 260 | AIF Altus Group Limited $29.44 $33.50 $19.32 37,474,533 $1,103,250,251 261 | NXE NexGen Energy Ltd. $3.57 $4.45 $1.27 306,398,620 $1,093,843,073 262 | MTY MTY Food Group Inc. $50.92 $53.20 $30.97 21,374,497 $1,088,389,387 263 | AOI Africa Oil Corp. $2.38 $2.81 $1.71 456,617,074 $1,086,748,636 264 | NVU.UN Northview Apartment Real Estate Invest... $21.42 $22.88 $18.01 49,944,749 $1,069,816,523 265 | MAL Magellan Aerospace Corporation $18.26 $19.97 $14.42 58,209,001 $1,062,896,358 266 | LUC Lucara Diamond Corp. $2.78 $4.39 $2.49 382,246,001 $1,062,643,882 267 | MNW Mitel Networks Corporation $8.70 $11.10 $7.56 121,970,528 $1,061,143,593 268 | KEL Kelt Exploration Ltd. $5.99 $7.49 $3.42 175,705,950 $1,052,478,640 269 | EIT.UN Canoe EIT Income Fund $12.00 $12.19 $10.19 87,673,896 $1,052,086,752 270 | CGG China Gold International Resources Cor... $2.63 $3.67 $1.84 396,413,753 $1,042,568,170 271 | TD.PF.H Toronto-Dominion Bank (The) 5-Year Rat... $26.01 $26.11 $25.24 40,000,000 $1,040,400,000 272 | TRP.PR.K TransCanada Corporation cumulative red... $25.74 $25.92 $24.74 40,000,000 $1,029,600,000 273 | MSI Morneau Shepell Inc. $19.27 $20.52 $16.21 53,230,064 $1,025,743,333 274 | NSU Nevsun Resources Ltd. $3.36 $4.81 $3.01 301,869,593 $1,014,281,832 275 | DII.B Dorel Industries Inc. Class B Subordin... $35.76 $40.85 $26.20 28,210,545 $1,008,809,089 -------------------------------------------------------------------------------- /price_targets.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": false 8 | }, 9 | "outputs": [ 10 | { 11 | "data": { 12 | "text/html": [ 13 | "
\n", 14 | "\n", 15 | " \n", 16 | " \n", 17 | " \n", 18 | " \n", 19 | " \n", 20 | " \n", 21 | " \n", 22 | " \n", 23 | " \n", 24 | " \n", 25 | " \n", 26 | " \n", 27 | " \n", 28 | " \n", 29 | " \n", 30 | " \n", 31 | " \n", 32 | " \n", 33 | " \n", 34 | " \n", 35 | " \n", 36 | " \n", 37 | " \n", 38 | " \n", 39 | " \n", 40 | " \n", 41 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | "
tickeranalysttargetratingaver_close_at_analysisanalysis_dateaver_close_at_12m12m_date
0RYTD Securities78.00Hold70.2828562016-03-0297.8328572017-03-02
1RYScotiabank77.00Outperform70.2828562016-03-0297.8328572017-03-02
2RYTD Securities80.00Buy69.0299992016-02-2597.6562512017-02-25
3RYScotiabank77.00Outperform69.0299992016-02-2597.6562512017-02-25
4RYBank of America Corp85.00NaN69.0299992016-02-2597.6562512017-02-25
5RYNational Bank Financial72.00Sector Perform69.0299992016-02-2597.6562512017-02-25
6RYCIBC78.00NaN69.0299992016-02-2597.6562512017-02-25
7RYBarclays PLC58.00NaN70.1850002016-02-1798.3699992017-02-17
8RYNational Bank Financial74.00NaN67.8733342016-02-1096.4362492017-02-10
9RYCIBC80.00NaN71.2971432016-01-0792.8762492017-01-07
10RYScotiabank86.00Outperform76.0700012015-12-0388.3555562016-12-03
11RYBank of America Corp92.00Buy76.0700012015-12-0388.3555562016-12-03
12RYNational Bank Financial79.00Sector Perform76.0700012015-12-0388.3555562016-12-03
13RYCanaccord Genuity81.00NaN76.0700012015-12-0388.3555562016-12-03
14RYCanaccord Genuity79.00Hold75.5328582015-11-2489.5428582016-11-24
15RYScotiabank79.00Outperform75.7485702015-11-0483.1650012016-11-04
16RYScotiabank79.00Outperform72.4028582015-09-3081.1637512016-09-30
17RYBarclays PLC71.00Underweight72.5650002015-09-1080.8887492016-09-10
18RYCIBC83.00NaN72.3599982015-09-0181.6050002016-09-01
19RYBank of America Corp72.00Buy72.3122212015-08-2981.6000012016-08-29
20RYCanaccord Genuity75.00Hold72.5042842015-08-2781.6222232016-08-27
21RYScotiabank79.00Sector Outperform72.5042842015-08-2781.6222232016-08-27
22RYBank of America Corp72.00Buy72.5042842015-08-2781.6222232016-08-27
23RYScotiabank82.00NaN73.8200012015-08-2080.8966672016-08-20
24RYCIBC84.00Outperform75.1087502015-08-1780.3942862016-08-17
25RYBarclays PLC76.00NaN76.1214282015-08-1280.1712502016-08-12
26RYTD Securities90.00Buy79.6462502015-05-2979.5022232016-05-29
27RYCIBC87.00Outperform79.6462502015-05-2979.5022232016-05-29
28RYBMO Capital Markets90.00Market Perform79.6462502015-05-2979.5022232016-05-29
29TDCIBC58.00NaN53.5700002016-03-0369.4987522017-03-03
...........................
4310KELCIBC6.00Sector Performer4.9500002015-10-286.1912502016-10-28
4311KELRaymond James Financial, Inc.8.00NaN5.8485712015-10-166.4333332016-10-16
4312KELParadigm Capital7.50NaN6.1350002015-10-025.9600002016-10-02
4313KELScotiabank11.00NaN5.7900002015-09-295.7585712016-09-29
4314KELCIBC7.00NaN5.9928572015-09-235.6475002016-09-23
4315KELCredit Suisse Group AG9.00NaN6.4557142015-08-134.8444442016-08-13
4316KELRaymond James Financial, Inc.9.50NaN6.5342862015-08-124.8125002016-08-12
4317KELDundee Securities9.75Buy6.6628572015-08-114.7957142016-08-11
4318KELTD Securities12.00Buy6.6628572015-08-114.7957142016-08-11
4319KELRoyal Bank of Canada10.00Outperform6.6628572015-08-114.7957142016-08-11
4320KELParadigm Capital10.00Buy6.6628572015-08-114.7957142016-08-11
4321KELFirstEnergy Capital9.50NaN6.6628572015-08-114.7957142016-08-11
4322KELCSFB8.50Neutral6.6628572015-08-114.7957142016-08-11
4323KELCIBC9.50Sector Outperformer6.6628572015-08-114.7957142016-08-11
4324KELTD Securities13.00Buy8.3314292015-07-084.6762502016-07-08
4325KELScotiabank11.50Outperform8.3314292015-07-084.6762502016-07-08
4326KELDundee Securities12.75Buy8.9400002015-06-164.8171432016-06-16
4327KELRaymond James Financial, Inc.11.00Outperform8.7042862015-05-194.5933332016-05-19
4328MSINational Bank Financial19.50Outperform17.1725002016-04-0420.2071422017-04-04
4329MSITD Securities17.50Hold15.6212502016-03-0418.9022222017-03-04
4330MSIScotiabank19.00Outperform15.6212502016-03-0418.9022222017-03-04
4331MSITD Securities17.00Hold15.4942862015-11-1119.3062502016-11-11
4332MSIScotiabank18.50NaN16.6016672015-08-0618.4325002016-08-06
4333MSIScotiabank19.00Sector Perform16.5966672015-08-0518.4242862016-08-05
4334MSIScotiabank18.00Sector Perform17.6900002015-05-1217.4314282016-05-12
4335NSURoyal Bank of Canada6.00Outperform4.4571432016-04-273.1728572017-04-27
4336NSUParadigm Capital6.00Buy4.4742862016-04-263.1814292017-04-26
4337NSUCanaccord Genuity5.00Hold4.4275002016-04-223.2522222017-04-22
4338NSUParadigm Capital5.50Buy3.8875002015-11-023.7871432016-11-02
4339NSUCIBC5.00Sector Perform3.7900002015-09-044.1900002016-09-04
\n", 702 | "

4340 rows × 8 columns

\n", 703 | "
" 704 | ], 705 | "text/plain": [ 706 | " ticker analyst target rating \\\n", 707 | "0 RY TD Securities 78.00 Hold \n", 708 | "1 RY Scotiabank 77.00 Outperform \n", 709 | "2 RY TD Securities 80.00 Buy \n", 710 | "3 RY Scotiabank 77.00 Outperform \n", 711 | "4 RY Bank of America Corp 85.00 NaN \n", 712 | "5 RY National Bank Financial 72.00 Sector Perform \n", 713 | "6 RY CIBC 78.00 NaN \n", 714 | "7 RY Barclays PLC 58.00 NaN \n", 715 | "8 RY National Bank Financial 74.00 NaN \n", 716 | "9 RY CIBC 80.00 NaN \n", 717 | "10 RY Scotiabank 86.00 Outperform \n", 718 | "11 RY Bank of America Corp 92.00 Buy \n", 719 | "12 RY National Bank Financial 79.00 Sector Perform \n", 720 | "13 RY Canaccord Genuity 81.00 NaN \n", 721 | "14 RY Canaccord Genuity 79.00 Hold \n", 722 | "15 RY Scotiabank 79.00 Outperform \n", 723 | "16 RY Scotiabank 79.00 Outperform \n", 724 | "17 RY Barclays PLC 71.00 Underweight \n", 725 | "18 RY CIBC 83.00 NaN \n", 726 | "19 RY Bank of America Corp 72.00 Buy \n", 727 | "20 RY Canaccord Genuity 75.00 Hold \n", 728 | "21 RY Scotiabank 79.00 Sector Outperform \n", 729 | "22 RY Bank of America Corp 72.00 Buy \n", 730 | "23 RY Scotiabank 82.00 NaN \n", 731 | "24 RY CIBC 84.00 Outperform \n", 732 | "25 RY Barclays PLC 76.00 NaN \n", 733 | "26 RY TD Securities 90.00 Buy \n", 734 | "27 RY CIBC 87.00 Outperform \n", 735 | "28 RY BMO Capital Markets 90.00 Market Perform \n", 736 | "29 TD CIBC 58.00 NaN \n", 737 | "... ... ... ... ... \n", 738 | "4310 KEL CIBC 6.00 Sector Performer \n", 739 | "4311 KEL Raymond James Financial, Inc. 8.00 NaN \n", 740 | "4312 KEL Paradigm Capital 7.50 NaN \n", 741 | "4313 KEL Scotiabank 11.00 NaN \n", 742 | "4314 KEL CIBC 7.00 NaN \n", 743 | "4315 KEL Credit Suisse Group AG 9.00 NaN \n", 744 | "4316 KEL Raymond James Financial, Inc. 9.50 NaN \n", 745 | "4317 KEL Dundee Securities 9.75 Buy \n", 746 | "4318 KEL TD Securities 12.00 Buy \n", 747 | "4319 KEL Royal Bank of Canada 10.00 Outperform \n", 748 | "4320 KEL Paradigm Capital 10.00 Buy \n", 749 | "4321 KEL FirstEnergy Capital 9.50 NaN \n", 750 | "4322 KEL CSFB 8.50 Neutral \n", 751 | "4323 KEL CIBC 9.50 Sector Outperformer \n", 752 | "4324 KEL TD Securities 13.00 Buy \n", 753 | "4325 KEL Scotiabank 11.50 Outperform \n", 754 | "4326 KEL Dundee Securities 12.75 Buy \n", 755 | "4327 KEL Raymond James Financial, Inc. 11.00 Outperform \n", 756 | "4328 MSI National Bank Financial 19.50 Outperform \n", 757 | "4329 MSI TD Securities 17.50 Hold \n", 758 | "4330 MSI Scotiabank 19.00 Outperform \n", 759 | "4331 MSI TD Securities 17.00 Hold \n", 760 | "4332 MSI Scotiabank 18.50 NaN \n", 761 | "4333 MSI Scotiabank 19.00 Sector Perform \n", 762 | "4334 MSI Scotiabank 18.00 Sector Perform \n", 763 | "4335 NSU Royal Bank of Canada 6.00 Outperform \n", 764 | "4336 NSU Paradigm Capital 6.00 Buy \n", 765 | "4337 NSU Canaccord Genuity 5.00 Hold \n", 766 | "4338 NSU Paradigm Capital 5.50 Buy \n", 767 | "4339 NSU CIBC 5.00 Sector Perform \n", 768 | "\n", 769 | " aver_close_at_analysis analysis_date aver_close_at_12m 12m_date \n", 770 | "0 70.282856 2016-03-02 97.832857 2017-03-02 \n", 771 | "1 70.282856 2016-03-02 97.832857 2017-03-02 \n", 772 | "2 69.029999 2016-02-25 97.656251 2017-02-25 \n", 773 | "3 69.029999 2016-02-25 97.656251 2017-02-25 \n", 774 | "4 69.029999 2016-02-25 97.656251 2017-02-25 \n", 775 | "5 69.029999 2016-02-25 97.656251 2017-02-25 \n", 776 | "6 69.029999 2016-02-25 97.656251 2017-02-25 \n", 777 | "7 70.185000 2016-02-17 98.369999 2017-02-17 \n", 778 | "8 67.873334 2016-02-10 96.436249 2017-02-10 \n", 779 | "9 71.297143 2016-01-07 92.876249 2017-01-07 \n", 780 | "10 76.070001 2015-12-03 88.355556 2016-12-03 \n", 781 | "11 76.070001 2015-12-03 88.355556 2016-12-03 \n", 782 | "12 76.070001 2015-12-03 88.355556 2016-12-03 \n", 783 | "13 76.070001 2015-12-03 88.355556 2016-12-03 \n", 784 | "14 75.532858 2015-11-24 89.542858 2016-11-24 \n", 785 | "15 75.748570 2015-11-04 83.165001 2016-11-04 \n", 786 | "16 72.402858 2015-09-30 81.163751 2016-09-30 \n", 787 | "17 72.565000 2015-09-10 80.888749 2016-09-10 \n", 788 | "18 72.359998 2015-09-01 81.605000 2016-09-01 \n", 789 | "19 72.312221 2015-08-29 81.600001 2016-08-29 \n", 790 | "20 72.504284 2015-08-27 81.622223 2016-08-27 \n", 791 | "21 72.504284 2015-08-27 81.622223 2016-08-27 \n", 792 | "22 72.504284 2015-08-27 81.622223 2016-08-27 \n", 793 | "23 73.820001 2015-08-20 80.896667 2016-08-20 \n", 794 | "24 75.108750 2015-08-17 80.394286 2016-08-17 \n", 795 | "25 76.121428 2015-08-12 80.171250 2016-08-12 \n", 796 | "26 79.646250 2015-05-29 79.502223 2016-05-29 \n", 797 | "27 79.646250 2015-05-29 79.502223 2016-05-29 \n", 798 | "28 79.646250 2015-05-29 79.502223 2016-05-29 \n", 799 | "29 53.570000 2016-03-03 69.498752 2017-03-03 \n", 800 | "... ... ... ... ... \n", 801 | "4310 4.950000 2015-10-28 6.191250 2016-10-28 \n", 802 | "4311 5.848571 2015-10-16 6.433333 2016-10-16 \n", 803 | "4312 6.135000 2015-10-02 5.960000 2016-10-02 \n", 804 | "4313 5.790000 2015-09-29 5.758571 2016-09-29 \n", 805 | "4314 5.992857 2015-09-23 5.647500 2016-09-23 \n", 806 | "4315 6.455714 2015-08-13 4.844444 2016-08-13 \n", 807 | "4316 6.534286 2015-08-12 4.812500 2016-08-12 \n", 808 | "4317 6.662857 2015-08-11 4.795714 2016-08-11 \n", 809 | "4318 6.662857 2015-08-11 4.795714 2016-08-11 \n", 810 | "4319 6.662857 2015-08-11 4.795714 2016-08-11 \n", 811 | "4320 6.662857 2015-08-11 4.795714 2016-08-11 \n", 812 | "4321 6.662857 2015-08-11 4.795714 2016-08-11 \n", 813 | "4322 6.662857 2015-08-11 4.795714 2016-08-11 \n", 814 | "4323 6.662857 2015-08-11 4.795714 2016-08-11 \n", 815 | "4324 8.331429 2015-07-08 4.676250 2016-07-08 \n", 816 | "4325 8.331429 2015-07-08 4.676250 2016-07-08 \n", 817 | "4326 8.940000 2015-06-16 4.817143 2016-06-16 \n", 818 | "4327 8.704286 2015-05-19 4.593333 2016-05-19 \n", 819 | "4328 17.172500 2016-04-04 20.207142 2017-04-04 \n", 820 | "4329 15.621250 2016-03-04 18.902222 2017-03-04 \n", 821 | "4330 15.621250 2016-03-04 18.902222 2017-03-04 \n", 822 | "4331 15.494286 2015-11-11 19.306250 2016-11-11 \n", 823 | "4332 16.601667 2015-08-06 18.432500 2016-08-06 \n", 824 | "4333 16.596667 2015-08-05 18.424286 2016-08-05 \n", 825 | "4334 17.690000 2015-05-12 17.431428 2016-05-12 \n", 826 | "4335 4.457143 2016-04-27 3.172857 2017-04-27 \n", 827 | "4336 4.474286 2016-04-26 3.181429 2017-04-26 \n", 828 | "4337 4.427500 2016-04-22 3.252222 2017-04-22 \n", 829 | "4338 3.887500 2015-11-02 3.787143 2016-11-02 \n", 830 | "4339 3.790000 2015-09-04 4.190000 2016-09-04 \n", 831 | "\n", 832 | "[4340 rows x 8 columns]" 833 | ] 834 | }, 835 | "execution_count": 1, 836 | "metadata": {}, 837 | "output_type": "execute_result" 838 | } 839 | ], 840 | "source": [ 841 | "import pandas as pd\n", 842 | "import numpy as np\n", 843 | "\n", 844 | "df = pd.read_csv('targets.csv')\n", 845 | "\n", 846 | "df" 847 | ] 848 | }, 849 | { 850 | "cell_type": "code", 851 | "execution_count": 2, 852 | "metadata": { 853 | "collapsed": false, 854 | "scrolled": true 855 | }, 856 | "outputs": [ 857 | { 858 | "data": { 859 | "text/html": [ 860 | "
\n", 861 | "\n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | " \n", 911 | " \n", 912 | " \n", 913 | " \n", 914 | " \n", 915 | " \n", 916 | " \n", 917 | " \n", 918 | " \n", 919 | " \n", 920 | " \n", 921 | " \n", 922 | " \n", 923 | " \n", 924 | " \n", 925 | " \n", 926 | " \n", 927 | " \n", 928 | " \n", 929 | " \n", 930 | " \n", 931 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | " \n", 946 | " \n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | " \n", 1049 | " \n", 1050 | " \n", 1051 | " \n", 1052 | " \n", 1053 | " \n", 1054 | " \n", 1055 | " \n", 1056 | " \n", 1057 | " \n", 1058 | " \n", 1059 | " \n", 1060 | " \n", 1061 | " \n", 1062 | " \n", 1063 | " \n", 1064 | " \n", 1065 | " \n", 1066 | " \n", 1067 | " \n", 1068 | " \n", 1069 | " \n", 1070 | " \n", 1071 | " \n", 1072 | " \n", 1073 | " \n", 1074 | " \n", 1075 | " \n", 1076 | " \n", 1077 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | " \n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | " \n", 1189 | " \n", 1190 | " \n", 1191 | " \n", 1192 | " \n", 1193 | " \n", 1194 | " \n", 1195 | " \n", 1196 | " \n", 1197 | " \n", 1198 | " \n", 1199 | " \n", 1200 | " \n", 1201 | " \n", 1202 | " \n", 1203 | " \n", 1204 | " \n", 1205 | " \n", 1206 | " \n", 1207 | " \n", 1208 | " \n", 1209 | " \n", 1210 | " \n", 1211 | " \n", 1212 | " \n", 1213 | " \n", 1214 | " \n", 1215 | " \n", 1216 | " \n", 1217 | " \n", 1218 | " \n", 1219 | " \n", 1220 | " \n", 1221 | " \n", 1222 | " \n", 1223 | " \n", 1224 | " \n", 1225 | " \n", 1226 | " \n", 1227 | " \n", 1228 | " \n", 1229 | " \n", 1230 | " \n", 1231 | " \n", 1232 | " \n", 1233 | " \n", 1234 | " \n", 1235 | " \n", 1236 | " \n", 1237 | " \n", 1238 | " \n", 1239 | " \n", 1240 | " \n", 1241 | " \n", 1242 | " \n", 1243 | " \n", 1244 | " \n", 1245 | " \n", 1246 | " \n", 1247 | " \n", 1248 | " \n", 1249 | " \n", 1250 | " \n", 1251 | " \n", 1252 | " \n", 1253 | " \n", 1254 | " \n", 1255 | " \n", 1256 | " \n", 1257 | " \n", 1258 | " \n", 1259 | " \n", 1260 | " \n", 1261 | " \n", 1262 | " \n", 1263 | " \n", 1264 | " \n", 1265 | " \n", 1266 | " \n", 1267 | " \n", 1268 | " \n", 1269 | " \n", 1270 | " \n", 1271 | " \n", 1272 | " \n", 1273 | " \n", 1274 | " \n", 1275 | " \n", 1276 | " \n", 1277 | " \n", 1278 | " \n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | "
tickeranalysttargetaver_close_at_12mtarget_percreal_percerror
0RYTD Securities78.0097.83285710.98012239.198750-28.218627
1RYScotiabank77.0097.8328579.55730039.198750-29.641449
2RYTD Securities80.0097.65625115.89164341.469292-25.577649
3RYScotiabank77.0097.65625111.54570741.469292-29.923586
4RYBank of America Corp85.0097.65625123.13487141.469292-18.334421
5RYNational Bank Financial72.0097.6562514.30247941.469292-37.166813
6RYCIBC78.0097.65625112.99435241.469292-28.474940
7RYBarclays PLC58.0098.369999-17.36126040.158152-57.519412
8RYNational Bank Financial74.0096.4362499.02661742.082675-33.056058
9RYCIBC80.0092.87624912.20645930.266438-18.059979
10RYScotiabank86.0088.35555613.05376516.150329-3.096564
11RYBank of America Corp92.0088.35555620.94123716.1503294.790908
12RYNational Bank Financial79.0088.3555563.85171416.150329-12.298614
13RYCanaccord Genuity81.0088.3555566.48087216.150329-9.669457
14RYCanaccord Genuity79.0089.5428584.59024418.548219-13.957975
15RYScotiabank79.0083.1650014.2923989.790852-5.498455
16RYScotiabank79.0081.1637519.11171412.100202-2.988488
17RYBarclays PLC71.0080.888749-2.15668711.470749-13.627436
18RYCIBC83.0081.60500014.70425912.7763981.927861
19RYBank of America Corp72.0081.600001-0.43176812.843997-13.275765
20RYCanaccord Genuity75.0081.6222233.44216312.575724-9.133561
21RYScotiabank79.0081.6222238.95907812.575724-3.616646
22RYBank of America Corp72.0081.622223-0.69552412.575724-13.271247
23RYScotiabank82.0080.89666711.0810079.5863811.494626
24RYCIBC84.0080.39428611.8378357.0371774.800658
25RYBarclays PLC76.0080.171250-0.1595195.320213-5.479732
26RYTD Securities90.0079.50222312.999671-0.18083413.180504
27RYCIBC87.0079.5022239.233015-0.1808349.413849
28RYBMO Capital Markets90.0079.50222312.999671-0.18083413.180504
29TDCIBC58.0069.4987528.26955429.734463-21.464909
........................
4310KELCIBC6.006.19125021.21212125.075758-3.863636
4311KELRaymond James Financial, Inc.8.006.43333336.7855409.99837226.787168
4312KELParadigm Capital7.505.96000022.249389-2.85248625.101874
4313KELScotiabank11.005.75857189.982729-0.54280890.525537
4314KELCIBC7.005.64750016.805721-5.76281322.568534
4315KELCredit Suisse Group AG9.004.84444439.411374-24.95881664.370190
4316KELRaymond James Financial, Inc.9.504.81250045.386970-26.35002271.736992
4317KELDundee Securities9.754.79571446.333619-28.02315674.356775
4318KELTD Securities12.004.79571480.102916-28.023156108.126072
4319KELRoyal Bank of Canada10.004.79571450.085763-28.02315678.108919
4320KELParadigm Capital10.004.79571450.085763-28.02315678.108919
4321KELFirstEnergy Capital9.504.79571442.581475-28.02315670.604631
4322KELCSFB8.504.79571427.572899-28.02315655.596055
4323KELCIBC9.504.79571442.581475-28.02315670.604631
4324KELTD Securities13.004.67625056.035665-43.87217199.907836
4325KELScotiabank11.504.67625038.031550-43.87217181.903721
4326KELDundee Securities12.754.81714342.617450-46.11697088.734420
4327KELRaymond James Financial, Inc.11.004.59333326.374528-47.22906173.603589
4328MSINational Bank Financial19.5020.20714213.55364717.671523-4.117876
4329MSITD Securities17.5018.90222212.02688621.003261-8.976375
4330MSIScotiabank19.0018.90222221.62919021.0032610.625929
4331MSITD Securities17.0019.3062509.71786824.602386-14.884518
4332MSIScotiabank18.5018.43250011.43459411.0280080.406586
4333MSIScotiabank19.0018.42428614.48081911.0119653.468855
4334MSIScotiabank18.0017.4314281.752402-1.4616843.214085
4335NSURoyal Bank of Canada6.003.17285734.615385-28.81410363.429487
4336NSUParadigm Capital6.003.18142934.099617-28.89527562.994891
4337NSUCanaccord Genuity5.003.25222212.930548-26.54495339.475500
4338NSUParadigm Capital5.503.78714341.479100-2.58153444.060634
4339NSUCIBC5.004.19000031.92612110.55409021.372032
\n", 1487 | "

4340 rows × 7 columns

\n", 1488 | "
" 1489 | ], 1490 | "text/plain": [ 1491 | " ticker analyst target aver_close_at_12m \\\n", 1492 | "0 RY TD Securities 78.00 97.832857 \n", 1493 | "1 RY Scotiabank 77.00 97.832857 \n", 1494 | "2 RY TD Securities 80.00 97.656251 \n", 1495 | "3 RY Scotiabank 77.00 97.656251 \n", 1496 | "4 RY Bank of America Corp 85.00 97.656251 \n", 1497 | "5 RY National Bank Financial 72.00 97.656251 \n", 1498 | "6 RY CIBC 78.00 97.656251 \n", 1499 | "7 RY Barclays PLC 58.00 98.369999 \n", 1500 | "8 RY National Bank Financial 74.00 96.436249 \n", 1501 | "9 RY CIBC 80.00 92.876249 \n", 1502 | "10 RY Scotiabank 86.00 88.355556 \n", 1503 | "11 RY Bank of America Corp 92.00 88.355556 \n", 1504 | "12 RY National Bank Financial 79.00 88.355556 \n", 1505 | "13 RY Canaccord Genuity 81.00 88.355556 \n", 1506 | "14 RY Canaccord Genuity 79.00 89.542858 \n", 1507 | "15 RY Scotiabank 79.00 83.165001 \n", 1508 | "16 RY Scotiabank 79.00 81.163751 \n", 1509 | "17 RY Barclays PLC 71.00 80.888749 \n", 1510 | "18 RY CIBC 83.00 81.605000 \n", 1511 | "19 RY Bank of America Corp 72.00 81.600001 \n", 1512 | "20 RY Canaccord Genuity 75.00 81.622223 \n", 1513 | "21 RY Scotiabank 79.00 81.622223 \n", 1514 | "22 RY Bank of America Corp 72.00 81.622223 \n", 1515 | "23 RY Scotiabank 82.00 80.896667 \n", 1516 | "24 RY CIBC 84.00 80.394286 \n", 1517 | "25 RY Barclays PLC 76.00 80.171250 \n", 1518 | "26 RY TD Securities 90.00 79.502223 \n", 1519 | "27 RY CIBC 87.00 79.502223 \n", 1520 | "28 RY BMO Capital Markets 90.00 79.502223 \n", 1521 | "29 TD CIBC 58.00 69.498752 \n", 1522 | "... ... ... ... ... \n", 1523 | "4310 KEL CIBC 6.00 6.191250 \n", 1524 | "4311 KEL Raymond James Financial, Inc. 8.00 6.433333 \n", 1525 | "4312 KEL Paradigm Capital 7.50 5.960000 \n", 1526 | "4313 KEL Scotiabank 11.00 5.758571 \n", 1527 | "4314 KEL CIBC 7.00 5.647500 \n", 1528 | "4315 KEL Credit Suisse Group AG 9.00 4.844444 \n", 1529 | "4316 KEL Raymond James Financial, Inc. 9.50 4.812500 \n", 1530 | "4317 KEL Dundee Securities 9.75 4.795714 \n", 1531 | "4318 KEL TD Securities 12.00 4.795714 \n", 1532 | "4319 KEL Royal Bank of Canada 10.00 4.795714 \n", 1533 | "4320 KEL Paradigm Capital 10.00 4.795714 \n", 1534 | "4321 KEL FirstEnergy Capital 9.50 4.795714 \n", 1535 | "4322 KEL CSFB 8.50 4.795714 \n", 1536 | "4323 KEL CIBC 9.50 4.795714 \n", 1537 | "4324 KEL TD Securities 13.00 4.676250 \n", 1538 | "4325 KEL Scotiabank 11.50 4.676250 \n", 1539 | "4326 KEL Dundee Securities 12.75 4.817143 \n", 1540 | "4327 KEL Raymond James Financial, Inc. 11.00 4.593333 \n", 1541 | "4328 MSI National Bank Financial 19.50 20.207142 \n", 1542 | "4329 MSI TD Securities 17.50 18.902222 \n", 1543 | "4330 MSI Scotiabank 19.00 18.902222 \n", 1544 | "4331 MSI TD Securities 17.00 19.306250 \n", 1545 | "4332 MSI Scotiabank 18.50 18.432500 \n", 1546 | "4333 MSI Scotiabank 19.00 18.424286 \n", 1547 | "4334 MSI Scotiabank 18.00 17.431428 \n", 1548 | "4335 NSU Royal Bank of Canada 6.00 3.172857 \n", 1549 | "4336 NSU Paradigm Capital 6.00 3.181429 \n", 1550 | "4337 NSU Canaccord Genuity 5.00 3.252222 \n", 1551 | "4338 NSU Paradigm Capital 5.50 3.787143 \n", 1552 | "4339 NSU CIBC 5.00 4.190000 \n", 1553 | "\n", 1554 | " target_perc real_perc error \n", 1555 | "0 10.980122 39.198750 -28.218627 \n", 1556 | "1 9.557300 39.198750 -29.641449 \n", 1557 | "2 15.891643 41.469292 -25.577649 \n", 1558 | "3 11.545707 41.469292 -29.923586 \n", 1559 | "4 23.134871 41.469292 -18.334421 \n", 1560 | "5 4.302479 41.469292 -37.166813 \n", 1561 | "6 12.994352 41.469292 -28.474940 \n", 1562 | "7 -17.361260 40.158152 -57.519412 \n", 1563 | "8 9.026617 42.082675 -33.056058 \n", 1564 | "9 12.206459 30.266438 -18.059979 \n", 1565 | "10 13.053765 16.150329 -3.096564 \n", 1566 | "11 20.941237 16.150329 4.790908 \n", 1567 | "12 3.851714 16.150329 -12.298614 \n", 1568 | "13 6.480872 16.150329 -9.669457 \n", 1569 | "14 4.590244 18.548219 -13.957975 \n", 1570 | "15 4.292398 9.790852 -5.498455 \n", 1571 | "16 9.111714 12.100202 -2.988488 \n", 1572 | "17 -2.156687 11.470749 -13.627436 \n", 1573 | "18 14.704259 12.776398 1.927861 \n", 1574 | "19 -0.431768 12.843997 -13.275765 \n", 1575 | "20 3.442163 12.575724 -9.133561 \n", 1576 | "21 8.959078 12.575724 -3.616646 \n", 1577 | "22 -0.695524 12.575724 -13.271247 \n", 1578 | "23 11.081007 9.586381 1.494626 \n", 1579 | "24 11.837835 7.037177 4.800658 \n", 1580 | "25 -0.159519 5.320213 -5.479732 \n", 1581 | "26 12.999671 -0.180834 13.180504 \n", 1582 | "27 9.233015 -0.180834 9.413849 \n", 1583 | "28 12.999671 -0.180834 13.180504 \n", 1584 | "29 8.269554 29.734463 -21.464909 \n", 1585 | "... ... ... ... \n", 1586 | "4310 21.212121 25.075758 -3.863636 \n", 1587 | "4311 36.785540 9.998372 26.787168 \n", 1588 | "4312 22.249389 -2.852486 25.101874 \n", 1589 | "4313 89.982729 -0.542808 90.525537 \n", 1590 | "4314 16.805721 -5.762813 22.568534 \n", 1591 | "4315 39.411374 -24.958816 64.370190 \n", 1592 | "4316 45.386970 -26.350022 71.736992 \n", 1593 | "4317 46.333619 -28.023156 74.356775 \n", 1594 | "4318 80.102916 -28.023156 108.126072 \n", 1595 | "4319 50.085763 -28.023156 78.108919 \n", 1596 | "4320 50.085763 -28.023156 78.108919 \n", 1597 | "4321 42.581475 -28.023156 70.604631 \n", 1598 | "4322 27.572899 -28.023156 55.596055 \n", 1599 | "4323 42.581475 -28.023156 70.604631 \n", 1600 | "4324 56.035665 -43.872171 99.907836 \n", 1601 | "4325 38.031550 -43.872171 81.903721 \n", 1602 | "4326 42.617450 -46.116970 88.734420 \n", 1603 | "4327 26.374528 -47.229061 73.603589 \n", 1604 | "4328 13.553647 17.671523 -4.117876 \n", 1605 | "4329 12.026886 21.003261 -8.976375 \n", 1606 | "4330 21.629190 21.003261 0.625929 \n", 1607 | "4331 9.717868 24.602386 -14.884518 \n", 1608 | "4332 11.434594 11.028008 0.406586 \n", 1609 | "4333 14.480819 11.011965 3.468855 \n", 1610 | "4334 1.752402 -1.461684 3.214085 \n", 1611 | "4335 34.615385 -28.814103 63.429487 \n", 1612 | "4336 34.099617 -28.895275 62.994891 \n", 1613 | "4337 12.930548 -26.544953 39.475500 \n", 1614 | "4338 41.479100 -2.581534 44.060634 \n", 1615 | "4339 31.926121 10.554090 21.372032 \n", 1616 | "\n", 1617 | "[4340 rows x 7 columns]" 1618 | ] 1619 | }, 1620 | "execution_count": 2, 1621 | "metadata": {}, 1622 | "output_type": "execute_result" 1623 | } 1624 | ], 1625 | "source": [ 1626 | "df['target_perc'] = (df['target'] - df['aver_close_at_analysis'])/df['aver_close_at_analysis'] * 100\n", 1627 | "df['real_perc'] = (df['aver_close_at_12m'] - df['aver_close_at_analysis'])/df['aver_close_at_analysis'] * 100\n", 1628 | "df['error'] = (df['target_perc']-df['real_perc'])\n", 1629 | "df['abs_error'] = abs(df['error'])\n", 1630 | "\n", 1631 | "df[['ticker', 'analyst', 'target', 'aver_close_at_12m', 'target_perc', 'real_perc', 'error']]" 1632 | ] 1633 | }, 1634 | { 1635 | "cell_type": "code", 1636 | "execution_count": 5, 1637 | "metadata": { 1638 | "collapsed": false, 1639 | "scrolled": true 1640 | }, 1641 | "outputs": [ 1642 | { 1643 | "data": { 1644 | "text/html": [ 1645 | "
\n", 1646 | "\n", 1647 | " \n", 1648 | " \n", 1649 | " \n", 1650 | " \n", 1651 | " \n", 1652 | " \n", 1653 | " \n", 1654 | " \n", 1655 | " \n", 1656 | " \n", 1657 | " \n", 1658 | " \n", 1659 | " \n", 1660 | " \n", 1661 | " \n", 1662 | " \n", 1663 | " \n", 1664 | " \n", 1665 | " \n", 1666 | " \n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | " \n", 1675 | " \n", 1676 | " \n", 1677 | " \n", 1678 | " \n", 1679 | " \n", 1680 | " \n", 1681 | " \n", 1682 | " \n", 1683 | " \n", 1684 | " \n", 1685 | " \n", 1686 | " \n", 1687 | " \n", 1688 | " \n", 1689 | " \n", 1690 | " \n", 1691 | " \n", 1692 | " \n", 1693 | " \n", 1694 | " \n", 1695 | " \n", 1696 | " \n", 1697 | " \n", 1698 | " \n", 1699 | " \n", 1700 | " \n", 1701 | " \n", 1702 | " \n", 1703 | " \n", 1704 | " \n", 1705 | " \n", 1706 | " \n", 1707 | " \n", 1708 | " \n", 1709 | " \n", 1710 | " \n", 1711 | " \n", 1712 | " \n", 1713 | " \n", 1714 | " \n", 1715 | " \n", 1716 | " \n", 1717 | " \n", 1718 | " \n", 1719 | " \n", 1720 | " \n", 1721 | " \n", 1722 | " \n", 1723 | " \n", 1724 | " \n", 1725 | " \n", 1726 | " \n", 1727 | " \n", 1728 | " \n", 1729 | " \n", 1730 | " \n", 1731 | " \n", 1732 | " \n", 1733 | " \n", 1734 | " \n", 1735 | " \n", 1736 | " \n", 1737 | " \n", 1738 | " \n", 1739 | " \n", 1740 | " \n", 1741 | " \n", 1742 | " \n", 1743 | " \n", 1744 | " \n", 1745 | " \n", 1746 | " \n", 1747 | " \n", 1748 | " \n", 1749 | " \n", 1750 | " \n", 1751 | " \n", 1752 | " \n", 1753 | " \n", 1754 | " \n", 1755 | " \n", 1756 | " \n", 1757 | " \n", 1758 | " \n", 1759 | " \n", 1760 | " \n", 1761 | "
analyststdmeanmean_abs_err10p90pcount
48National Bank Financial16.365463-2.53216413.425469-40.09249130.074729251
3BMO Capital Markets18.982738-2.28236614.435614-55.86663735.678834248
7Barclays PLC16.120963-0.58609013.128664-35.65792037.853971212
20Desjardins18.972093-0.54221415.355082-49.56390733.312509115
12Canaccord Genuity18.1010544.70344714.967193-35.79579847.363220302
10CIBC19.0987234.96011915.799013-31.11320448.409297446
58Royal Bank of Canada18.1988465.54486415.402881-34.36224750.268754584
66TD Securities20.1790275.86884917.002451-44.25442747.655748551
54Raymond James Financial, Inc.21.5001477.58074818.711069-42.02528051.284896269
62Scotiabank18.7359607.74104815.962621-32.35140853.038985706
\n", 1762 | "
" 1763 | ], 1764 | "text/plain": [ 1765 | " analyst std mean mean_abs_err \\\n", 1766 | "48 National Bank Financial 16.365463 -2.532164 13.425469 \n", 1767 | "3 BMO Capital Markets 18.982738 -2.282366 14.435614 \n", 1768 | "7 Barclays PLC 16.120963 -0.586090 13.128664 \n", 1769 | "20 Desjardins 18.972093 -0.542214 15.355082 \n", 1770 | "12 Canaccord Genuity 18.101054 4.703447 14.967193 \n", 1771 | "10 CIBC 19.098723 4.960119 15.799013 \n", 1772 | "58 Royal Bank of Canada 18.198846 5.544864 15.402881 \n", 1773 | "66 TD Securities 20.179027 5.868849 17.002451 \n", 1774 | "54 Raymond James Financial, Inc. 21.500147 7.580748 18.711069 \n", 1775 | "62 Scotiabank 18.735960 7.741048 15.962621 \n", 1776 | "\n", 1777 | " 10p 90p count \n", 1778 | "48 -40.092491 30.074729 251 \n", 1779 | "3 -55.866637 35.678834 248 \n", 1780 | "7 -35.657920 37.853971 212 \n", 1781 | "20 -49.563907 33.312509 115 \n", 1782 | "12 -35.795798 47.363220 302 \n", 1783 | "10 -31.113204 48.409297 446 \n", 1784 | "58 -34.362247 50.268754 584 \n", 1785 | "66 -44.254427 47.655748 551 \n", 1786 | "54 -42.025280 51.284896 269 \n", 1787 | "62 -32.351408 53.038985 706 " 1788 | ] 1789 | }, 1790 | "execution_count": 5, 1791 | "metadata": {}, 1792 | "output_type": "execute_result" 1793 | } 1794 | ], 1795 | "source": [ 1796 | "def filter_tail(data, p1=10, p2=90):\n", 1797 | " q1 = np.percentile(data, p1)\n", 1798 | " q3 = np.percentile(data, p2)\n", 1799 | " return data[(data > q1) & (data < q3)]\n", 1800 | "\n", 1801 | "analysts = df.groupby(['analyst'], as_index=False)['error'].agg({\n", 1802 | " 'mean_abs_err': lambda xs:np.mean(np.abs(filter_tail(xs))),\n", 1803 | " 'count': 'count',\n", 1804 | " '10p': lambda xs: np.percentile(xs, q=10),\n", 1805 | " '90p': lambda xs: np.percentile(xs, q=90),\n", 1806 | " 'mean': lambda xs: np.mean(filter_tail(xs)),\n", 1807 | " 'std': lambda xs: np.std(filter_tail(xs)),\n", 1808 | " })\n", 1809 | "analysts = analysts[analysts['count'] > 100].sort_values(by='mean')\n", 1810 | "analysts[['analyst','std', 'mean', 'mean_abs_err', '10p', '90p', 'count']]" 1811 | ] 1812 | }, 1813 | { 1814 | "cell_type": "code", 1815 | "execution_count": 86, 1816 | "metadata": { 1817 | "collapsed": false, 1818 | "scrolled": false 1819 | }, 1820 | "outputs": [ 1821 | { 1822 | "name": "stdout", 1823 | "output_type": "stream", 1824 | "text": [ 1825 | "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n" 1826 | ] 1827 | }, 1828 | { 1829 | "data": { 1830 | "image/png": "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\n", 1831 | "text/plain": [ 1832 | "" 1833 | ] 1834 | }, 1835 | "metadata": {}, 1836 | "output_type": "display_data" 1837 | } 1838 | ], 1839 | "source": [ 1840 | "import matplotlib.pyplot as plt\n", 1841 | "%matplotlib inline\n", 1842 | "\n", 1843 | "ax = plt.axes()\n", 1844 | "ax.set_ylim(-100, 100)\n", 1845 | "\n", 1846 | "\n", 1847 | "xlabels = analysts['analyst']\n", 1848 | "x = [i for i in range(1, len(xlabels)+1)]\n", 1849 | "print(x)\n", 1850 | "y = analysts['mean_no_outliers']\n", 1851 | "e = analysts['std_no_outliers']\n", 1852 | "plt.errorbar(x, y, e, fmt='o')\n", 1853 | "plt.xlim(0, len(x) + 1)\n", 1854 | "plt.ylim(-50, 50)\n", 1855 | "plt.xticks(x, xlabels, rotation='vertical')\n", 1856 | "plt.axhline(y=0, xmin=0, xmax=10, ls='dashed', color='r')\n", 1857 | "\n", 1858 | "\n", 1859 | "# for name, analyst in analyst_error.items():\n", 1860 | "# analyst['name'] = name\n", 1861 | "\n", 1862 | "# analysts = [analyst for analyst in analyst_error.values() if len(analyst['diffs']) > 100]\n", 1863 | "\n", 1864 | "# scotia = [analyst['mdiffs'] for analyst in analysts]\n", 1865 | "# plt.boxplot(scotia, labels=[analyst['name'] for analyst in analysts])\n", 1866 | "# plt.xticks(rotation='vertical')\n", 1867 | "plt.show()" 1868 | ] 1869 | }, 1870 | { 1871 | "cell_type": "code", 1872 | "execution_count": 6, 1873 | "metadata": { 1874 | "collapsed": false, 1875 | "scrolled": true 1876 | }, 1877 | "outputs": [ 1878 | { 1879 | "data": { 1880 | "text/html": [ 1881 | "
\n", 1882 | "\n", 1883 | " \n", 1884 | " \n", 1885 | " \n", 1886 | " \n", 1887 | " \n", 1888 | " \n", 1889 | " \n", 1890 | " \n", 1891 | " \n", 1892 | " \n", 1893 | " \n", 1894 | " \n", 1895 | " \n", 1896 | " \n", 1897 | " \n", 1898 | " \n", 1899 | " \n", 1900 | " \n", 1901 | " \n", 1902 | " \n", 1903 | " \n", 1904 | " \n", 1905 | " \n", 1906 | " \n", 1907 | " \n", 1908 | " \n", 1909 | " \n", 1910 | " \n", 1911 | " \n", 1912 | " \n", 1913 | " \n", 1914 | " \n", 1915 | " \n", 1916 | " \n", 1917 | " \n", 1918 | " \n", 1919 | " \n", 1920 | " \n", 1921 | " \n", 1922 | " \n", 1923 | " \n", 1924 | " \n", 1925 | " \n", 1926 | " \n", 1927 | " \n", 1928 | " \n", 1929 | " \n", 1930 | " \n", 1931 | " \n", 1932 | " \n", 1933 | " \n", 1934 | " \n", 1935 | " \n", 1936 | " \n", 1937 | " \n", 1938 | " \n", 1939 | " \n", 1940 | " \n", 1941 | " \n", 1942 | " \n", 1943 | " \n", 1944 | " \n", 1945 | " \n", 1946 | " \n", 1947 | " \n", 1948 | " \n", 1949 | " \n", 1950 | " \n", 1951 | " \n", 1952 | " \n", 1953 | " \n", 1954 | " \n", 1955 | " \n", 1956 | " \n", 1957 | " \n", 1958 | " \n", 1959 | " \n", 1960 | " \n", 1961 | " \n", 1962 | " \n", 1963 | " \n", 1964 | " \n", 1965 | " \n", 1966 | " \n", 1967 | " \n", 1968 | " \n", 1969 | " \n", 1970 | " \n", 1971 | " \n", 1972 | " \n", 1973 | " \n", 1974 | " \n", 1975 | " \n", 1976 | " \n", 1977 | " \n", 1978 | " \n", 1979 | " \n", 1980 | " \n", 1981 | " \n", 1982 | " \n", 1983 | " \n", 1984 | " \n", 1985 | " \n", 1986 | " \n", 1987 | " \n", 1988 | " \n", 1989 | " \n", 1990 | " \n", 1991 | " \n", 1992 | " \n", 1993 | " \n", 1994 | " \n", 1995 | " \n", 1996 | " \n", 1997 | " \n", 1998 | " \n", 1999 | " \n", 2000 | " \n", 2001 | " \n", 2002 | " \n", 2003 | " \n", 2004 | " \n", 2005 | " \n", 2006 | " \n", 2007 | " \n", 2008 | " \n", 2009 | " \n", 2010 | " \n", 2011 | " \n", 2012 | " \n", 2013 | " \n", 2014 | " \n", 2015 | " \n", 2016 | " \n", 2017 | " \n", 2018 | " \n", 2019 | " \n", 2020 | " \n", 2021 | " \n", 2022 | " \n", 2023 | " \n", 2024 | " \n", 2025 | " \n", 2026 | " \n", 2027 | " \n", 2028 | " \n", 2029 | " \n", 2030 | " \n", 2031 | " \n", 2032 | " \n", 2033 | " \n", 2034 | " \n", 2035 | " \n", 2036 | " \n", 2037 | " \n", 2038 | " \n", 2039 | " \n", 2040 | " \n", 2041 | " \n", 2042 | " \n", 2043 | " \n", 2044 | " \n", 2045 | " \n", 2046 | " \n", 2047 | " \n", 2048 | " \n", 2049 | " \n", 2050 | " \n", 2051 | " \n", 2052 | " \n", 2053 | " \n", 2054 | " \n", 2055 | " \n", 2056 | " \n", 2057 | " \n", 2058 | " \n", 2059 | " \n", 2060 | " \n", 2061 | " \n", 2062 | " \n", 2063 | " \n", 2064 | " \n", 2065 | " \n", 2066 | " \n", 2067 | " \n", 2068 | " \n", 2069 | " \n", 2070 | " \n", 2071 | " \n", 2072 | " \n", 2073 | " \n", 2074 | " \n", 2075 | " \n", 2076 | " \n", 2077 | " \n", 2078 | " \n", 2079 | " \n", 2080 | " \n", 2081 | " \n", 2082 | " \n", 2083 | " \n", 2084 | " \n", 2085 | " \n", 2086 | " \n", 2087 | " \n", 2088 | " \n", 2089 | " \n", 2090 | " \n", 2091 | " \n", 2092 | " \n", 2093 | " \n", 2094 | " \n", 2095 | " \n", 2096 | " \n", 2097 | " \n", 2098 | " \n", 2099 | " \n", 2100 | " \n", 2101 | " \n", 2102 | " \n", 2103 | " \n", 2104 | " \n", 2105 | " \n", 2106 | " \n", 2107 | " \n", 2108 | " \n", 2109 | " \n", 2110 | " \n", 2111 | " \n", 2112 | " \n", 2113 | " \n", 2114 | " \n", 2115 | " \n", 2116 | " \n", 2117 | " \n", 2118 | " \n", 2119 | " \n", 2120 | " \n", 2121 | " \n", 2122 | " \n", 2123 | " \n", 2124 | " \n", 2125 | " \n", 2126 | " \n", 2127 | " \n", 2128 | " \n", 2129 | " \n", 2130 | " \n", 2131 | " \n", 2132 | " \n", 2133 | " \n", 2134 | " \n", 2135 | " \n", 2136 | " \n", 2137 | " \n", 2138 | " \n", 2139 | " \n", 2140 | " \n", 2141 | " \n", 2142 | " \n", 2143 | " \n", 2144 | " \n", 2145 | " \n", 2146 | " \n", 2147 | " \n", 2148 | " \n", 2149 | " \n", 2150 | " \n", 2151 | " \n", 2152 | " \n", 2153 | " \n", 2154 | " \n", 2155 | " \n", 2156 | " \n", 2157 | " \n", 2158 | " \n", 2159 | " \n", 2160 | " \n", 2161 | " \n", 2162 | " \n", 2163 | " \n", 2164 | " \n", 2165 | " \n", 2166 | " \n", 2167 | " \n", 2168 | " \n", 2169 | " \n", 2170 | " \n", 2171 | " \n", 2172 | " \n", 2173 | " \n", 2174 | " \n", 2175 | " \n", 2176 | " \n", 2177 | " \n", 2178 | " \n", 2179 | " \n", 2180 | " \n", 2181 | " \n", 2182 | " \n", 2183 | " \n", 2184 | " \n", 2185 | " \n", 2186 | " \n", 2187 | " \n", 2188 | " \n", 2189 | " \n", 2190 | " \n", 2191 | " \n", 2192 | " \n", 2193 | " \n", 2194 | " \n", 2195 | " \n", 2196 | " \n", 2197 | " \n", 2198 | " \n", 2199 | " \n", 2200 | " \n", 2201 | " \n", 2202 | " \n", 2203 | " \n", 2204 | " \n", 2205 | " \n", 2206 | " \n", 2207 | " \n", 2208 | " \n", 2209 | " \n", 2210 | " \n", 2211 | " \n", 2212 | " \n", 2213 | " \n", 2214 | " \n", 2215 | " \n", 2216 | " \n", 2217 | " \n", 2218 | " \n", 2219 | " \n", 2220 | " \n", 2221 | " \n", 2222 | " \n", 2223 | " \n", 2224 | " \n", 2225 | " \n", 2226 | " \n", 2227 | " \n", 2228 | " \n", 2229 | " \n", 2230 | " \n", 2231 | " \n", 2232 | " \n", 2233 | " \n", 2234 | " \n", 2235 | " \n", 2236 | " \n", 2237 | " \n", 2238 | " \n", 2239 | " \n", 2240 | " \n", 2241 | " \n", 2242 | " \n", 2243 | " \n", 2244 | " \n", 2245 | " \n", 2246 | " \n", 2247 | " \n", 2248 | " \n", 2249 | " \n", 2250 | " \n", 2251 | " \n", 2252 | " \n", 2253 | " \n", 2254 | " \n", 2255 | " \n", 2256 | " \n", 2257 | " \n", 2258 | " \n", 2259 | " \n", 2260 | " \n", 2261 | " \n", 2262 | " \n", 2263 | " \n", 2264 | " \n", 2265 | " \n", 2266 | " \n", 2267 | " \n", 2268 | " \n", 2269 | " \n", 2270 | " \n", 2271 | " \n", 2272 | " \n", 2273 | " \n", 2274 | " \n", 2275 | " \n", 2276 | " \n", 2277 | " \n", 2278 | " \n", 2279 | " \n", 2280 | " \n", 2281 | " \n", 2282 | " \n", 2283 | " \n", 2284 | " \n", 2285 | " \n", 2286 | " \n", 2287 | " \n", 2288 | " \n", 2289 | " \n", 2290 | " \n", 2291 | " \n", 2292 | " \n", 2293 | " \n", 2294 | " \n", 2295 | " \n", 2296 | " \n", 2297 | " \n", 2298 | " \n", 2299 | " \n", 2300 | " \n", 2301 | " \n", 2302 | " \n", 2303 | " \n", 2304 | " \n", 2305 | " \n", 2306 | " \n", 2307 | "
analyst_rating_target_perc_10ptarget_perc_90ptarget_perc_medianerror_maereal_perc_10preal_perc_countreal_perc_meanreal_perc_90preal_perc_median
0BMO Capital MarketsMarket Perform-0.24954223.0494167.82642917.048387-13.6240288229.30626986.57110911.962594
2BMO Capital MarketsOutperform9.33328934.09131018.86321613.267287-13.43022011622.21540164.71122315.109094
5Barclays PLCEqual Weight-5.96463610.8349894.67284411.317883-23.5408327211.51175437.4612449.239600
7Barclays PLCOverweight7.77933035.86059116.41604715.829631-24.985571676.92257345.7007994.983455
9Barclays PLCUnderweight-5.9339284.076078-0.16522711.4225800.8268471810.88255328.6075468.926869
12CIBCOutperform9.65413248.85807520.97042420.556792-30.621972317.06351344.4129104.941616
13CIBCSector Outperform-5.24356688.47310723.92286228.943097-10.7831191818.26468252.6741677.970106
14CIBCSector Outperformer9.71464859.84648133.65224321.688542-14.5185624422.20502260.02093222.218981
15CIBCSector Perform0.19565426.8053568.25449511.465681-16.6428866710.46160330.4272377.602369
16CIBCSector Performer8.26586237.58865718.93478221.738051-25.391136268.67352245.9641087.140492
21Canaccord GenuityBuy8.34073561.22620324.08597418.796959-16.56173317727.08669086.23446418.039215
22Canaccord GenuityHold-0.66779213.1518014.6928589.571621-26.563878777.07795729.8347775.668595
27DesjardinsBuy7.02235533.58516515.04396116.075606-41.695386496.56818232.88071610.469046
28DesjardinsHold-1.50617912.7557894.64495413.913005-20.3360312318.07768773.2113655.205551
31National Bank FinancialOutperform7.70553953.57934318.92963312.407454-1.52692511524.52442859.09362822.213398
32National Bank FinancialSector Perform0.27782745.3371018.69565114.170428-5.7380968129.88759661.18229317.410111
35Raymond James Financial, Inc.Market Perform1.29384022.9910359.96470418.256000-29.030522439.57873159.1092071.564818
36Raymond James Financial, Inc.Outperform9.43780454.48369321.23652215.914385-18.69577610620.77383559.15984413.004491
37Raymond James Financial, Inc.Strong-Buy29.080472110.78191458.06130729.677365-20.2751711658.672026157.68779623.429495
41Royal Bank of CanadaOutperform9.60588768.41599124.85879018.719436-24.44779528918.28884859.53058912.884379
43Royal Bank of CanadaSector Perform-0.67878836.51616811.10198313.099112-11.59006022021.33016051.28220110.498096
45Royal Bank of CanadaUnderperform-16.49439412.386762-3.10859918.589142-12.5347221312.37393755.7148701.355833
47ScotiabankFocus Stock22.755399107.26743953.37423342.706236-35.5700161725.281240122.90148019.093144
49ScotiabankOutperform7.23995550.40248519.08214115.926344-21.63287524618.40788551.02315914.897374
50ScotiabankSector Outperform7.71562963.47610923.08958427.679194-30.066914724.39966524.425995-1.841137
51ScotiabankSector Perform1.54531529.41002012.02830111.578271-13.19919125911.85403737.4474019.366651
54TD SecuritiesAction List Buy18.33372477.70195438.00183019.629657-0.8937053628.33403871.45949515.928740
55TD SecuritiesBuy7.11894553.93073020.37833218.843727-25.13812129112.88145251.57979911.156412
56TD SecuritiesHold-5.65225020.7852008.06629414.755427-20.61085418816.52189949.5285569.195105
\n", 2308 | "
" 2309 | ], 2310 | "text/plain": [ 2311 | " analyst_ rating_ target_perc_10p \\\n", 2312 | "0 BMO Capital Markets Market Perform -0.249542 \n", 2313 | "2 BMO Capital Markets Outperform 9.333289 \n", 2314 | "5 Barclays PLC Equal Weight -5.964636 \n", 2315 | "7 Barclays PLC Overweight 7.779330 \n", 2316 | "9 Barclays PLC Underweight -5.933928 \n", 2317 | "12 CIBC Outperform 9.654132 \n", 2318 | "13 CIBC Sector Outperform -5.243566 \n", 2319 | "14 CIBC Sector Outperformer 9.714648 \n", 2320 | "15 CIBC Sector Perform 0.195654 \n", 2321 | "16 CIBC Sector Performer 8.265862 \n", 2322 | "21 Canaccord Genuity Buy 8.340735 \n", 2323 | "22 Canaccord Genuity Hold -0.667792 \n", 2324 | "27 Desjardins Buy 7.022355 \n", 2325 | "28 Desjardins Hold -1.506179 \n", 2326 | "31 National Bank Financial Outperform 7.705539 \n", 2327 | "32 National Bank Financial Sector Perform 0.277827 \n", 2328 | "35 Raymond James Financial, Inc. Market Perform 1.293840 \n", 2329 | "36 Raymond James Financial, Inc. Outperform 9.437804 \n", 2330 | "37 Raymond James Financial, Inc. Strong-Buy 29.080472 \n", 2331 | "41 Royal Bank of Canada Outperform 9.605887 \n", 2332 | "43 Royal Bank of Canada Sector Perform -0.678788 \n", 2333 | "45 Royal Bank of Canada Underperform -16.494394 \n", 2334 | "47 Scotiabank Focus Stock 22.755399 \n", 2335 | "49 Scotiabank Outperform 7.239955 \n", 2336 | "50 Scotiabank Sector Outperform 7.715629 \n", 2337 | "51 Scotiabank Sector Perform 1.545315 \n", 2338 | "54 TD Securities Action List Buy 18.333724 \n", 2339 | "55 TD Securities Buy 7.118945 \n", 2340 | "56 TD Securities Hold -5.652250 \n", 2341 | "\n", 2342 | " target_perc_90p target_perc_median error_mae real_perc_10p \\\n", 2343 | "0 23.049416 7.826429 17.048387 -13.624028 \n", 2344 | "2 34.091310 18.863216 13.267287 -13.430220 \n", 2345 | "5 10.834989 4.672844 11.317883 -23.540832 \n", 2346 | "7 35.860591 16.416047 15.829631 -24.985571 \n", 2347 | "9 4.076078 -0.165227 11.422580 0.826847 \n", 2348 | "12 48.858075 20.970424 20.556792 -30.621972 \n", 2349 | "13 88.473107 23.922862 28.943097 -10.783119 \n", 2350 | "14 59.846481 33.652243 21.688542 -14.518562 \n", 2351 | "15 26.805356 8.254495 11.465681 -16.642886 \n", 2352 | "16 37.588657 18.934782 21.738051 -25.391136 \n", 2353 | "21 61.226203 24.085974 18.796959 -16.561733 \n", 2354 | "22 13.151801 4.692858 9.571621 -26.563878 \n", 2355 | "27 33.585165 15.043961 16.075606 -41.695386 \n", 2356 | "28 12.755789 4.644954 13.913005 -20.336031 \n", 2357 | "31 53.579343 18.929633 12.407454 -1.526925 \n", 2358 | "32 45.337101 8.695651 14.170428 -5.738096 \n", 2359 | "35 22.991035 9.964704 18.256000 -29.030522 \n", 2360 | "36 54.483693 21.236522 15.914385 -18.695776 \n", 2361 | "37 110.781914 58.061307 29.677365 -20.275171 \n", 2362 | "41 68.415991 24.858790 18.719436 -24.447795 \n", 2363 | "43 36.516168 11.101983 13.099112 -11.590060 \n", 2364 | "45 12.386762 -3.108599 18.589142 -12.534722 \n", 2365 | "47 107.267439 53.374233 42.706236 -35.570016 \n", 2366 | "49 50.402485 19.082141 15.926344 -21.632875 \n", 2367 | "50 63.476109 23.089584 27.679194 -30.066914 \n", 2368 | "51 29.410020 12.028301 11.578271 -13.199191 \n", 2369 | "54 77.701954 38.001830 19.629657 -0.893705 \n", 2370 | "55 53.930730 20.378332 18.843727 -25.138121 \n", 2371 | "56 20.785200 8.066294 14.755427 -20.610854 \n", 2372 | "\n", 2373 | " real_perc_count real_perc_mean real_perc_90p real_perc_median \n", 2374 | "0 82 29.306269 86.571109 11.962594 \n", 2375 | "2 116 22.215401 64.711223 15.109094 \n", 2376 | "5 72 11.511754 37.461244 9.239600 \n", 2377 | "7 67 6.922573 45.700799 4.983455 \n", 2378 | "9 18 10.882553 28.607546 8.926869 \n", 2379 | "12 31 7.063513 44.412910 4.941616 \n", 2380 | "13 18 18.264682 52.674167 7.970106 \n", 2381 | "14 44 22.205022 60.020932 22.218981 \n", 2382 | "15 67 10.461603 30.427237 7.602369 \n", 2383 | "16 26 8.673522 45.964108 7.140492 \n", 2384 | "21 177 27.086690 86.234464 18.039215 \n", 2385 | "22 77 7.077957 29.834777 5.668595 \n", 2386 | "27 49 6.568182 32.880716 10.469046 \n", 2387 | "28 23 18.077687 73.211365 5.205551 \n", 2388 | "31 115 24.524428 59.093628 22.213398 \n", 2389 | "32 81 29.887596 61.182293 17.410111 \n", 2390 | "35 43 9.578731 59.109207 1.564818 \n", 2391 | "36 106 20.773835 59.159844 13.004491 \n", 2392 | "37 16 58.672026 157.687796 23.429495 \n", 2393 | "41 289 18.288848 59.530589 12.884379 \n", 2394 | "43 220 21.330160 51.282201 10.498096 \n", 2395 | "45 13 12.373937 55.714870 1.355833 \n", 2396 | "47 17 25.281240 122.901480 19.093144 \n", 2397 | "49 246 18.407885 51.023159 14.897374 \n", 2398 | "50 72 4.399665 24.425995 -1.841137 \n", 2399 | "51 259 11.854037 37.447401 9.366651 \n", 2400 | "54 36 28.334038 71.459495 15.928740 \n", 2401 | "55 291 12.881452 51.579799 11.156412 \n", 2402 | "56 188 16.521899 49.528556 9.195105 " 2403 | ] 2404 | }, 2405 | "execution_count": 6, 2406 | "metadata": {}, 2407 | "output_type": "execute_result" 2408 | } 2409 | ], 2410 | "source": [ 2411 | "ratings = df[(df['rating'] != 'NaN') & (df['analyst'].isin(analysts['analyst']))]\n", 2412 | "ratings_agg = ratings.groupby(['analyst', 'rating'], as_index=False).agg({\n", 2413 | " 'error': {\n", 2414 | " 'mae': lambda xs: np.mean(np.abs(filter_tail(xs))),\n", 2415 | " },\n", 2416 | " 'real_perc': {\n", 2417 | " 'mean': 'mean',\n", 2418 | " 'median': 'median',\n", 2419 | " '10p': lambda xs: np.percentile(xs, 10),\n", 2420 | " '90p': lambda xs: np.percentile(xs, 90),\n", 2421 | " 'count': 'count',\n", 2422 | " },\n", 2423 | " 'target_perc': {\n", 2424 | " 'median': 'median',\n", 2425 | " '10p': lambda xs: np.percentile(xs, 10),\n", 2426 | " '90p': lambda xs: np.percentile(xs, 90),\n", 2427 | " }\n", 2428 | " })\n", 2429 | "\n", 2430 | "ratings_agg.columns = list(map('_'.join, ratings_agg.columns.values))\n", 2431 | "ratings_agg[ratings_agg['real_perc_count'] > 10]" 2432 | ] 2433 | }, 2434 | { 2435 | "cell_type": "code", 2436 | "execution_count": 10, 2437 | "metadata": { 2438 | "collapsed": false 2439 | }, 2440 | "outputs": [ 2441 | { 2442 | "data": { 2443 | "text/html": [ 2444 | "
\n", 2445 | "\n", 2446 | " \n", 2447 | " \n", 2448 | " \n", 2449 | " \n", 2450 | " \n", 2451 | " \n", 2452 | " \n", 2453 | " \n", 2454 | " \n", 2455 | " \n", 2456 | " \n", 2457 | " \n", 2458 | " \n", 2459 | " \n", 2460 | " \n", 2461 | " \n", 2462 | " \n", 2463 | " \n", 2464 | " \n", 2465 | " \n", 2466 | " \n", 2467 | " \n", 2468 | " \n", 2469 | " \n", 2470 | " \n", 2471 | " \n", 2472 | " \n", 2473 | " \n", 2474 | " \n", 2475 | " \n", 2476 | " \n", 2477 | " \n", 2478 | " \n", 2479 | " \n", 2480 | " \n", 2481 | " \n", 2482 | " \n", 2483 | " \n", 2484 | " \n", 2485 | " \n", 2486 | " \n", 2487 | " \n", 2488 | " \n", 2489 | " \n", 2490 | " \n", 2491 | " \n", 2492 | " \n", 2493 | " \n", 2494 | " \n", 2495 | " \n", 2496 | " \n", 2497 | " \n", 2498 | " \n", 2499 | " \n", 2500 | " \n", 2501 | " \n", 2502 | " \n", 2503 | " \n", 2504 | " \n", 2505 | " \n", 2506 | " \n", 2507 | " \n", 2508 | " \n", 2509 | " \n", 2510 | " \n", 2511 | " \n", 2512 | " \n", 2513 | " \n", 2514 | " \n", 2515 | " \n", 2516 | " \n", 2517 | " \n", 2518 | " \n", 2519 | " \n", 2520 | " \n", 2521 | " \n", 2522 | " \n", 2523 | " \n", 2524 | " \n", 2525 | " \n", 2526 | " \n", 2527 | " \n", 2528 | " \n", 2529 | " \n", 2530 | " \n", 2531 | " \n", 2532 | " \n", 2533 | " \n", 2534 | " \n", 2535 | " \n", 2536 | " \n", 2537 | " \n", 2538 | " \n", 2539 | " \n", 2540 | " \n", 2541 | " \n", 2542 | " \n", 2543 | " \n", 2544 | " \n", 2545 | " \n", 2546 | " \n", 2547 | " \n", 2548 | " \n", 2549 | " \n", 2550 | " \n", 2551 | " \n", 2552 | " \n", 2553 | " \n", 2554 | " \n", 2555 | " \n", 2556 | " \n", 2557 | " \n", 2558 | " \n", 2559 | " \n", 2560 | " \n", 2561 | " \n", 2562 | " \n", 2563 | " \n", 2564 | " \n", 2565 | " \n", 2566 | " \n", 2567 | " \n", 2568 | " \n", 2569 | " \n", 2570 | " \n", 2571 | " \n", 2572 | " \n", 2573 | " \n", 2574 | " \n", 2575 | " \n", 2576 | " \n", 2577 | " \n", 2578 | " \n", 2579 | " \n", 2580 | " \n", 2581 | " \n", 2582 | " \n", 2583 | " \n", 2584 | " \n", 2585 | " \n", 2586 | " \n", 2587 | " \n", 2588 | " \n", 2589 | " \n", 2590 | " \n", 2591 | " \n", 2592 | " \n", 2593 | " \n", 2594 | " \n", 2595 | " \n", 2596 | " \n", 2597 | " \n", 2598 | " \n", 2599 | " \n", 2600 | " \n", 2601 | " \n", 2602 | " \n", 2603 | " \n", 2604 | " \n", 2605 | " \n", 2606 | " \n", 2607 | " \n", 2608 | " \n", 2609 | " \n", 2610 | " \n", 2611 | " \n", 2612 | " \n", 2613 | " \n", 2614 | " \n", 2615 | "
analyst_rating_target_perc_10ptarget_perc_90ptarget_perc_medianerror_maereal_perc_10preal_perc_countreal_perc_meanreal_perc_90preal_perc_mediananalyst_rating
32National Bank FinancialSector Perform0.27782745.3371018.69565114.170428-5.7380968129.88759661.18229317.410111National Bank Financial Sector Perform
0BMO Capital MarketsMarket Perform-0.24954223.0494167.82642917.048387-13.6240288229.30626986.57110911.962594BMO Capital Markets Market Perform
54TD SecuritiesAction List Buy18.33372477.70195438.00183019.629657-0.8937053628.33403871.45949515.928740TD Securities Action List Buy
21Canaccord GenuityBuy8.34073561.22620324.08597418.796959-16.56173317727.08669086.23446418.039215Canaccord Genuity Buy
31National Bank FinancialOutperform7.70553953.57934318.92963312.407454-1.52692511524.52442859.09362822.213398National Bank Financial Outperform
2BMO Capital MarketsOutperform9.33328934.09131018.86321613.267287-13.43022011622.21540164.71122315.109094BMO Capital Markets Outperform
14CIBCSector Outperformer9.71464859.84648133.65224321.688542-14.5185624422.20502260.02093222.218981CIBC Sector Outperformer
43Royal Bank of CanadaSector Perform-0.67878836.51616811.10198313.099112-11.59006022021.33016051.28220110.498096Royal Bank of Canada Sector Perform
36Raymond James Financial, Inc.Outperform9.43780454.48369321.23652215.914385-18.69577610620.77383559.15984413.004491Raymond James Financial, Inc. Outperform
49ScotiabankOutperform7.23995550.40248519.08214115.926344-21.63287524618.40788551.02315914.897374Scotiabank Outperform
\n", 2616 | "
" 2617 | ], 2618 | "text/plain": [ 2619 | " analyst_ rating_ target_perc_10p \\\n", 2620 | "32 National Bank Financial Sector Perform 0.277827 \n", 2621 | "0 BMO Capital Markets Market Perform -0.249542 \n", 2622 | "54 TD Securities Action List Buy 18.333724 \n", 2623 | "21 Canaccord Genuity Buy 8.340735 \n", 2624 | "31 National Bank Financial Outperform 7.705539 \n", 2625 | "2 BMO Capital Markets Outperform 9.333289 \n", 2626 | "14 CIBC Sector Outperformer 9.714648 \n", 2627 | "43 Royal Bank of Canada Sector Perform -0.678788 \n", 2628 | "36 Raymond James Financial, Inc. Outperform 9.437804 \n", 2629 | "49 Scotiabank Outperform 7.239955 \n", 2630 | "\n", 2631 | " target_perc_90p target_perc_median error_mae real_perc_10p \\\n", 2632 | "32 45.337101 8.695651 14.170428 -5.738096 \n", 2633 | "0 23.049416 7.826429 17.048387 -13.624028 \n", 2634 | "54 77.701954 38.001830 19.629657 -0.893705 \n", 2635 | "21 61.226203 24.085974 18.796959 -16.561733 \n", 2636 | "31 53.579343 18.929633 12.407454 -1.526925 \n", 2637 | "2 34.091310 18.863216 13.267287 -13.430220 \n", 2638 | "14 59.846481 33.652243 21.688542 -14.518562 \n", 2639 | "43 36.516168 11.101983 13.099112 -11.590060 \n", 2640 | "36 54.483693 21.236522 15.914385 -18.695776 \n", 2641 | "49 50.402485 19.082141 15.926344 -21.632875 \n", 2642 | "\n", 2643 | " real_perc_count real_perc_mean real_perc_90p real_perc_median \\\n", 2644 | "32 81 29.887596 61.182293 17.410111 \n", 2645 | "0 82 29.306269 86.571109 11.962594 \n", 2646 | "54 36 28.334038 71.459495 15.928740 \n", 2647 | "21 177 27.086690 86.234464 18.039215 \n", 2648 | "31 115 24.524428 59.093628 22.213398 \n", 2649 | "2 116 22.215401 64.711223 15.109094 \n", 2650 | "14 44 22.205022 60.020932 22.218981 \n", 2651 | "43 220 21.330160 51.282201 10.498096 \n", 2652 | "36 106 20.773835 59.159844 13.004491 \n", 2653 | "49 246 18.407885 51.023159 14.897374 \n", 2654 | "\n", 2655 | " analyst_rating \n", 2656 | "32 National Bank Financial Sector Perform \n", 2657 | "0 BMO Capital Markets Market Perform \n", 2658 | "54 TD Securities Action List Buy \n", 2659 | "21 Canaccord Genuity Buy \n", 2660 | "31 National Bank Financial Outperform \n", 2661 | "2 BMO Capital Markets Outperform \n", 2662 | "14 CIBC Sector Outperformer \n", 2663 | "43 Royal Bank of Canada Sector Perform \n", 2664 | "36 Raymond James Financial, Inc. Outperform \n", 2665 | "49 Scotiabank Outperform " 2666 | ] 2667 | }, 2668 | "execution_count": 10, 2669 | "metadata": {}, 2670 | "output_type": "execute_result" 2671 | } 2672 | ], 2673 | "source": [ 2674 | "top_ratings = ratings_agg[ratings_agg['real_perc_count'] > 20]\n", 2675 | "top_ratings = top_ratings.sort_values('real_perc_mean', ascending=False)\n", 2676 | "top_ratings['analyst_rating'] = top_ratings['analyst_'] + ' ' + top_ratings['rating_']\n", 2677 | "top_analyst_ratings = top_ratings.head(10)\n", 2678 | "top_analyst_ratings" 2679 | ] 2680 | }, 2681 | { 2682 | "cell_type": "code", 2683 | "execution_count": 20, 2684 | "metadata": { 2685 | "collapsed": false, 2686 | "scrolled": false 2687 | }, 2688 | "outputs": [ 2689 | { 2690 | "name": "stdout", 2691 | "output_type": "stream", 2692 | "text": [ 2693 | "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n" 2694 | ] 2695 | }, 2696 | { 2697 | "data": { 2698 | "text/plain": [ 2699 | "([,\n", 2700 | " ,\n", 2701 | " ,\n", 2702 | " ,\n", 2703 | " ,\n", 2704 | " ,\n", 2705 | " ,\n", 2706 | " ,\n", 2707 | " ,\n", 2708 | " ],\n", 2709 | " )" 2710 | ] 2711 | }, 2712 | "execution_count": 20, 2713 | "metadata": {}, 2714 | "output_type": "execute_result" 2715 | }, 2716 | { 2717 | "data": { 2718 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAKACAYAAAAIFNtbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XmcXEW5xvHfw2ZkCwrKJoKyi4gkiCCKsgiogCi4RBFx\nuehVQHFBRBQQETcIi6B4RUDBKKKyuBAVXBEEE1CEIIuAKLtCEmQJkvf+UdWkT0/3zJDp6Toneb6f\nz3xkTvfkPrdnus97TlW9pYjAzMzMrGWJ0gHMzMysXlwcmJmZWYWLAzMzM6twcWBmZmYVLg7MzMys\nwsWBmZmZVbg4MDMzswoXB2ZmZlbh4sDMzMwqXByYmZlZxUIXB5JeJukCSf+UNF/S7h2Pn56Pt3/9\npOM5T5F0sqT7JM2VdK6kZy5sJjMzMxu7sdw5WA64Gngf0GuDhp8CqwKr5a8pHY8fD7wG2BPYFlgD\n+P4YMpmZmdkYLbWwPxgRFwEXAUhSj6c9GhH3dntA0orAO4E3R8Sv87F3ALMkbRkRVyxsNjMzM1t4\n4z3n4BWS7pZ0vaRTJD297bHJpOLk4taBiPgr8Hdg63HOZWZmZj0s9J2DUfgpaYjgFmBd4BjgJ5K2\njrRP9GrAvIiY0/Fzd+fHzMzMrIBxKw4i4py2b6+VdA1wM/AK4JcL++9KWhnYGbgVeGQMEc3MzBY3\nE4B1gOkR8a9eTxrPOwcVEXGLpPuA9UjFwV3AMpJW7Lh7sGp+rJedgbPHL6mZmdki763At3s9OLDi\nQNKzgJWBO/OhGcB/gR2AH+bnbAg8G7hsmH/qVoCzzjqLjTfeeLzi9sVBBx3E1KlTS8cYUVNyQnOy\nOmf/NSWrc/ZXU3JCM7LOmjWLvffeG/K5tJeFLg4kLUe6C9BaqfBcSZsB/85fh5PmHNyVn/d54AZg\nOkBEzJF0GnCcpPuBucCJwKUjrFR4BGDjjTdm0qRJCxt/ICZOnFj7jNCcnNCcrM7Zf03J6pz91ZSc\n0KysjDAsP5Y7B1uQhgcifx2bj59J6n3wAmAfYCXgDlJR8KmIeKzt3zgIeBw4F3gKaWnk+8eQyczM\nzMZoLH0Ofs3wSyF3GcW/8ShwQP4yMzOzGvDeCmZmZlbh4mAcTZnS2S26npqSE5qT1Tn7rylZnbO/\nmpITmpV1JEr9iJpD0iRgxowZM5o08cPMzKy4mTNnMnnyZIDJETGz1/N858DMzMwqXByYmZlZhYsD\nMzMzq3BxYGZmZhUuDszMzKzCxYGZmZlVuDgwMzOzChcHZmZmVuHiwMzMzCpcHJiZmVmFiwMzMzOr\ncHFgZmZmFS4OzMzMrMLFgZmZmVW4ODAzM7MKFwdmZmZW4eLAzMzMKlwcmJmZWYWLAzMzM6twcWBm\nZmYVLg7MzMyswsWBmZmZVbg4MDMzswoXB2ZmZlbh4sDMzMwqXByYmZlZhYsDMzMzq3BxYGZmZhUu\nDszMzKzCxYGZmZlVuDgwMzOzChcHZmZmVuHiwMzMzCpcHJiZmVmFiwMzMzOrcHFgZmZmFS4OzMzM\nrMLFgZmZmVW4ODAzM7MKFwdmZmZW4eLAzMzMKlwcmJmZWYWLAzMzM6twcWBmZmYVLg7MzMyswsWB\nmZmZVbg4MDMzswoXB2ZmZlbh4sDMzMwqXByYmZlZhYsDMzMzq3BxYGZmZhUuDszMzKzCxYGZmZlV\nuDgwMzOzChcHZmZmVuHiwMzMzCpcHJiZmVmFiwMzMzOrcHFgZmZmFS4OzMzMrMLFgZmZmVW4ODAz\nM7MKFwdmZmZWsdDFgaSXSbpA0j8lzZe0e5fnfFrSHZIekvRzSet1PP4USSdLuk/SXEnnSnrmwmYy\nMzOzsRvLnYPlgKuB9wHR+aCkjwH7A/sBWwL/AaZLWqbtaccDrwH2BLYF1gC+P4ZMZmZmNkZLLewP\nRsRFwEUAktTlKR8AjoqIH+Xn7APcDewBnCNpReCdwJsj4tf5Oe8AZknaMiKuWNhsZmZmtvDGZc6B\npOcAqwEXt45FxBzgD8DW+dAWpOKk/Tl/Bf7e9hwzMzMbsPGakLgaaajh7o7jd+fHAFYF5uWioddz\nzMzMbMAWelihtIMOOoiJEydWjk2ZMoUpU6YUSmRmZlYf06ZNY9q0aZVjs2fPHtXPjldxcBcg0t2B\n9rsHqwJXtT1nGUkrdtw9WDU/NqypU6cyadKkPsU1MzNbtHS7YJ45cyaTJ08e8WfHZVghIm4hneB3\naB3LExBfDPw+H5oB/LfjORsCzwYuG49cZmZmNrKFvnMgaTlgPdIdAoDnStoM+HdE3E5apniYpJuA\nW4GjgH8A50OaoCjpNOA4SfcDc4ETgUu9UsHMzKycsQwrbAH8kjTxMIBj8/EzgXdGxBckLQucCqwE\n/BZ4VUTMa/s3DgIeB84FnkJaGvn+MWQyMzOzMRpLn4NfM8KwREQcARwxzOOPAgfkLzMzM6sB761g\nZmZmFY1dymhmZoueadPSF8Ajj8Btt8Haa8OECenYlCnpy8aXiwMzM6uN9pP/zJkweXIqFrxyfbA8\nrGBmZmYVLg7MzMyswsWBmZmZVbg4MDMzswoXB2ZmZlbh4sDMzMwqXByYmZlZhYsDMzMzq3BxYGZm\nZhUuDszMzKzCxYGZmZlVuDgwMzOzChcHZmZmVuHiwMzMzCpcHJiZmVmFiwMzMzOrcHFgZmZmFS4O\nzMzMrMLFgZmZmVUsVTqAmZlZE02blr4AHnkEbrsN1l4bJkxIx6ZMSV9N5OLAzMxsIbSf/GfOhMmT\nU7EwaVLZXP3gYQUzMzOrcHFgZmZmFS4OzMzMrMLFgZmZmVV4QqLV2qI8G9jMrK5cHFitLcqzgc3M\n6srDCmZmZlbh4sDMzMwqXByYmZlZhYsDMzMzq3BxYGZmZhUuDszMzKzCxYGZmZlVuDgwMzOzCjdB\nMjMbA3fxtEWRiwMzszFwF09bFHlYwczMzCpcHJiZmVmFiwMzMzOrcHFgZmZmFS4OzMzMrMLFgZmZ\nmVW4ODAzM7MKFwdmZmZW4eLAzMzMKtwhcTHkdq9mZjYcFweLIbd7NTOz4XhYwczMzCpcHJiZmVmF\niwMzMzOrcHFgZmZmFS4OzMzMrMLFgZmZmVV4KWMfuX/A4su/ezNblLg46CP3D1h8NeV37yLGzEbD\nxYHZYqQpRYyZleXiwMxsMeC7RvZkuDgwM1sM+K6RPRlerWBmZmYVLg7MzMyswsWBmZmZVbg4MDMz\ns4pxLQ4kHS5pfsfXdR3P+bSkOyQ9JOnnktYbz0xmZmY2vEHcOfgLsCqwWv56aesBSR8D9gf2A7YE\n/gNMl7TMAHKZmZlZF4NYyvjfiLi3x2MfAI6KiB8BSNoHuBvYAzhnANnMzMyswyDuHKwv6Z+SbpZ0\nlqS1ACQ9h3Qn4eLWEyNiDvAHYOsB5DIzM7MuxvvOweXAvsBfgdWBI4DfSHo+qTAI0p2Cdnfnx8xs\nMeaOfmbljGtxEBHT2779i6QrgNuANwLXj+f/bTNrNnf0MytnoO2TI2K2pBuA9YBfASJNVmy/e7Aq\ncNVI/9ZBBx3ExIkTK8emTJnCFF9KmJmZMW3aNKa1br9ls2fPHtXPDrQ4kLQ8qTA4MyJukXQXsAPw\n5/z4isCLgZNH+remTp3KJF9CmJmZddXtgnnmzJlMnjx5xJ8d1+JA0heBC0lDCWsCRwKPAd/JTzke\nOEzSTcCtwFHAP4DzxzOXmZmZ9Tbedw6eBXwbWBm4F/gdsFVE/AsgIr4gaVngVGAl4LfAqyJi3jjn\nMjMzsx7Ge0LiiBMAIuII0ioGMzMzqwHvrWBmZmYVLg7MzMyswsWBmZmZVbg4MDMzswoXB2ZmZlbh\n4sDMzMwqXByYmZlZhYsDMzMzq3BxYGZmZhUuDszMzKzCxYGZmZlVuDgwMzOzChcHZmZmVuHiwMzM\nzCpcHJiZmVmFiwMzMzOrcHFgZmZmFS4OzMzMrMLFgZmZmVW4ODAzM7MKFwdmZmZW4eLAzMysL6J0\ngL5xcWBmZjVW7xPu3LlzOfDAw9l11x2BPdh11x058MDDmTt3buloY+LiwMzMaqUpJ9y5c+ey9dZ7\ncvLJW3PnnT8HzufOO3/OySdvzdZb71m7vE+GiwMzs8VSPa/Im3TC/cQnvsSsWR9i/vxdAOWjYv78\nXZg16yAOO+zYkvHGxMWBmVlf1fOkC824Im/SCffCCy9l/vyduz42f/4uXHDBpQNO1D8uDszMxqgJ\nJ92mXJE35YQbETz22HIsKGA6icceW5aI+haLw3FxYGY2Bk056TbhirxJJ1xJLL30f+h9pyhYeun/\nIPX6/6XeXByYmY1BE0660Iwr8qadcHfbbRuWWGJ618eWWOIidt/9pQNO1D8uDsysIcpfLXbThJNu\nk67Im3TCPfroj7DxxsexxBI/ZcHfZ7DEEj9l442n8pnPfLhkvDFxcWBmtVX3sfymnHSbdEXepBPu\nCiuswGWXfZ/99/8Da6yxE/Ba1lhjJ/bf/w9cdtn3WWGFFUpHXGguDsyslpowlt+kk25TrsibdsJd\nYYUVOOGEI7jwwp8D53HhhT/nhBOOqF3OJ8vFgZnVUlPG8pty0m3aFXkzT7jli8B+cXFgNi7Kj92O\nTn1zNmEsH5pz0m3aFfkCi84Jt0lcHFjD1PdkVvfx8ZYm5GzKWD4066Tb3CtyG7SlSgewOgjqXJ3P\nnTuXT3ziS5x77qXAcuy663/Ya69tOProj9TmQ601Pp5ugx8BiDvvDE4+eTqXXLJnbU4STclZHcvv\n9rdZn7F8WHDSffvbYfLk4MILxaRJpVONpB6vndWT7xwspppw9QjNmJQGzRkfb0pOaM5Y/lA+6Vrz\nuThYDDXlhAvNOZk1ZXy8KTmhOWP5ZosiFweLoaaccKEZJ7OmjI83JWdLk8byzRY1nnMwruo5lp9O\nuEd0fSydcI/jhBMGm6mbJ3MyKzn23JTx8abkbNfMsXyz5vOdgz6r+1h+k64e3WCm/5qSs7vyv2ez\nxYWLgz5qwlh+k0640JyTWVPGx5uS08zKcnHQR00Zy2/KCReaczJryvh4U3KaWWER0agvYBIQM2bM\niLpZZ50dAuYHRJev+bHOOjuWjhgREXPmzIlNNnllLLHET9ryzo8llvhJbLLJK2POnDmlI1bMmTMn\nDjzw8FhjjR0Ddo811tgxDjzw8NrlbJkxI72eNfwTrWhKzohW1qh9Vufsr6bkjGhO1hkzZgTpSmtS\nDHOu9YTEPomGTJ6DBVePhx12LOeeexx33LEsa6zxEHvttQ2f+Uz9rh6bOSmtHsMyI2tKTjMbJBcH\nfdK0meDNPOGCT2ZmZuPPcw76qElj+VU+4ZqZ2QIuDvqoKZPnzMzMhuPioI88E9zMzBYFnnPQZ80d\nyzczM0t852BceSzfzMyax8WBmZmZVbg4MDMzswoXB2ZmZlbh4sDMzMwqXByYmZlZhYsDMzMzq3Bx\nYGZmZhUuDszMzKzCxYGZmZlVuDgwMzOzChcHZmZmVuHiwMzMzCpcHJiZmVmFiwMzMzOrcHFgZmZm\nFS4OzMzMrKIWxYGk90u6RdLDki6X9KLSmczMzBZXxYsDSW8CjgUOBzYH/gRMl7RK0WBmZmaLqeLF\nAXAQcGpEfDMirgfeCzwEvLNsLDMzs8VT0eJA0tLAZODi1rGICOAXwNalcpmZmS3OSt85WAVYEri7\n4/jdwGqDj2NmZmZLlQ6wsA466CAmTpxYOTZlyhSmTJlSKJGZmVl9TJs2jWnTplWOzZ49e1Q/W7o4\nuA94HFi14/iqwF3D/eDUqVOZNGnSeOUyMzNrtG4XzDNnzmTy5Mkj/mzR4iAiHpM0A9gBuABAkvL3\nJ5bMZma2KJk2LX0BPPIIbLABHHIITJiQjk2Zkr7MoPydA4DjgDNykXAFafXCssAZJUOZmS1KfPK3\nJ6N4cRAR5+SeBp8mDSdcDewcEfeWTWZmJflK16yc4sUBQEScApxSOoeZ1YdP/mbllF7KaGZmZjXj\n4sDMzMwqXByYmZlZhYsDMzMzq3BxYGZmZhUuDszMzKzCxYGZmZlVuDgwMzOzChcHZmZmVuHiwMzM\nzCpcHJiZmVmFiwMzMzOrcHFgZmZmFS4OzMzMrMLFgZmZmVW4ODAzM7MKFwdmZmZWsVTpAGY2ONOm\npS+ARx6BDTaAQw6BCRPSsSlT0peZLd5cHJj1QVNOunXJYWb15uLArA980jWzRYnnHJiZmVmFiwMz\nMzOr8LCCmdkYNGW+idmT4eLAzGwMfPK3RZGHFczMzKzCxYGZmZlVuDgwMzOzChcHZmZmVuHiwMzM\nzCq8WqGPvKTJzGzxsSh/5rs46KOm/CEsyn/QZmaDsih/Vro4WAwtyn/QZmY2dp5zYGZmZhUuDszM\nzKzCxYGZmZlVuDgwMzOzChcHZmZmVuHiwMzMzCpcHJiZmVmFiwMzMzOrcHFgZmZmFS4OzMzMrMLF\ngZmZmVW4ODAzM7MKFwdmZmZW4eLAzMzMKlwcmJmZWYWLAzMzM6twcWBmZmYVLg7MzMysYqnSAcyG\nM21a+gJ45BHYYAM45BCYMCEdmzIlfZmZWf+4OLBa88nfzGzwXByYmVlt+G5hPbg4MDOz2vDJvx48\nIdHMzMwqXByYmZlZhYsDMzMzq3BxYGZmZhUuDszMzKzCxYGZmZlVuDgwMzOzChcHZmZmVuHiwMzM\nzCpcHJiZmVmFiwMzMzOrcHFgZmZmFeNWHEi6VdL8tq/HJR3c8Zy1JP1Y0n8k3SXpC5IWmYJlWmtr\nsZprSk5oTlbn7L+mZHXO/mpKTmhW1pGM54k4gMOAVYHVgNWBk1oP5iLgJ6SdIbcC3g7sC3x6HDMN\nVFP+UJqSE5qT1Tn7rylZnbO/mpITmpV1JON9lf5gRNwbEffkr4fbHtsZ2Ah4a0RcExHTgU8C75fk\nraTNzMwKGe/i4BBJ90maKekjkpZse2wr4JqIuK/t2HRgIrDJOOcyMzOzHsbzCv0EYCbwb+AlwOdI\nwwsfyY+vBtzd8TN3tz32p3HMZmZmZj08qeJA0jHAx4Z5SgAbR8QNEXF82/G/SJoHnCrp4xHx2EJk\nbZkAMGvWrDH8E4Mxe/ZsZs6cWTrGiJqSE5qT1Tn7rylZnbO/mpITmpG17dw5YbjnKSJG/Y9KWhlY\neYSn/S0i/tvlZ58HXANsFBE3SjoS2C0iJrU9Zx3gb8DmEdH1zoGktwBnjzq0mZmZdXprRHy714NP\n6s5BRPwL+NdCBtkcmA/ck7+/DDhU0ipt8w52AmYD1w3z70wH3grcCjyykFnMzMwWRxOAdUjn0p6e\n1J2D0ZK0FfBi4JfAXNKcg+OAH0fEO/NzlgCuAu4gDVWsDnwT+FpEfLLvoczMzGxUxqs42Bw4BdgQ\neApwC+nEP7V9voGktYCvAK8A/gOcAXw8Iub3PZSZmZmNyrgUB2ZmZtZci0yrYjMzM+sPFwdmYyBp\naUkXS1q/dBYbPEnblc4wGpKWK53BmsXDCn0kaQ3gpcAz6Si8IuLEIqG6kLQM8Hy65/xJkVA9NOE1\nlXQv8JKIuLF0ltGQ9Ey6v55/LpOoN0lPp3vW4VY0DYykR4F/AKcDZ0bE7YUjdSXpQeAc4BsR8bvS\neYbThPd8S55ftx3dsx7c9YcawsVBn0jaFzgVmEda7tn+wkZEPLdErk6SXgl8i/TH3CkiYskux4to\n0Gs6FXg0Ig4pnWU4kiYDZwIbA8qHI/933X73m5NOuJu2DlHDrJJWAd5G2jhuE+AS4DTgvIiYVzJb\nO0l7kDa2ezVpGfg3gG9GxB0FYw3RlPc8QN5l+HPAzaTuvp1Zty0SrE9cHPSJpNuBrwLH1Hm1haQb\nSB9gRzH0D5qIeLxErm4a9JqeBOwD3AjMIK28eUJEfKhErk6S/kT6IPs83X/3t5XI1Y2kq4HbgC/Q\nPevNJXINR9Ik4B3AlHzo28BpvRq6lSDpGaRiZl9SkTidVChc0K153aA15T0PIOlu4BMR8fXSWcaD\ni4M+kfQvYMs6fmi1kzSH1IGy1jmhUa/pL4d5OCJi+4GFGYakuaTf/U2ls4wk3wZ/YROytsu3xPcD\nDgH+S2o4cxnw3oi4tmS2TpIOAL4ILAPcRzopfy4iHiqYqRHveQBJdwLbNmU48cnyhMT+OQ14Q+kQ\no/ADoCm3uxrxmkbEdsN81aIwyC4GNisdYpQuYcGQQq3lSal7SfoJ6W7HzsD+wKrAevnY9wpGfIKk\nVSUdLOk60i3xc4EdgA8DrwfOK5mPhrznsxOA95YOMV5856BP8nbUPwKeStpDorK5VI1uLS8HfBe4\ni+45TymRq5umvKYtktYD1gV+ExEPS1LU6A2Wx8fPBK4A/sLQ1/OCErm6yZMmTwd+T/estZg4m4eU\nppDmQnwL+HpE/KXjOasBd0REsYsxSa8nDXnsTGpP/3XgrIh4oO056wKzImKZMimb9Z7PXX5/THrP\nX8vQrG8skatfxnPL5sXNx0lvvL/m7yuTUwYfp6c3kHI+RtpOuzNnbYoDGvKa5g3JziHNWg5gfdIG\nYqdJuj8iPlwyX5utgW2AV3V5LIBaTPLLtiC1Xa971ucBBwA/iIhHezznPtLfRkmnA98BtomIK3s8\n5w7g6MFF6qoR7/lsKrA98BvSPKO65RsT3znoE0n3AwdFxBmlswwnj5N9BTi6TpMPu2nQa/pN0uqP\ndwOzgM0i4m+SdgaOi4hNigbMJN1Kuio7KiLuLhxnWJJuAS4CPkPNJ842gaRlS84lGK2mvOfhiflb\nb42IC0tnGQ++c9A/jwKXlg4xChOAsxvy4dqU13QnYOeI+Iek9uM3AmuXidTVyqT9TWpdGGSrAF+K\niH+WDjIcSfsM93hEfHNQWUawSsffZkVE/H2AWYbTlPc8wAOk9/giyXcO+kTSx4HVI+LA0lmGI+kE\n4J8R8YXSWUbSoNd0LjApIm7M/926c7AFMD0iVi4cEQBJZwK/bcLSK0lnAZdExDdKZxlOvtJttzSw\nLGmd/kMR8fTBpxpK0nyGue1do74RjXjPA0h6N2lY4Z0R8UjpPP3mOwf9syWwvaRd6T455fVFUg01\nHzg03/L+M0Nz1qmrV1Ne09+S+hy0thqPPFnpYNK25XVxA3CMpJfSfbJXnbrP/QX4nKSXUOOJsxHx\ntM5juZX2V0jLBOti847vl87HPgR8YvBxemrKex7gPaSdh++W9DeGZt2ySKo+8Z2DPpF0+nCPR8Q7\nBpVlOJJ+O8zDterq1aDX9PmkZYIzSVcSF5C65T2dNAGsFmu28zh+L3XrPjdcG+KIiGcPLMxCyHeN\nzoqIjUpnGY6k1wAfjYhXlM4CzXnPA0g6arjHI+KTwz1edy4O+kBpMG8t4N6IeLh0nkVB015TSRNJ\na9s3A5YnFQonR8SdRYNZEZJeSFrSumLpLMPJy2//FBHFN2Zq0ns+L7l8MXBd+3LQRYmLgz7It5Af\nATapc7csSUsDc4EtOtdi101TXtOmyL/764FdI2JW6TzDyVn/AuzRgKy7dx4CVicVirdHRLelmAMn\nqbNIaeU8AtgoIl448FAdmvaez5tubRQRw92RayzPOeiDiJgv6UbSbPDa/lFHxGN5KWPtO2M25TVt\nkTQBeAHdd2cr3lwo/+4nlM4xGjnrCjRj3XhnR8EA7iV1eKxLfwtIM+s7X08BtwNvHnycoZr2nicV\nsOsAi2Rx4DsHfSJpN9IEtP+t81W5pP2A3YC9I2J26TzDadBrugvwTdLyu05Ro5nghwIbAO+uwyY7\nw5H0SdIH734NWXZba5Je3nFoPqmIualOfwtNec8D5EndnyVN6Oy24Vrt+0oMx8VBn+QlTcuS7sbM\nAypjZjVa0nQlsBGpw9wtDP2Drs0M2wa9pjcCPwM+XeceApJ+SOqj/yBpBUDn7742M8ElfY/UKW82\naVVNZ9ZGt6a17prynocnloe2DDmR1uWiYGF5WKF/Plg6wChdlL+aoCmv6aqkToi1LQyyB4Dvlw4x\nSo8A55cOMZy8ZPEFwMyIuCXP/P8YaV+A84DP1mVvDUkrR8S/8n+vBfwPKeeFEfGbouGqmvKeB3hl\n6QDjyXcOzMZI0jeASyPitNJZbDAkvY60n0arudB+wKmkvhbzSXc9DouIzxcLCUjaFLiQtArgRtL8\ngouA5Ui5lwX2iojSuzFazbg46KO8vGUPYON86FrggjqOmUrajLacEXFNyTy9NOE1lbQsaUvee6l/\ncyEkPYPUvAXgrxFxb8k8w5H0dNI8CUhZOzsSFiHpj8B04DBgX+Bk4NCIOD4/vh9pj4CNe/4jAyDp\np8B/Sdszvw3YlZT7f/JTTgImR8RWZRIO1YT3fEueOPtOqlnPiIi55VL1h4uDPsnrhX8CrMmCHcU2\nJM0Gfk2NGuGsAnwb2JE09gzpKuIXwFtatx7roEGv6buAr5Juhf+Ljp3k6tJcKG/XfRKpm2NrRcXj\npMmUB9RpApWkpwInkE68reHP/5J2F/xA6Xa1uU32CyPi5rwEb17+/i/58XVIa+CXLZcSJN0HbB8R\nf5a0PDAHeFFEzMiPbwRcHhErlczZ0pT3PICkSaRC6zHgj/nwFqS/150i4upS2fqh9kvaGuRE4GZg\nrYiYFBGTgGeTJv3V6crxJNKs+s0iYsXcpGXzfKxOOaE5r+nRwOHAxIhYJyKe0/ZVi8IgOw54OWm1\nykr567X52LEFc3VzHKmA3ZP0t7kKsBdpnLcOWZcj9QwhIuaTJs61F1cPA08pkKvT04G7ACLiQdLE\nzva7L/cDKxTI1UtT3vOQtmz+KbBOROweEbuTVthMJxW2jeY7B30i6T/AVp235/Pt+0sjYvkyyaok\nPUCqaq/oOL4V8NNuveJLadBr+m/S1Vhtrmq6yVeRe0XErzqObwecExHPKBKsC0n3Am+KiEs6ju8A\nfKd0VkmPA6u1hmTy9r2btRriSFoVuKP0jPU8o37VtpxzgRfULWdLU97zAJIeJm24Nqvj+POAP5a+\nazRWXq3QP4/SvQJfnnTLsS6WImXt9Aj1+3toymt6JvAm0prnOlsW6Lai4p78WJ0sB3RrPX1nfqw0\nATdIal1dLQ9c1ba8rff+yIN3Ru7mB2nL9q/mkzDU4+5Gu6a85yHdOVoT6OziuWZ+rNHqdjJosh8B\nX8vjz60lQap3AAAgAElEQVSr8heTxqKLd8hrcwkwVdKU1tI7SauRbtVeMuxPDl5TXtMlgYOH2eny\nQ0VSDXUZcKSkfVpj9nls//D8WJ1cDnxK0tsjYh6ApKeQdr68vGiypDYbAI3gzI7vz+rynG8OIsgo\nNeU9D2m1ymmSPgT8Ph/bhvRZ+t1iqfrEwwp9Imkl0htxNxacHJYi/UHvW5duhJLWJi1t2hC4NR9e\nh9R3f7eI+HuZZEM16DUdblvmiIjtBxZmGHlZ20Wkq8U/5cObke4a7RwR15bK1infRr6IVHhdlQ9v\nTpqUuHNdV9fY2DTlPQ9PtEw/lrTyozUs8zhpSetHS0+aHSsXB2MgacWImNNxbD0WLGuZFRE3DT7Z\n8PLuZ7uQOiVCui02vQ4NW5r6mjZFXnb5Vqq/+7Ojhrvg5dUV+1DN+q2I+E/vn7KmadJ7Ps8nuD5P\nQm0dWwFYL39706KwjBFcHIxJnpS0ekTcI+kS4PVRw+07Jd0DPC8i7pP0NeBDeeZy7TTlNW3JOwg+\nTNsytjqRNBPYISLul/Qp4Et1WrLYTtIVpLsC9+d9IKbWsWix/mrSe74j6w2kyZP/Lp1rPHgp49g8\nSNpBDOAVwNLlogxrORZM8nkXqW1qXTXlNQXSDoLA31lwW7FuNmbBBL7DSRO76uoFLMh6FPVaYmfj\np0nv+QdISysh3S2o6/t+zDwhcWx+AfxSUmu26g8ldZ1RW3jc+XJStitJs6iPy8twhoiI/QaabKim\nvKbtjgY+K+ltNbyKuBo4XdLvSL/7j0jqetcoIj490GRD/Qn4uqTfkrJ+cJisdV8ZYqPXpPf8D4Hf\nSPonqdnZ5fluwhARsUG3403h4mBs9gbeDqxLaiRzLdVGKHWxN2lv+XXz96vSfTljHTTlNW23P+kq\n4g5JtzF0B8FJRVIl+wJHktrmBvAq0qS+TgGULg72Jd0x2IuU53X0zlqL4kDSdhEx3ITUWpC0LfD7\n6NieWdJSwEsKb77UpPf8/5A21VqP1KjrWywCyxa78ZyDPskz1l9X17GyFkm3k8bHa9MmuZcGvaaH\nD/d4RBw5qCzDyWvwV4uIe0pnGUlTsub+Af8gtXU+MyJuLxypq/ax8o7jKwP31KgJUiPe8wCSvgW8\nb1GZgNjJdw76IE9KezawOmlMqpZyzlmklqq1Lg6a8ppCfU7+w8mv55nUo4HQsHLW06hfY6Zu1iRt\naPR24PA8oe404LxWf4aaENU9P1pWpuNOVylNes/nrG8APg/UbiJyP3hCYh/kSWkTSucYSc45ie4f\nErXSlNe0naTJkvbOX5uXztMuv56vK51jNHLWN1CvLoNdRcR9ETE1Il5IatZzA3AKaYjpxNyvoRhJ\nP5D0A9J7/ozW9/nrfNI+AL8f/l8ZjCa953PWO1mEz6GL7P9jBZwMfCyP4dXZ2TSnu1sjXlNJz8xX\njFeSNoc5EZgh6WKl7ZHr4nzSVrhNcCGwe+kQT0ZEzASOAb5MWhXyTtLfwW8lbVIo1uz8JdLY+Oy2\nr7uAr5HG/OuiEe/57BjgaEkTSwcZD034BTTFi4AdgJ0kXcPQSWmvL5JqqAD2l7QjaZvRzpwHF0nV\nXVNe05NIy+42aW3CkpulnEkqFKYUzNbuRlJL4m2AGQx9Peu06911pNv0W9M96ylFUnWRbzG/llQM\nvJL0vtofmAY8A/gM8D3geYPOFhHvyBlvJfW4qMUQwjCa8p6HNDlxI+BOSbcwNOuWRVL1iSck9omk\n04d7vPUmLS0vE+slImLbgYUZQYNe09nAjhFxZcfxLYGfRcRKZZJV5Q+wXiJqtL10njjbS0TEs4d5\nfGAknUQq/kSauf71zmZYee+SOyKi2J3avIeGWg2wchv11wHXRcTPSuXq1JT3PICko4Z7PCI+Oags\n48HFgdkYKW2D+7KIuLrj+ObAryNixTLJbLxJuhj4OvCDiOi6PDjfIt8mIn490HDVDD8jZfxq3r/g\nr6RdDlchdUz9SqlsVk+ec9BHkpaStKOk9+R+20haQ1LtutJJWkfSDnnzkNpqyGt6CXCCpDVaBySt\nCUwFLi6WqgdJy0jasAnjuvn3v26Nsx4JfK+zMMi5twWIiP+WLAyySUDrruFepPkGa5P2rjiwVKhu\nGvKeB9K+EJL2lXSUpKflY5tJWr10trFycdAn+TbdNaRJXyeTxhoBPgZ8qVSuTpKeLmk68DfgZ8Aa\n+fgZkmqTE5rzmpLGl1cEbpV0s6SbgVvysQOKJmsjaVlJp5EazFxLbgMr6SRJhxQN10HSUyWdStq3\n4q8syHqCpI8WDVf1S9LS4E4T82N1sSwLmvXsRLqLMJ/UPXXtYqk6NOg9j6Tnk1anfAo4BHhafuhN\nwOdK5eoXFwf9cwJpItLTSB9oLT8kTbCpi+NIv/fnUu1C9h1S97w6acRrmhvfTAJeAxyfv14dEZMi\n4h9Fw1UdQ9qi+RWkbZpbfkH6QKuTo0mT015JNesvqc8ET2hA/4DsJmAPSWsBO5MuDACeCczp+VOD\n14j3fDYV+Daps2P73+iPgdrM3VpYdb1V10QvI7UhnSdVlmffSmqUUhc7A6+KiFs7ct5Aja4gstq+\nppL+DWyQd7r8BvCBiPg58POSuUawB/CmiLhcUvsJ7VoWtNaui9cDUyLiso6sf6EGWXPvAFjQP6B9\nWGFJ0iZStegfkH2adCKbClwcEZfl4zsBVxVLNVRt3/NdvAj434iIjqz/JDVyajQXB/2zBN136HoW\n9eq9vQJpF7ROTyNNUKqTOr+my5CGDe4jdcf7GOUzjeQZQLd2xMtRv8ZYzySNi3dalno0R5qd/7fV\nP6D9Knce6Xb9/w06VC8Rca7S5lurkza4armYdFVeF3V+z3d6jO67nK5H+lxoNBcH/fMz4INAa1fD\nyBNojgR+UizVUL8jNT05In8fSmXvR6jXGCnU+zW9DDhP0gzSCeJE9d7p8p0DTdbbH0lDHyfl71sF\nwbtJ///UyUzg1aRxZ1iQ9V3UIGsD+wcQEXfRUXBFxBWF4vRS5/d8pwuBT0pqDclFnoj8OeAHvX+s\nGbyUsU8kPYvUilTA+qQP4vVJFeS2ddlARtKmpNn1l5NuKf4Q2IS0U+M2EXFjwXgVdX5NJa0KHES6\nxb0ncBE9drqMiFq0LZb0UuCnwFmkHRBPJTXmeQnw8oiYUS5dVZ7p/2PgDFLxcjLp7/TlpKxX9v5p\ngyeGPvaNiDltwyBd1aW5UJ3f853y6oQfAJsCKwG3kyZ4XwnsEhFdtxtvChcHfZSXW72ZNN64POnq\n5+yI6HpFWUr+oz6QNDmtlfOkiPhn0WBdNOE1zc2FtmjITpfrkmZWt//uPx8R1xQN1oWkDYCPU816\nTET8adgfHP9cM4EdIuJ+SVcxzJBMye26c0OhAyNibsOaC9X+Pd9O0iuoZp0ei8CJ1cWB1ZakpwBL\n17kCz61zLwLeW6e7LjZ+lLbo/mJEPKSGbNfdFE14z7dIeg5p7tGNeVnoIsXFQR9J2pC0rn3jfGgW\n8OWIuL5cqqGUNgp5BwtyXkfai74W26QqbVZ0JmkZ2xKk23R7R8RNRYP1IOle0gzr2hcHkpYktc1t\n/92fHxH/LZeqO0lLkDZfas/6o4h4vFyqRYukFwB/jIhlCudozHte0jrAeaThBIC/A3vmjbcWGS4O\n+kTSnqReAX9kwYSprUjLXd4cEd8vla2d0qY7PyL1OGiNMU8izVjfNSIuLZWtJS8NfBVpzfOjwHuA\nOyNiu6LBepA0FXg0ImrVSKiT0s6AFwCrkRoLAWwA3Avs1rknQEmSNiY1wnkWaY0+pFngdwC7R8R1\npbItSpS2lL6q5L4POUdj3vOSziENdR1FyvphYKmI2KJosD5zcdAnuSve2RHxqY7jR5Iq4OJrswEk\n/ZlUlb8370neGuP7KrBlRLygZL6c53bg3RExPX+/PukuzHK9+teXpLT5zj6kXQ+77SD4oRK5Okm6\njFQIvD0i7s/Hnkaa9PeMiHhJwXgVki4FHgD2ac3lkLQy6eryaRGxTcl8LZLmM/ycg27L8mojFwcz\nS+ds0nte0p3AGyPit/n7NUl3D1ZobWy1KHBx0CeSHgJe0HkbLP+R/ykili2TrCovt3thRPy14/hG\npCuIp5ZJVsnyOLBmXnrVOvYf0pbItxYL1oOk4ZaARkRsP7Aww8i/+y0i4tqO488HrqzD774lZ31R\nlx0ONwWuqEtWSa/tOLQ0sDmp98XhEXHa4FONXo2Kg8a853NBuHpE3N127EFg04gYbufTRnGfg/75\nFam7V+cY2UtZsOFJHVwNbMiC28otGwJ/HnycnjrHlR+nHs1vhqjjrc8ebiAtWb224/gzGfp3W9qN\npB0DO60M3DzgLD1FxPldDp8r6VpSS+qixYGkkXYEXWEgQUanKe/5ACZIal3wCZgPLNt2jKbfRfCd\ngz6R9F5Si9JzSD0EIM05eANwOGmsFICIuGDgATNJbwQ+Txrba895IGmJ2xNXaqXGdXNlPpvq7dqV\nSD3gn5gVHBHdNrwpRtJ6pL4Hv4mIhyWpTkuaJL0a+AKpAVb77761cczvWs+NiKL99iXtQsr6KapZ\njyAtb3xil8M6fghLei7w54goupPgSMMe5L0hanDnoDHv+R6v6ZA9Nkq/pmPl4qBP8h/MaBR9I44i\nZ1D4A0PS20fzvIg4c7yzjEYeCz8H2I70+q0fEX/Lk6zuj4gPFw2YdfzuW298dfm+LieLll5Z0zc1\n+xCW9FTSJleviogNC2d5+WieF4W3lG7Se17SqDaAiojabdf+ZLg4WMzkJjijEhG1uX1bZ5K+Sbo1\n/27SJKrNcnGwM3BcRGxSNGA22hMF1OJkMeod+Ep+CEu6n2qxItKt+odIE5GL3SU0GwvPOegTSfsA\n3+2cWStpGdJSxm+WSTbEqsAfOteK5/XvL46IOu0k1xQ7ATtHxD86dme7kXrtdHkLcHvnUEfeW2Ot\niPh7mVhdzYqIOzoP5qyrd3uskA92fD+ftCLkD60VIWZN5DsHfZJn264eHb2/8y3ne+py67MpOZtE\n0lxgUkTcmP+7dedgC1Ir1ZULRwSa9btvUlazRZHvHPTPkAkp2bNYsL1rHfTK+XQ61ufbqP2W1Ofg\nk/n7yN39DqZeO132+t0vDzwy4Cwj6TVLfTlqllXSSsCWpKGlSjOhGt0xNHtSXByMUdvGKwFcLKm9\nDe2SwHNIvfeLyl29IOX8uqT24Y8lSR2/Lh/ygzYaB5N+91uQeq1/gbSD4NOB4s16JB2X/zOAo3JP\njpYlgReTlrgWJ+kL+T8D+FSXrFsBRTdeaidpN+BsUoE1h2rxFYCLA2skFwdjd17+3xeSthpt3zBk\nHnArUIfWya1iQKRc7cXBPFLnuVMHHaqXvKHR9aSWzrNK5xlORPxFaQfB/YG5pBPFD4CTI+LOouGS\nzfP/itQPfl7bY/NIJ9svDTpUD1vn/xWwBfBY22PzSH8TX+j8oYKOBb4BHFrHJZVNI+lTwJc6X8u8\nAuSjEfHpMsmq8ufTXFJTsdq0He8nzznok7wU57sRUatbnp0kHQV8LiJqP4Qg6Z/AjnUvDppCadve\nD5TuYTAakr4FvL/uWXMXv00j4m+lswxH0nKkXhY70H3447klcnVq0lwTpa3aXxsRdWoe1zcuDqy2\nJB1K2hjo3VHDXQPb5T0K3kV1B8HTI+Lf5VLZeJP0A+A7EXHOiE8uSNI04OXAt4A7Gdor4oQSuTrl\n/harRsS9Hce3J118PaNMsqEk7QfsRlqyWqd5ZX3h4qBPmrIBi6QbGT7nBgOMMyxJPyRd6TwIXMPQ\nDY1eXyJXJ0nbAheSJp7+MR+eTOrwtltE/KZUtnaSLhnu8brsAQEg6WfDPR4ROw0qy3AkvYvUxfF0\n0t9o+zBI0W6o7SQ9ALwmarDrajdt/SImMnTuxpKkobqvRsT7C8TrStKVwEakfLcw9PNpyxK5+sVz\nDvrn9VT/oCsbsBRJ1N1XO75v5dwROG7o04t6gHrM1xjJycB3gf9t9Y/IfSNOyY9tOszPDlLnRL6l\nSXNlnk+ac1InnXt/tLJuBJw1+Dg9/V/+3091eSxIJ446uB+o812sD5LmmXyD9HnZfiU+D7g1Ii4r\nEWwYF1GDyebjxXcOxpmktwBviojO3dtqRdIBpN0a31U6S9MMs9PlhsDVddlBsBdJRwDLR8RHSmcZ\nSZ4zs0xEfKx0liaRtDfwWtJ23bWdOJm7eF5a92HExYGLg3FWlw1YRpLbKl8VESPt4jZwkp5B2jUS\n4K+d45GlSboU+GJEnNdxfA/gkIjYqkyy0ckbRl1Rh01tRpKz/qEujaXaSZpQ1wnJecn1uqSr81sZ\nOvwxqUCsrvJn0TtIeT8QEfdIehXw9+jYbrwO8rbXrblG10bENSXz9IuHFcZRXn5zIPDP0llGYQ/S\nrcfayDOsTyI1GGrNrn4872VwQI2ugE4ETsgnrvYdBN8PHCLpBa0n1nRm89bUrLHQMLakuhSzqDx8\ndCjwXmBVSRvk7phHkW6FF92yuc15Iz+lvHzn4KfApcC2wCeAe0h9WN4F7FUuXZWkVYBvk4ZkW0vY\nl5P0C+AtEfGvYuH6wMVBn4y0AUuRUF3kSTSdOVcDVgcOKBKqt+NIM6x3I31YALyUdDI+FvjfQrk6\nTcv/2239/TTadrqk4Bh0nllfOUT6vW8BHDX4RL21Ne164hAp61bAZwefqKdPkOYVHcyC+QeQtj7/\nIFCL4iAijiydYZQ+BxwWEcflVuQtl5D6iNTJScAqpHbp1wDkC4HTSZ9Rby2Ybcw8rNAnkvaletKt\n5QYs+YqmXSvnL+t2y07SfcBeEfGrjuPbAefUZVmTpFFvrhQRt41nluHkPgftWr/7SyJi2NUBg5b7\nHLRrz/qTApG6knQT8J6IuLhjX42NgMsi4mmFI1ZImkz1FvhVJfN0kvQgqW/ELR2v5zrA9RExoWjA\nNnkFyE4RcUXH8a2An9btd/9k+c5Bn0TEGaUzjEZEfHLkZ9XGssDdXY7fkx+ri7WB33dOopK0FPCS\nuixljIh3lM4wWhHxttIZRmlN4KYux5cgrbCoBUnPBL4DvIK0CghgJUm/JO0aW5d5PA+Q7hDd0nF8\nc+o3PLsU1U6zLY+wCJxbG///QF1IehEwhdS0B9JSrGkR8cfePzV4klYjLbtsz/nDiLirXKqeLgOO\nlLRPa6JXnsdxeH6sLn5J+kC7p+P4xPxYLZaz5dfulVR/97+IiIfLpepO0lNIPS7as17SuSV6DVwH\nvAzovCO0F1Cnq/KTSMOcm7Q6jkp6HmkJ64mkz646+A7weUlvIN2JXULSNqT23nXbp+ISYKqkKRFx\nNzzx+XpsfqzZIsJfY/wijTXPJzXvuDp/zQUeBz5fOl9bzveQ5kDMz/nm5v9+CNivdL4ueTclXS3c\nB1ycv+4D/kH6kCueMeecDzyjy/ENgDml8+Usu5OKl/kdX/eQGjUVz9iW9TWkLn6dWe8CXl06X0fW\n15Kudj9GaoLzEdLcg0eBV5bO15ZzNvCiLse3BB4ona8tzzL59Xss/87n5c/RbwFLls7XkXVt4M/5\nd/3X/PUoqZ/Is0vnG+uX5xyMUd5T4avAR4FTI+KxfHxp0oS5z5PGJItWvXkp0IXAl4FjI+L2fHwt\nUvb/JZ0katXUQ9KypIk9G+VDs4CzowZXu20T/F5LaobSudPlC0hLL3cZdLZ2kl4C/Aq4gHRV09qr\n4nnAh4FdgZdHRPFdOfN47a9JM9a7Zd0FeFl0jPOWJOllpCZIm5E6+c0EPh01mseRx+9fFhFXdxzf\nHPh11GwJc/5c2pT0el4VETcWjtSVJJH+Jts/n6bHInBidXEwRpKuIA0fTO3x+IdIY3pFW2nmscXL\nIuLQHo8fA2wVEdsNNllvuS1xbcfy2yb4vR04B2gvWFo7cv5fRNw34GgVkn4C3B4R7+nx+KnAWhHx\n6sEm65rlR8CdEfE/PR7/OrBaROw62GTNJul8UjvvKRFxRz62Jmm76fsj4nUl87VIen702OVQ0h7R\n0UukpNzg7tyImNdxfBnSROpvl0nWHy4OxmikXdlyE6RrImK5wSYbkmMOsGVEXN/j8Y1IjXBqcwXR\nlB3aJB1O2ma2ljtdSvo36c5A1+YsefnVr6MGs6tz1ldEj34QueHML6NmDZskrUBabtkyPyIe7PX8\nQctX4hcAmwC358NrkZZc7h4R/yiVrZ3STqwvjYhbOo7vCXyz9Odou6Z8Pi0sT0gcu8dJ42S9LJ2f\nU9qSDN88Zh41mTjXptUboNPKdGxyUlLUfw35U0nzYXqZDdRlidhTWTCbvpsH8nOKkvRC4LNtd1vu\noLqCJiRtHRFXDj7dUBFxu6RJpIY9T9wCj4hfFIzVzdeBX0jaJvIkaUlvIu25sG/JYF30+nxak+Hf\nb43g4mDsZpLGxHstEXxbfk5p15GaCfXamnX3/Jzi2sbyAzhDUrex/N8PPFgPSvu6D7fT5XMHGKeb\nG4HtSc1ZutkhP6cObgK2o/dGUNvTfengoB0A/K7j2NtIE2gFvJPUHbU2SzLzOPjP81ctRcThkp5O\nKhC2JY3nfx14W0TUYhO2tkZyAUyX1D7suSSp7XPdiq4nzcXB2H0JOC8vvTo2qktaPkzqklaH8bxT\ngC/nTYJOi+ruge8GjqY+HRJbO7KJtKKicyz/cqrd6Eo7vuP71k6XuwBfHHycIU4HviTp7uhoICTp\nNaTVNnXpOngmKeudnRP6JO1Myvr5IsmqXkKa3Nvu8tbwYn6fdXZ5HChJBwJfi4hH8n/3FBEnDijW\niCLiAElnk97na5LmSZxfOFa71qTtLUgTfdvvYrbmGn1vsJH6z3MO+kBpR8MvkYqt1oltIvBf4OCI\n6HW1PlCSjiddzTxAuvoSqcqdCJwSEXUpDoAnxvK/GPXZQ+FJkfR+YIso3HxI0hKkLaX3JC23mkX6\n3W8MrE/qu/+GiJhfLGSWi9VzWXAnqz3rxsCPgNeVzirpIWCD1li9pINIRfec/P2zgRuiYEe/fEdr\ni4j4V/7vXqLk3S1Ju3c5vDQwFfgZaa4EABFxQZfnFiHpXcBZUb/eG33h4qBPJD0LeAPpwxbgBuD7\nrSWDdZEbiryFas7vRETnLdLiJD0HWKpzGZOk9YHHIuLWIsFGKU9Gvboukzzz2G17o67W7/475VJ1\nJ+mtdMlKWsZa/EMrT5zcLSIu7fH4NsCFdZs4WUeSRlvoRZ0m+eVW1Et0ziuRtAXweNSsNfWT5eLA\nakvSr0lLAc/qOL438O6IeEWRYKMk6WDgfRGxTuks1l+SLgZmRsRHezx+LPDCiNhhsMm6k/Qp0oqa\nhzqOPxX4aER8ukyy5pL0B1KTux90HN+T9JrWeqv2kbg4sNrKyy83j4ibO46vB/wxIlYqk6xK0lV0\n3+nyGaTi4GtFgtm4ySeA75DmFH2lNcyRh0XeR2rg9JaIOLdcygWasOwuN467CHhvXZsetVPbJlEd\nx58D/DkiViiTrD88IdHqLIBut+QnUq9ll52NWVo7CP6qV18Ja7aI+L6k40h7FnxWUqvPyXNJXf2O\nq0thkPVadrcZ8O8BZ+kqIh7LPTea4lFgVYZuErUa9Vi+Pia+c2C1JelC0kqFKR2rK74LLBcRryqZ\nzyy3e57Cgjk8N5I6phZvRQ0g6X5SUTCRtPa+/QN/SVIh89WIeH+BeENImgo8GhGHlM4yEknfBVYB\n9oiIufnYisAPSV0n9yqZb6xcHAyAJNVhElXTKO0a9xvS6orf5sMvI91N2L5Xm9VBy21o96S6g+AP\nIqJuW8zaYkZp7xeRmgh9kAWrqSAvu4uI2uxwKukkYB9SkTWDjmZnEfGhErm6yV0nf0MqvGbkw5OA\nfwE7RsTfS2XrBxcHfSLpoxExZE17vtI9KyLqsiVqo0haA9ifdPvzYdIuaF+OiFrcCpX0PuA4UpfM\nVle0FUkfvB+KiFNKZRtJvsrZnrQ51KyRnm/NJenlwKXRsU9J3eQ9YHqJiNh+YGFGQdLypGKm/fPp\nrM79FprIxUGfSLoH+HhEnNZ2bEnSpKXnR8TGxcKNgqQjSROW9iudpSlyA6HzSU2Qjo2IO/Px1Uk7\nXR4AvLaz8VApks4BfhMRX86z1P8ErEO6snxz6Q50Od+oRMQbxzPLokbSq0nL66Z3HN+ZtBzvp2WS\nWV0tUTrAIuQ1pM5uewGtnQO/R9ropDY7HQ5jXRb0XK8NSS+TdJak3+fb90h6m6SXls5GKgA+FxEf\naRUGABFxZ779+Xng4GLphtqWBcMzryMVBSuRGmMdVipUm0efxJc9OZ/rcVzDPGYjkDRF0q8k/V3S\n2vnYgZJ2K51trLxaoU8i4sq8vOk8SfOAdwHrAdu1WirXWUTsXTpDp/x6fou0rewk4Cn5oYnAoUDp\nLYYnAV23Qc6+RTrx1sVEFsxM34XUpOshST+mBm2eI6I2+xAsgtYnzYXpdD3pc6o2chOhNwLPpmNT\nu4h4fZFQXUjaDzgGOBHYkgUrqB4EDgIuLBStL3znoI8i4hLS+NP3geeQtsmtfWFQY4eR1jz/D/BY\n2/FLSSfm0pakmqvTY9RryeXtwNaSliMVB629C54GPFIslQ3CbNIyy07rUaMdTiW9mbSp2saku1tL\nk+6+bk91MmUdfIDUjO1IqksXrwQ2LROpf3znYAzadg/sdC9phv3XpLTFe10q3rxU6KaIOLnj+PuB\n50bEh8sk62pD0mzgTrNJt8NLuxZ4LakHfDd75OfUxfGkuzAPAreRNo2BNNxwTaFMPUnag95XkFsW\nCUXXplc9RUQdiljIc2Mkva7VVCw3EzuWtr0LauBQ4KCIOFnSXNIJ+BbgVODOYX9y8J5L9x13HyEt\nEW003zkYm9k9vqYDN3ccq4s30H2748uBNw04y0juovstz5cCf+tyfNBOBo6W9L48xwRI801ysfUZ\n0m6YtZBXTmxF2k74pW2bF/0N+ESxYF1I2h84i/TeeRFp8uR/SMtFLykYDVLTq/Pz13TSfJ1HScXW\nr3PwN/QAACAASURBVEgnh3XzY3VxMOn1u17SLXkjplmkZXcfKZqsal3gx/m/55H6mQSpAK/bZOlb\nSasUOu1Eem0bzXcOxqD0bnsLaRUWLLlrNzs/Vif/B5wg6Z2kK7U1JG1N2gHzqKLJgIg4U9KmpK17\nj5F0M2mCV6tL3okRcUbBiBVt/fVndDx0CWlyZbeisZT9gfdExNl5L41jIuJvko4GiralzbeRAZD0\nddLv+ZPtz8mrf9YadLZeImK2pJcAr6Rt2V1EdLszV9L9LPj9/hN4Pumu1krAsqVC9XA88OXc9lnA\nJElvIA+HFk3WB17KuJiRdC1wcuf6+3ylu3+dllwqjckcCnycBR8Mj5JOcJ/s+YMD1qVLXmu3w1p0\nyWtpQn/9FqUtkTeOiNsk3UtqKvOnvCPnZRFRi0JW0mzStsjddg79Y0RMLJNsdCStBOwdEV8unQVA\n0rdJr9txkj5JWg58PqmomVmX4dmW3GTqCGDtfOhu4IiIOLVYqD7xnYM+kbQq6Yp2B+CZpEryCTX6\n4D2eNPa4Mgtuz+5Auu1Yp9uL5NuJR0v6Iml4YXnguoh4sGyyqlwE1KoQ6KH2/fXb3A08nTQ34jbS\nbPA/kT6E6zQc+jCwDamjX7ttqPEkT0k7kFZUvQ54iHT3qw72Bybk/z6aNKn3JaRJ3p8pFaqXiDgT\nODM3FFs+Iu4onalfXBz0zxmkiVNHkSbO1PKWTET8n6QJpCvy1u3RfwAHRsQ3yiXrLXcbuy6vI362\npOvbxsttBG399QO4QVLX/volsg3jEmA34CrgTFJB+3rgxdRrAt3xwFckTQKuyMdeTJrXUXzoq11u\n9/uO/PVs0h4lrwMuLpmrXXvn0/web0QPhoiYI2lTSZsAV0REneaZLRQPK/RJnln7soi4unSW0cqd\n/B6OiAdKZ2mX5xisFBHHtR37GulKB9J67Z0j4vYS+Zqmaf314YkmYktGxKP5+71JV5A3Aqe0jteB\npDeSZtW3huRmASdExKg7Po6XPB6+B/Bu0r4kFwHfBqYBm0XEdQXjNZKkjwArRsSn2o79iAV9V+4C\ndmh6S3IXB30i6TrgrRFxVeksTSfpcuDUiDg9f78LqaHIvqQP3i+ThhfeXSxkAzWlv35T5Pbo25Am\n9tWqwG7Jbd2vJ638+F5E3J+PP0aNioM8H2ZEdRielTQD+GJEfCd/32rW9irS59MZwJyIeHOxkH3g\nYYX++SDwOUnviYhbS4fpRdIzgC+wYG5EZfw2Ipbp9nMDtj7wx7bvXwucHxFnA0g6lP9v77yjJKuq\n9v28BIkCklGCRImSkaAgiBgICiqifiDhA0QFCYqBDKKSkwkVGJAg8kMEJCNBxc+AoAxJYECSYQxI\nVtL7+2Ofmq6ururuYbrrnOo6z1q95ta9t1kv3dV199ln73fDWTmEtZKKJpcgCvqK3WMGsH2zpGUl\n7UK0jH3G9lRJ7wEesZ3Vk0ExhfNe26+k446U8FCz/bKka4mMQZHBAfEZ39hSGtUDOBMiakvOJraS\nSmYZov6lwZaE2+jNAJKOIrZsepoaHIwdFxIV9VNSpfUg5zzb82dRNZRJxIPhOMqtjZiDwe2WGwJn\nNL1+EFi0q4o6I+ABwsWttSitKFLm4CrCYXJjwttgKlGQuBuQe/78ncTvdWo6NoMLexuvTTnOk3cS\nD4uHcgvpwOuJceK7EW3BVxFZhNL+7tcjNDZMj84EzmtkOgpjVgYXm25AWCg3eBxYqKuKxoEaHIwd\n++YWMEo2BjYufPvjYWBt4GFJCxIP3luari9KIcZSaZV7P7AAhQcHRHHXwalN7Omm8zcQVeK5WZ5w\nF20c9wIHEwPXDgF+R4sVse12niJdI2WzzgPOk7QsUYx4KvHZf5CkScANtrNmFWzfCtwqaT8iSN0F\nOEbS5cAZtq/Lqa+FB4j6jYdSkWerk+vilNf9M93UmoM+Q9I9wEdKLpyU9AViBfFNwlN9IdurNl3f\nF9jK9uaZJA4iTWA7ENjL9p259XRC0jPAarYfSsHB6slY6I1EOn/2Yf8DlSFIau6aaf4wFdGNW0qG\nYxqSZgLeRazUtwaeLsU3ohlJSxMZw02Iz4AiHriS9iS2Zn9AZA2etb1B0/WDgA1sb5VJ4phQMwfj\nQGoVbPWCz7qCaGI/ws1vd9uP5RbTgWOJLZrtiMrfD7Vc34ioti6Fcwi9f1BM5Hy++WJBW0r/BhZj\naAp8TSIVWgySDiTqOCa1nN8ZWND28Tl0taEXxrEPIrUIXgVclWqQipqGKWlxovh4Z+Lv6jjau7pm\nwfbpqR14a+DXwGEttyxBITVRM0LNHIwRikl3xxCDYhZovV7KCiK5zb2W2Dd7iqG1EQvn0NXLpFbB\njiSjlOxIOp7owf8Q4eK4FrAIEdyc02wLnJvk/f+RVpfJ5EZ5vu12EwYrPYqk1xCeC7sRKfuriLqD\nq3JvefQrNXMwdhxLrCL2ItpaPgW8AdgT+EJGXa2UpGVCUMrDfxR8iRgW9ShR0Hd3+vd8ynOfW4xw\nSWzlb0SRXTEkC+LdGPA5uAs4cyIY4XSRvwBPE90KnySKUgHmkgZqUgvKwE54auZgjJD0CLCT7Zsk\nPQWsZfsBSTsSK6D3jvCfqPQwqef9/Qx+QFxW4qonFVGtRjgj3t46F6AEJD0AHGr7/JbzHwO+bHvp\nPMoGI2kdYvri8ww4JK5LdNxsYbvdSN9KC8PUbky7hUJrOCYqNXMwdszPwBjhp9JrgF8A38qiqAlJ\no5poZvu58dYy0ZC0HHAlkSn6Yzr9ReBRSVvanpJNXBOSVrV9Z3KWfLTl2vtt/ziTtHacQbTezczg\nGSAnAKdkUzWUkwg7590b5lLJ3fF7hLXyxhm19RI9V7sx0amZgzFC0h3A3slo5nrg97Y/K2kf4EDb\ni2fW9wqj6G2ukfn0I+lKYmXzsUZFdRpsdS7wiu0tc+prIOlx4K22H2o5/wGi5mCuPMqGksyljida\nLBuLmBeI4rTDXMgHl6TngTVt39tyfmViumBpY4aBaZmu1YCHC/USqGSmZg7GjrMIM5mbiX7yyyV9\nmij82z+nsMQ7cwuYwGwCrN8yNOafqSXzls7f1nW+B1wvaSPbfwWQ9GGi8GvnnMJaSQ//AyQdQfhc\nPA/cV2Bm6yliiNG9LeeXIPbQi0DSycBk22ekwOBmwlzsOUlb2b4pq8BKcdTgYIywfVLT8fWSViKq\nwR+wfUc+ZdM0FTN5bXpIbU3bEB/Are2hJQRdAP8lOkBamZtY7RaB7cMkzU8ECBsD7yYChh1tX5xX\nXXtSAVpRQ6FauBA4Iw3j+WU6txGR4Sip3faDRCYLogVvaWBFoo3xaEJzZQQkjXqYlu3tx1PLeFOD\ng3EizVf4U2YZPY1i5vxlRC3HioRV7RuJFH5JhV4/Ab4jaTcGj+39NmWNF8b23pLOA35F1Eh8xPal\nmWUNIdXIfI7OM0BWyKGrDZ8ltuvOYeDz9EWizqikzqAFCc8QiOmBF9m+T9KZhOFYZXQUMw10vKk1\nB2NIepjtx+DRrSfbvj6fqt5F0m+IPufDGo5+RIvTecDVtrMXesK0VraziRVZwzdiFiIw2CXnxD5J\n27Q5PStRSHctTcGL7WICGUnnApsTv+shM0Bsn5BDVydSMLNsejmltO0PSQ8DuwM/JUyw9rJ9haRV\ngF/Yfl1WgZXiqMHBGCHpk0QV9f9jIA26PpHO28/2N3Jp61VSQLCG7SmSniCK6e6StDoxpfGNeRUO\nJnUtTAsMbT+QUw8MaREbjqLaxCT9G9ja9s9zaxkOSfMCM7da+6btm5dK6cuXdDgx/+UvhOvgCrb/\nK2lXotNig+G+PxeS5iEs1P9o+57cevqJuq0wdnyJCAK+3nTuVEm3MGA+U5k+nmWgzuAvxMqsMVa4\nGC94SYcCx6dg4IGm83MAn7N9ZC5ttmca+a4i+Tfwz9wiRsEPgEuJLaRmtidqZYrwN7F9uKQ7iULJ\ni2w30uMvEwXURZD29H9m++vp7+dW0laipB1Kq42R9H7id92uJmq9LKLGiF794CiR+YCr25y/Fpi3\ny1omCr8C3pqOrwROSENNzkzXSuEwoviwlTkZ6rueBUmzSvqppF6ZdngocGiaU1IybwFubHP+pnSt\nGGz/v1Q4/Y+mc2cXVnOyMdDIFm1L1BfNB+xDTMAshtSNdi4xIXZd4A/EgmYFBrw5epYaHIwdlxFv\n5lbeRxSsFY+k70j6SG4dTexPDDaBeMj+FPgwUei5WyZN7RDtPSRWp5DRrbZfBN6cW8d0sDex6v6b\npNsl/ab5K7e4JmajZcWYmJVwSSwCSTNLOiR5XTwjaZl0/qhUSFsK8zLwN/Nu4OJUv3EF5Y3x/jSw\np+29iK6kr9relMgSF+lvMT3UbYUZIBkcNbibmI/+dgbXHGxEuLr1AisD75H0Wdtr5xZj+8Gm42eB\nT2SUM4RUB+H0dV+a1NZgZiKb0Jpuzsm5RFBVUhV9J66mfSauNH4D7EEEM818Avhd9+V05CDg48Ro\n8e82nb+TqEU4I4eoNjwKbCDpX0RwsEM6/zrgP9lUtWdJwgEXQlujnXkS8QzYp8339Aw1OJgx9mt5\n/QTxgF256dy/gV0pb7DNEGy/FUBSL60wc7IvkTU4k8hsNA/aeQH4k+2SevRnAXaVtDnx4Hq2+WJB\nvhHYPiS3hlFyMOEbsTqR2YJov1wX2CKbqqHsBOxh+6eSmgPWPxBtwqVwMtGh8gzwMLE9A7HdMDmT\npk78jbDJfzh9rUf8PJdiAmTla3AwA5Qy/GWsyWna1LQaHxHb84981/jRmMaYxgvf0vDWL5hVGfCH\naPUJqG1LrwLbt0jagPBk2J5wcrwD2K2wgVZvoKlYtomZiC2QIrD9TUm/Jlbl19ludNs8SGQ/SuIG\non35dqKV+WRJ2xG1JsW0Bb9aanDQB0gadcW07SvHU8so2LfpeAFiZXYNA1s1GwDvAo7qsq7hmItY\nLV7TfFLSu4CZbF+VRVULaT+0J5A0E5GW7VQJvnAOXe2w/XvgY7l1jMDdwNuIFW4zHyQebkXQ1PnT\nuiVzAxGA/XLod2VjT2L7ENunpYXNhkQR+jdzChsLqs/BGFKq1W8P97pfDNzY0h7aqBLe3Pb78ygb\nTBq69TnbrcHBu4FjbK+eR1nvkvry9yTSzIcDxxAtbVsTI5tP6vS93SQF3i+3+d0XFRhKeh+xuv0q\n0QlyGPAmYrthK9vXZZQ3DUkvA4vZntpyfgFgakmfTxOdGhyMESNZ/dreLKO2Uf9B2X55PLVMD5Ke\nIUyQHmg5vxwx9bJd+2DXSZP5VkqW2c3n3wjcVdi0w3XovBrfLouoNkiaAuxr+/IWM6x9gXVs/09m\niUBvBYaS3kYEBqsTxbK3AUfavjarsCbSQmYR239vOb8ZcKHthfIom6ZjZeBe26+k447YvrtLssaF\nuq0wdnyVSIc1rH4/QJPVb05hJT3wp5N/Eq2grd0e76Msg5wngWUYOktjOVqK/nIiaQdiBsA1RLHc\ntUTtwSLAJRmltWMxorgL4mfY8Aq5jMgklMLywB/bnL+X+P0XQ3KbLHI6aw91/twJLEp8tt9J6FXT\n9cZrk7YcepUaHIwdKwENj4CXgDlsP5P20C4lBrEUQXIeexvtV48l7ZUdBnwvtYc2/A7eQrQ47Z5L\nVBsuJYqRtrU9BaZlN06grMKkhovnN1IA+xnCZ/90woGyJB4jPoQfAaYQNR23AWtT0KRLeiQw7AF6\npfNneeDvTccTlhocjB29YvW7OuE2OC8wOzGPfj6iyvqfFFRIY3uSpHuIwrRGyvseYsbCrzt/Z9c5\nkMgO3SvpsXRuccLp7bPZVA1lWcJMBuIDdy7blnQSUfBVhJtj4lJilfsb4OvAOWkOwNLAaTmFtVBs\nYJi8Alaw/Y+RuoBq58/oaPyOW48nIjU4GDsaVr/3MGD1uxrxUCvJ6vck4kG2B+HBsA7xoXE2cGJG\nXW1JQUDRleC2n5S0IfEwW53Uzmb7Z3mVDeEJBoxaHidaGycTwWFRjm62P9d0fEEKujYA7rdd0hZI\nyYHhfsDTTcfFF5jZvlnSspJ2IYLZz9ieKuk9wCO27xrhP9E1JB1IFElOajm/M7Cg7eNz6BorakHi\nGJHsSOe2fYekuYiVw4bA/cD+tltbiLKQpt2tb/vedLyB7XtSr/aZtlca4T+RheSx37oFUsTEu2aS\nzv+6wD8sSecDt9o+UdIhhKtfY4V+W0kFib2EJFF+YNgTSNoEuAq4hTA+Wsn2g5K+QBSifjCrwCZS\nluMjtn/Vcn594Hzby+RRNjbU4KDPkPQPIjh4QNJ9wN62r5H0JuB228WsICXNCRxLVNcv0Hq9lLam\n1JN/EGGZuwiRyn1Q0lHEXmkR1rSKMcKz2/5z0nwgAwHsl20/kVVgCyngfjuwMC2Oc7a/kkNTr9Ir\nLYKS/o+YGnliqotZPf0trQf8yPbimSVOQ9J/iODloZbzSxMj20sfGjYsdVuh/7idsHZ9APgZcLik\n+Yh+5ztzCmvDccCmwF7A94FPEU5ve1LWfICD6QHfetv/ajp+hYJG9baS6gtOJ7a+/sbglLiBYoKD\nlCnchPYFvqdmETUUdTg/G2UVeK4GfLTN+akUVLuVaGx1PdRyfkPKK/CdbmpwMAP0UsFPEwcxsO98\nMDGM5yxi9bhzJk2d2BrYyfZNks4Cfp4yHg8TdQjn5ZU3jV7xre8lDgUOKz1DIGlNosZoTsIp81/E\nQ+w54oGWNThoGg5n4H+Td0iDmYnU/b1dF9aZfxNtrK0P3DWJOpmSOAM4JfnINEY0v4PYUj4lm6ox\nogYHM0YvFvz8pun4r8DmGeWMxPyEqRREV0UjwPoFBbWGUrhvfUopj0gpqeXE/MAPcosYBScBlxNb\nSk8Sk1hfJILuEh4QjeFwIjQ2vxdeIFowS5p2+gPgGEkfIj5PZ5K0EXA84dFREl8jAsHvMfAsfYHI\neB6dS9RYUYODGaDRfpOOJ2WUMlF5kGhde4RY3WxPtLZtTawwSqF033oR2s6mDD2j4WJiFfbgSDdm\nZg1gz+SY9zIwW9ojP5D4ef8opzin4XCSbgS2K62upA1fAr5BjG6emfjbmhk4n8Im26ai4wMkHQGs\nQhSj3mf7ubzKxoYaHIwRJRf8SPoN8C7bT0j6LcNvf6zXPWUjchZRAX4zEaVfnuYqzAoUM14YOBI4\nW9IbiGzBdqnAcydgq6zKgvWA3RgwPToTOK/wB8U9wNGS3kK0W77YfLEgs64XgcbskqlE3cE9RBZh\niVyiWnGPDN2y/QKwu6QjifqDuYlC6ZImXA4idU2VYNA0ptRuhTEieYIv2iY4eD0wxfYceZRBqpr/\nqu3n0nFHbB/SJVnTjaSlCIe8B5xxrHQ7esS3fnYim7ELkf6+HDijlKE7zUh6dJjLtr1k18QMg6Rr\ngUm2z5f0XeDNRJ3BjsDrbL8lo7YTgUNsP5uOO+KMg+GakbSq7baF0ZLeb/vH3dbUidRN9Tkiw9Wu\no6Z1LHpPUYODGaSp4Ock4BCgXcHPG22v2W1tlUonUrvVGUSV/ULNnQyV0ZMGWb3W9o2SFib2xRvt\nobva/sOw/4Hx1XYjsK3tf0u6ic4ZQzvjYLhmJD1OOKC2tgd+ADjHZQ0xO5eo2TqP6E4Y9PO13ToT\npqeowcEMkowwAJYiWlvaFfwcWordr6S1iVGyv205vw4xeraoPWnFtMtOkfmuWUQNQ1qdf5ioXr++\ntHSoYqz4zulrTuJhdnCpdrWV/iLt3/8PsFEqmEbSh4mtsJ1tX5RTXzPJRG5rx0CrCUetOZhBerDg\n55vAMcBvW84vRaTI1u+6og5IOoxI1d9Km8g8NylVO6vtvdPr1xBW2SsTrWzHSXqnMw+MSbq2JeoO\n3kY40O0LXOWCJnZKOhY4IqXBjx3uXtsHdklWzyNpVqJYbo1OKftScEy1nR+4XtLGxJC17wE72r44\nr7oh/JuypsOOKTU4GCOaC36SnWqjmrU0VqF9xfpt6VpJfIJYLXw/t5AObEFUVzf4GFGQtjzRYXEm\n4SWxZfelDeIvRMvt2cAnicI5gLnSWxUowo56AwZaPzcY5r5i/q4kLUK02TWyW4PMhkpoD7X9oqRH\n6JERwrb3lnQeEWi/gbAovjSzrHYcChwqaWfb/8ktZqyp2wpjiKSdiNV3Y5TnfcBxJT3cJP0T2LKN\nH/gGxEpyvjzKhpK0rudCp59JegpYy/YD6fUFwNO290iv1wCutP36jDIbxbIN2v3Bi4hle+LhURKS\nriICwq/Tft+5iIeapN2IIXA7llZfImmbNqdnJeq4rqVpuqXtYkagp86vNxG/8wcZ2lFTUufXdFOD\ngzFC0v7AUcSHxC3p9FsJy9+DbZ+US1szki4kjDveb/vpdG4e4BLgicIGmxwDPGN72A6LXKQ9x3Ub\ndQWp/uQo22em128kPNazdaokHZuM5j7bN4+3lpFI8xQeKjTrNoTk//8227/PrWU4JN0OLEc8dB8m\nRsxPw/ZaOXTBkOB1OIoKYHu582s01G2FsWNvYC/bzS5el0m6CziciIJL4LPETIWHJf0unVuL2Dvb\nJZuq9swO7CFpc+AOhkbmuduv7iEMmU6UtAqxgryx6fpSxFyArJTw0J8O7ifsc6fCtGB2H9vZf44d\neJTOcwtKopgWwFZszzTyXeXR6w//kaiZgzEiTehatZFibjq/PDDZBU3okjQ3YdAzbcQscG4yICmG\nVOTZieztV5K2Jexef0HUa/zW9tZN148Blra9fSaJPUerX0jzZL68ytojaQvgAMIl8U+Z5fQ0qXDy\nauATpXX59CM1czB2PEDY+7YOivkwsRoqBtvPEF0LRVO6q5vtSyS9l3BBvBY4reWW5+iBn3NlhriQ\naAmdIuk5hma3Shm4VjypcPLNuXWMFsXY832Iz/12EzkXzqFrrKjBwdhxGHBhar9p1BxsRFQxF7Vy\nTPu6b6e9d0DRU/BKw/ZPgZ92uHZEl+VMBMzQosmS05v75hYwGlJGZjjb9FL28s8lWm5LGsneiUOJ\n8fEnE1vHxwBvJLYai5oD8Wqo2wpjSDIY2g9YKZ26BzihJGMhSbsCpxM9un9j8AeGbRcVuSdzpk6R\n+XZZRFXGjfQQuwr4bzq1NTEOt7WArv7upwNJ72s5NSsxBvnjxGjsM7qvaiiSTiO2PO8HfsfQ33vu\nOqNpSJoC7Gv78rT9tYbtKZL2Bdax/T+ZJc4QNTjoMyT9CfhOL2QIJO1AOPhdQ3gKXAusACwCXGK7\ntALKygwi6azR3Ffi7z65Y7YGsLm9I4ZF0keBD9tuDR6yUHqdUTNpG2lF249I+ivwXtu3pczsbSW1\nhb8a6rbCGJH2nl+2fU3L+XcRdsVX5VE2hPmJIrpe4EvAfra/kSLzxlTB04me8soISBr1yOASVuMl\nPvSHQ9JcRDp5e2CBNreUkq7vxK+A7+QW0aD0OqMWHgMWJQzPphBbyLcRw+GKKu5+NfRkC0mhfK3D\neQ1zLQcXE2/iXmBZ4Ip0/AIwV+p/PwnYI5uq3uLJ6fiqTD/HApsBexFbIf9L1B/9mUiPF4ukOYiC\nusdza+lRLgXemY6/DnxF0j3A9wk30p6mZg7GjuWBP7Y5fy9hPlIK9wBHS3oLMJmh1dUlVdc/Abw2\nHT8OrEpono+oEM9K+nB9J3Bjw1Cq6do8RNHntTmtVXttJd6DbA3sZPumtCXyc9sPSHqYsNM+L6+8\nQNITDK4vEvG39Rwx6KgYeqXOyPbnmo4vkPQYYft9v+1L8ikbG2pwMHY8CSxDTGFsZjlaimoyszex\nwnlX+mrGlNV69zPi4TsZuAg4RdJm6VzbDoEuswewTTtLV9tPpXHeKxFp58rEZH7COhfgqfQawvvi\nW1kUtWc/BgcHrwB/B35d0rC4keqMMkobkTSdccJMaKzBwdhxKXCypG0bswAkLQecQJM3eG5sL5Fb\nw3TwacIlEeBoIsuxIbE1UkKr0McIy+xOnEy0OxUTHEj6IJ1XZdksdHuYB4GliX3ne4mf7W+IjMK/\nM+oahO1JuTWMkp6qM5rIbeG1W2GMkDQv4e61DlGoArA4EUluZ7uYD4rK2JBStavbfqTD9SWBP9h+\nXXeVtSdlMo4GJhFZj7OIuo51gW/YPiifusFImqdTpb+k5VqdSHMhaT+iEPnUZPN9OZGynxXY3/Yp\nWQUmJO1CzCm5qOX8h4A5bRexRy7pWWAV239Kg9febnuypJWAG2wvllniNHqtLXx6qZmDMcL2k5I2\nJFLe02yJbf8sr7KhSFqMWNm0Wz0emEVUE5JeD+wPHNn6gEhB2MHAybZzF1LNAixErBrbsRBl/Y19\nEtgj7Y/uDBxr+0FJRzKQDi+FKyRtbvu/zSclvYnYUlo8j6zBNA9Us329pBWJavUHbN+RT9kQvkgU\nS7YylehWKCI4oPA6oxYOJTwiejpD0ImSPrh6nlRJf236KhJJmxKrm0eJeoh7iAFBJmYslMD+QNuV\nYwrCXkt82H2668oGcxewOWHW0o4t0j2lsCTwy3T8PAMfwt8nWtpy/zybeQa4RNI2tl8CaKwegR9m\nVTYMth8mph6WxpK0D2IfTtdKofQ6o2Z6qS18uqmtjDOIpA0kbdVybidJD0maKuk7kmbLpa8NXyNW\n3SsB/wHeDyxBbH+cm1NYE+8mipI6cQ5QQj/0mcAhrb9/AElbAwele0rhrwxkCB4B1k/HS1PeZMHt\ngHmB8xSsCtwEXGD7M1mVAZI2k3R36kppvTavpLuSx0kpTAXapblXJyaylsKnGXjgHg2cSBQjXkzY\nKpdEL7WFTzc1czDjHEp8aP0EQNJqwBnEvu49wOeInufDs6gbyspEIR3AS8AcqbL+EKIauARDlEaB\nVyceIzzMs2L7O2mWxmWS7mWglXVFosL6h7ZL+Hk2uAHYBridqDc4KRUorgOM2iypG9h+XtKWxN/W\nD4GNgXOa28cysy/w3WGyW6cTnUHXDPnOPFwAnJqK/BpbnZsAp1DQ6tf2v5qOX6Esj5hWeqkt5GhQ\nLwAAIABJREFUfLqpBYkziKS/AFvbvjW9PhrYxPZb0+sPAUfYXjmjzGkkm89Nbd+TDDs+b/uyNA3t\nl7bnziwRSf8gijjb1mukB/KPbC/YXWXtkbQ98FHC60LAfcD5totKf6cpcjM1pel3ILo/7gdOd+aR\n3e1W4cBiwHVE8D1tGE9uW+LkY/Bu2/d0uL4i4XFRRMpe0muI7aMPEYsCiMzxOcSI5J539Os2kh4d\n5rJL+d2/WmpwMINI+g+wvO1H0+tfAFfZPjq9fiMw2fZrO/5HuoikS4HLbX9P0onAlkTq+wNENXN2\n73JJVwB/tr17h+vfA15v+73dVdbbpO6JR93yRy9JwBKdui66xTCTAxtbHk7HduYpgunvftVOXROp\njXmy7Tm6q2x4JK3AQMH05FQjkR1JL4/mvty/936ibivMOH8j0uCPpuh8LcI+tcFraUk3ZeYABgrR\nDgXmISaz3U8542ePB66T9CRwnO2/AUhaBDgQ2Jko9iuO9KDdFJiDyMQUYzBD9IsvRuw/NzN/upb7\ng7eEOpLR0qik79RS+WYK7MsnTNoETGlkkApBRHHk2cS2VyUzNXMwg0j6FhGJf54o7vs4sap9IV3/\nGDHWc918KnsPSXsS+6GzEs5zJgrUXiRMUrK7z0maj9C4FlHtfwBwJZGqh3gIb1FKS1tamS9i++8t\n55cC7rY9Vx5lvYditPDbgXVb7bGTrfZvCFvtfTLIG4KkOYHTiM8ngBVSG+tpwOO2s+7tJ8vk3YAd\niED1TOC8woJrJB1LbBM/m447UkJb+IxQg4MZRNKCRDHXW4n2q483+2pL+inwq5IMZgAkzQIsyFBX\nrz/nUTQUSW8gHOeWY2Av///ZfmzYb+wSaXtjY2K1szVhSSvC1c3EUJ5nbG+dTSSQto8gdH2X8NNv\nMDPwFsLIZ6NuaxuOFHytR3v3ueG6WcadlMW6DXiZGLrTXIz6KeLnulYj65UbSacAGxHZwauBN6fg\n4H3A4bbXzCowoRh7/UFgF6Kb5nLgDNvXZRWWkPRzosbs3+m4E7a9cbd0jQc1OBgjkjnPM7Zfbjk/\nfzpfRMGPpGWB7xHBTPMHbhF7ub2EpMeBj9q+OQUyjwKb2b4pXV8PuMz2ohllIunGdLgJ8H8MHif7\nApFqPt72/V2W1pHUCnoeMDcDmaMGtp3dtCllXL5FzChprou4BviU7YdyaWslFVB+2PavUsfC6ik4\nWA64zXa7YtCsSFqa6PzaBFiouZOhMv7UmoMxwnbbkbcFvqEnER9k2xF7ojU6fPUsQmQzsP14KlJr\nrmB+hHBJzIrtTQEUUwM/k7vSf5ScQKSWv2T7uZFuzkEq5nuvpNcxkN26v7RUeGIhhtaaAMxFYZ8B\nkhYn6op2JlwRjyMCxCJQzFN4qLWwd6JRg4P+Y01in7RtC1ZlupiJSCs3eJmWFW535QyPe2t88xuA\nU0sNDJpJwcBvc+sYgVuJzqTT0uvGe/N/iWxSVlIx97ZE3cHbgKuILZCrWrOxBXA/TYW9ki4E9ill\nC2msqMFB//FHoIhBQBOE/5X0TDqeBdg5+TTAQFdINiT9CNg5GV0Na3Rke7suyRoN1xDmTA+OdGNl\nVHwJuErSysT79DPpeEMibZ+bvwBPE/U7n2QgyzFXNAAFhWS9Wt1E30vYuU8oanDQfxwAHCvpC7R3\n9cq6UlNMDvyO7f906ssviEeAZi+GvwI7trknJ08ysEpsu/VVKFcAx6UHWLv3aTFj0HsB27+QtAZh\nJDWZaAW+DdjA9uSs4oLXpa9DiMFqrYh4H9eaqC5RCxL7jNTOBh1S3rkLEiW9RLSCTk3GKIvZbrdX\nWpnANL1P21ELZycYkkaVvbB983hrGYn0ubRooyU4FXi+uaQC1LGgZg76j3fmFjACfwY+IOlKYrWw\neGpvGkJuR79eRdLCwJvSyz+WGHzZrkPhxoDUsjyzm0ZfpzbMTxDFiJfZ/kUufQ1KeOhPBwImSWr8\nTGcHvi3p2eabCtumm25q5qBSFJL2IIqmhgtci2i7TFsgI2L71PHWMhrS7IJvEEYzjZ/dy8CFROtd\nL207VEZB6lB5wfae6fVriTHisxP7/CsD77N9ZT6VvUX6mY5IjxUAD6EGB31A2re91/Yr6bgjtu/u\nkqyOpA+wpYA7gM3pMFLW9h+6qasVSaNJI9r2MuMuZhSkquo1iWmBjQr1DQiXx9/b3iGXtnZImoso\nllsSeE3ztVICrtKRdB/wadvXptefIooTV3ZMjzwGWK/R7lqpNKjBQR+Q9m8XTfv4jeE2zRW3xQy0\naUbSx4EfNKdEK6+elPZ8V2saWdLbgKtLsk+WtCZhRT0nkf7+F+Ho+RwwtZSAq3TS73zVxn546lh5\nrGHrnBYLN9leOKPMSoHUmoP+YHngH03HPYHtswEkrQ2slE7fbfu2fKp6mn/SvmPhSaA0456TCOvc\nTxD61ic6Fs4lMh2V0fEfYghYg/WBz7Vczz6mvVIeteinD7A9xfYrTccdv3JrbUbSwpJuIAxmTk1f\nt0r6qaTszoOSNpN0d9rLb702r6S7JL0rh7YOfBk4UdI0O+d0fBxwVDZV7VkDOCG9b18GZnOMRT8Q\n+EpWZb3F70nttSlDtAhwQ9P1ZYki4EplEDVz0CdI+hmwje1/p9fbANfZfj6vsmE5jTASWqXh6JjS\noGcTgcJHMmqDcHD7bjtjlrSfezqxv39N15W1Zy/C5vcRSY1OjyWB/wILpUmYANheK4O+Zl4kBllB\nGOIsCdxDZBGWyCWqBzmSMD/annD1m2S7eZT0tsAtWZQlRjLnaqbXOwB6iRoc9A9vZXBR17nE6qxk\nB7p3A5s3Wz3bvjsVVV2bT9Y0GqO6O3Et8NkuaRkNP84tYDq4HViXsKq9GTgyTUDdEbgzp7BeIg0F\nW5swPforcFHLLb8nxkvnpCe7ZCTN08mxUdJyth/otqaxpAYH/UurBWiJzESLM17iRcrYEluE9voa\nvEQBg5ca2D4it4bp4EsM2E8fBJxDTEC8H9g1l6heJAXXbWep2P5Ol+W009CrLX9XSNq8tWBa0puA\nnwKL55E1NpTwAVupdOIG4BRJr2+cSKORTyL++HLzOLDqMNffTPSSV6YT27favjEdT7X9btvz2F47\ndwtrpZJ4BrgkGU0BIGkl4Cbg4lyixoraytgnpBbGjzOQwruA2DMfNEmsJM96SUsAlwGrMDAKeQki\nrbyN7cdyaQOQdBrwdmLK5X9ars1BpGtvbLSN5UbSzMB+wPa09w6YP4eu0ZCm9r3G9jMj3lzpaSR9\nkM7v0dy1MNNIf+PXA48RxmKrEIuW82zvn1PbWFCDgz5hBK/6BkX5HAAoRrJtDqyYTt1j+/qMkqaR\nbGhvI6rpv05MvITQ+inChXCtUka5SjqSGNF7AtG5cDTwRuD9wJGlGAtJ2gVYC/iV7fMkfRXYn9gG\nvQHYwXZbY6xKb5NcR48GJgF7AGcRHRXrAt+wfVA+dUORNB+RKbgf2Bg4x/bnhv2mHqEGB5XKDCBp\nKWIv/F0M1HGY6FD4VEnDWCRNIebOX5GGxaxhe0r6QF7f9kczS0TSQUSNwS1EgPBDIng5ifi57gP8\nxPZe2URWxg1J9wJH2L4gvUdXt/1gCmznt/3pzPqGtC0TXSDXAT8hpl4CxYyXftXU4KBSGQMkvY5o\nExRwv+3STIUabnkr2X5E0l+ALW3fJmkZ4Hbb82aWiKT7gUPTw2Ed4NfA9rYvTtffA3zb9lI5dfYa\nKQO3NpEpMvAQ8Tsv6gEg6TniPfqwpKnAO23/QdLyRCZpgcz6Gg6zQy6lf4t0m3011G6FSmUMSMHA\nb3PrGIHHiFXOI8AUor3tNiJlW4pF9ZLALyCKEtMI7+bWxTuI/4fKKJG0KXAGMa+k+SH2kKRdbf8s\nm7ih/BWYH3iYeJ+uD/wBWJoyOqz6ZgZFDQ4qlf7hEuAdxGr8NOBcSbsRD+STcgprYlYGByovMLhd\n9CUGJkpWRkDSckS6+9dEMeq9xEN2ZWKL5kpJb7Zdit/JDcA2hM/FWcBJqUBxHWDUZknjRY+Nlp4h\n6rZCpSeRNEfh7o7FI2l9YENiG+Ty3HpgWtp2M2LQEsAvicr1RmfKgoSzZw0QRoGkrxNp+ne0uSai\n2v5u23t3XVwbJM0EzGT7pfR6B9J7FDjd9gs59bWSChLXAxamxRrA9jlZRI0RNTioFIukU9u1AaZR\nvj+pY2YnHh2mhjaYMPu53ULSncAXOwV/krYGvmp7OL+OriFpSeDR1lqIFMgsYfuR9t/ZfdLP7jxi\ncNVTDK5FcMmtwaOhmiD1GZKWkLR40+v1JJ0saY+cujqwpaRBrn4pMLiauiU2aiStLenGYQZE3Sjp\nLTm0tWFpYJn0b+vXMk3/VkbHksDkYa7fSdQilMJDtHcVnT9dK4kTgDOBuW3PZ/t1TV89HRhA/YDt\nR84HvgN8P03kuw64C/iYpEVtH5lV3WC2AH4u6QnbJ0t6LdEi+BLwnrzSeooDgBuGGRB1fbpn+64r\nG6rn4dwaJhhzA88Nc/05YM4uaRkNon03wNzEeOmSeANwqu3hfr49Sw0O+o9VGRi0sj1wp+2NJG0B\nfJuY4lYEqQf/3cCNKd38EaJYbUvbz+ZV11O8BfjaMNcvA3brkpZK91m5eUx3Cwt2VUkHJJ2YDg0c\nlVoaG8xMvId/33Vhw3MNUShZSjHnmFKDg/6juRp8c+LBAFHFXFyLmO07JG1FZDh+DWxVCxGnmzcA\nTw9z/RkK/N1XxoyfMkINR3fltGXN9K+A1YgulQYvEO2Mx3db1AhcARyXxshPpmUIW0lW9K+GGhz0\nH3cBn5B0BfBO4JB0/vVAdktaSbfT/sPqv4TGW6I2qSyf9cL5O/AmOu/Zrgj8o3tyKl1k6dwCRkOj\nuFjSWcBnesRd8Lvp30PbXDM93nJbg4P+4/NEv/vngLObJtxtQ/657gA/zi1gAnI9YUl8deuFVAV+\nULqnMvH4OHB8r+yL99L4ZtsTuqC/tjL2IWk63zzNFr+S3gg8Z3tqLl2V8UHSssDviMFQJzB4QNQB\nwArAOrYfyKOwMl5IehlYrOS/a0k/Ana2/VQ67ojt7bokq++pmYP+RMDa6aFxvu2niX29IlcXaVxv\nO5ORYnqeSyYVdm5OTLr7AQPbNgLuJvzrswcGw2wpDaFuKY2aEiyHR+JJBn7vTw53Y2mk1upNaD9e\nuogpp6+WmjnoM9IUwauJN/NswApp6tkpwGy2P5FVYBOSViA84TdsvUQ1wnlVSFoDWJ74Gd5nu5gK\ncEmHjfZe20eMfFcldfksYvvvubVMNCStCVxJtILORbh6Lkgssqba7mk/jhoc9BmSfkxUru9GFCA2\nRqK+Hfiu7eVz6mtG0i2Ep8HXgL/QsqpsqpeoVCptSMFB88q8LaWZ9khamCiiBfhjidsikm4C7gM+\nQfyMVyc6Fs4FTrGdfRbEjFC3FfqPtwEb2n6hUfWf+BPR8lYSawBr2743t5BKpYc5jB5J1ycXz28A\nOzBQ7f+ypAuBT9ku6f9jDWBP26+k2o7Z0kLrQOBsChgUNSPU4KD/mIn2LTaLM3wvfA7uphCTlkp3\nSUWz+xFGXe32c4ta6RbOD0pceXfgu4TnwVbA/6VzGwCnAKcTQUMpvAi8ko6nEu/Te4hAbIlcosaK\nCd2KUWnLtcC+Ta8taW7gCGL/rCQ+Dxwr6e2SFpA0T/NXbnGVceUwYH/gQmBe4ERiJfYKcHg+WT1H\nr+0bbwXsavsa20+lr2uA3YGtM2tr5XZg3XR8M3CkpI8BJxMzK3qaWnPQZ6ShS9cQBWnLA7emf/8B\nbFzSCiPtl8LQD7hakDjBkTQF2Mf2FZKeBtZIXRf7AOvb/mhmiT1B+htatKS/6+GQ9Ahhjz655fyb\ngSttL97+O7uPpHWA19q+MdVInMPAeOlde70mqgYHfYikWYj03JuJgSa3AeeVZkssaZPhrtu+uVta\nJgKS1iXmU6yQTt1HtLLemk9VeyQ9C6xk+xFJfyEeGLdJWga43fa8mSVWxoE0HfZDwI62/5rOLUra\nw7d9ek59/UQNDiqVPkDSscBniTkKjUExyxJtWMfb/nwube2Q9EdgJ9u/lvQL4Ce2vybpw8BpthfO\nLLEyDiSvi+WINuuGj8mShH36/c33luZ1kfxYXmP7mdxaxoJakNiHSHo98FbaGwsVZ9whaU7aF6Xd\nkUdRbyHp48DewD7A6bZfTOdnBfYCjpF0l+1zMsps5RLgHcSwrdOAcyXtRrwPTsoprDKu9IR9uqRd\ngLWAX9k+T9JXiRqZWSTdAOxgO/usmhmhZg76DEk7E1W/LxA+B81vAJdk3CFpIeAs4D3trteag9Eh\n6TfABbbbPlQl7U98mK3XXWWjR9IGRNX6/bYvz62n0r9IOoiYR3ILESD8EHg/EbSaCMJ/YnuvbCLH\ngBoc9BmSHgW+DXzV9isj3Z8TSecBSxHdFTcB2wKLAAcDB9i+Ip+63iHt369mu+3c+bSPP9n2XN1V\nVqn0HpLuBw61fUEqSvw1sL3ti9P19wDftr1UTp0zSt1W6D/mJPqeiw4MEpsB77N9a6q6ftj2dZKe\nAr5IzFOvjMzLtGzJtDBruqcoJC0PbEr77a8js4iqjCs94m+xJPALgPTZ9BKDWxfvABbLIWwsqT4H\n/ccZRDVwLzAXYS4C8ASwUDqeTKTzKqPjNuBjw1zfMd1TDJJ2JwxljgQ+SGSNGl/vzyitMr70gr/F\nrESBZIMXCEOkBi/R3miup6iZg/7ji8BPJL2beMg2v6mxvX8WVe35I+Gv/ifgD8Cekv5EeJn/JZ+s\nnuN44MeSZgNOsP03mNYidgCxbbNtRn3tOBg4yPYxuYVUusrHgN2Tv8XhRK3MFEl3AOsDpRRMr5z+\nfiB8V1ZMZnIwQVxda81BnyHpYGI19kfgbwwtSNwsi7A2SPofYBbbkyStTUyTnJ+I1He2fWFWgT2E\npL2JIGEWBnz25yVWOQfaPiWXtnakraM1OtVJVCYmveBvkbY4Tftx2I3zPW/SVjMH/ccBhHvXpNxC\nRsL2uU3Hv0vjplcEHrH9j3zKeg/bp0m6hNhSakzevA+42Paj+ZR15CJgC6J4ttI/PEbs1z8CTCHe\nA7cRNsX/Heb7usnSuQV0gxoc9B//JVpweg7bz1HY3ngvYfsxescj4AHgKEnr0377q5T0cmVsKd7f\nwvbDuTV0g7qt0GdI+iKwmO19cmsZjlSp/mbgNtsPSdqSGMQ0B2GU8hXXN++okLTxaO6z/bPx1jJa\nJD00zOWi/Dgq40cKDjek+lt0nRoc9BkptbwZYYB0F0NXZNvl0NWMpG0JY5HG3t4ehHHTjencu4CD\na7Ha6GjaI4X2+6QwAfZIK5XK2FFbGfuPfxOtQTcTkxifbPkqgYOAY4HZCXvfbwNftP1e21sBnwJ2\nziev53gCeBQ4iqg3eF2brxL6x9uiRG4dlfFD0tqSbmw3il3SvOnaW3Jo61dq5qBSHC0jemciuhPW\nsH1nuv5G4G7bc+ZT2TukgTDbArsCbwOuJPwuri55a0bSTsDnGFxAeZzt7+dTVRkPJJ0P3GP7qA7X\nDwJWt719d5X1LzVzUCmRuYCnAZKT4/PAc03XnyemtlVGge0XbF9o+11Et8cdwNeBRyUdnUZ4F0Wa\n9/AtIpDZPn1dDXxb0n45tVXGhbcAlw5z/TJgnS5pqVAzB32JpA/S2Z40u/OgpJeBRW3/Pb1+ilg1\nPJReLwL8ue6Rv3okLU1kDzYBFrL9r8ySBpEKEg9rnRSZJkwebrsv2sn6BUn/IfwN2haipvfr3bbn\n6K6yITpuZ7A3TEdK+CydEYpbMVTGF0n7AEcDk4D3EVMPlyX6iL+RT9kgBNwnqfFHODdweyqsa1yv\nTCfJIfEDxPbCBsRsii1LCwwSiwG/bHP+l0wA3/rKEP5OuKF26lJZkaiRyk1PjJQeC2rmoM+QdC9w\nRJoo9jSxIn9Q0pHA/LY/nVliY3U4IrbPHm8tEwFJ6wG7ADsQVtRnAecWGhQAIOlO4HzbX2k5fzDw\nYdur5VFWGQ8knQUsZ/ttba4J+DnRzrhL18X1KTU46DMkPUek7x6WNBV4p+0/JF+BX9leILPEyhiT\nMi6PAGcDv+t0n+3LuiZqBCR9gBi+cz0Dpl0bEQY529u+JJe2ytgjaVnivflH4IT0L0TG4ABgBWAd\n2w/kUdh/1G2F/uOvRNvaw8QDY31iqNHS1HT9RGZJ4JBhrpuCJsnZvji1ru3HwBTGe4D1bN+eT1ll\nPEidSZsT250/YLAvx93EIqaowKBHxku/ampw0H/cAGwD3E6kl09KBYrrEP4HlQmG7Z7sSrL9O+B/\ncuuodAfbtwKrSlqDaF8VcJ/t3+dV1pHDgP8lMh1fJmq53kgEs0fmkzU21G2FPiP5Bsxk+6X0egeS\nPSlwuu0Xcuqr9C+S5rH9VON4uHsb91UquZA0BdgnjZdu9mbZB1jf9kczS5whanBQqfQJkhaw/c90\nvASwOzGr4vIS5iqkFtbFbE9tsXwedBvV6rlSAL0wXnpGqNsKfYKkN4/itpeAv5ZcxV6ZfiStBlwO\nLCHpfqJr4WrCbMrAfpI+aDt3m9ZmQOO9t2lOIZXKKOiF8dKvmpo56BOaVmIjFR2aKFDcqWFX3E0k\nnTjae23vP55aJgqSriICv68BOwJbAdcQmQOI0bhr214/j8KhSFoSeLTV3jm1tS1h+5E8yiqVQNLX\ngKdsf0XSh4FziVbhJYGTbH8hp74ZpQYHfYKkpUZx20zAIoSf/cLteo7HG0k3jvJW295sXMVMECT9\nA9jM9h2S5gaeAtZNBX9IWpFoY50vp85mmrcYWs4vAEyt2wqV0pC0AWEuNiHGS9fgoDIEScsBf7A9\nV24tlRknZY0WbTxom82v0uvi7KiT5kUaFtpN55cibHTre3MCImld4COErwHEsK3zUydDpYvUmoNK\nOx4iOhgqE4fWVUCRq4KmbSUDRyXTrgYzEwN6Sm1tq8wAko4FPgs8AzyYTm8CfEbS8bY/n01cB5J5\n3KbAwrQMMrTd0+2MNTioDMH2y0TdQXYkrUNnk5HtsojqTSZJahRJzU5MN3w2vS5pwuWa6V8BqxHj\nuhu8QLwvj++2qMr4kizT9wb2IVqqX0znZwX2Ao6RdFfrIK6cSNqdmBz6D8JcrjngNj3udVC3FSrF\nkjwYziGK57YAriXSjYsAl1Sf9dGRfOtHpKSfZ9L8mepn0B9I+g1wge2TOlzfH9jB9nrdVdYZSQ8D\n37R9TG4t40ENDirFIukOYhXxjcY+ObHlcTrwF9uHZRVYqVTGhJTFWq1RB9Pm+jLA5JJqTdIo+TU6\nae516rZCpWSWJcYKQ6SU57JtSScRNtA1OJjA1C2lvuJlWn7HLcya7imJi4iM5rdzCxkPanDQB0i6\nnVEWoNlea5zlTA9PAK9Nx48DqwKTgfmAOXOJqow/I20pZZRWGR9uAz5G5+FgO6Z7SuIBomh2feJz\n6cXmi7ZPzaJqjKjBQX/Q7Hw3O/BJYtLZ/6Vz6wOrAN/ssq6R+BnwTuIP7yLgFEmbpXM/zSmsMu58\nCdivaUvpMzRtKWVVVhkPjgd+LGk24ATbfwOQtCgxsnlfYNuM+tqxB9FZsUn6asZATwcHteagz5D0\nPWK//pCW80cQznO75lE2FEnzA7Pb/nMaGHUgA0Oivmz7iawCK+NG2oNexfafJP0TeLvtyZJWAm6w\nvVhmiZUxRtLeRJAwC/BkOj0v4e55oO1TcmnrR2pw0GdIehJYx/b9LeeXB27t9WEhlYmBpMeA96SA\n4A7gq7YvSC50V9f36cRE0uLAh4iRzRAmSBfbfjSfqpFJtt602n33MnVbof94HtiIWH03sxHwn+7L\n6Yykm4EzgItsP59bT6Wr1C2lPsT2Y0DbdsYSkbQTYTe/fHp9H3Cc7e9nFTYG1OCg/zgZ+JaktYDf\npHNvAXYFjsqmqj23E2nG0yT9EDjD9q8ya6p0h08T9TEARxPFXhsCFwNfziWqMj5I2ng095UwWrxB\n8l44Cvg6cEs6/VbCYGzBTp4NvULdVuhDJG1PFHitlE7dA5xi+4f5VLVH0izANsDHgfcQFcJnAt9v\nFC1VKpXepmlqLHSeHOvC5n88BBzW6tqY3B4Pt710HmVjQw0OKj2DpIWJCuGDCJ/9K4FTbd+QVVil\nUpkhUtHp08Ak4PuEJfEQbD/Z7nwOJP0HWNX2Ay3nlycMm2Zv/529wUwj31KZiEh6jaTFJS3Z/JVb\nVyckrQccQbQ1TQW+SnyA/ERS9dqfIEh6RdLLI3y9lFtnZcxZDPg8MfJ4MlFrtCHwlO0nG185Bbbh\nAcKkq5UPM7Smq+eomYM+I0W1ZzJ06qIoL223MGF+sgtR8HM58D3gmkZVsKS3EtXrc2cTWhkzJL1v\nmMsbEIN5Zur1VVmlM2mRsjOxlTgbcDaRvi8qKJT0AeBC4HoGag42At4BbG+7p826anDQZ0i6hegb\n/hphJjPoDWC7iGmMAJJeAKYQwcwk239vc888wKW2N+22vkp3kPQm4v26NXAecKjth/Oqqow3kpYm\nMgibAAvZ/ldmSUOQtDawH4Prt06wfXs+VWNDDQ76jGQus7bte3NrGQlJb7P989w6KnmQ9HpiK+nj\nhI3yF23fmVdVZTxJDokfILqnNiBmq5xp++qswvqQ2srYf9wNLJhbxGhoBAaSFgLelE7/sV0GoTJx\nkDQvYZ+8N/B74B01SJzYpJqiXYAdgD8BZxGp+aKyBZLmaYwRT1nLjvT6uPGaOegzkpHMl4kP33bD\nQop5Q0uak+gh3pHoToCYzHYOsLft53Jpq4wPkg4kCtP+CnzJ9qWZJVW6QGplfISoL/hdp/tsX9Y1\nUW2Q9DKwmO2pLe2Xg26jsPqtV0MNDvqM9IaGoW/q4t7Qkk4HNicMcZpNRk4FrrO9Vy5tlfEhvT+f\nJ4q8Oo7orSObJxZNn0vDkf3zSdImwC22X0rHHbF9c5dkjQs1OOgzeukNLekfwAdt39QYd9lHAAAH\ndUlEQVRyflPgh7YXyiKsMm5ImsQoxovb3mX81VQqnUldFY+2zlNIcxaWsP1IHmVjQw0OKsUi6Tmi\nePKelvOrAL+xPVceZZVKpd9p3mJoOb8AMDV3lmNGqQWJfYik+YDdGGi/uYuoCC7NZOT/gCMk7WT7\nPwCS5gAOS9cqlcoEQtICtv+ZjpcAdgfmAC4vaa5CQrTPcs1NYUPsXg01c9BnSFqHaAt7noHBS+sS\nf4Bb2L4tl7ZWJK1KaJ0NaPgvrE784b3L9l25tFUqlbFD0mqEydkShLvgDsDVwFzEA3hOYovxx9lE\nJiSdmA4/A3wXaC6MnpkYZPey7Y26rW0sqcFBnyHp54Tt5+4Nx7E03Oh7wDK2RzUdrVukjoWPASum\nU/cA59URzpXKxEHSVQyYs+0IbEUsDHZPt5xGbDGun0fhAJJuTIebEBnMF5ouv0C0Yh5vu6ctlGtw\n0GdIeh5Ys9UESdLKwK2258yjbPqQNEcNECqViUEqPt7M9h2S5gaeAta1/bt0fUXgV7bny6mzGUln\nAZ8pqf17LKmDl/qPp4B2A5aWIKaiFY2k2SQdADyUW0ulUhkz5ie8LbD9DPAs8ETT9SeA12bQ1RHb\nu0zUwABqQWI/ciFwhqTPAr9M5zYCjgMuyKaqiWShejjwTiJNd6ztH0vaBTia6H8/KZ/CSqUyDrSm\nsYtPa6caru2JBddrmq/1uhdHDQ76j88Sf3TnMPD7fxH4FvCFXKJaOBLYE7iOCFwuSim89YH9gYts\ndzTIqVQqPckkSf9Nx7MD306zYCCKkotC0g7E5+g1wBbAtcAKwCJAT09khFpz0LekQr9l08spJVkR\nS3oQ2Nf2Zalj4Q5gErBbq+FIpVLpfVLwPyIlmV9JugM43fY3JD1NdFI9BJwO/MX2YVkFziA1OKgU\nRxrVvLTtx9Pr54H1bE/Oq6xSqVSClNVYxfafJP0TeLvtyZJWAm6wvVhmiTNE3VboMyTNTky72xRY\nmJaiVNtr5dDVwswMbg96CXgmk5ZKpVJpR3OR5OPAqsQwu/kIX4aepgYH/ccZxP7Y/yNMkEpMHYnh\n9x+B3i/4qVQqPc3PiKLpycBFwClp6u07gZ/mFDYW1G2FPkPSk8B7bd8y4s2Z6MX9x0ql0l9Imh+Y\n3fafJc0EHAhsSDg8ftn2E8P+BwqnBgd9hqS7gR1s35FbS6VSqVTKpJog9R8HAMdIWiq3kEqlUqmU\nSa056D9uJfbwH0wjkV9svmh7/iyqKpVKpQeQ9Aoj12rZdk8/X3tafOVVcQHwBuBLwN8osyCxUqlU\nSmXbYa5tAOzDBMjK15qDPiNlCzaw/YcRb65UKpXKiEh6EzFRcmvgPOBQ2w/nVTVj9Hx0U5lu7gXm\nyC2iUqlUeh1Jr5f0XaKdcRZgDdsf7/XAAGpw0I98AThB0tslLSBpnuav3OIqlUqldCTNK+kY4AFg\nFeAdtre2fWdmaWNG3VboM1IxDQytNRBRRDNzlyVVKpVKzyDpQODzxIjpL9m+NLOkcaEGB32GpLcz\nTBGi7Zu7p6ZSqVR6i7TAeh64nhgf35Zed3Ct3Qp9hu2bcmuoVCqVHuYc+qDLq2YO+gxJDwFnAZNs\nP5JbT6VSqVTKoxYk9h+nANsRJkjXSdpB0my5RVUqlUqlHGrmoE+RtBawM/ARYkTy+cCZtm/LqatS\nqVQq+anBQZ8jaVbgk8AxwKxEv+6pwFmub45KpVLpS2pw0KekoGBbYBdi/vivgDOAxYFPATfY/mg+\nhZVKpVLJRQ0O+oy0nbALsZ3wClF5+z3b9zbdsyrwW9vVSbFSqVT6kNrK2H/8FrgO2Av4se0X29zz\nEPCDrqqqVCqVSjHUzEGfIWmpieD7XalUKpXxowYHlUqlUqlUBlG3FfoMSTMD+wHbA0sCr2m+bnv+\nHLoqlUqlUg7VBKn/OAzYH7gQmBc4EfgRUZx4eD5ZlUqlUimFuq3QZ0iaAuxj+wpJTxPzx6dI2gdY\nv7YvViqVSqVmDvqPRQmjI4BniOwBwE+ALbMoqlQqlUpR1OCg/3gMWCwdTwG2SMfrAv/NoqhSqVQq\nRVGDg/7jEuAd6fg04ChJ9xNmSGdmU1WpVCqVYqg1B32OpPWBDYH7bV+eW0+lUqlU8lODg8o0JM1h\n+/ncOiqVSqWSl7qtUEHSbJIOIGyTK5VKpdLn1OCgT0gBwFcl3Srpl5Len87vQgQF+wInZRVZqVQq\nlSKo2wp9gqRjgD2JoUsbAQsBZwHrA18BLrL9cj6FlUqlUimFap/cP3wI2Mn2ZWkk8x3E73911wix\nUqlUKk3UzEGfIOkFYGnbj6fXzwPr2Z48/HdWKpVKpd+oNQf9w8zAC02vXyIcEiuVSqVSGUTdVugf\nBEyS1HBBnB34tqRnm2+yvV3XlVUqlUqlKGpw0D+c3fL63CwqKpVKpVI8teagUqlUKpXKIGrNQaVS\nqVQqlUHU4KBSqVQqlcoganBQqVQqlUplEDU4qFQqlUqlMogaHFQqlUqlUhlEDQ4qlUqlUqkMogYH\nlUqlUqlUBlGDg0qlUqlUKoOowUGlUqlUKpVB/H/EK/ZgogoBKQAAAABJRU5ErkJggg==\n", 2719 | "text/plain": [ 2720 | "" 2721 | ] 2722 | }, 2723 | "metadata": {}, 2724 | "output_type": "display_data" 2725 | } 2726 | ], 2727 | "source": [ 2728 | "#ax = plt.axes()\n", 2729 | "#ax.set_ylim(-100, 100)\n", 2730 | "df['analyst_rating'] = df['analyst'] + ' '+ df['rating']\n", 2731 | "ratings_perf = df[df['analyst_rating']\n", 2732 | " .isin(top_analyst_ratings['analyst_rating'])]\n", 2733 | " .groupby('analyst_rating',as_index=False)['real_perc'].agg({\n", 2734 | " 'mean': 'mean',\n", 2735 | " 'std': 'std',\n", 2736 | " }).sort_values(by='mean')\n", 2737 | "#ratings_perf\n", 2738 | "#ratings_perf.boxplot(ax=ax, by='analyst_rating', column='real_perc', return_type='axes', rot=90)\n", 2739 | "xlabels = ratings_perf['analyst_rating']\n", 2740 | "x = [i for i in range(1, len(xlabels)+1)]\n", 2741 | "print(x)\n", 2742 | "y = ratings_perf['mean']\n", 2743 | "e = ratings_perf['std']\n", 2744 | "plt.errorbar(x, y, e, fmt='o')\n", 2745 | "plt.xlim(0, len(x) + 1)\n", 2746 | "plt.ylim(-50, 150)\n", 2747 | "plt.xticks(x, xlabels, rotation='vertical')" 2748 | ] 2749 | }, 2750 | { 2751 | "cell_type": "code", 2752 | "execution_count": null, 2753 | "metadata": { 2754 | "collapsed": true 2755 | }, 2756 | "outputs": [], 2757 | "source": [] 2758 | } 2759 | ], 2760 | "metadata": { 2761 | "anaconda-cloud": {}, 2762 | "kernelspec": { 2763 | "display_name": "Python [conda root]", 2764 | "language": "python", 2765 | "name": "conda-root-py" 2766 | }, 2767 | "language_info": { 2768 | "codemirror_mode": { 2769 | "name": "ipython", 2770 | "version": 3 2771 | }, 2772 | "file_extension": ".py", 2773 | "mimetype": "text/x-python", 2774 | "name": "python", 2775 | "nbconvert_exporter": "python", 2776 | "pygments_lexer": "ipython3", 2777 | "version": "3.5.2" 2778 | } 2779 | }, 2780 | "nbformat": 4, 2781 | "nbformat_minor": 1 2782 | } 2783 | -------------------------------------------------------------------------------- /ratings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ayoungprogrammer/price-targets/04bd7c5b6341599dcba0dae28199919f724ace11/ratings.png --------------------------------------------------------------------------------