├── .gitignore
├── Bond_ETFs.ipynb
├── ETFs.csv
├── ETFs.ipynb
├── LICENSE
├── Lazy_Backtests.ipynb
├── OLPS_Comparison.ipynb
├── OLPS_algos.png
├── README.md
├── spy_100.py
├── swensen.py
├── vti_agg_5050.py
├── vti_agg_6040.py
└── vti_agg_7030.py
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 |
5 | # C extensions
6 | *.so
7 |
8 | # Distribution / packaging
9 | .Python
10 | env/
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | *.egg-info/
23 | .installed.cfg
24 | *.egg
25 |
26 | # PyInstaller
27 | # Usually these files are written by a python script from a template
28 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
29 | *.manifest
30 | *.spec
31 |
32 | # Installer logs
33 | pip-log.txt
34 | pip-delete-this-directory.txt
35 |
36 | # Unit test / coverage reports
37 | htmlcov/
38 | .tox/
39 | .coverage
40 | .coverage.*
41 | .cache
42 | nosetests.xml
43 | coverage.xml
44 | *,cover
45 |
46 | # Translations
47 | *.mo
48 | *.pot
49 |
50 | # Django stuff:
51 | *.log
52 |
53 | # Sphinx documentation
54 | docs/_build/
55 |
56 | # PyBuilder
57 | target/
58 |
59 | # emacs
60 | *~
61 | #*#
62 | .#*
63 |
64 | # ipython
65 | .ipynb_checkpoints
66 |
67 | # Mac
68 | .DS_Store
69 |
70 |
--------------------------------------------------------------------------------
/ETFs.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Exploratory Data Analysis (EDA) of ETFs"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {
13 | "collapsed": true
14 | },
15 | "source": [
16 | "Original data from https://s3.amazonaws.com/zanran_storage/www.etftopics.com/ContentPages/13968652.xls , modified and available locally as ETFs.csv . \n",
17 | "\n",
18 | "This notebook only works in Quantopian Research, but one only needs to modify the loading of the file to work with it locally."
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 193,
24 | "metadata": {
25 | "collapsed": false
26 | },
27 | "outputs": [],
28 | "source": [
29 | "import numpy as np\n",
30 | "import pandas as pd\n",
31 | "import matplotlib.pyplot as pyplot\n",
32 | "import seaborn as sns"
33 | ]
34 | },
35 | {
36 | "cell_type": "code",
37 | "execution_count": 194,
38 | "metadata": {
39 | "collapsed": false
40 | },
41 | "outputs": [
42 | {
43 | "data": {
44 | "text/html": [
45 | "
\n",
46 | "
\n",
47 | " \n",
48 | " \n",
49 | " | \n",
50 | " Name | \n",
51 | " Index | \n",
52 | " Description | \n",
53 | " Category | \n",
54 | " Provider | \n",
55 | " Expense_Ratio | \n",
56 | " Dividend | \n",
57 | " Div_Yield | \n",
58 | " Market_Cap | \n",
59 | " Shares | \n",
60 | " ... | \n",
61 | " Beta | \n",
62 | " Asset | \n",
63 | " Size | \n",
64 | " Style | \n",
65 | " Region | \n",
66 | " Sector | \n",
67 | " Leveraged | \n",
68 | " Inverse | \n",
69 | " Top_Holdings | \n",
70 | " Chart | \n",
71 | "
\n",
72 | " \n",
73 | " Symbol | \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 | " AAXJ | \n",
100 | " iShares MSCI All Country Asia ex Japan Index Fund | \n",
101 | " MSCI All Country Asia ex Japan Index | \n",
102 | " The index measures the performance of 11 devel... | \n",
103 | " Asia Pacific Equities | \n",
104 | " iShares | \n",
105 | " 0.7400% | \n",
106 | " $0.36 | \n",
107 | " 1.8400% | \n",
108 | " $1,687.89 | \n",
109 | " 31 | \n",
110 | " ... | \n",
111 | " 1 | \n",
112 | " Equity | \n",
113 | " NaN | \n",
114 | " NaN | \n",
115 | " Pacific ex-Japan | \n",
116 | " NaN | \n",
117 | " NaN | \n",
118 | " NaN | \n",
119 | " NaN | \n",
120 | " NaN | \n",
121 | "
\n",
122 | " \n",
123 | " ACWI | \n",
124 | " MSCI All Country World Index Fund | \n",
125 | " MSCI All Country World Index | \n",
126 | " The Index is designed to measure the performan... | \n",
127 | " Global Equities | \n",
128 | " iShares | \n",
129 | " 0.3500% | \n",
130 | " $0.36 | \n",
131 | " 1.4100% | \n",
132 | " $1,176.64 | \n",
133 | " 30 | \n",
134 | " ... | \n",
135 | " 1 | \n",
136 | " Equity | \n",
137 | " Large-Cap | \n",
138 | " Blend | \n",
139 | " Global/Multi-Region | \n",
140 | " NaN | \n",
141 | " NaN | \n",
142 | " NaN | \n",
143 | " NaN | \n",
144 | " NaN | \n",
145 | "
\n",
146 | " \n",
147 | "
\n",
148 | "
2 rows × 21 columns
\n",
149 | "
"
150 | ],
151 | "text/plain": [
152 | " Name \\\n",
153 | "Symbol \n",
154 | "AAXJ iShares MSCI All Country Asia ex Japan Index Fund \n",
155 | "ACWI MSCI All Country World Index Fund \n",
156 | "\n",
157 | " Index \\\n",
158 | "Symbol \n",
159 | "AAXJ MSCI All Country Asia ex Japan Index \n",
160 | "ACWI MSCI All Country World Index \n",
161 | "\n",
162 | " Description \\\n",
163 | "Symbol \n",
164 | "AAXJ The index measures the performance of 11 devel... \n",
165 | "ACWI The Index is designed to measure the performan... \n",
166 | "\n",
167 | " Category Provider Expense_Ratio Dividend Div_Yield \\\n",
168 | "Symbol \n",
169 | "AAXJ Asia Pacific Equities iShares 0.7400% $0.36 1.8400% \n",
170 | "ACWI Global Equities iShares 0.3500% $0.36 1.4100% \n",
171 | "\n",
172 | " Market_Cap Shares ... Beta Asset Size Style \\\n",
173 | "Symbol ... \n",
174 | "AAXJ $1,687.89 31 ... 1 Equity NaN NaN \n",
175 | "ACWI $1,176.64 30 ... 1 Equity Large-Cap Blend \n",
176 | "\n",
177 | " Region Sector Leveraged Inverse Top_Holdings Chart \n",
178 | "Symbol \n",
179 | "AAXJ Pacific ex-Japan NaN NaN NaN NaN NaN \n",
180 | "ACWI Global/Multi-Region NaN NaN NaN NaN NaN \n",
181 | "\n",
182 | "[2 rows x 21 columns]"
183 | ]
184 | },
185 | "execution_count": 194,
186 | "metadata": {},
187 | "output_type": "execute_result"
188 | }
189 | ],
190 | "source": [
191 | "ETFs = local_csv('ETFs.csv', skipinitialspace=True, \n",
192 | " na_values=['n/a','NaN'], thousands=',')\n",
193 | "ETFs = ETFs.set_index('Symbol')\n",
194 | "ETFs[:2]"
195 | ]
196 | },
197 | {
198 | "cell_type": "code",
199 | "execution_count": 195,
200 | "metadata": {
201 | "collapsed": false
202 | },
203 | "outputs": [],
204 | "source": [
205 | "del ETFs['Top_Holdings']\n",
206 | "del ETFs['Chart']"
207 | ]
208 | },
209 | {
210 | "cell_type": "code",
211 | "execution_count": 196,
212 | "metadata": {
213 | "collapsed": false
214 | },
215 | "outputs": [
216 | {
217 | "data": {
218 | "text/plain": [
219 | "Index([u'Name', u'Index', u'Description', u'Category', u'Provider', u'Expense_Ratio', u'Dividend', u'Div_Yield', u'Market_Cap', u'Shares', u'Avg_Vol', u'Beta', u'Asset', u'Size', u'Style', u'Region', u'Sector', u'Leveraged', u'Inverse'], dtype='object')"
220 | ]
221 | },
222 | "execution_count": 196,
223 | "metadata": {},
224 | "output_type": "execute_result"
225 | }
226 | ],
227 | "source": [
228 | "ETFs.columns"
229 | ]
230 | },
231 | {
232 | "cell_type": "code",
233 | "execution_count": 197,
234 | "metadata": {
235 | "collapsed": false
236 | },
237 | "outputs": [],
238 | "source": [
239 | "def p2f(x):\n",
240 | " if type(x) is str:\n",
241 | " return float(x.strip('%'))/100\n",
242 | " else:\n",
243 | " return x / 100\n",
244 | "\n",
245 | "def d2f(x):\n",
246 | " if type(x) is str:\n",
247 | " return float(x.strip('$').replace(',',''))\n",
248 | " else:\n",
249 | " return x\n",
250 | "\n",
251 | "def s2b(x):\n",
252 | " if type(x) is str:\n",
253 | " if x == 'Yes':\n",
254 | " return True\n",
255 | " else:\n",
256 | " return False\n",
257 | " else:\n",
258 | " return False "
259 | ]
260 | },
261 | {
262 | "cell_type": "code",
263 | "execution_count": 198,
264 | "metadata": {
265 | "collapsed": false
266 | },
267 | "outputs": [
268 | {
269 | "data": {
270 | "text/html": [
271 | "\n",
272 | "
\n",
273 | " \n",
274 | " \n",
275 | " | \n",
276 | " Name | \n",
277 | " Index | \n",
278 | " Description | \n",
279 | " Category | \n",
280 | " Provider | \n",
281 | " Expense_Ratio | \n",
282 | " Dividend | \n",
283 | " Div_Yield | \n",
284 | " Market_Cap | \n",
285 | " Shares | \n",
286 | " Avg_Vol | \n",
287 | " Beta | \n",
288 | " Asset | \n",
289 | " Size | \n",
290 | " Style | \n",
291 | " Region | \n",
292 | " Sector | \n",
293 | " Leveraged | \n",
294 | " Inverse | \n",
295 | "
\n",
296 | " \n",
297 | " Symbol | \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 | " AAXJ | \n",
322 | " iShares MSCI All Country Asia ex Japan Index Fund | \n",
323 | " MSCI All Country Asia ex Japan Index | \n",
324 | " The index measures the performance of 11 devel... | \n",
325 | " Asia Pacific Equities | \n",
326 | " iShares | \n",
327 | " 0.0074 | \n",
328 | " 0.36 | \n",
329 | " 0.0184 | \n",
330 | " 1687.89 | \n",
331 | " 31 | \n",
332 | " 527890 | \n",
333 | " 1 | \n",
334 | " Equity | \n",
335 | " NaN | \n",
336 | " NaN | \n",
337 | " Pacific ex-Japan | \n",
338 | " NaN | \n",
339 | " NaN | \n",
340 | " False | \n",
341 | "
\n",
342 | " \n",
343 | " ACWI | \n",
344 | " MSCI All Country World Index Fund | \n",
345 | " MSCI All Country World Index | \n",
346 | " The Index is designed to measure the performan... | \n",
347 | " Global Equities | \n",
348 | " iShares | \n",
349 | " 0.0035 | \n",
350 | " 0.36 | \n",
351 | " 0.0141 | \n",
352 | " 1176.64 | \n",
353 | " 30 | \n",
354 | " 379781 | \n",
355 | " 1 | \n",
356 | " Equity | \n",
357 | " Large-Cap | \n",
358 | " Blend | \n",
359 | " Global/Multi-Region | \n",
360 | " NaN | \n",
361 | " NaN | \n",
362 | " False | \n",
363 | "
\n",
364 | " \n",
365 | " ACWX | \n",
366 | " iShares MSCI ACWI ex US Index Fund | \n",
367 | " MSCI All Country World ex-U.S. Index | \n",
368 | " The index measures the performance of global e... | \n",
369 | " Global Equities | \n",
370 | " iShares | \n",
371 | " 0.0035 | \n",
372 | " 0.52 | \n",
373 | " 0.0147 | \n",
374 | " 654.07 | \n",
375 | " 17 | \n",
376 | " 161924 | \n",
377 | " 1 | \n",
378 | " Equity | \n",
379 | " Large-Cap | \n",
380 | " Blend | \n",
381 | " Ex-U.S. | \n",
382 | " NaN | \n",
383 | " NaN | \n",
384 | " False | \n",
385 | "
\n",
386 | " \n",
387 | "
\n",
388 | "
"
389 | ],
390 | "text/plain": [
391 | " Name \\\n",
392 | "Symbol \n",
393 | "AAXJ iShares MSCI All Country Asia ex Japan Index Fund \n",
394 | "ACWI MSCI All Country World Index Fund \n",
395 | "ACWX iShares MSCI ACWI ex US Index Fund \n",
396 | "\n",
397 | " Index \\\n",
398 | "Symbol \n",
399 | "AAXJ MSCI All Country Asia ex Japan Index \n",
400 | "ACWI MSCI All Country World Index \n",
401 | "ACWX MSCI All Country World ex-U.S. Index \n",
402 | "\n",
403 | " Description \\\n",
404 | "Symbol \n",
405 | "AAXJ The index measures the performance of 11 devel... \n",
406 | "ACWI The Index is designed to measure the performan... \n",
407 | "ACWX The index measures the performance of global e... \n",
408 | "\n",
409 | " Category Provider Expense_Ratio Dividend Div_Yield \\\n",
410 | "Symbol \n",
411 | "AAXJ Asia Pacific Equities iShares 0.0074 0.36 0.0184 \n",
412 | "ACWI Global Equities iShares 0.0035 0.36 0.0141 \n",
413 | "ACWX Global Equities iShares 0.0035 0.52 0.0147 \n",
414 | "\n",
415 | " Market_Cap Shares Avg_Vol Beta Asset Size Style \\\n",
416 | "Symbol \n",
417 | "AAXJ 1687.89 31 527890 1 Equity NaN NaN \n",
418 | "ACWI 1176.64 30 379781 1 Equity Large-Cap Blend \n",
419 | "ACWX 654.07 17 161924 1 Equity Large-Cap Blend \n",
420 | "\n",
421 | " Region Sector Leveraged Inverse \n",
422 | "Symbol \n",
423 | "AAXJ Pacific ex-Japan NaN NaN False \n",
424 | "ACWI Global/Multi-Region NaN NaN False \n",
425 | "ACWX Ex-U.S. NaN NaN False "
426 | ]
427 | },
428 | "execution_count": 198,
429 | "metadata": {},
430 | "output_type": "execute_result"
431 | }
432 | ],
433 | "source": [
434 | "# Apply conversions\n",
435 | "ETFs.Expense_Ratio = ETFs.Expense_Ratio.apply(p2f) \n",
436 | "ETFs.Dividend = ETFs.Dividend.apply(d2f)\n",
437 | "ETFs.Div_Yield = ETFs.Div_Yield.apply(p2f)\n",
438 | "ETFs.Market_Cap = ETFs.Market_Cap.apply(d2f)\n",
439 | "ETFs.Inverse = ETFs.Inverse.apply(s2b)\n",
440 | "ETFs[:3]"
441 | ]
442 | },
443 | {
444 | "cell_type": "code",
445 | "execution_count": 199,
446 | "metadata": {
447 | "collapsed": false
448 | },
449 | "outputs": [
450 | {
451 | "data": {
452 | "text/plain": [
453 | "1020"
454 | ]
455 | },
456 | "execution_count": 199,
457 | "metadata": {},
458 | "output_type": "execute_result"
459 | }
460 | ],
461 | "source": [
462 | "len(ETFs.index)"
463 | ]
464 | },
465 | {
466 | "cell_type": "code",
467 | "execution_count": 223,
468 | "metadata": {
469 | "collapsed": false
470 | },
471 | "outputs": [
472 | {
473 | "data": {
474 | "text/plain": [
475 | "Leveraged Equities 120\n",
476 | "Emerging Markets Equities 46\n",
477 | "Energy Equities 40\n",
478 | "Large Cap Value Equities 36\n",
479 | "Technology Equities 32\n",
480 | "Large Cap Blend Equities 30\n",
481 | "Currency 29\n",
482 | "Financials Equities 28\n",
483 | "Europe Equities 25\n",
484 | "Foreign Large Cap Equities 25\n",
485 | "Health & Biotech Equities 22\n",
486 | "National Munis 21\n",
487 | "Commodities 19\n",
488 | "All Cap Equities 19\n",
489 | "Commodity Producers Equities 18\n",
490 | "Precious Metals 18\n",
491 | "Government Bonds 18\n",
492 | "Leveraged Commodities 18\n",
493 | "Large Cap Growth Equities 18\n",
494 | "Asia Pacific Equities 17\n",
495 | "China Equities 16\n",
496 | "Quantitative Methodology Indexes 16\n",
497 | "Global Equities 16\n",
498 | "Oil & Gas 15\n",
499 | "Inverse Equities 15\n",
500 | "Small Cap Blend Equities 15\n",
501 | "Consumer Discretionary Equities 14\n",
502 | "Miscellaneous Sector Equities 14\n",
503 | "Utilities Equities 14\n",
504 | "Real Estate 12\n",
505 | " ... \n",
506 | "Consumer Staples Equities 11\n",
507 | "Corporate Bonds 11\n",
508 | "Latin America Equities 10\n",
509 | "Materials 10\n",
510 | "Foreign Small & Mid Cap Equities 10\n",
511 | "Diversified Portfolio 10\n",
512 | "Small Cap Value Equities 10\n",
513 | "Global Real Estate 9\n",
514 | "Mid Cap Value Equities 9\n",
515 | "Metals 9\n",
516 | "Communications Equities 8\n",
517 | "Inverse Commodities 8\n",
518 | "Mid Cap Growth Equities 8\n",
519 | "Japan Equities 8\n",
520 | "Leveraged Real Estate 7\n",
521 | "Small Cap Growth Equities 7\n",
522 | "Money Market 7\n",
523 | "Leveraged Currency 6\n",
524 | "Inflation-Protected Bonds 6\n",
525 | "Hedge Fund 6\n",
526 | "Long-Short 6\n",
527 | "Preferred Stock/Convertible Bonds 5\n",
528 | "International Government Bonds 4\n",
529 | "Transportation Equities 4\n",
530 | "Mortgage Backed Securities 3\n",
531 | "High Yield Bonds 3\n",
532 | "California Munis 3\n",
533 | "New York Munis 3\n",
534 | "Volatility 2\n",
535 | "Emerging Markets Bonds 2\n",
536 | "dtype: int64"
537 | ]
538 | },
539 | "execution_count": 223,
540 | "metadata": {},
541 | "output_type": "execute_result"
542 | }
543 | ],
544 | "source": [
545 | "ETFs.Category.value_counts()"
546 | ]
547 | },
548 | {
549 | "cell_type": "code",
550 | "execution_count": 222,
551 | "metadata": {
552 | "collapsed": false
553 | },
554 | "outputs": [
555 | {
556 | "data": {
557 | "text/plain": [
558 | "iShares 201\n",
559 | "Invesco PowerShares 146\n",
560 | "ProShares 111\n",
561 | "State Street 89\n",
562 | "Wisdom Tree 52\n",
563 | "Vanguard 46\n",
564 | "First Trust 44\n",
565 | "Rydex 40\n",
566 | "Barclays iPath 38\n",
567 | "Claymore 36\n",
568 | "Direxion 34\n",
569 | "Van Eck 29\n",
570 | "Merrill Lynch HOLDRs 17\n",
571 | "ELEMENTS 16\n",
572 | "UBS 13\n",
573 | "PIMCO 10\n",
574 | "Global X 10\n",
575 | "IndexIQ 9\n",
576 | "Charles Schwab 8\n",
577 | "Grail Advisors 7\n",
578 | "US Commodity Funds 7\n",
579 | "EG Shares 6\n",
580 | "XShares 6\n",
581 | "RevenueShares 6\n",
582 | "GlobalShares 5\n",
583 | "FaithShares 5\n",
584 | "ETF Securities 4\n",
585 | "MacroMarkets 4\n",
586 | "Jefferies 4\n",
587 | "Credit Suisse 2\n",
588 | "JP Morgan 2\n",
589 | "Javelin Funds 2\n",
590 | "Geary Advisors 2\n",
591 | "ALPS 2\n",
592 | "Goldman Sachs 2\n",
593 | "GreenHaven 1\n",
594 | "Fidelity 1\n",
595 | "AdvisorShares 1\n",
596 | "Sprott Asset Management 1\n",
597 | "U.S. One 1\n",
598 | "dtype: int64"
599 | ]
600 | },
601 | "execution_count": 222,
602 | "metadata": {},
603 | "output_type": "execute_result"
604 | }
605 | ],
606 | "source": [
607 | "ETFs.Provider.value_counts()"
608 | ]
609 | },
610 | {
611 | "cell_type": "code",
612 | "execution_count": 202,
613 | "metadata": {
614 | "collapsed": false
615 | },
616 | "outputs": [
617 | {
618 | "data": {
619 | "text/plain": [
620 | ""
621 | ]
622 | },
623 | "execution_count": 202,
624 | "metadata": {},
625 | "output_type": "execute_result"
626 | },
627 | {
628 | "data": {
629 | "image/png": [
630 | "iVBORw0KGgoAAAANSUhEUgAAA1AAAAHiCAYAAADmhi1mAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
631 | "AAALEgAACxIB0t1+/AAAG7tJREFUeJzt3X+Q3Hd93/GXYqFg4aswUBmQXQTU94mNoRBlHNpMC81A\n",
632 | "x4UW6GQGAg2YH02YQqCTaVNsmBD6i18pDA0ZSCk/akhtcFNwXCcMGNpQaPhRbgjgsfuhBt3FdpDE\n",
633 | "GBDCxsg/1D9uDWcjn96S9rvfle7x+Ee7393v7Xvvc+vbp7+7e5sOHToUAAAAjuynxh4AAADgRCGg\n",
634 | "AAAAigQUAABAkYACAAAoElAAAABFAgoAAKBo81BfuLV2VpL3J9me5FCSd/Xef7e19qAkH0ryiCTL\n",
635 | "SZ7de//uZJ+Lk7w4yZ1JXtl7//hQ8wEAABytIY9A3Z7kN3rvj0nyxCQvb62dk+SiJFf33heTfHJy\n",
636 | "Pq21c5M8J8m5SS5I8o7WmiNkAADA3BgsUHrve3rvfz45/f0k1yXZkeQZSS6ZXO2SJM+anH5mkst6\n",
637 | "77f33peTXJ/k/KHmAwAAOFozOcLTWtuZ5AlJPp/kjN773slFe5OcMTn98CQ3rtntxqwGFwAAwFwY\n",
638 | "7D1Qd2utnZbkvyX5Z733A621H13Wez/UWju0zu7rXZalpaV1LwcAANi1a9emaX2tQQOqtXa/rMbT\n",
639 | "B3rvV0w2722tPbT3vqe19rAk+ybbb0py1prdz5xsW9euXbumOTIzsrS0ZO1OYNbvxGb9TlzW7sRm\n",
640 | "/U5c1u7EtrS0NNWvN9hL+Fprm5K8J8m1vfe3rbnoyiQXTk5fmOSKNdt/ubW2pbX2yCRnJ/nCUPMB\n",
641 | "AAAcrSGPQP1Ckl9J8pXW2pcm2y5O8sYkl7fWXpLJx5gnSe/92tba5UmuTXJHkpf13r1EDwAAmBuD\n",
642 | "BVTv/TO57yNcT7mPfV6f5PVDzQQwawcPHszy8vLYY9zDyspKFhYWZn67O3fuzJYtW2Z+uwAwTYN/\n",
643 | "iATARra8vJznX3xptm7bPvYo93TVnpne3K379+UDb3heFhcXZ3q7ADBtAgpgYFu3bc9pp/urDABw\n",
644 | "MpjJ34ECAAA4GQgoAACAIgEFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAAFAko\n",
645 | "AACAIgEFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAAFAkoAACAIgEFAABQJKAA\n",
646 | "AACKBBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAAFAkoAACAIgEFAABQJKAAAACKBBQAAECRgAIA\n",
647 | "ACgSUAAAAEUCCgAAoEhAAQAAFAkoAACAIgEFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAA\n",
648 | "oEhAAQAAFAkoAACAIgEFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAAFAkoAACA\n",
649 | "IgEFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAAFAkoAACAIgEFAABQJKAAAACK\n",
650 | "BBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAAFAkoAACAIgEFAABQJKAAAACKBBQAAECRgAIAACgS\n",
651 | "UAAAAEUCCgAAoEhAAQAAFAkoAACAIgEFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAAoEhA\n",
652 | "AQAAFAkoAACAIgEFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAAFAkoAACAIgEF\n",
653 | "AABQtHnsAQA4+d115x3ZvXv32GPMjZ07d2bLli1jjzGqgwcPZnl5eewxZmplZSULCwuHvczPBJw4\n",
654 | "BBQAg7vt+zfnte/6bLZu+/rYo4zu1v378oE3PC+Li4tjjzKq5eXlPP/iS7N12/axR5mtq/b8xCY/\n",
655 | "E3BiEVAAzMTWbdtz2uk7xh6DOeJnAjgReQ8UAABAkYACAAAoElAAAABFAgoAAKBIQAEAABQJKAAA\n",
656 | "gCIBBQAAUDTo34Fqrb03ydOT7Ou9P3ay7XVJ/kmSb02u9ure+0cnl12c5MVJ7kzyyt77x4ecDwAA\n",
657 | "4GgM/Yd035fk7Unev2bboSRv7b2/de0VW2vnJnlOknOT7EjyidbaYu/9roFnBAAAKBn0JXy9908n\n",
658 | "+c5hLtp0mG3PTHJZ7/323vtykuuTnD/geAAAAEdlrPdAvaK19uXW2ntaaw+cbHt4khvXXOfGrB6J\n",
659 | "AgAAmAtDv4TvcN6Z5F9PTv+bJG9J8pL7uO6hI32xpaWlKY3FrFm7E5v1q1lZWRl7BObQNddckwMH\n",
660 | "DhzTvifLY89j456O52eC2ThZHnscv5kHVO99392nW2vvTvLfJ2dvSnLWmqueOdm2rl27dk11PmZj\n",
661 | "aWnJ2p3ArF/dwsJCctWescdgzpx33nlZXFw86v1Opseex8Y9HevPBLNxMj32NqJpx+/MX8LXWnvY\n",
662 | "mrP/KMlXJ6evTPLLrbUtrbVHJjk7yRdmPR8AAMB9GfpjzC9L8qQkD2mt3ZDkt5M8ubX2+Ky+PG93\n",
663 | "kpcmSe/92tba5UmuTXJHkpf13o/4Ej4AAIBZGTSgeu/PPczm965z/dcnef1wEwEAABy7sT6FDwAA\n",
664 | "4IQjoAAAAIoEFAAAQJGAAgAAKBJQAAAARTP/Q7rAxnDw4MEsLy+PPcbodu/ePfYIAMAUCShgEMvL\n",
665 | "y3n+xZdm67btY48yqptvvC4PPvOcsccAAKZEQAGD2bpte047fcfYY4zq1v17xx4BAJgi74ECAAAo\n",
666 | "ElAAAABFAgoAAKBIQAEAABQJKAAAgCIBBQAAUCSgAAAAigQUAABAkYACAAAoElAAAABFAgoAAKBI\n",
667 | "QAEAABQJKAAAgCIBBQAAUCSgAAAAigQUAABAkYACAAAoElAAAABFAgoAAKBIQAEAABQJKAAAgCIB\n",
668 | "BQAAUCSgAAAAigQUAABAkYACAAAoElAAAABFAgoAAKBIQAEAABQJKAAAgCIBBQAAUCSgAAAAigQU\n",
669 | "AABAkYACAAAoElAAAABFAgoAAKBIQAEAABQJKAAAgCIBBQAAUCSgAAAAigQUAABAkYACAAAoElAA\n",
670 | "AABFm8cegJPDwYMHs7y8XL7+yspKFhYWhhtoRDt37syWLVvGHgMAgAEIKKZieXk5z7/40mzdtr2+\n",
671 | "01V7hhtoJLfu35cPvOF5WVxcHHsUAAAGIKCYmq3btue003eMPQYAAAzGe6AAAACKBBQAAECRgAIA\n",
672 | "ACgSUAAAAEUCCgAAoEhAAQAAFAkoAACAIgEFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAA\n",
673 | "oEhAAQAAFAkoAACAIgEFAABQJKAAAACKBBQAAECRgAIAACjaPPYAcDK56847snv37rHHGNzKykoW\n",
674 | "FhbWvc5G+D4AABuPgIIpuu37N+e17/pstm77+tijDO+qPetefPON1+XBZ54zo2EAAGZDQMGUbd22\n",
675 | "PaedvmPsMUZ36/69Y48AADB13gMFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAA\n",
676 | "FAkoAACAIgEFAABQJKAAAACKBBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAAFG0+0hVaa2ckeUuS\n",
677 | "R/Te/3Zr7XFJ/lbv/fcHnw4AAGCOVI5A/ack/zvJAyfne5KXDzYRAADAnKoE1I7e+zuT3JEkvfcf\n",
678 | "Jrlr0KkAAADmUCWg7mitbbr7TGvtgetdGQAA4GRVCagPJ/n9JH+ltfbCJFcned+QQwEAAMyjIwZU\n",
679 | "7/1NST6dZCnJ05L8h97724YeDAAAYN4c8VP4kqT3/gdJ/mDgWQAAAObaEY9AtdYWW2ufaa0tT87/\n",
680 | "bGvtdQPPBQAAMHcq74F6Z5J/l+S7k/NfTvLswSYCAACYU5WA2tZ7/2iSQ0nSe78zycFBpwIAAJhD\n",
681 | "1Y8x33L3mdbajiR3DjcSAADAfKq+hO/DSR7SWvtXST6T5C2DTgUAADCHjvgpfL33S1pr30jyD5Oc\n",
682 | "muQFvfdPV754a+29SZ6eZF/v/bGTbQ9K8qEkj0iynOTZvffvTi67OMmLs3qE65W9948f9T0CAAAY\n",
683 | "yLoB1VrbnOQLvfefzerfgjpa70vy9iTvX7PtoiRX997f3Fp71eT8Ra21c5M8J8m5SXYk+URrbbH3\n",
684 | "ftcx3C4AAMDUrfsSvt77HUm+31o79Vi++ORI1XfutfkZSS6ZnL4kybMmp5+Z5LLe++299+Uk1yc5\n",
685 | "/1huFwAAYAiVP6T7tSSfaq39YZJbJtsO9d7fcYy3eUbvfe/k9N4kZ0xOPzzJ59Zc78asHokCAACY\n",
686 | "C5WA2pzk2iTnTPvGe++HWmuH1rnKepcBAADMVOVDJF445dvc21p7aO99T2vtYUn2TbbflOSsNdc7\n",
687 | "c7JtXUtLS1Mej2OxsrIy9ggAJ4xrrrkmBw4cOKZ9T5bfe35v3NPx/EwwGyfLY4/jd8SAaq29PD95\n",
688 | "JGh/Vj9c4v8dw21emeTCJG+a/HvFmu2XttbemtWX7p2d5AtH+mK7du06hhGYtoWFheSqPWOPAXBC\n",
689 | "OO+887K4uHjU+y0tLZ00v/f83rinY/2ZYDZOpsfeRjTt+K38HagLkrwhyVOSPDXJ67MaPv+jtfaS\n",
690 | "9XZsrV2W5M9WT7YbWmsvSvLGJE9trX0tyS9Ozqf3fm2Sy7P6csGPJnlZ791L+AAAgLlReQ/UXUke\n",
691 | "23v/iyRprZ2V5B1Z/YS8TyR5z33t2Ht/7n1c9JT7uP7rsxpoAAAAc6dyBOrRd8dTkvTeb0jyyN77\n",
692 | "N5PcPthkAAAAc6ZyBGpva+3VWf2juJuy+vK9fa21U+JT8gAAgA2kcgTqBUl2JbkmyVeT/Nxk2/0m\n",
693 | "/wIAAGwIlY8xvynJL93HxV+d7jgAAADzq/Ix5g9IcnGSR/Xen9da+5kkP9N7v+IIuwIAAJxUKi/h\n",
694 | "e2dWX673+Mn5m5K8bqiBAAAA5lUloB7Xe39Vkh8mSe/9QFY/TAIAAGBDqQTUD9eeaa3dv7gfAADA\n",
695 | "SaUSQv+rtfaaJPdvrT05yX9N8keDTgUAADCHKgH16sm/30vy5iSfj/dAAQAAG9C6n8LXWjs/yb9I\n",
696 | "8pjJpmuSfKz3fsfQgwEAAMyb+zwC1Vr7m0k+luTrSV6T5LeSfCPJx1trT5zNeAAAAPNjvSNQr0ry\n",
697 | "4t77R9Zs+3Br7XNJLkryrEEnAwAAmDPrvQfqMfeKpyRJ7/2P8uOX9AEAAGwY6wXULcd4GQAAwElp\n",
698 | "vZfw/XRr7dzDbN+U5KcHmgcAAGBurRdQpyb541kNAgAAMO/uM6B67ztnOAcAAMDcq/whXQAAACKg\n",
699 | "AAAAygQUAABAkYACAAAoElAAAABFAgoAAKBIQAEAABQJKAAAgCIBBQAAUCSgAAAAigQUAABAkYAC\n",
700 | "AAAoElAAAABFAgoAAKBIQAEAABQJKAAAgCIBBQAAUCSgAAAAigQUAABAkYACAAAoElAAAABFAgoA\n",
701 | "AKBIQAEAABQJKAAAgCIBBQAAUCSgAAAAigQUAABAkYACAAAoElAAAABFAgoAAKBIQAEAABQJKAAA\n",
702 | "gCIBBQAAUCSgAAAAigQUAABAkYACAAAoElAAAABFAgoAAKBIQAEAABQJKAAAgCIBBQAAUCSgAAAA\n",
703 | "igQUAABAkYACAAAoElAAAABFAgoAAKBIQAEAABQJKAAAgCIBBQAAUCSgAAAAigQUAABAkYACAAAo\n",
704 | "ElAAAABFAgoAAKBIQAEAABQJKAAAgCIBBQAAUCSgAAAAigQUAABAkYACAAAoElAAAABFAgoAAKBI\n",
705 | "QAEAABQJKAAAgCIBBQAAUCSgAAAAijaPPcCJ7mNX/89873vfH3uM0e3f/+2xRwAAgMEJqOP0n6/4\n",
706 | "QvZvftTYY4xu07e+ktz/0WOPAQAAgxJQx+mUUzbnlM1bxh5jdId+yo8SAAAnP++BAgAAKBJQAAAA\n",
707 | "RQIKAACgSEABAAAUCSgAAIAiAQUAAFAkoAAAAIoEFAAAQJGAAgAAKBJQAAAARQIKAACgSEABAAAU\n",
708 | "CSgAAIAiAQUAAFAkoAAAAIoEFAAAQNHmsW64tbac5HtJ7kxye+/9/Nbag5J8KMkjkiwneXbv/btj\n",
709 | "zQgAALDWmEegDiV5cu/9Cb338yfbLkpyde99McknJ+cBAADmwtgv4dt0r/PPSHLJ5PQlSZ4123EA\n",
710 | "AADu29hHoD7RWvtia+1XJ9vO6L3vnZzem+SMcUYDAAD4SaO9ByrJL/Tev9la+6tJrm6t/d+1F/be\n",
711 | "D7XWDh3piywtLQ02YMUtt96SbBt1hLlw220/SLaMPQXAieGaa67JgQMHjmnfsX/vTcvKysrYI8yV\n",
712 | "4/mZYDZOlscex2+0gOq9f3Py77daax9Jcn6Sva21h/be97TWHpZk35G+zq5duwaedH0P2Pqn2T/q\n",
713 | "BPPh/vc/NbeMPQTACeK8887L4uLiUe+3tLQ0+u+9aVlYWEiu2jP2GHPjWH8mmI2T6bG3EU07fkd5\n",
714 | "CV9rbWtrbWFy+gFJ/l6Srya5MsmFk6tdmOSKMeYDAAA4nLGOQJ2R5COttbtn+C+994+31r6Y5PLW\n",
715 | "2ksy+RjzkeYDAAD4CaMEVO99d5LHH2b7t5M8ZfYTAQAAHNnYH2MOAABwwhBQAAAARQIKAACgSEAB\n",
716 | "AAAUCSgAAIAiAQUAAFAkoAAAAIoEFAAAQJGAAgAAKBJQAAAARZvHHgAANpK77rwju3fvPqZ9V1ZW\n",
717 | "srCwMOWJxnGs3wOAsQkoAJih275/c177rs9m67avH9sXuGrPdAcayc03XpcHn3nO2GMAHDUBBQAz\n",
718 | "tnXb9px2+o6xxxjVrfv3jj0CwDHxHigAAIAiAQUAAFAkoAAAAIoEFAAAQJGAAgAAKBJQAAAARQIK\n",
719 | "AACgSEABAAAUCSgAAIAiAQUAAFAkoAAAAIoEFAAAQJGAAgAAKBJQAAAARQIKAACgSEABAAAUCSgA\n",
720 | "AIAiAQUAAFAkoAAAAIoEFAAAQJGAAgAAKBJQAAAARQIKAACgSEABAAAUCSgAAIAiAQUAAFAkoAAA\n",
721 | "AIoEFAAAQJGAAgAAKBJQAAAARQIKAACgSEABAAAUCSgAAIAiAQUAAFAkoAAAAIoEFAAAQJGAAgAA\n",
722 | "KBJQAAAARQIKAACgSEABAAAUCSgAAIAiAQUAAFAkoAAAAIoEFAAAQJGAAgAAKBJQAAAARQIKAACg\n",
723 | "SEABAAAUCSgAAIAiAQUAAFAkoAAAAIoEFAAAQJGAAgAAKBJQAAAARQIKAACgSEABAAAUCSgAAIAi\n",
724 | "AQUAAFAkoAAAAIoEFAAAQJGAAgAAKBJQAAAARQIKAACgSEABAAAUCSgAAIAiAQUAAFAkoAAAAIoE\n",
725 | "FAAAQJGAAgAAKBJQAAAARQIKAACgSEABAAAUCSgAAIAiAQUAAFAkoAAAAIoEFAAAQJGAAgAAKBJQ\n",
726 | "AAAARQIKAACgSEABAAAUCSgAAIAiAQUAAFAkoAAAAIoEFAAAQNHmsQcAAICDBw9meXl57DEOa2Vl\n",
727 | "JQsLCzO7vZ07d2bLli0zuz2OjoACAGB0y8vLef7Fl2brtu1jj3J4V+2Zyc3cun9fPvCG52VxcXEm\n",
728 | "t8fRE1AAAMyFrdu257TTd4w9BqzLe6AAAACKBBQAAECRgAIAACiau/dAtdYuSPK2JKckeXfv/U0j\n",
729 | "jwQAAJBkzo5AtdZOSfJ7SS5Icm6S57bWzhl3KgAAgFVzFVBJzk9yfe99ufd+e5IPJnnmyDMBAAAk\n",
730 | "mb+X8O1IcsOa8zcm+fmRZik5eGBPNp3yw7HHGN3tt3wrt/7g1LHHGN0PDnw7yaaxx5gLvherfB9W\n",
731 | "+T78mO/FKt+HH7t1/77s3r177DFGt3v37ty6f9/YY4zO92D+bTp06NDYM/xIa+2XklzQe//Vyflf\n",
732 | "SfLzvfdXHO76S0tL8zM8AAAwl3bt2jW1/2Mzb0egbkpy1przZ2X1KNRhTfMbAQAAcCTzFlBfTHJ2\n",
733 | "a21nkr9M8pwkzx11IgAAgIm5+hCJ3vsdSX49yceSXJvkQ73368adCgAAYNVcvQcKAABgns3VESgA\n",
734 | "AIB5JqAAAACKBBQAAEDR3HwKX2vtgiRvS3JKknf33t90mOv8bpK/n+TWJC/svX9pvX1baw9K8qEk\n",
735 | "j0iynOTZvffvDn9vNp6B1u93kvyDJAeTfD3Ji3rv+2dwdzaUIdZuzX7/PMnvJHlI7/3bg96RDWqo\n",
736 | "9WutvSLJy5LcmeSPe++vGvq+bEQD/bfz/CS/l+R+Se5I8rLe+/+Zwd3ZUI5z7d6b5OlJ9vXeH7vm\n",
737 | "+p63zMhA6+d5ywwMsXZr9is9b5mLI1CttVOy+h/7C5Kcm+S5rbVz7nWdpyX56733s5P8WpJ3Fva9\n",
738 | "KMnVvffFJJ+cnGfKBly/jyd5TO/9byT5WpKLZ3B3NpQB1y6ttbOSPDXJygzuyoY01Pq11v5ukmck\n",
739 | "eVzv/bwk/34292hjGfDx9+Ykv9V7f0KS107OM0XHs3YT75vse2+et8zAgOvnecvABly7o3reMhcB\n",
740 | "leT8JNf33pd777cn+WCSZ97rOs9IckmS9N4/n+SBrbWHHmHfH+0z+fdZw96NDWuQ9eu9X917v2uy\n",
741 | "/+eTnDn8XdlwhnrsJclbk/zLoe/ABjfU+v3TJG+YbE/v/VvD35UNaaj1+2aSbZPTD8zqH6lnuo5n\n",
742 | "7dJ7/3SS7xzm63reMhuDrJ/nLTMx1GMvOYrnLfMSUDuS3LDm/I2TbZXrPHydfc/ove+dnN6b5Ixp\n",
743 | "Dcw9DLV+a704yZ8c96Tc2yBr11p7ZpIbe+9fmfbA3MNQj72zk/yd1trnWmt/2lr7ualOzd2GWr+L\n",
744 | "kryltfYXWX0piv8LPn3Hs3br8bxlNoZav7U8bxnGIGt3tM9b5iWgqn+MalPxOj/x9Xrvh47idjg6\n",
745 | "01y/n9Bae02Sg733S49lf9Y19bVrrZ2a5NVJfvtY9ueoDPXY25zk9N77E5P8ZpLLj3J/aoZav/ck\n",
746 | "eWXv/a8l+Y0k7z3K/TmyY1278vMQz1sGNej6ed4yqKmvXWtta47yecu8BNRNSc5ac/6srNbietc5\n",
747 | "c3Kdw22/++UKe+8+ZNdae1iSfVOcmR+b5vrdY9/W2guTPC3JP57euKwxxNo9OsnOJF9ure2eXH+p\n",
748 | "tbZ9qpOTDPfYuzHJh5Nk8uEDd7XWHjy9sZkYav3O771/ZHL6D7P6khem61jX7kgvp/S8ZTaGWj/P\n",
749 | "W4Y3xNod9fOWefkUvi8mObu1tjPJXyZ5TpLn3us6Vyb59SQfbK09Mcl3e+97W2s3r7PvlUkuTPKm\n",
750 | "yb9XDHw/NqpB1m/yKSu/meRJvffbZnFHNqCpr13v/bqsednJ5D9Gu3wK3yCG+m/nFUl+McmnWmuL\n",
751 | "Sbb03m8e+s5sQEOt3/WttSf13j+V1XX82uD3ZOM55rU7wtf1vGU2Blk/z1tmYupr13v/ao7yectc\n",
752 | "HIHqvd+R1Tv6sSTXJvlQ7/261tpLW2svnVznT5J8o7V2fZL/mNWP173PfSdf+o1Jntpa+1pWf4m8\n",
753 | "cYZ3a8MYcP3enuS0JFe31r7UWnvHLO/XRjDg2q3lJSgDGXD93pvkUa21rya5LMkLZni3NowB1+/X\n",
754 | "kry5tfbnSf7t5DxTdDxrlySttcuS/FmSxdbaDa21F00u8rxlBgZcP89bBjbg2q11xOctmw4d8twG\n",
755 | "AACgYi6OQAEAAJwIBBQAAECRgAIAACgSUAAAAEUCCgAAoEhAAQAAFAkoAACAov8PTBT1Ld3pXj4A\n",
756 | "AAAASUVORK5CYII=\n"
757 | ],
758 | "text/plain": [
759 | ""
760 | ]
761 | },
762 | "metadata": {},
763 | "output_type": "display_data"
764 | }
765 | ],
766 | "source": [
767 | "ETFs.Expense_Ratio.plot(kind='hist')"
768 | ]
769 | },
770 | {
771 | "cell_type": "code",
772 | "execution_count": 203,
773 | "metadata": {
774 | "collapsed": false
775 | },
776 | "outputs": [
777 | {
778 | "data": {
779 | "text/plain": [
780 | ""
781 | ]
782 | },
783 | "execution_count": 203,
784 | "metadata": {},
785 | "output_type": "execute_result"
786 | },
787 | {
788 | "data": {
789 | "image/png": [
790 | "iVBORw0KGgoAAAANSUhEUgAAA0UAAAHiCAYAAAAnAWfKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
791 | "AAALEgAACxIB0t1+/AAAHyRJREFUeJzt3X+sZ3dd5/FXbR2g/CiDLNOfaavpvGUQFrhaUXQV0pr6\n",
792 | "g7aJSVsIUinhH1DQjYQWo3Gz2fJjdcWNWw2LkgHW2opQii6hpRgWV6VyAwoOvGuxo0ylU5ZOC4hA\n",
793 | "f8z+cU/hUmemF+j5fu/M5/FImjnnfM+5827u6U2ePT/uUfv37w8AAMCovm3ZAwAAACyTKAIAAIYm\n",
794 | "igAAgKGJIgAAYGiiCAAAGJooAgAAhnbMnF+8qi5L8vwk9yX5aJIXJnlkkquSnJpkd5ILuvvOdftf\n",
795 | "kuTeJC/r7uvmnA8AAGC2K0VVdVqSFyd5enc/OcnRSS5KcmmS67t7e5IbpvVU1Y4kFybZkeScJFdU\n",
796 | "lStZAADArOaMjs8luTvJsVV1TJJjk/xzknOT7Jz22Znk/Gn5vCRXdvfd3b07yc1JzpxxPgAAgPmi\n",
797 | "qLvvSPIbSf4pazF0Z3dfn2Rbd++ddtubZNu0fGKSPeu+xJ4kJ801HwAAQDLjM0VV9V1JfiHJaUnu\n",
798 | "SvJHVfX89ft09/6q2n+IL3Ooz7K6unrIzwEAAFZWVo461Odzvmjhe5P8RXd/Nkmq6u1JfiDJbVV1\n",
799 | "fHffVlUnJLl92v/WJKesO/7kadshraysPLRTw0Gsrq4631go5xyL5HxjkZxvLNLq6uqD7jPnM0Wf\n",
800 | "SPKMqnpEVR2V5Kwku5K8K8nF0z4XJ7lmWr42yUVVtaWqTk9yRpIbZ5wPAABg1meK/ibJm5N8KMnf\n",
801 | "TpvfkOQ1Sc6uqpuSPHtaT3fvSnJ11sLp3Ule0t1ujwMAAGY16+8p6u7XJXndAzbfkbWrRgfa//Ik\n",
802 | "l885EwAAwHp+DxAAADA0UQQAAAxNFAEAAEMTRQAAwNBEEQAAMDRRBAAADE0UAQAAQxNFAADA0EQR\n",
803 | "AAAwNFEEAAAMTRQBAABDE0UAAMDQRBEAADA0UQQAAAxNFAEAAEMTRQAAwNBEEQAAMDRRBAAADE0U\n",
804 | "AQAAQxNFAADA0EQRAAAwNFEEAAAMTRQBAABDE0UAAMDQRBEAADA0UQQAAAxNFAEAAEMTRQAAwNBE\n",
805 | "EQAAMDRRBAAADE0UAQAAQxNFAADA0EQRAAAwtGOWPcC36oX/8TeXPUKS5OTvOCb/+Zd/ftljAAAA\n",
806 | "36DDPor+31HfuewRkiTHfXnPskcAAAC+CW6fAwAAhiaKAACAoYkiAABgaKIIAAAYmigCAACGJooA\n",
807 | "AIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGNoxc37xqqokf7hu03cm+ZUkb01y\n",
808 | "VZJTk+xOckF33zkdc1mSS5Lcm+Rl3X3dnDMCAABjm/VKUa95Wnc/LclKki8meUeSS5Nc393bk9ww\n",
809 | "raeqdiS5MMmOJOckuaKqXM0CAABms8jgOCvJzd39qSTnJtk5bd+Z5Pxp+bwkV3b33d29O8nNSc5c\n",
810 | "4IwAAMBgFhlFFyW5clre1t17p+W9SbZNyycm2bPumD1JTlrMeAAAwIhmfaboflW1JclzkrzygZ91\n",
811 | "9/6q2n+Iww/12aaxb9++rK6uLnsMZuZ7zKI551gk5xuL5HxjM1lIFCX58SSr3f2ZaX1vVR3f3bdV\n",
812 | "1QlJbp+235rklHXHnTxt2/S2bt2alZWVZY/BjFZXV32PWSjnHIvkfGORnG8s0kYCfFG3zz03X7t1\n",
813 | "LkmuTXLxtHxxkmvWbb+oqrZU1elJzkhy44JmBAAABjR7FFXVI7P2koW3r9v8miRnV9VNSZ49rae7\n",
814 | "dyW5OsmuJO9O8pLuPixunwMAAA5Ps98+193/kuTxD9h2R9ZC6UD7X57k8rnnAgAASBb79jkAAIBN\n",
815 | "RxQBAABDE0UAAMDQRBEAADA0UQQAAAxNFAEAAEMTRQAAwNBEEQAAMDRRBAAADE0UAQAAQxNFAADA\n",
816 | "0EQRAAAwNFEEAAAMTRQBAABDE0UAAMDQRBEAADA0UQQAAAxNFAEAAEMTRQAAwNBEEQAAMDRRBAAA\n",
817 | "DE0UAQAAQxNFAADA0EQRAAAwNFEEAAAMTRQBAABDE0UAAMDQRBEAADA0UQQAAAxNFAEAAEMTRQAA\n",
818 | "wNBEEQAAMDRRBAAADE0UAQAAQxNFAADA0EQRAAAwNFEEAAAMTRQBAABDE0UAAMDQRBEAADA0UQQA\n",
819 | "AAxNFAEAAEMTRQAAwNBEEQAAMDRRBAAADE0UAQAAQxNFAADA0I6Z+y+oqscmeWOSJyXZn+SFSf4+\n",
820 | "yVVJTk2yO8kF3X3ntP9lSS5Jcm+Sl3X3dXPPCAAAjGsRV4p+K8n/7u4nJnlKkk8kuTTJ9d29PckN\n",
821 | "03qqakeSC5PsSHJOkiuqytUsAABgNrMGR1Udl+SHu/v3k6S77+nuu5Kcm2TntNvOJOdPy+clubK7\n",
822 | "7+7u3UluTnLmnDMCAABjm/v2udOTfKaq3pTk3ydZTfILSbZ1995pn71Jtk3LJyb5q3XH70ly0swz\n",
823 | "AgAAA5s7io5J8vQkP9fdf11Vr890q9z9unt/Ve0/xNc41Gebxr59+7K6urrsMZiZ7zGL5pxjkZxv\n",
824 | "LJLzjc1k7ijak2RPd//1tP62JJclua2qju/u26rqhCS3T5/fmuSUdcefPG3b9LZu3ZqVlZVlj8GM\n",
825 | "VldXfY9ZKOcci+R8Y5GcbyzSRgJ81meKuvu2JJ+qqu3TprOS/F2SdyW5eNp2cZJrpuVrk1xUVVuq\n",
826 | "6vQkZyS5cc4ZAQCAsc3+Su4kP5/kf1XVliSfzNoruY9OcnVVvSjTK7mTpLt3VdXVSXYluSfJS7r7\n",
827 | "sLh9DgAAODzNHkXd/TdJvu8AH511kP0vT3L5rEMBAABM/A4gAABgaKIIAAAYmigCAACGJooAAICh\n",
828 | "iSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaKAACAoYkiAABgaKIIAAAY\n",
829 | "migCAACGJooAAIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaKAACA\n",
830 | "oYkiAABgaKIIAAAYmigCAACGJooAAIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAA\n",
831 | "GJooAgAAhiaKAACAoYkiAABgaKIIAAAYmigCAACGJooAAIChiSIAAGBooggAABiaKAIAAIYmigAA\n",
832 | "gKGJIgAAYGiiCAAAGJooAgAAhnbM3H9BVe1O8rkk9ya5u7vPrKrHJbkqyalJdie5oLvvnPa/LMkl\n",
833 | "0/4v6+7r5p4RAAAY1yKuFO1P8qPd/bTuPnPadmmS67t7e5IbpvVU1Y4kFybZkeScJFdUlatZAADA\n",
834 | "bBYVHEc9YP3cJDun5Z1Jzp+Wz0tyZXff3d27k9yc5MwAAADMZFFXit5bVR+qqhdP27Z1995peW+S\n",
835 | "bdPyiUn2rDt2T5KTFjAjAAAwqNmfKUryzO7+dFX9uyTXV9Un1n/Y3furav8hjj/UZ5vGvn37srq6\n",
836 | "uuwxmJnvMYvmnGORnG8skvONzWT2KOruT09/fqaq3pG12+H2VtXx3X1bVZ2Q5PZp91uTnLLu8JOn\n",
837 | "bZve1q1bs7KysuwxmNHq6qrvMQvlnGORnG8skvONRdpIgM96+1xVHVtVj56WH5nkx5J8NMm1SS6e\n",
838 | "drs4yTXT8rVJLqqqLVV1epIzktw454wAAMDY5n6maFuSD1TVR5J8MMmfTK/Yfk2Ss6vqpiTPntbT\n",
839 | "3buSXJ1kV5J3J3lJdx8Wt88BAACHp1lvn+vuW5I89QDb70hy1kGOuTzJ5XPOBQAAcD+/AwgAABia\n",
840 | "KAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaKAACAoYkiAABgaKIIAAAYmigCAACGJooAAICh\n",
841 | "iSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaKAACAoYkiAABgaKIIAAAY\n",
842 | "migCAACGJooAAIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaKAACA\n",
843 | "oYkiAABgaKIIAAAYmigCAACGdsyD7VBV25L8RpJTu/uHq+opSX6wu3939ukAAABmtpErRf8zyf9N\n",
844 | "8thpvZO8dLaJAAAAFmgjUXRSd/9OknuSpLu/nOS+WacCAABYkI1E0T1VddT9K1X12EPtDAAAcDjZ\n",
845 | "SBS9PcnvJnlMVf1skuuTvGnOoQAAABblQaOou1+b5ANJVpP8RJLf6u7Xzz0YAADAIjzo2+eSpLvf\n",
846 | "muStM88CAACwcA96paiqtlfVn1fV7mn96VX1azPPBQAAsBAbeabod5L8lyR3Tut/k+SC2SYCAABY\n",
847 | "oI1E0XHd/e4k+5Oku+9N8pVZpwIAAFiQjb6Se8v9K1V1UpJ75xsJAABgcTZ6+9zbkzy+qv5Tkj9P\n",
848 | "8huzTgUAALAgD/r2ue7eWVX/kOQ5SR6R5AXd/YGN/gVVdXSSDyXZ093PqarHJbkqyalJdie5oLvv\n",
849 | "nPa9LMklWbsS9bLuvu4b/PcBAAD4hhwyiqrqmCQ3dvfTs/a7ir4ZL0+yK8mjp/VLk1zf3a+rqldO\n",
850 | "65dW1Y4kFybZkeSkJO+tqu3dfd83+fcCAAA8qEPePtfd9yT5QlU94pv54lV1ctZ+4esbkxw1bT43\n",
851 | "yc5peWeS86fl85Jc2d13d/fuJDcnOfOb+XsBAAA2aiO/vPWmJO+vqrcl+Zdp2/7uvmIDx/5mklck\n",
852 | "ecy6bdu6e++0vDfJtmn5xCR/tW6/PVm7YgQAADCbjbxo4Zis3f72xCTfO/3zfQ92UFX9VJLbu/vD\n",
853 | "+dpVoq/T3fszver7IA71GQAAwLdsIy9a+Nlv8mv/YJJzq+onkjw8yWOq6i1J9lbV8d19W1WdkOT2\n",
854 | "af9bk5yy7viTp22HhX379mV1dXXZYzAz32MWzTnHIjnfWCTnG5vJg0ZRVb00//aKzV1ZewHD3x/s\n",
855 | "uO5+VZJXTV/jR5L8Unf/TFW9LsnFSV47/XnNdMi1Sf6gqv5b1m6bOyPJjd/Yv87ybN26NSsrK8se\n",
856 | "gxmtrq76HrNQzjkWyfnGIjnfWKSNBPhGbp87J8mrk5yV5Owkl2ctZt5XVS/6Bua5P6xek+Tsqrop\n",
857 | "ybOn9XT3riRXZ+1WvXcnecl0ex0AAMBsNvKihfuSPLm7/ylJquqUJFdk7c1w703yew/2Bbr7/Une\n",
858 | "Py3fkbXAOtB+l2ctugAAABZiI1eKvuv+IEqS7v5UktO7+9NJ7p5tMgAAgAXYyJWivVX1qiRvytpb\n",
859 | "5C5OcntVHR1vhwMAAA5zG7lS9IIkK0k+luSjWXsl9wuSfPv0JwAAwGFrI6/kvjXJTx/k448+tOMA\n",
860 | "AAAs1kZeyf3IJJcl+c7ufl5VfXeS7+7uax7kUAAAgE1vI7fP/U7WbpV76rR+a5Jfm2sgAACARdpI\n",
861 | "FD2lu1+Z5MtJ0t2fz9oLFwAAAA57G4miL69fqaqHb/A4AACATW8jcfN/quqXkzy8qn40yR8leees\n",
862 | "UwEAACzIRqLoVdOfn0vyuiQfjGeKAACAI8Qh3z5XVWcm+aUkT5o2fSzJe7r7nrkHAwAAWISDXimq\n",
863 | "qh9I8p4kn0zyy0l+Jck/JLmuqp6xmPEAAADmdagrRa9Mckl3v2PdtrdX1V8luTTJ+bNOBgAAsACH\n",
864 | "eqboSQ8IoiRJd78zX7udDgAA4LB2qCj6l2/yMwAAgMPGoW6fe1hV7TjA9qOSPGymeQAAABbqUFH0\n",
865 | "iCR/uqhBAAAAluGgUdTdpy1wDgAAgKXYyC9vBQAAOGKJIgAAYGiiCAAAGJooAgAAhiaKAACAoYki\n",
866 | "AABgaKIIAAAYmigCAACGJooAAIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJoo\n",
867 | "AgAAhiaKAACAoYkiAABgaKIIAAAYmigCAACGJooAAIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJ\n",
868 | "IgAAYGiiCAAAGJooAgAAhiaKAACAoR0z1xeuqocneX+ShyXZkuSd3X1ZVT0uyVVJTk2yO8kF3X3n\n",
869 | "dMxlSS5Jcm+Sl3X3dXPNBwAAkMx4pai7v5TkWd391CRPSfKsqvqhJJcmub67tye5YVpPVe1IcmGS\n",
870 | "HUnOSXJFVbmSBQAAzGrW6OjuL06LW5IcnWRfknOT7Jy270xy/rR8XpIru/vu7t6d5OYkZ845HwAA\n",
871 | "wKxRVFXfVlUfSbI3yZ91998l2dbde6dd9ibZNi2fmGTPusP3JDlpzvkAAABme6YoSbr7viRPrarj\n",
872 | "krynqp71gM/3V9X+Q3yJQ322qezbty+rq6vLHoOZ+R6zaM45Fsn5xiI539hMZo2i+3X3XVX1p0lW\n",
873 | "kuytquO7+7aqOiHJ7dNutyY5Zd1hJ0/bDgtbt27NysrKssdgRqurq77HLJRzjkVyvrFIzjcWaSMB\n",
874 | "Ptvtc1X1+Kp67LT8iCRnJ/lwkmuTXDztdnGSa6bla5NcVFVbqur0JGckuXGu+QAAAJJ5nyk6Icn7\n",
875 | "pmeKPpjkXd19Q5LXJDm7qm5K8uxpPd29K8nVSXYleXeSl3T3YXP7HAAAcHia7fa57v5okqcfYPsd\n",
876 | "Sc46yDGXJ7l8rpkAAAAeyO8BAgAAhiaKAACAoYkiAABgaKIIAAAYmigCAACGJooAAIChiSIAAGBo\n",
877 | "oggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaKAACAoYkiAABgaKIIAAAYmigCAACG\n",
878 | "JooAAIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaKAACAoYkiAABg\n",
879 | "aKIIAAAYmigCAACGJooAAIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAA\n",
880 | "hiaKAACAoYkiAABgaKIIAAAYmigCAACGJooAAIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAA\n",
881 | "YGjHzPnFq+qUJG9O8oQk+5O8obv/e1U9LslVSU5NsjvJBd1953TMZUkuSXJvkpd193VzzggAAIxt\n",
882 | "7itFdyf5xe5+UpJnJHlpVT0xyaVJru/u7UlumNZTVTuSXJhkR5JzklxRVa5mAQAAs5k1OLr7tu7+\n",
883 | "yLT8hSQfT3JSknOT7Jx225nk/Gn5vCRXdvfd3b07yc1JzpxzRgAAYGwLuwpTVacleVqSDybZ1t17\n",
884 | "p4/2Jtk2LZ+YZM+6w/ZkLaIAAABmMeszRferqkcl+eMkL+/uz1fVVz/r7v1Vtf8Qhx/qs01j3759\n",
885 | "WV1dXfYYzMz3mEVzzrFIzjcWyfnGZjJ7FFXVt2ctiN7S3ddMm/dW1fHdfVtVnZDk9mn7rUlOWXf4\n",
886 | "ydO2TW/r1q1ZWVlZ9hjMaHV11feYhXLOsUjONxbJ+cYibSTAZ719rqqOSvJ7SXZ19+vXfXRtkoun\n",
887 | "5YuTXLNu+0VVtaWqTk9yRpIb55wRAAAY29xXip6Z5PlJ/raqPjxtuyzJa5JcXVUvyvRK7iTp7l1V\n",
888 | "dXWSXUnuSfKS7j4sbp8DAAAOT7NGUXf/eQ5+NeqsgxxzeZLLZxsKAABgHb8DCAAAGJooAgAAhiaK\n",
889 | "AACAoYkiAABgaKIIAAAYmigCAACGNvfvKRrGvffek5tuumnZY3zVaaedli1btix7DAAA2PRE0UPk\n",
890 | "c3d+Nj9z2R/k2OOesOxR8sW7bs9bXv28bN++fdmjAADApieKHkLHHveEPGrrScseAwAA+AZ4pggA\n",
891 | "ABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaKAACAoYkiAABgaKIIAAAYmigCAACGJooA\n",
892 | "AIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaKAACAoYkiAABgaKII\n",
893 | "AAAYmigCAACGJooAAIChiSIAAGBooggAABiaKAIAAIYmigAAgKGJIgAAYGiiCAAAGJooAgAAhiaK\n",
894 | "AACAoYkiAABgaKIIAAAYmigCAACGJooAAIChiSIAAGBooggAABiaKAIAAIZ2zJxfvKp+P8lPJrm9\n",
895 | "u588bXtckquSnJpkd5ILuvvO6bPLklyS5N4kL+vu6+acDwAAYO4rRW9Kcs4Dtl2a5Pru3p7khmk9\n",
896 | "VbUjyYVJdkzHXFFVrmQBAACzmjU6uvsDSfY9YPO5SXZOyzuTnD8tn5fkyu6+u7t3J7k5yZlzzgcA\n",
897 | "ALCMKzHbunvvtLw3ybZp+cQke9bttyfJSYscDAAAGM+szxQ9mO7eX1X7D7HLoT7bVD531+eSLccv\n",
898 | "e4yv+tjHPpbPf/7zyx7jiLO6urrsERiMc45Fcr6xSM43NpNlRNHeqjq+u2+rqhOS3D5tvzXJKev2\n",
899 | "O3nadlh4zHGPyZ3/uuwpvuZ7vud7sn379mWPcURZXV3NysrKssdgIM45Fsn5xiI531ikjQT4Mm6f\n",
900 | "uzbJxdPyxUmuWbf9oqraUlWnJzkjyY1LmA8AABjI3K/kvjLJjyR5fFV9KsmvJnlNkqur6kWZXsmd\n",
901 | "JN29q6quTrIryT1JXtLdh83tcwAAwOFp1ijq7uce5KOzDrL/5Ukun28iAACAr+f3AAEAAEMTRQAA\n",
902 | "wNBEEQAAMDRRBAAADE0UAQAAQxNFAADA0EQRAAAwNFEEAAAMTRQBAABDE0UAAMDQRBEAADA0UQQA\n",
903 | "AAxNFAEAAEMTRQAAwNBEEQAAMDRRBAAADE0UAQAAQxNFAADA0EQRAAAwNFEEAAAMTRQBAABDE0UA\n",
904 | "AMDQRBEAADA0UQQAAAztmGUPwEPvvnvvyS233LLsMb7qtNNOy5YtW5Y9BgAAHJAoOgJ96Qufza++\n",
905 | "4S9z7HGfXPYo+eJdt+ctr35etm/fvuxRAADggETREerY456QR209adljAADApueZIgAAYGiiCAAA\n",
906 | "GJooAgAAhiaKAACAoYkiAABgaKIIAAAYmigCAACGJooAAIChiSIAAGBooggAABiaKAIAAIZ2zLIH\n",
907 | "4Mh237335JZbbln2GF/ntNNOy5YtW5Y9BgAAm4QoYlZf+sJn86tv+Msce9wnlz1KkuSLd92et7z6\n",
908 | "edm+ffuyRwEAYJMQRczu2OOekEdtPWnZYwAAwAF5pggAABiaKAIAAIYmigAAgKF5poihfCtvw/vH\n",
909 | "f/zHPPrRj35I5/EmPACA5RNFDOVbfhven9z2kM3iTXgAAJuDKGI43oYHAMB6my6KquqcJK9PcnSS\n",
910 | "N3b3a5c8EhzxvvKVr2T37t3LHuPruLUQAFiUTRVFVXV0kt9OclaSW5P8dVVd290fX+5k8ND7Vp5v\n",
911 | "eqjdcsst022FT1j2KEk2162FywzGgz3HJhgB4KG1qaIoyZlJbu7u3UlSVX+Y5Lwkoogjzrf8fNND\n",
912 | "6LN7Pp7vOPmJm+a2QsG4zgOeYxOMB/aVr3wlSTZVLIpXeGhspp81yeb7eeNnzUNjs0XRSUk+tW59\n",
913 | "T5LvP9QBR931d7MOtFH35vP54l2b4w3n//r5O5IctewxkmyuWZLNNc+/fv6OPOLR37HsMb7qi3fd\n",
914 | "vuwRvmrfp/8+r/j1T+Thj3rcskfJXXv/IY89YfkBst5mCsZX/Po7N8336WGPfOymmCVJvvSFO/Jf\n",
915 | "f+m8nH766cseZcPmeMMmHMw3cr5tpp81yeb6efOlL9yRt/2PX9gU/6PscHfU/v37lz3DV1XVTyc5\n",
916 | "p7tfPK0/P8n3d/fPH2j/1dXVzTM8AACwKa2srBzy/4pvtitFtyY5Zd36KVm7WnRAD/YvBwAA8GA2\n",
917 | "WxR9KMkZVXVakn9OcmGS5y51IgAA4Ii2OR6CmXT3PUl+Lsl7kuxKcpU3zwEAAHPaVM8UAQAALNqm\n",
918 | "ulIEAACwaKIIAAAYmigCAACGttnePrdhVXVOktcnOTrJG7v7tUseiSNUVf1+kp9Mcnt3P3nZ83Bk\n",
919 | "q6pTkrw5yROS7E/yhu7+78udiiNVVT08yfuTPCzJliTv7O7LljsVR7qqOjprbxze093PWfY8HNmq\n",
920 | "aneSzyW5N8nd3X3mgfY7LK8UTf8x/XaSc5LsSPLcqnricqfiCPamrJ1rsAh3J/nF7n5Skmckeamf\n",
921 | "b8ylu7+U5Fnd/dQkT0nyrKr6oSWPxZHv5Vl7y7C3fbEI+5P8aHc/7WBBlBymUZTkzCQ3d/fu7r47\n",
922 | "yR8mOW/JM3GE6u4PJNm37DkYQ3ff1t0fmZa/kOTjSU5c7lQcybr7i9PilqzdfXHHEsfhCFdVJyf5\n",
923 | "iSRvTHLUksdhHA96rh2uUXRSkk+tW98zbQM4Yky/yPppST645FE4glXVt1XVR5LsTfJn3b1r2TNx\n",
924 | "RPvNJK9Ict+yB2EY+5O8t6o+VFUvPthOh2sUudwKHNGq6lFJ3pbk5dMVI5hFd9833T53cpL/UFU/\n",
925 | "uuSROEJV1U9l7fncD8dVIhbnmd39tCQ/nrVb0n/4QDsdrlF0a5JT1q2fkrWrRQCHvar69iR/nOSt\n",
926 | "3X3NsudhDN19V5I/TfK9y56FI9YPJjm3qm5JcmWSZ1fVm5c8E0e47v709Odnkrwja4/h/BuHaxR9\n",
927 | "KMkZVXVaVW1JcmGSa5c8E8C3rKqOSvJ7SXZ19+uXPQ9Htqp6fFU9dlp+RJKzk3x4uVNxpOruV3X3\n",
928 | "Kd19epKLkryvu1+w7Lk4clXVsVX16Gn5kUl+LMlHD7TvYRlF3X1Pkp9L8p6svb3kqu7++HKn4khV\n",
929 | "VVcm+Ysk26vqU1X1wmXPxBHtmUmen7W3gH14+sfbD5nLCUneNz1T9MEk7+ruG5Y8E+PwOARz25bk\n",
930 | "A+t+xv1Jd193oB2P2r/f+QgAAIzrsLxSBAAA8FARRQAAwNBEEQAAMDRRBAAADE0UAQAAQxNFAADA\n",
931 | "0EQRAAAwtP8P0ukbo4bXAD4AAAAASUVORK5CYII=\n"
932 | ],
933 | "text/plain": [
934 | ""
935 | ]
936 | },
937 | "metadata": {},
938 | "output_type": "display_data"
939 | }
940 | ],
941 | "source": [
942 | "ETFs.Dividend.plot(kind='hist', bins=20)"
943 | ]
944 | },
945 | {
946 | "cell_type": "code",
947 | "execution_count": 204,
948 | "metadata": {
949 | "collapsed": false
950 | },
951 | "outputs": [
952 | {
953 | "data": {
954 | "text/plain": [
955 | ""
956 | ]
957 | },
958 | "execution_count": 204,
959 | "metadata": {},
960 | "output_type": "execute_result"
961 | },
962 | {
963 | "data": {
964 | "image/png": [
965 | "iVBORw0KGgoAAAANSUhEUgAAA00AAAHiCAYAAAA01ic+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
966 | "AAALEgAACxIB0t1+/AAAHqBJREFUeJzt3X3QpXdd3/FPSFgggAGGZvPYJNbdrywrBbZG60MLTLCR\n",
967 | "1iTWmSTgQzSMfQBB29GS6MjotA1odYqOBUWU2aKGpAohPjAkoEOxRQK3qKyr3xjYVTaQDQWSTUgx\n",
968 | "m+TuH3sS7252f3vvw3m4d1+vf/Y617muO99sfnsm773Ouc5Jy8vLAQAA4MCeMO8BAAAAFploAgAA\n",
969 | "GBBNAAAAA6IJAABgQDQBAAAMiCYAAICBU6b5w6uqkrxzxa6vTPLjSX4tyQ1JzkuyM8nl3X3P5Jxr\n",
970 | "k1yd5OEkr+3uW6Y5IwAAwMhJs/qepqp6QpI7k1yY5DVJ/k93/3RVvS7JM7v7mqralOQ3knxtkrOT\n",
971 | "vD/Jxu5+ZCZDAgAA7GeWb8+7KMkd3f3pJJck2TrZvzXJZZPtS5Nc3917u3tnkjuyL7IAAADmYpbR\n",
972 | "dGWS6yfb67t792R7d5L1k+2zkuxacc6u7LviBAAAMBdT/UzTo6pqXZJvS/K6/Z/r7uWqGr1H8KDP\n",
973 | "LS0tzea9hQAAwJq1ZcuWk47m/JlEU5JvTbLU3Z+bPN5dVWd0911VdWaSuyf770xy7orzzpnsO6gt\n",
974 | "W7Yc82HhQJaWlqw3ZsqaY5asN2bJemOWlpaWjvpnzOrteS/P3701L0luTnLVZPuqJDet2H9lVa2r\n",
975 | "qguSbEhy24xmBAAAeJypR1NVPTX7bgLxrhW735jkpVV1e5KXTB6nu7cnuTHJ9iTvTfKq7vYWPAAA\n",
976 | "YG6m/va87v5Skmfvt+8L2RdSBzr+uiTXTXsuAACA1Zjl3fMAAADWHNEEAAAwIJoAAAAGRBMAAMCA\n",
977 | "aAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABg4Zd4DHK13\n",
978 | "3/zeeY9wQP/son+aU089dd5jAAAAR2nNR9Nb379n3iM8zpe+cGc2P+ersmHDhnmPAgAAHKU1H02n\n",
979 | "PPHJ8x7hcU5+4pPmPQIAAHCM+EwTAADAgGgCAAAYEE0AAAADogkAAGBANAEAAAyIJgAAgAHRBAAA\n",
980 | "MCCaAAAABkQTAADAgGgCAAAYEE0AAAADogkAAGBANAEAAAyIJgAAgAHRBAAAMCCaAAAABkQTAADA\n",
981 | "gGgCAAAYEE0AAAADogkAAGBANAEAAAyIJgAAgAHRBAAAMCCaAAAABkQTAADAgGgCAAAYEE0AAAAD\n",
982 | "ogkAAGBANAEAAAyIJgAAgAHRBAAAMCCaAAAABkQTAADAgGgCAAAYEE0AAAADogkAAGBANAEAAAyI\n",
983 | "JgAAgAHRBAAAMHDKtP8BVfWMJG9L8twky0m+L8lfJbkhyXlJdia5vLvvmRx/bZKrkzyc5LXdfcu0\n",
984 | "ZwQAADiYWVxp+rkkv9fdz0nyvCR/meSaJLd298YkH5g8TlVtSnJFkk1JLk7y5qpyNQwAAJibqQZJ\n",
985 | "VZ2W5Ju7+1eTpLsf6u57k1ySZOvksK1JLptsX5rk+u7e2907k9yR5MJpzggAADAy7bfnXZDkc1X1\n",
986 | "9iT/MMlSkh9Ksr67d0+O2Z1k/WT7rCR/tOL8XUnOnvKMAAAABzXtaDolyQuT/EB3f7Sq3pTJW/Ee\n",
987 | "1d3LVbU8+Bmj5xbWtm3bsmfPnnmPwTG2tLQ07xE4wVhzzJL1xixZb6wl046mXUl2dfdHJ49/M8m1\n",
988 | "Se6qqjO6+66qOjPJ3ZPn70xy7orzz5nsW3M2b96cDRs2zHsMjqGlpaVs2bJl3mNwArHmmCXrjVmy\n",
989 | "3pilYxHoU/1MU3ffleTTVbVxsuuiJH+e5LeTXDXZd1WSmybbNye5sqrWVdUFSTYkuW2aMwIAAIxM\n",
990 | "/ZbjSV6T5Neral2ST2bfLcdPTnJjVb0yk1uOJ0l3b6+qG5NsT/JQkld195p8ex4AAHB8mHo0dfef\n",
991 | "JvnaAzx10UGOvy7JdVMdCgAAYJV8BxIAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEE\n",
992 | "AAAwIJoAAAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMA\n",
993 | "AMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABgQTQAA\n",
994 | "AAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAA\n",
995 | "DIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAw\n",
996 | "IJoAAAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwcMq0/wFVtTPJniQP\n",
997 | "J9nb3RdW1bOS3JDkvCQ7k1ze3fdMjr82ydWT41/b3bdMe0YAAICDmcWVpuUkL+ruF3T3hZN91yS5\n",
998 | "tbs3JvnA5HGqalOSK5JsSnJxkjdXlathAADA3MwqSE7a7/ElSbZOtrcmuWyyfWmS67t7b3fvTHJH\n",
999 | "kgsDAAAwJ7O60vT+qvpYVX3/ZN/67t492d6dZP1k+6wku1acuyvJ2TOYEQAA4ICm/pmmJN/Y3Z+t\n",
1000 | "qr+X5Naq+suVT3b3clUtD84fPbewtm3blj179sx7DI6xpaWleY/ACcaaY5asN2bJemMtmXo0dfdn\n",
1001 | "J79+rqrenX1vt9tdVWd0911VdWaSuyeH35nk3BWnnzPZt+Zs3rw5GzZsmPcYHENLS0vZsmXLvMfg\n",
1002 | "BGLNMUvWG7NkvTFLxyLQp/r2vKo6taqePtl+apJvSfKJJDcnuWpy2FVJbpps35zkyqpaV1UXJNmQ\n",
1003 | "5LZpzggAADAy7c80rU/yoar6kyQfSfI7k1uIvzHJS6vq9iQvmTxOd29PcmOS7Unem+RV3b0m354H\n",
1004 | "AAAcH6b69rzu3pHk+QfY/4UkFx3knOuSXDfNuQAAAFbLdyABAAAMiCYAAIAB0QQAADAgmgAAAAZE\n",
1005 | "EwAAwIBoAgAAGBBNAAAAA6IJAABgQDQBAAAMiCYAAIAB0QQAADAgmgAAAAZEEwAAwIBoAgAAGBBN\n",
1006 | "AAAAA6IJAABgQDQBAAAMiCYAAIAB0QQAADAgmgAAAAZEEwAAwIBoAgAAGBBNAAAAA6IJAABgQDQB\n",
1007 | "AAAMiCYAAIAB0QQAADAgmgAAAAZEEwAAwIBoAgAAGBBNAAAAA6IJAABgQDQBAAAMiCYAAIAB0QQA\n",
1008 | "ADAgmgAAAAZEEwAAwIBoAgAAGBBNAAAAA6IJAABgQDQBAAAMiCYAAIAB0QQAADAgmgAAAAZEEwAA\n",
1009 | "wIBoAgAAGBBNAAAAA6IJAABgQDQBAAAMiCYAAIAB0QQAADAgmgAAAAZEEwAAwIBoAgAAGBBNAAAA\n",
1010 | "A6dM+x9QVScn+ViSXd39bVX1rCQ3JDkvyc4kl3f3PZNjr01ydZKHk7y2u2+Z9nwAAAAjs7jS9INJ\n",
1011 | "tidZnjy+Jsmt3b0xyQcmj1NVm5JckWRTkouTvLmqXAkDAADmaqpRUlXnJHlZkrclOWmy+5IkWyfb\n",
1012 | "W5NcNtm+NMn13b23u3cmuSPJhdOcDwAA4FCmfSXnvyb5kSSPrNi3vrt3T7Z3J1k/2T4rya4Vx+1K\n",
1013 | "cvaU5wMAABia2meaqupfJLm7uz9eVS860DHdvVxVywd6bmL03ELbtm1b9uzZM+8xOMaWlpbmPQIn\n",
1014 | "GGuOWbLemCXrjbVkmjeC+IYkl1TVy5I8OclXVNU7kuyuqjO6+66qOjPJ3ZPj70xy7orzz5nsW5M2\n",
1015 | "b96cDRs2zHsMjqGlpaVs2bJl3mNwArHmmCXrjVmy3pilYxHoU3t7Xnf/aHef290XJLkyye9393cn\n",
1016 | "uTnJVZPDrkpy02T75iRXVtW6qrogyYYkt01rPgAAgNWY5d3pHn2r3RuTvLSqbk/yksnjdPf2JDdm\n",
1017 | "35323pvkVd29Zt+eBwAAHB+m/j1NSdLdH0zywcn2F5JcdJDjrkty3SxmAgAAWA3fgwQAADAgmgAA\n",
1018 | "AAZEEwAAwIBoAgAAGBBNAAAAA6IJAABgQDQBAAAMiCYAAIAB0QQAADAgmgAAAAZOOdQBVbU+yc8m\n",
1019 | "Oa+7v7mqnpfkG7r7F6c+HQAAwJyt5krTLyf5X0meMXncSV49tYkAAAAWyGqi6ezufkuSh5Kku/82\n",
1020 | "ySNTnQoAAGBBrCaaHqqqkx59UFXPGB0MAABwPFlNNL0ryS8m+Yqq+t4ktyZ5+zSHAgAAWBSHjKbu\n",
1021 | "/qkkH0qylORlSX6uu9807cEAAAAWwSHvnpck3f1rSX5tyrMAAAAsnENeaaqqjVX1h1W1c/L4hVX1\n",
1022 | "E1OeCwAAYCGs5jNNb0nyn5PcM3n8p0kun9pEAAAAC2Q10XRad783yXKSdPfDSR6c6lQAAAALYrW3\n",
1023 | "HF/36IOqOjvJw9MbCQAAYHGs9u1570ry7Kr6ySR/mORnpzoVAADAgjjk3fO6e2tVfSrJtyV5SpLv\n",
1024 | "6e4PTX0yAACABTCMpqo6Jclt3f3C7PuuJgAAgBPK8O153f1Qkvur6ikzmgcAAGChrObLbW9P8sGq\n",
1025 | "+s0kX5rsW+7uN09vLAAAgMWwmmg6Jcn2JM+Z8iwAAAALZzU3gvjeGcwBAACwkA4ZTVX16ky+2HaF\n",
1026 | "e7PvBhF/NZWpAAAAFsRqvqfp4iRvSHJRkpcmuS7JVUl+v6peOcXZAAAA5m410fRIkq/p7n/Z3d+e\n",
1027 | "5GuS/G2SC5P8+2kOBwAAMG+riaZ/0N1/8+iD7v50kgu6+7NJ9k5tMgAAgAWwmrvn7a6qH03y9iQn\n",
1028 | "Zd9b8+6uqpPz+M86AQAAHFdWc6Xpe5JsSbItySeS/KPJvidOfgUAADhureaW43cm+Y6DPP2JYzsO\n",
1029 | "AADAYlnNLcefmuTaJF/Z3a+oqq9O8tXdfdPUpwMAAJiz1bw97y3Z91a8508e35nkJ6Y1EAAAwCJZ\n",
1030 | "TTQ9r7tfl323GU9335d9N4QAAAA47q0mmv525YOqevIqzwMAAFjzVhM//7OqfizJk6vqRUn+R5L3\n",
1031 | "THUqAACABbGaaPrRya97kvx0ko/EZ5oAAIATxPDueVV1YZIfTvLcya5tSd7X3Q9NezAAAIBFcNAr\n",
1032 | "TVX1j5O8L8knk/xYkh9P8qkkt1TV189mPAAAgPkaXWl6XZKru/vdK/a9q6r+KMk1SS6b6mQAAAAL\n",
1033 | "YPSZpufuF0xJku5+T/7u7XoAAADHtVE0fekInwMAADhujN6e96Sq2nSA/ScledKU5gEAAFgoo2h6\n",
1034 | "SpLfndUgAAAAi+ig0dTd589wDgAAgIW0mi+3BQAAOGGJJgAAgAHRBAAAMCCaAAAABkQTAADAwOiW\n",
1035 | "40elqp6c5IPZ951O65K8p7uvrapnJbkhyXlJdia5vLvvmZxzbZKrkzyc5LXdfcu05gMAAFiNqV1p\n",
1036 | "6u4vJ3lxdz8/yfOSvLiqvinJNUlu7e6NST4weZzJF+lekWRTkouTvLmqXAkDAADmaqpR0t0PTDbX\n",
1037 | "JTk5yReTXJJk62T/1iSXTbYvTXJ9d+/t7p1J7khy4TTnAwAAOJSpRlNVPaGq/iTJ7iR/0N1/nmR9\n",
1038 | "d++eHLI7yfrJ9llJdq04fVeSs6c5HwAAwKFM7TNNSdLdjyR5flWdluR9VfXi/Z5frqrlwY8YPbfQ\n",
1039 | "tm3blj179sx7DI6xpaWleY/ACcaaY5asN2bJemMtmWo0Paq7762q302yJcnuqjqju++qqjOT3D05\n",
1040 | "7M4k56447ZzJvjVp8+bN2bBhw7zH4BhaWlrKli1b5j0GJxBrjlmy3pgl641ZOhaBPrW351XVs6vq\n",
1041 | "GZPtpyR5aZKPJ7k5yVWTw65KctNk++YkV1bVuqq6IMmGJLdNaz4AAIDVmOZnms5M8vuTzzR9JMlv\n",
1042 | "d/cHkrwxyUur6vYkL5k8TndvT3Jjku1J3pvkVd29Zt+eBwAAHB+m9va87v5EkhceYP8Xklx0kHOu\n",
1043 | "S3LdtGYCAAA4XL4HCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABgQTQAAAAOi\n",
1044 | "CQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgm\n",
1045 | "AACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoA\n",
1046 | "AAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIA\n",
1047 | "ABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABgQTQAAAAOiCQAA\n",
1048 | "YEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABg4ZZo/vKrOTfLfk5yeZDnJW7v756vq\n",
1049 | "WUluSHJekp1JLu/ueybnXJvk6iQPJ3ltd98yzRkBAABGpn2laW+Sf9fdz03y9UleXVXPSXJNklu7\n",
1050 | "e2OSD0wep6o2JbkiyaYkFyd5c1W5GgYAAMzNVIOku+/q7j+ZbN+f5C+SnJ3kkiRbJ4dtTXLZZPvS\n",
1051 | "JNd3997u3pnkjiQXTnNGAACAkZldxamq85O8IMlHkqzv7t2Tp3YnWT/ZPivJrhWn7cq+yAIAAJiL\n",
1052 | "qX6m6VFV9bQkv5XkB7v7vqp67LnuXq6q5cHpo+cW1rZt27Jnz555j8ExtrS0NO8ROMFYc8yS9cYs\n",
1053 | "WW+sJVOPpqp6YvYF0zu6+6bJ7t1VdUZ331VVZya5e7L/ziTnrjj9nMm+NWfz5s3ZsGHDvMfgGFpa\n",
1054 | "WsqWLVvmPQYnEGuOWbLemCXrjVk6FoE+1bfnVdVJSX4lyfbuftOKp25OctVk+6okN63Yf2VVrauq\n",
1055 | "C5JsSHLbNGcEAAAYmfaVpm9M8l1J/qyqPj7Zd22SNya5sapemcktx5Oku7dX1Y1Jtid5KMmruntN\n",
1056 | "vj0PAAA4Pkw1mrr7D3Pwq1kXHeSc65JcN7WhAAAADoPvQAIAABgQTQAAAAOiCQAAYEA0AQAADIgm\n",
1057 | "AACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoA\n",
1058 | "AAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIA\n",
1059 | "ABgQTQAAAAOnzHuA49EjDz+UHTt2ZHl5ed6jHND555+fdevWzXsMAABYE0TTFHz5/s/nx3/pf+fU\n",
1060 | "0+6Y9yiP88C9d+cdb3hFNm7cOO9RAABgTRBNU3Lqaafnac88e95jAAAAR8lnmgAAAAZEEwAAwIBo\n",
1061 | "AgAAGBBNAAAAA6IJAABgQDQBAAAMiCYAAIAB0QQAADAgmgAAAAZEEwAAwIBoAgAAGBBNAAAAA6IJ\n",
1062 | "AABgQDQBAAAMiCYAAIAB0QQAADAgmgAAAAZEEwAAwIBoAgAAGBBNAAAAA6IJAABgQDQBAAAMiCYA\n",
1063 | "AIAB0QQAADAgmgAAAAZEEwAAwMAp0/zhVfWrSf55kru7+2sm+56V5IYk5yXZmeTy7r5n8ty1Sa5O\n",
1064 | "8nCS13b3LdOcDwAA4FCmfaXp7Uku3m/fNUlu7e6NST4weZyq2pTkiiSbJue8uapcCQMAAOZqqlHS\n",
1065 | "3R9K8sX9dl+SZOtke2uSyybblya5vrv3dvfOJHckuXCa8wEAABzKPK7krO/u3ZPt3UnWT7bPSrJr\n",
1066 | "xXG7kpw9y8EAAAD2N9XPNB1Kdy9X1fLgkNFzHKFt27blvvvum/cYa9LS0tK8R+AEY80xS9Ybs2S9\n",
1067 | "sZbMI5p2V9UZ3X1XVZ2Z5O7J/juTnLviuHMm+zjGNm/enI0bN857jDVnaWkpW7ZsmfcYnECsOWbJ\n",
1068 | "emOWrDdm6VgE+jzenndzkqsm21cluWnF/iural1VXZBkQ5Lb5jAfAADAY6Z9y/Hrk/zTJM+uqk8n\n",
1069 | "eX2SNya5sapemcktx5Oku7dX1Y1Jtid5KMmrutvb8wAAgLmaajR198sP8tRFBzn+uiTXTW8iAACA\n",
1070 | "w+N7kAAAAAZEEwAAwIBoAgAAGBBNAAAAA6IJAABgQDQBAAAMiCYAAICBqX5PE4vnkYcfyo4dO+Y9\n",
1071 | "xkGdf/75Wbdu3bzHAACAx4imE8yX7/98Xv/WD+fU0z4571Ee54F778473vCKbNy4cd6jAADAY0TT\n",
1072 | "CejU007P05559rzHAACANcFnmgAAAAZEEwAAwIBoAgAAGBBNAAAAA6IJAABgQDQBAAAMiCYAAIAB\n",
1073 | "0QQAADAgmgAAAAZEEwAAwIBoAgAAGBBNAAAAA6IJAABg4JR5DwCPeuThh7Jjx455j3FQe/funfcI\n",
1074 | "AADMgWhiYXz5/s/n9W/9cE497ZPzHuVxHrj37rzuO5837zEAAJgD0cRCOfW00/O0Z5497zEAAOAx\n",
1075 | "PtMEAAAwIJoAAAAGRBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAG\n",
1076 | "RBMAAMCAaAIAABgQTQAAAAOiCQAAYEA0AQAADIgmAACAAdEEAAAwIJoAAAAGRBMAAMCAaAIAABg4\n",
1077 | "Zd4DwFrwyMMP5TOf+Uxuv/32eY/yOOeff37WrVs37zEAAI5boglW4cv3fz7v+IOT8lt//P55j/L/\n",
1078 | "eeDeu/OON7wiGzdunPcoAADHLdEEq3Tqaafnac88e95jAAAwYz7TBAAAMCCaAAAABkQTAADAgM80\n",
1079 | "wRr2yMMPZceOHfMe46Dc2Q8AOB6IJljDvnz/5/P6t344p572yXmP8jj3f/Gz+U//5ptywQUXzHuU\n",
1080 | "AxJ0AMBqiSZY4xb1rn4P3Lt7YYPOrdoBgMOxcNFUVRcneVOSk5O8rbt/as4jAUdoUYNukT344IPZ\n",
1081 | "uXNnkuSv//qv8/SnP32+A+3HFToATkQLFU1VdXKSX0hyUZI7k3y0qm7u7r+Y72QAs7Fz585897W/\n",
1082 | "kVNPO33fjt+5a74DrbDIV+hWxuYiEpsAa9tCRVOSC5Pc0d07k6Sq3pnk0iSiCThmFvkGGjt27FjY\n",
1083 | "K3SL/vu27+2gp897lMdZ1NjcPzQX7crmooamQD8yi7zeHnzwwSRZyN+3ZDH/m56Ifw4WLZrOTvLp\n",
1084 | "FY93Jfm60Qkn3fvnUx3oSDzhgU/ngZMW827u//e+LyQ5ad5jHJDZDt+izpUs9mxf/Oxf5Ud+5i/z\n",
1085 | "5Kc9a96jPM69uz+VZ5y5WP9z/Si/b0duEWNzx44d+ZGfec9+/z3/eG7zrPTl+7+Q//LDly7kjWQO\n",
1086 | "/Pu2GNbe79tirLd7d38qT3rqM/w3PQyL/ufgN//bDx3zv6g6aXl5+Zj+wKNRVd+R5OLu/v7J4+9K\n",
1087 | "8nXd/ZoDHb+0tLQ4wwMAAAtpy5YtR/U3uYt2penOJOeueHxu9l1tOqCj/ZcHAAA4lEWLpo8l2VBV\n",
1088 | "5yf5TJIrkrx8rhMBAAAntIX64E13P5TkB5K8L8n2JDe4cx4AADBPC/WZJgAAgEWzUFeaAAAAFo1o\n",
1089 | "AgAAGBBNAAAAA4t297zHVNXFSd6U5OQkb+vunzrAMT+f5FuTPJDke7v746s9F1Y6yvW2M8meJA8n\n",
1090 | "2dvdF85obNaoQ623qvrqJG9P8oIkP9bdP7vac2F/R7nedsbrG4dpFWvuO5P8h+z7BvT7kvzb7v6z\n",
1091 | "1ZwL+zvK9bYzq3yNW8grTVV1cpJfSHJxkk1JXl5Vz9nvmJcl+aru3pDkXyV5y2rPhZWOZr1NLCd5\n",
1092 | "UXe/wP9QcCirfI36fJLXJPmZIzgXHnM0623C6xuHZZVr7lNJ/kl3Py/Jf0zy1sM4Fx5zNOttYtWv\n",
1093 | "cQsZTUkuTHJHd+/s7r1J3pnk0v2OuSTJ1iTp7o8keUZVnbHKc2GlI11v61c874uWWa1Drrfu/lx3\n",
1094 | "fyzJ3sM9F/ZzNOvtUV7fOByrWXMf7u57Jw8/kuSc1Z4L+zma9faoVb3GLWo0nZ3k0yse75rsW80x\n",
1095 | "Z63iXFjpaNZbsu9vKd5fVR+rqu+f2pQcL1az3qZxLiemo10zXt84XIe75l6Z5PeO8Fw4mvWWHMZr\n",
1096 | "3KJG02q/PMrffnEsHO16+6bufkH2fd7p1VX1zcdmLI5TR/PleL5Yj8N1tGvmG72+cZhWveaq6sVJ\n",
1097 | "rk7yusM9FyaOZr0lh/Eat6jRdGeSc1c8Pjf7ynF0zDmTY1ZzLqx0pOvtziTp7s9Mfv1ckndn36Vi\n",
1098 | "OJijeY3y+sbhOqo1092fnfzq9Y3VWtWaq6rnJfnlJJd09xcP51xY4WjW22G9xi3q3fM+lmRDVZ2f\n",
1099 | "5DNJrkjy8v2OuTnJDyR5Z1V9fZJ7unt3VX1+FefCSkez3k5NcnJ331dVT03yLUl+cnajswatZr09\n",
1100 | "av+rm4dzLiRHsd68vnGEDrnmqurvJ3lXku/q7jsO51zYzxGvt8N9jTtpeXkxr4RW1bfm724f+Cvd\n",
1101 | "/Yaq+tdJ0t2/NDnm0btlfCnJ93X3Hx/s3Dn8K7CGHOl6q6qvzL4/iMm+v4T4deuNQznUepvc1Oaj\n",
1102 | "Sb4iySPZd4vUTd19v9c3DteRrrckp8frG0dgFWvubUm+PcnfTE557FbPXuM4XEe63g73/+EWNpoA\n",
1103 | "AAAWwaJ+pgkAAGAhiCYAAIAB0QQAADAgmgAAAAZEEwAAwIBoAgAAGBBNAAAAA/8PpsFEcPB1IGoA\n",
1104 | "AAAASUVORK5CYII=\n"
1105 | ],
1106 | "text/plain": [
1107 | ""
1108 | ]
1109 | },
1110 | "metadata": {},
1111 | "output_type": "display_data"
1112 | }
1113 | ],
1114 | "source": [
1115 | "ETFs.Div_Yield.plot(kind='hist', bins=20)"
1116 | ]
1117 | },
1118 | {
1119 | "cell_type": "code",
1120 | "execution_count": 205,
1121 | "metadata": {
1122 | "collapsed": false
1123 | },
1124 | "outputs": [
1125 | {
1126 | "data": {
1127 | "text/plain": [
1128 | ""
1129 | ]
1130 | },
1131 | "execution_count": 205,
1132 | "metadata": {},
1133 | "output_type": "execute_result"
1134 | },
1135 | {
1136 | "data": {
1137 | "image/png": [
1138 | "iVBORw0KGgoAAAANSUhEUgAAA1gAAAHiCAYAAAD1UW2SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
1139 | "AAALEgAACxIB0t1+/AAAHotJREFUeJzt3X2QZXdd5/HPkBhIIBtkKZKQZEliJV8JNawwbkBd1ocN\n",
1140 | "WxElYdctEiwwmhT/BHlwS0qCq+VW7UZwRdFyg4U8GKLGRMQQyweSxS0W19VAgzgy8JVABjOjmVhk\n",
1141 | "Eh4ikkl6/7hn1mZMJk3md+/t7rxe/8w5555772/ur7tn3n3OPXfb6upqAAAAOHKPWfYAAAAAtgqB\n",
1142 | "BQAAMIjAAgAAGERgAQAADCKwAAAABhFYAAAAgxw9rweuqnck+Z4kd3b39mnbk5Jcl+RpSXYneXF3\n",
1143 | "3z3ddkWSS5Pcn+RV3X3TtH1Hkl9N8rgkv9/dr57XmAEAAI7EPI9gvTPJ+Ydse12Sm7v77CTvn9ZT\n",
1144 | "VeckuSjJOdN9rqqqbdN93pLksu4+K8lZVXXoYwIAAGwIcwus7v5gkv2HbL4gydXT8tVJXjQtX5jk\n",
1145 | "2u6+r7t3J7k1yXOq6uQkx3f3LdN+71pzHwAAgA1l0e/BOrG7903L+5KcOC0/NcmeNfvtSXLKg2zf\n",
1146 | "O20HAADYcOb2HqyH092rVbU6j8deWVmZy+MCAABbx44dO7Y9/F5fm0UH1r6qOqm775hO/7tz2r43\n",
1147 | "yWlr9js1syNXe6fltdv3rueJduzYMWC4PFIrKyvmYAMwDxuDeVg+c7AxmIeNwTwsnznYGFZWVuby\n",
1148 | "uIs+RfDGJJdMy5ckuWHN9our6piqOiPJWUlu6e47kny+qp4zXfTiZWvuAwAAsKHM8zLt1yb59iRP\n",
1149 | "rqrbk/xkkjckub6qLst0mfYk6e5dVXV9kl1JDiS5vLsPnuZ3eWaXaT82s8u0/+G8xgwAAHAk5hZY\n",
1150 | "3f2Sh7jpvIfY/8okVz7I9pUk2wcODQAAYC4WfYogAADAliWwAAAABhFYAAAAgwgsAACAQQQWAADA\n",
1151 | "IAILAABgEIEFAAAwiMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwAAIBBBBYAAMAgAgsAAGAQgQUA\n",
1152 | "ADCIwAIAABhEYAEAAAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERg\n",
1153 | "AQAADCKwAAAABhFYAAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAwiMACAAAY5OhlD2BeXvmff+kR\n",
1154 | "3/fvv/T5/NcfuzQnnXTSwBEBAABb3ZYNrN1/f9ojvu+X7r49995778DRAAAAjwZOEQQAABhEYAEA\n",
1155 | "AAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFY\n",
1156 | "AAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAwiMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwAAIBB\n",
1157 | "BBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEAAAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCACCwAA\n",
1158 | "YBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFYAAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAwiMAC\n",
1159 | "AAAYRGABAAAMIrAAAAAGEVgAAACDCCwAAIBBBBYAAMAgRy/jSavqiiQvTfJAkp1JfijJ45Ncl+Rp\n",
1160 | "SXYneXF3371m/0uT3J/kVd190xKGDQAAcFgLP4JVVacneXmSZ3f39iRHJbk4yeuS3NzdZyd5/7Se\n",
1161 | "qjonyUVJzklyfpKrqsqRNwAAYMNZRqh8Psl9SY6rqqOTHJfkb5JckOTqaZ+rk7xoWr4wybXdfV93\n",
1162 | "705ya5JzFzpiAACAdVh4YHX3XUnelOSvMwuru7v75iQndve+abd9SU6clp+aZM+ah9iT5JQFDRcA\n",
1163 | "AGDdlnGK4DckeU2S0zOLpydU1UvX7tPdq0lWD/Mwh7sNAABgKZZxkYtvTvIn3f25JKmq9yT5liR3\n",
1164 | "VNVJ3X1HVZ2c5M5p/71JTltz/1OnbXOzurqanTt3Zv/+/fN8mi1vZWVl2UMg5mGjMA/LZw42BvOw\n",
1165 | "MZiH5TMHW9cyAuuTSX6iqo5N8uUk5yW5JcmXklyS5I3TnzdM+9+Y5Deq6ucyOzXwrGn/udm2bVu2\n",
1166 | "b9+eM888c55Ps6WtrKxkx44dyx7Go5552BjMw/KZg43BPGwM5mH5zMHGMK/IXcZ7sD6W5F1JPpzk\n",
1167 | "L6bNb03yhiTPr6q/SvJd03q6e1eS65PsSvIHSS6fTiEEAADYUJbyOVjd/TNJfuaQzXdldjTrwfa/\n",
1168 | "MsmV8x4XAADAkfB5UgAAAIMILAAAgEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAA\n",
1169 | "BhFYAAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAwiMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwA\n",
1170 | "AIBBBBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEAAAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCAC\n",
1171 | "CwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFYAAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAw\n",
1172 | "iMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwAAIBBBBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEA\n",
1173 | "AAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFY\n",
1174 | "AAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAwiMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwAAIBB\n",
1175 | "BBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEAAAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCACCwAA\n",
1176 | "YBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFYAAAAgxy9jCetqicmeVuSZyRZTfJDST6V5LokT0uy\n",
1177 | "O8mLu/vuaf8rklya5P4kr+rum5YwbAAAgMNa1hGsX0jy+9399CTPTPLJJK9LcnN3n53k/dN6quqc\n",
1178 | "JBclOSfJ+UmuqipH3gAAgA1n4aFSVSckeV53vyNJuvtAd9+T5IIkV0+7XZ3kRdPyhUmu7e77unt3\n",
1179 | "kluTnLvYUQMAADy8ZZwieEaSv6uqdyb5l0lWkrwmyYndvW/aZ1+SE6flpyb50zX335PklAWNFQAA\n",
1180 | "YN2WEVhHJ3l2kh/u7g9V1ZsznQ54UHevVtXqYR7jcLcdsdXV1ezcuTP79++f59NseSsrK8seAjEP\n",
1181 | "G4V5WD5zsDGYh43BPCyfOdi6lhFYe5Ls6e4PTevvTnJFkjuq6qTuvqOqTk5y53T73iSnrbn/qdO2\n",
1182 | "udm2bVu2b9+eM888c55Ps6WtrKxkx44dyx7Go5552BjMw/KZg43BPGwM5mH5zMHGMK/IXfh7sLr7\n",
1183 | "jiS3V9XZ06bzknw8ye8muWTadkmSG6blG5NcXFXHVNUZSc5KcssChwwAALAuS7lMe5JXJvn1qjom\n",
1184 | "yaczu0z7UUmur6rLMl2mPUm6e1dVXZ9kV5IDSS7v7rmeIggAAPBILCWwuvtjSf7Vg9x03kPsf2WS\n",
1185 | "K+c6KAAAgCPk86QAAAAGEVgAAACDCCwAAIBBBBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEAAAwi\n",
1186 | "sAAAAAYRWAAAAIMILAAAgEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFYAAAA\n",
1187 | "gwgsAACAQQQWAADAIAILAABgEIEFAAAwiMACAAAY5OiH26GqTkzypiRP6+7nVdUzk3xrd//y3EcH\n",
1188 | "AACwiaznCNavJPk/SZ44rXeSV8xtRAAAAJvUegLrlO5+S5IDSdLd/5DkgbmOCgAAYBNaT2AdqKpt\n",
1189 | "B1eq6omH2xkAAODRaj2B9Z4kv5zkn1XVDya5Ock75zkoAACAzehhA6u735jkg0lWkrwgyS9095vn\n",
1190 | "PTAAAIDN5mGvIpgk3f1rSX5tzmMBAADY1B72CFZVnV1Vf1xVu6f1Z1fVT815XAAAAJvOet6D9ZYk\n",
1191 | "/y3J3dP6x5K8eG4jAgAA2KTWE1gndPcfJFlNku6+P8lX5joqAACATWi9l2k/5uBKVZ2S5P75DQkA\n",
1192 | "AGBzWu8pgu9J8uSq+i9J/jjJm+Y6KgAAgE3oYa8i2N1XV9VnkrwwybFJfqC7Pzj3kQEAAGwyhw2s\n",
1193 | "qjo6yS3d/ezMPgsLAACAh3DYUwS7+0CSL1bVsQsaDwAAwKa1ng8a/qskH6iqdyf50rRttbuvmt+w\n",
1194 | "AAAANp/1BNbRSXYlefqcxwIAALCpreciFz+4gHEAAABseg8bWFX1ikwfMrzGPZld/OJTcxkVAADA\n",
1195 | "JrSez8E6P8lPJzkvyfOTXJnkkiR/VFWXzXFsAAAAm8p6AuuBJNu7+z90979Psj3JPyQ5N8l/mufg\n",
1196 | "AAAANpP1BNY3dPdfH1zp7tuTnNHdf5vkvrmNDAAAYJNZz1UE91XV65O8M8m2zE4PvLOqjso/fW8W\n",
1197 | "AADAo9Z6jmD9QJIdSf4yyc4k3zxt+7rpTwAAALK+y7TvTfJ9D3HzzrHDAQAA2LzWc5n2xye5IsmZ\n",
1198 | "3f39VfWNSb6xu2+Y++gAAAA2kfWcIviWzE4H/KZpfW+Sn5rXgAAAADar9QTWM7v7xzK7NHu6+wuZ\n",
1199 | "XewCAACANdYTWP+wdqWqHrfO+wEAADyqrCeU/ndV/XiSx1XVdyT5rSTvneuoAAAANqH1BNbrpz8/\n",
1200 | "n+RnkvxZvAcLAADgnzjsVQSr6twkP5rkGdOmv0zyvu4+MO+BAQAAbDYPeQSrqr4lyfuSfDrJjyf5\n",
1201 | "iSSfSXJTVT13McMDAADYPA53BOvHklza3b+zZtt7qupPk7wuyYvmOjIAAIBN5nDvwXrGIXGVJOnu\n",
1202 | "9+YfTxkEAABgcrjA+tIjvA0AAOBR6XCnCD62qs55kO3bkjx2TuMBAADYtA4XWMcm+b1FDQQAAGCz\n",
1203 | "e8jA6u7TFzgOAACATW89HzQMAADAOggsAACAQQQWAADAIAILAABgEIEFAAAwiMACAAAYRGABAAAM\n",
1204 | "IrAAAAAGEVgAAACDCCwAAIBBBBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEAAAwisAAAAAYRWAAA\n",
1205 | "AIMILAAAgEGOXtYTV9VRST6cZE93v7CqnpTkuiRPS7I7yYu7++5p3yuSXJrk/iSv6u6bljNqAACA\n",
1206 | "h7bMI1ivTrIryeq0/rokN3f32UneP62nqs5JclGSc5Kcn+SqqnLkDQAA2HCWEipVdWqSFyR5W5Jt\n",
1207 | "0+YLklw9LV+d5EXT8oVJru3u+7p7d5Jbk5y7uNECAACsz7KOBP18ktcmeWDNthO7e9+0vC/JidPy\n",
1208 | "U5PsWbPfniSnzH2EAAAAX6OFvwerqr43yZ3d/dGq+o4H26e7V6tq9cFumxzutiO2urqanTt3Zv/+\n",
1209 | "/fN8mi1vZWVl2UMg5mGjMA/LZw42BvOwMZiH5TMHW9cyLnLxrUkuqKoXJHlckn9WVdck2VdVJ3X3\n",
1210 | "HVV1cpI7p/33Jjltzf1PnbbNzbZt27J9+/aceeaZ83yaLW1lZSU7duxY9jAe9czDxmAels8cbAzm\n",
1211 | "YWMwD8tnDjaGeUXuwk8R7O7Xd/dp3X1GkouT/FF3vyzJjUkumXa7JMkN0/KNSS6uqmOq6owkZyW5\n",
1212 | "ZdHjBgAAeDgb4Wp8B0/3e0OS51fVXyX5rmk93b0ryfWZXXHwD5Jc3t1zPUUQAADgkVja52AlSXd/\n",
1213 | "IMkHpuW7kpz3EPtdmeTKBQ4NAADga7YRjmABAABsCQILAABgEIEFAAAwiMACAAAYRGABAAAMIrAA\n",
1214 | "AAAGEVgAAACDCCwAAIBBBBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEAAAwisAAAAAYRWAAAAIMI\n",
1215 | "LAAAgEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFYAAAAgwgsAACAQQQWAADA\n",
1216 | "IAILAABgEIEFAAAwiMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwAAIBBBBYAAMAgAgsAAGAQgQUA\n",
1217 | "ADCIwAIAABhEYAEAAAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERg\n",
1218 | "AQAADCKwAAAABhFYAAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAwiMACAAAYRGABAAAMIrAAAAAG\n",
1219 | "EVgAAACDCCwAAIBBBBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEAAAwisAAAAAYRWAAAAIMILAAA\n",
1220 | "gEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFYAAAAgwgsAACAQQQWAADAIAIL\n",
1221 | "AABgEIEFAAAwiMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwAAIBBjl70E1bVaUneleQpSVaTvLW7\n",
1222 | "f7GqnpTkuiRPS7I7yYu7++7pPlckuTTJ/Ule1d03LXrcAAAAD2cZR7DuS/Ij3f2MJM9N8oqqenqS\n",
1223 | "1yW5ubvPTvL+aT1VdU6Si5Kck+T8JFdVlSNvAADAhrPwUOnuO7r7z6flLyb5RJJTklyQ5Oppt6uT\n",
1224 | "vGhavjDJtd19X3fvTnJrknMXOmgAAIB1WOqRoKo6PcmzkvxZkhO7e990074kJ07LT02yZ83d9mQW\n",
1225 | "ZAAAABvK0gKrqp6Q5LeTvLq7v7D2tu5ezez9WQ/lcLcBAAAsxcIvcpEkVfV1mcXVNd19w7R5X1Wd\n",
1226 | "1N13VNXJSe6ctu9Nctqau586bZub1dXV7Ny5M/v375/n02x5Kysryx4CMQ8bhXlYPnOwMZiHjcE8\n",
1227 | "LJ852LqWcRXBbUnenmRXd795zU03JrkkyRunP29Ys/03qurnMjs18Kwkt8xzjNu2bcv27dtz5pln\n",
1228 | "zvNptrSVlZXs2LFj2cN41DMPG4N5WD5zsDGYh43BPCyfOdgY5hW5yziC9W1JXprkL6rqo9O2K5K8\n",
1229 | "Icn1VXVZpsu0J0l376qq65PsSnIgyeXTKYQAAAAbysIDq7v/OA/93q/zHuI+Vya5cm6DAgAAGMDn\n",
1230 | "SQEAAAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAA\n",
1231 | "BhFYAAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAwiMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwA\n",
1232 | "AIBBBBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEAAAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCAC\n",
1233 | "CwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFYAAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAw\n",
1234 | "iMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwAAIBBBBYAAMAgAgsAAGAQgQUAADCIwAIAABhEYAEA\n",
1235 | "AAwisAAAAAYRWAAAAIMILAAAgEEEFgAAwCACCwAAYBCBBQAAMIjAAgAAGERgAQAADCKwAAAABhFY\n",
1236 | "AAAAgwgsAACAQQQWAADAIAILAABgEIEFAAAwiMACAAAYRGABAAAMcvSyB7ARPXD/gdx22205cODA\n",
1237 | "ET3O6aefnmOOOWbQqAAAgI1OYD2IL3/xrrz+qg/muBOe8ogf49577sw1P/39OfvssweODAAA2MgE\n",
1238 | "1kM47oSn5Alff8qyhwEAAGwi3oMFAAAwiMACAAAYRGABAAAMIrAAAAAGEVgAAACDCCwAAIBBBBYA\n",
1239 | "AMAgAgsAAGAQHzQ8Jw/cfyC33XbbET/O6aefnmOOOWbAiAAAgHkTWHPy5S9+Lj/51v+b40749CN+\n",
1240 | "jHvvuTPX/PT35+yzzx44MgAAYF4E1hwdd8JT8oSvP2XZwwAAABbEe7AAAAAGEVgAAACDbJpTBKvq\n",
1241 | "/CRvTnJUkrd19xuXPKS5G3GhjK985StJMuRCGS64AQAAh7cpAquqjkryS0nOS7I3yYeq6sbu/sRy\n",
1242 | "RzZfIy6U8bk9n8ixx//zHHfCU45oLBvlghtf+cpXsnv37iN+HLEIAMA8bIrASnJuklu7e3eSVNVv\n",
1243 | "JrkwyZYOrOTIL5Rx7z37hlxs42s9mvbZz342xx9//FdtG3E07bbbbpui85EH41aKxYd7TR9sHh7J\n",
1244 | "46zXkYargP5qo16PjTK/bG3r+Xpdz88kX2dsFkfyM3rt94Kv+a1nswTWKUluX7O+J8lzDneHbfd8\n",
1245 | "/BE/2WPuvT33bjuyt6f9/RfuSrJtSzxGkuz/20/ltT/7yTzuCU/6Gu71ka9au2ffZ/LYxz/xa3yM\n",
1246 | "r3bPvs/kiScfeRiN+IyyEWN47c++94hfj4d/TT9ymNu+lsc5vC9/8a789x+9MGecccYjfowRr8mI\n",
1247 | "cYy23tA91IjXI9k487tMj3QOWL/1f70+9M+kzf51tln4fhjjyH9GfyRf/uJdeff/eM3Sf+nLWNtW\n",
1248 | "V1eXPYaHVVXfl+T87n75tP7SJM/p7lc+2P4rKysb/y8FAAAs1Y4dO478SMQhNssRrL1JTluzflpm\n",
1249 | "R7Ee1DxeKAAAgIezWQLrw0nOqqrTk/xNkouSvGSpIwIAADjEpvgcrO4+kOSHk7wvya4k1231KwgC\n",
1250 | "AACbz6Z4DxYAAMBmsCmOYAEAAGwGAgsAAGAQgQUAADDIZrmK4LpU1flJ3pzkqCRv6+43LnlIm1pV\n",
1251 | "vSPJ9yS5s7u3T9uelOS6JE9LsjvJi7v77um2K5JcmuT+JK/q7pum7TuS/GqSxyX5/e5+9bT9sUne\n",
1252 | "leTZST6X5KLu/uyi/n6bRVWdltnr9JQkq0ne2t2/aC4Wq6oel+QDSR6b5Jgk7+3uK8zD4lXVUZld\n",
1253 | "XXZPd7/QHCxeVe1O8vnMXtf7uvtc87B4VfXEJG9L8ozM/n34oSSfinlYiKqqJL+5ZtOZSX4iya/F\n",
1254 | "HCzU9Lq+NMkDSXZm9r3w+CxpHrbMEazpH9xfSnJ+knOSvKSqnr7cUW1678zs9VzrdUlu7u6zk7x/\n",
1255 | "Wk9VnZPZ5fPPme5zVVUd/DyytyS5rLvPyuxy+wcf87Ikn5u2/3wSQfzg7kvyI939jCTPTfKK6Wvb\n",
1256 | "XCxQd385yXd29zcleWaS76yqfx3zsAyvzuyKsgev0mQOFm81yXd097O6+9xpm3lYvF/I7D+BT8/s\n",
1257 | "59InYx4Wpmee1d3PSrIjyb1JfifmYKGmj3F6eZJnTwcEjkpycZY4D1smsJKcm+TW7t7d3fdl9huF\n",
1258 | "C5c8pk2tuz+YZP8hmy9IcvW0fHWSF03LFya5trvv6+7dSW5N8pyqOjnJ8d19y7Tfu9bcZ+1j/XaS\n",
1259 | "fzv8L7EFdPcd3f3n0/IXk3wiySkxFwvX3fdOi8dk9gN8f8zDQlXVqUlekNlv7Q/+g2gOlmPbIevm\n",
1260 | "YYGq6oQkz+vudySzj7Tp7ntiHpblvMz+H3p7zMGifT6zX0YfV1VHJzkus8/NXdo8bKXAOiXJ7WvW\n",
1261 | "90zbGOvE7t43Le9LcuK0/NTMXvODDr7+h27fm3+cl/8/Z9Nnnd0znWLCQ5h+S/OsJH8Wc7FwVfWY\n",
1262 | "qvrzzF7v/9XdH495WLSfT/LazE4DOcgcLN5qkv9ZVR+uqpdP28zDYp2R5O+q6p1V9ZGq+pWqenzM\n",
1263 | "w7JcnOTaadkcLFB335XkTUn+OrOwuru7b84S52ErBZYP9Fqw7l6N131hquoJmf3W5NXd/YW1t5mL\n",
1264 | "xejuB6ZTBE9N8m+q6jsPud08zFFVfW9m7wn9aP7p0ZMk5mCBvm06Leq7Mztt+XlrbzQPC3F0Zu8H\n",
1265 | "uaq7n53kS5lOgTrIPCxGVR2T5IVJfuvQ28zB/FXVNyR5TZLTM4ukJ1TVS9fus+h52EqBtTfJaWvW\n",
1266 | "T8tXVyhj7Kuqk5JkOpR657T90Nf/1Mxe/73T8qHbD97nX0yPdXSSE6bfQnCIqvq6zOLqmu6+Ydps\n",
1267 | "LpZkOg3n9zI75948LM63Jrmgqm7L7DfF31VV18QcLFx3/+30599l9p6Tc2MeFm1PZhd6+dC0/u7M\n",
1268 | "gusO87Bw351kZfp+SHwvLNo3J/mT7v7cdHTpPUm+JUv8XthKgfXhzN6Mdvr0m4SLkty45DFtRTcm\n",
1269 | "uWRaviTJDWu2X1xVx1TVGUnOSnJLd9+R5PNV9ZzpDYQvS/LeB3ms/5jZGxA5xPS6vT3Jru5+85qb\n",
1270 | "zMUCVdWTpyt2paqOTfL8JB+NeViY7n59d5/W3WdkdjrOH3X3y2IOFqqqjquq46flxyf5d5ldtcs8\n",
1271 | "LND0+t1eVWdPm85L8vEkvxvzsGgvyT+eHpj4Xli0TyZ5blUdO71+52V2IaSlfS9smcu0d/eBqvrh\n",
1272 | "JO/L7M3nb+/uTyx5WJtaVV2b5NuTPLmqbk/yk0nekOT6qros0yUvk6S7d1XV9Zl9QR9Icvl0ODZJ\n",
1273 | "Ls/skpfHZna1oz+ctr89yTVV9anMLnl58SL+XpvQt2V26dG/qKqPTtuuiLlYtJOTXF1Vj8nsl1PX\n",
1274 | "dPf7pzkxD8tx8PX0vbBYJyb5napKZv+P+PXuvqmqPhzzsGivTPLr0y+WP53ZpamPinlYmOmXDOdl\n",
1275 | "dhW7g/xMWqDu/lhVvSuzgy0PJPlIkrcmOT5Lmodtq6tOCwUAABhhK50iCAAAsFQCCwAAYBCBBQAA\n",
1276 | "MIjAAgAAGERgAQAADCKwAAAABhFYAAAAg/w/VsBKp2oQeIMAAAAASUVORK5CYII=\n"
1277 | ],
1278 | "text/plain": [
1279 | ""
1280 | ]
1281 | },
1282 | "metadata": {},
1283 | "output_type": "display_data"
1284 | }
1285 | ],
1286 | "source": [
1287 | "ETFs.Market_Cap.plot(kind='hist',bins=40)"
1288 | ]
1289 | },
1290 | {
1291 | "cell_type": "code",
1292 | "execution_count": 221,
1293 | "metadata": {
1294 | "collapsed": false
1295 | },
1296 | "outputs": [
1297 | {
1298 | "data": {
1299 | "text/plain": [
1300 | "Equity 725\n",
1301 | "Bond 106\n",
1302 | "Commodity 100\n",
1303 | "Currency 35\n",
1304 | "Real Estate 28\n",
1305 | "Multi-Asset 26\n",
1306 | "dtype: int64"
1307 | ]
1308 | },
1309 | "execution_count": 221,
1310 | "metadata": {},
1311 | "output_type": "execute_result"
1312 | }
1313 | ],
1314 | "source": [
1315 | "ETFs.Asset.value_counts()"
1316 | ]
1317 | },
1318 | {
1319 | "cell_type": "code",
1320 | "execution_count": 220,
1321 | "metadata": {
1322 | "collapsed": false
1323 | },
1324 | "outputs": [
1325 | {
1326 | "data": {
1327 | "text/plain": [
1328 | "Large-Cap 205\n",
1329 | "Small-Cap 79\n",
1330 | "Mid-Cap 53\n",
1331 | "Multi-Cap 24\n",
1332 | "dtype: int64"
1333 | ]
1334 | },
1335 | "execution_count": 220,
1336 | "metadata": {},
1337 | "output_type": "execute_result"
1338 | }
1339 | ],
1340 | "source": [
1341 | "ETFs.Size.value_counts()"
1342 | ]
1343 | },
1344 | {
1345 | "cell_type": "code",
1346 | "execution_count": 219,
1347 | "metadata": {
1348 | "collapsed": false
1349 | },
1350 | "outputs": [
1351 | {
1352 | "data": {
1353 | "text/plain": [
1354 | "Blend 177\n",
1355 | "Value 85\n",
1356 | "Growth 59\n",
1357 | "dtype: int64"
1358 | ]
1359 | },
1360 | "execution_count": 219,
1361 | "metadata": {},
1362 | "output_type": "execute_result"
1363 | }
1364 | ],
1365 | "source": [
1366 | "ETFs.Style.value_counts()"
1367 | ]
1368 | },
1369 | {
1370 | "cell_type": "code",
1371 | "execution_count": 209,
1372 | "metadata": {
1373 | "collapsed": false
1374 | },
1375 | "outputs": [
1376 | {
1377 | "data": {
1378 | "text/plain": [
1379 | ""
1380 | ]
1381 | },
1382 | "execution_count": 209,
1383 | "metadata": {},
1384 | "output_type": "execute_result"
1385 | },
1386 | {
1387 | "data": {
1388 | "image/png": [
1389 | "iVBORw0KGgoAAAANSUhEUgAAA0YAAAHiCAYAAADMNtzJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
1390 | "AAALEgAACxIB0t1+/AAAHdZJREFUeJzt3X+w5Xdd3/FXSFwg5rKANEt+7CSpk/uWsCKyGq0/RqCh\n",
1391 | "TVETnE4JMmIwTP8QLNSZMmahRZ2OAWytaB1wKMhELJHUHyEGKYk4InQQ5ArKuvDG4N5bNrIbBRIX\n",
1392 | "U8yv7R/3pF0he/duds8999zP4/HPfs853++97/CZvdznfr/ne047cuRIAAAARvaoWQ8AAAAwa8II\n",
1393 | "AAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABjeGdP+BlX1+CRvSfLUJEeS/EiSv0jyziQXJFlO8vzu\n",
1394 | "vmuy/54k1yR5IMnLu/vWac8IAACMbSPOGP1Ckt/t7qckeVqSTyW5Nslt3b2Y5H2Tx6mqS5JcleSS\n",
1395 | "JJcneWNVOasFAABM1VSjo6q2J/nu7v6VJOnu+7v77iRXJLl+stv1SZ432b4yyQ3dfV93Lye5Pcml\n",
1396 | "05wRAABg2pfSXZTkr6vqbUm+KclSkn+bZEd3H5rscyjJjsn2uUn+6KjjDyQ5b8ozAgAAg5t2GJ2R\n",
1397 | "5BlJfqy7/7iq3pDJZXMP6e4jVXVkja9xzNeWlpbWOg4AACC7d+8+7Xj7TDuMDiQ50N1/PHn8G0n2\n",
1398 | "JDlYVU/u7oNVdU6SOyev35Fk51HHnz957ph27959ikdmoywtLVm/OWXt5pv1m2/Wb35Zu/lm/ebX\n",
1399 | "0tLSuvab6nuMuvtgks9W1eLkqcuS/HmS30ly9eS5q5PcNNm+OckLqmpbVV2U5OIkH5nmjAAAAFO/\n",
1400 | "XXeSf5Pkv1fVtiSfyertuk9PcmNVvSST23UnSXfvq6obk+xLcn+Sl3a3y+UAAICpmnoYdfefJvnW\n",
1401 | "h3npsmPsf12S66Y6FAAAwFF8RhAAADA8YQQAAAxPGAEAAMMTRgAAwPCEEQAAMDxhBAAADE8YAQAA\n",
1402 | "wxNGAADA8IQRAAAwPGEEAAAMTxgBAADDE0YAAMDwhBEAADA8YQQAAAxPGAEAAMMTRgAAwPCEEQAA\n",
1403 | "MDxhBAAADE8YAQAAwxNGAADA8IQRAAAwPGEEAAAMTxgBAADDE0YAAMDwhBEAADA8YQQAAAxPGAEA\n",
1404 | "AMMTRgAAwPCEEQAAMDxhBAAADE8YAQAAwxNGAADA8IQRAAAwPGEEAAAMTxgBAADDE0YAAMDwhBEA\n",
1405 | "ADA8YQQAAAxPGAEAAMMTRgAAwPCEEQAAMDxhBAAADE8YAQAAwxNGAADA8IQRAAAwPGEEAAAMTxgB\n",
1406 | "AADDE0YAAMDwhBEAADA8YQQAAAxPGAEAAMMTRgAAwPCEEQAAMDxhBAAADE8YAQAAwxNGAADA8IQR\n",
1407 | "AAAwPGEEAAAMTxgBAADDO2PWAwDAqXLvvfdmeXl51mNM1crKShYWFmY9xpouvPDCbNu2bdZjAJwQ\n",
1408 | "YQTAlrG8vJwX7XlHztx+9qxHma5bDs56gmO65+478/bXvjCLi4uzHgXghAgjALaUM7efnbOecN6s\n",
1409 | "xwBgzniPEQAAMDxhBAAADE8YAQAAwxNGAADA8KZ+84WqWk7yt0keSHJfd19aVU9M8s4kFyRZTvL8\n",
1410 | "7r5rsv+eJNdM9n95d9867RkBAICxbcQZoyNJntnd39zdl06euzbJbd29mOR9k8epqkuSXJXkkiSX\n",
1411 | "J3ljVTmrBQAATNVGRcdpX/H4iiTXT7avT/K8yfaVSW7o7vu6eznJ7UkuDQAAwBRt1Bmj36uqj1bV\n",
1412 | "v548t6O7D022DyXZMdk+N8mBo449kMSHUQAAAFO1ER/w+p3d/bmq+kdJbquqTx39Yncfqaojaxy/\n",
1413 | "1mtZWlo6FTMyI9Zvflm7+bZV129lZWXWI5Bk7969OXz48KzH2JS26t+9UVi/rW3qYdTdn5v8+ddV\n",
1414 | "9dtZvTTuUFU9ubsPVtU5Se6c7H5Hkp1HHX7+5Llj2r179xSmZiMsLS1Zvzll7ebbVl6/hYWF5JaD\n",
1415 | "sx5jeLt27cri4uKsx9h0tvLfvRFYv/m13qCd6qV0VXVmVS1Mtr82yT9L8okkNye5erLb1Ulummzf\n",
1416 | "nOQFVbWtqi5KcnGSj0xzRgAAgGm/x2hHkg9U1ceTfDjJLZPbb78uyXOq6tNJnj15nO7el+TGJPuS\n",
1417 | "vCfJS7t7zUvpAAAATtZUL6Xr7v1Jnv4wz38hyWXHOOa6JNdNcy4AAICj+YwgAABgeMIIAAAYnjAC\n",
1418 | "AACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4Qkj\n",
1419 | "AABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4w\n",
1420 | "AgAAhieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJ\n",
1421 | "IwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABie\n",
1422 | "MAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDh\n",
1423 | "CSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAY\n",
1424 | "njACAACGJ4wAAIDhCSMAAGB4Z0z7G1TV6Uk+muRAd39/VT0xyTuTXJBkOcnzu/uuyb57klyT5IEk\n",
1425 | "L+/uW6c9HwAAwEacMXpFkn1JjkweX5vktu5eTPK+yeNU1SVJrkpySZLLk7yxqpzRAgAApm6q4VFV\n",
1426 | "5yd5bpK3JDlt8vQVSa6fbF+f5HmT7SuT3NDd93X3cpLbk1w6zfkAAACS6Z8x+vkkr0zy4FHP7eju\n",
1427 | "Q5PtQ0l2TLbPTXLgqP0OJDlvyvMBAABM7z1GVfV9Se7s7o9V1TMfbp/uPlJVRx7utYm1XkuSLC0t\n",
1428 | "PcIJ2Qys3/yydvNtq67fysrKrEcgyd69e3P48OFZj7EpbdW/e6OwflvbNG++8B1Jrqiq5yZ5TJLH\n",
1429 | "VdXbkxyqqid398GqOifJnZP970iy86jjz588t6bdu3ef4rHZKEtLS9ZvTlm7+baV129hYSG55eCs\n",
1430 | "xxjerl27sri4OOsxNp2t/HdvBNZvfq03aKd2KV13v6q7d3b3RUlekOT3u/tFSW5OcvVkt6uT3DTZ\n",
1431 | "vjnJC6pqW1VdlOTiJB+Z1nwAAAAP2ci7vj10Wdzrkjynqj6d5NmTx+nufUluzOod7N6T5KXdfdxL\n",
1432 | "6QAAAE7W1D/HKEm6+/1J3j/Z/kKSy46x33VJrtuImQAAAB7ic4IAAIDhCSMAAGB4wggAABieMAIA\n",
1433 | "AIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMA\n",
1434 | "AGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjAC\n",
1435 | "AACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4Qkj\n",
1436 | "AABgeMIIAAAYnjACAACGJ4wAAIDhnTHrAQC2gnvvvTfLy8uzHmNdVlZWsrCwMOsxpmL//v2zHgGA\n",
1437 | "OSWMAE6B5eXlvGjPO3Lm9rNnPcr63HJw1hNMxecPfDJfd/5TZj0GAHNIGAGcImduPztnPeG8WY8x\n",
1438 | "tHvuPjTrEQCYU95jBAAADE8YAQAAwxNGAADA8IQRAAAwPGEEAAAMTxgBAADDE0YAAMDwhBEAADA8\n",
1439 | "YQQAAAxPGAEAAMMTRgAAwPCEEQAAMDxhBAAADO+M4+1QVTuS/FySC7r7u6vqaUm+o7t/eerTAQAA\n",
1440 | "bID1nDH6b0n+V5LHTx53kpdNbSIAAIANtp4wOq+735Tk/iTp7r9P8uBUpwIAANhA6wmj+6vqtIce\n",
1441 | "VNXj19oZAABg3qwnjH4ryS8neVxVvTjJbUneNs2hAAAANtJxw6i7X5/kA0mWkjw3yS909xumPRgA\n",
1442 | "AMBGOe5d6ZKku38tya9NeRYAAICZOO4Zo6parKoPVtXy5PEzquqnpjwXAADAhlnPe4zelORnktw1\n",
1443 | "efynSZ4/tYkAAAA22HrCaHt3vyfJkSTp7geS3DvVqQAAADbQem/Xve2hB1V1XpIHpjcSAADAxlrv\n",
1444 | "pXS/leRJVfXTST6Y5OemOhUAAMAGOu5d6br7+qr6yyTfn+SxSX64uz9wvOOq6jFJ3p/k0Um2JXlX\n",
1445 | "d++pqicmeWeSC5IsJ3l+d981OWZPkmuyekbq5d196yP6rwIAADgBa4ZRVZ2R5CPd/YysfpbRunX3\n",
1446 | "l6vqWd19z+TrfLCqvivJFUlu6+6fraqfSHJtkmur6pIkVyW5JMl5SX6vqha7+8FH8N8FAACwbmte\n",
1447 | "Stfd9yf5UlU99pF88e6+Z7K5LcnpSb6Y1TC6fvL89UmeN9m+MskN3X1fdy8nuT3JpY/k+wIAAJyI\n",
1448 | "9XzA66eTvL+qfiPJ302eO9LdbzzegVX1qCR/kuTrk7ypu/+8qnZ096HJLoeS7Jhsn5vkj446/EBW\n",
1449 | "zxwBAABM1XrC6Iwk+5I85US/+OQyuKdX1fYk762qZ33F60eq6sgaX2Kt1wAAAE6J9dx84cUn+026\n",
1450 | "++6qeneS3UkOVdWTu/tgVZ2T5M7Jbnck2XnUYedPnlvT0tLSyY7HDFm/+WXt/qGVlZVZjwCbxt69\n",
1451 | "e3P48OFZj7Ep+dk536zf1nbcMKqql+Wrz9zcndWbMvzFGsc9Kcn93X3X5D1Kz0ny00luTnJ1ktdP\n",
1452 | "/rxpcsjNSd5RVf8lq5fQXZzkI8ebb/fu3cfbhU1qaWnJ+s0pa/fVFhYWklsOznoM2BR27dqVxcXF\n",
1453 | "WY+x6fjZOd+s3/xab9Cu53OMLk/y2iSXZTVurstq0Px+Vb1kjePOmezz8SQfTvI73f2+JK9L8pyq\n",
1454 | "+nSSZ08ep7v3Jbkxq5ftvSfJS7vbpXQAAMDUrec9Rg8m+cbu/t9JUlU7k7wxq3eM+70kb324g7r7\n",
1455 | "E0me8TDPfyGrkfVwx1yX1fACAADYMOs5Y/T1D0VRknT3Z5Nc1N2fS3Lf1CYDAADYIOs5Y3Soql6V\n",
1456 | "5G1JTsvqZXR3VtXpcdc4AABgC1jPGaMfzurd5PYm+USSb5k89zWTPwEAAObaem7XfUeSf3mMlz9x\n",
1457 | "ascBAADYeOu5XffXJtmT5B939wur6huSfEN333ScQwEAAObCei6le1NWL5t7+uTxHUl+aloDAQAA\n",
1458 | "bLT1hNHTuvsnkvx9knT34azehAEAAGBLWE8Y/f3RD6rqMes8DgAAYC6sJ3D+sKpeneQxVfXMJP8j\n",
1459 | "ybumOhUAAMAGWk8YvWry598m+dkkH473GAEAAFvImnelq6pLk/y7JE+dPLU3yXu7+/5pDwYAALBR\n",
1460 | "jnnGqKr+SZL3JvlMklcn+Q9J/jLJrVX17RszHgAAwPStdcboJ5Jc092/fdRzv1VVf5Tk2iTPm+pk\n",
1461 | "AAAAG2St9xg99SuiKEnS3e/K/7+0DgAAYO6tFUZ/9whfAwAAmCtrXUr36Kq65GGePy3Jo6c0DwAA\n",
1462 | "wIZbK4wem+TdGzUIAADArBwzjLr7wg2cAwAAYGbW8wGvAAAAW5owAgAAhieMAACA4QkjAABgeMII\n",
1463 | "AAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieM\n",
1464 | "AACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjC\n",
1465 | "CAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYn\n",
1466 | "jAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4\n",
1467 | "wggAABieMAIAAIYnjAAAgOEJIwAAYHhnTPOLV9XOJL+a5OwkR5K8ubt/saqemOSdSS5Ispzk+d19\n",
1468 | "1+SYPUmuSfJAkpd3963TnBEAAGDaZ4zuS/Lj3f3UJN+e5GVV9ZQk1ya5rbsXk7xv8jhVdUmSq5Jc\n",
1469 | "kuTyJG+sKme1AACAqZpqdHT3we7++GT7S0k+meS8JFckuX6y2/VJnjfZvjLJDd19X3cvJ7k9yaXT\n",
1470 | "nBEAAGDDzsZU1YVJvjnJh5Ps6O5Dk5cOJdkx2T43yYGjDjuQ1ZACAACYmqm+x+ghVXVWkt9M8oru\n",
1471 | "PlxV/++17j5SVUfWOHyt17K0tHRqhmQmrN/8snb/0MrKyqxHgE1j7969OXz48KzH2JT87Jxv1m9r\n",
1472 | "m3oYVdXXZDWK3t7dN02ePlRVT+7ug1V1TpI7J8/fkWTnUYefP3numHbv3n2qR2aDLC0tWb85Ze2+\n",
1473 | "2sLCQnLLwVmPAZvCrl27sri4OOsxNh0/O+eb9Ztf6w3aqV5KV1WnJXlrkn3d/YajXro5ydWT7auT\n",
1474 | "3HTU8y+oqm1VdVGSi5N8ZJozAgAATPuM0Xcm+aEkf1ZVH5s8tyfJ65LcWFUvyeR23UnS3fuq6sYk\n",
1475 | "+5Lcn+Sl3b3mpXQAAAAna6ph1N0fzLHPSl12jGOuS3Ld1IYCAAD4Cj4jCAAAGJ4wAgAAhieMAACA\n",
1476 | "4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAA\n",
1477 | "GJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAA\n",
1478 | "gOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4wggA\n",
1479 | "ABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wA\n",
1480 | "AIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMII\n",
1481 | "AAAYnjACAACGJ4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieM\n",
1482 | "AACA4QkjAABgeMIIAAAY3hnT/OJV9StJvjfJnd39jZPnnpjknUkuSLKc5PndfdfktT1JrknyQJKX\n",
1483 | "d/et05wPAAAgmf4Zo7clufwrnrs2yW3dvZjkfZPHqapLklyV5JLJMW+sKme0AACAqZtqeHT3B5J8\n",
1484 | "8SueviLJ9ZPt65M8b7J9ZZIbuvu+7l5OcnuSS6c5HwAAQDKb9xjt6O5Dk+1DSXZMts9NcuCo/Q4k\n",
1485 | "OW8jBwMAAMY01fcYHU93H6mqI2vsstZrSZKlpaVTOBEbzfrNL2v3D62srMx6BNg09u7dm8OHD896\n",
1486 | "jE3Jz875Zv22tlmE0aGqenJ3H6yqc5LcOXn+jiQ7j9rv/Mlza9q9e/cURmQjLC0tWb85Ze2+2sLC\n",
1487 | "QnLLwVmPAZvCrl27sri4OOsxNh0/O+eb9Ztf6w3aWVxKd3OSqyfbVye56ajnX1BV26rqoiQXJ/nI\n",
1488 | "DOYDAAAGM+3bdd+Q5HuSPKmqPpvkNUlel+TGqnpJJrfrTpLu3ldVNybZl+T+JC/t7uNeSgcAAHCy\n",
1489 | "phpG3f2Dx3jpsmPsf12S66Y3EQAAwFfzOUEAAMDwhBEAADA8YQQAAAxPGAEAAMMTRgAAwPCEEQAA\n",
1490 | "MDxhBAAADE8YAQAAwxNGAADA8IQRAAAwPGEEAAAMTxgBAADDE0YAAMDwhBEAADA8YQQAAAxPGAEA\n",
1491 | "AMMTRgAAwPCEEQAAMDxhBAAADE8YAQAAwxNGAADA8IQRAAAwPGEEAAAMTxgBAADDE0YAAMDwhBEA\n",
1492 | "ADA8YQQAAAxPGAEAAMMTRgAAwPDOmPUAAMDW8eAD92f//v2zHmNTWllZycLCwoZ9vwsvvDDbtm3b\n",
1493 | "sO8H804YAQCnzJe/9Pm85s0fypnbPzPrUTanWw5uyLe55+478/bXvjCLi4sb8v1gKxBGAMApdeb2\n",
1494 | "s3PWE86b9RgAJ8R7jAAAgOEJIwAAYHjCCAAAGJ4wAgAAhieMAACA4QkjAABgeMIIAAAYnjACAACG\n",
1495 | "J4wAAIDhCSMAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAAhnfGrAcATs69996b\n",
1496 | "5eXlDf2eKysrWVhY2NDvudnt379/1iMAACdBGHFSTuaXcr9cnxr79+/Pa978oZy5/eyN/ca3HNzY\n",
1497 | "77fJff7AJ/N15z9l1mMAAI+QMOKkLC8v50V73vHIfyn3y/VJe+gX8rOecN6sRxnaPXcfmvUIAMBJ\n",
1498 | "EEactDO3n+2X8hnyCzkAwMlz8wUAAGB4wggAABieMAIAAIYnjAAAgOEJIwAAYHjCCAAAGJ4wAgAA\n",
1499 | "hieMAACA4QkjAABgeMIIAAAYnjACAACGJ4wAAIDhCSMAAGB4Z8x6AAAATq0HH7g/+/fvn/UYW8rK\n",
1500 | "ykoWFhZO+LgLL7ww27Ztm8JEnGqbLoyq6vIkb0hyepK3dPfrZzwSAMBc+fKXPp/XvPlDOXP7Z2Y9\n",
1501 | "ytZyy8ET2v2eu+/M21/7wiwuLk5pIE6lTRVGVXV6kl9KclmSO5L8cVXd3N2fPNYx//61b96o8XgY\n",
1502 | "f3NwJcl5sx4DAPgKZ24/O2c9wf9Hw3ptqjBKcmmS27t7OUmq6teTXJnkmGH0p3+zY2Mm42Hd81ed\n",
1503 | "nPhZZQCALc8ljfNls4XReUk+e9TjA0m+ba0DTrv7z6c6EGu7/+8O5ssPKqNZ+j+Hv5DktFmPMTzr\n",
1504 | "sDlYh9mzBpuDddgcvvi5v8gr//On8piznjjrUYb15S99IW973UvWte9mC6MjJ3rAT/7oP5/GHKyb\n",
1505 | "//1nb81/O2DDWIfNwTrMnjXYHKzD5mAd5slmC6M7kuw86vHOrJ41eli7d+/2TyEAAMBJ22xh9NEk\n",
1506 | "F1fVhUn+KslVSX5wphMBAABb3qb6gNfuvj/JjyV5b5J9Sd651h3pAAAAToXTjhw54bf1AAAAbCmb\n",
1507 | "6owRAADALAgjAABgeMIIAAAY3ma7K90Jq6r/mOSKrH4G0ueTvLi7P7v2UWwGVfWfknxfknuTfCbJ\n",
1508 | "j3T33bOdivWqqn+V5KeSfEOSb+3uP5ntRBxPVV2e5A1JTk/ylu5+/YxHYp2q6leSfG+SO7v7G2c9\n",
1509 | "DyemqnYm+dUkZ2f195U3d/cvznYq1qOqHpPk/UkenWRbknd1957ZTsWJqqrTs3r36wPd/f3H2m8r\n",
1510 | "nDH62e7+pu5+epKbkvzkrAdi3W5N8tTu/qYkn07iB818+USSH0jyh7MehOOb/J/CLyW5PMklSX6w\n",
1511 | "qp4y26k4AW/L6toxn+5L8uPd/dQk357kZf7+zYfu/nKSZ01+z3xakmdV1XfNeCxO3CuyesfrNe86\n",
1512 | "N/dh1N2Hj3p4VpK/mdUsnJjuvq27H5w8/HCS82c5Dyemuz/V3Z+e9Rys26VJbu/u5e6+L8mvJ7ly\n",
1513 | "xjOxTt39gSRfnPUcPDLdfbC7Pz7Z/lKSTyY5d7ZTsV7dfc9kc1tWz7h/YYbjcIKq6vwkz03yliSn\n",
1514 | "rbXv3F9KlyRV9TNJXpTknqz+Swzz55okN8x6CNjCzkty9GXGB5J824xmgWFNPsT+m7P6D4LMgap6\n",
1515 | "VJI/SfL1Sd7U3ftmPBIn5ueTvDLJ446341yEUVXdluTJD/PSq7r7d7r71UleXVXXZvU//kc2dECO\n",
1516 | "6XhrN9nn1Unu7e53bOhwHNd61o+54UPrYMaq6qwkv5HkFZMzR8yBydUtT6+q7UneW1XP7O4/mPFY\n",
1517 | "rENVfV9W35v5sap65vH2n4sw6u7nrHPXdyT53WnOwok53tpV1Yuzenrzn27IQJyQE/i7x+Z3R5Kd\n",
1518 | "Rz3emdWzRsAGqKqvSfKbSX6tu2+a9TycuO6+u6reneRbkvzBjMdhfb4jyRVV9dwkj0nyuKr61e7+\n",
1519 | "4Yfbee7fY1RVFx/18MokH5vVLJyYyR2yXpnkysmbG5lfa16zy6bw0SQXV9WFVbUtyVVJbp7xTDCE\n",
1520 | "qjotyVuT7OvuN8x6Htavqp5UVY+fbD82yXPid8250d2v6u6d3X1Rkhck+f1jRVEyJ2eMjuO1VVVJ\n",
1521 | "HsjqLZ9/dMbzsH7/NatvZLxtdQnzoe5+6WxHYr2q6geS/GKSJyV5d1V9rLv/xYzH4hi6+/6q+rEk\n",
1522 | "783qm4ff2t2fnPFYrFNV3ZDke5J8XVV9NslruvttMx6L9fvOJD+U5M+q6qFfqvd09/+c4UyszzlJ\n",
1523 | "rp+8z+hRSd7e3e+b8Uw8cmteVn7akSMuOwcAAMY295fSAQAAnCxhBAAADE8YAQAAwxNGAADA8IQR\n",
1524 | "AAAwPGEEAAAMTxgBAADD+79lB14xV812IQAAAABJRU5ErkJggg==\n"
1525 | ],
1526 | "text/plain": [
1527 | ""
1528 | ]
1529 | },
1530 | "metadata": {},
1531 | "output_type": "display_data"
1532 | }
1533 | ],
1534 | "source": [
1535 | "ETFs.Beta.plot(kind='hist',bins=8)"
1536 | ]
1537 | },
1538 | {
1539 | "cell_type": "code",
1540 | "execution_count": 218,
1541 | "metadata": {
1542 | "collapsed": false
1543 | },
1544 | "outputs": [
1545 | {
1546 | "data": {
1547 | "text/plain": [
1548 | "U.S. 460\n",
1549 | "Global/Multi-Region 107\n",
1550 | "Emerging Markets 28\n",
1551 | "China 20\n",
1552 | "Europe 15\n",
1553 | "Japan 10\n",
1554 | "Developed Markets 9\n",
1555 | "Ex-U.S. 9\n",
1556 | "EAFE 8\n",
1557 | "Asia 7\n",
1558 | "India 6\n",
1559 | "Pacific ex-Japan 6\n",
1560 | "BRIC 5\n",
1561 | "Brazil 5\n",
1562 | "Latin America 5\n",
1563 | "Canada 3\n",
1564 | "Euro-Pacific 3\n",
1565 | "Middle East 3\n",
1566 | "Mexico 3\n",
1567 | "South Korea 2\n",
1568 | "Africa 2\n",
1569 | "Taiwan 2\n",
1570 | "Australia 2\n",
1571 | "Russia 2\n",
1572 | "Indonesia 2\n",
1573 | "Middle East/Africa 2\n",
1574 | "Israel 1\n",
1575 | "Colombia 1\n",
1576 | "Austria 1\n",
1577 | "France 1\n",
1578 | "Turkey 1\n",
1579 | "Ireland 1\n",
1580 | "Italy 1\n",
1581 | "Switzerland 1\n",
1582 | "Malaysia 1\n",
1583 | "United Kingdom 1\n",
1584 | "Germany 1\n",
1585 | "Pacific 1\n",
1586 | "Singapore 1\n",
1587 | "Chindia 1\n",
1588 | "Nordic 1\n",
1589 | "Poland 1\n",
1590 | "Chile 1\n",
1591 | "Belgium 1\n",
1592 | "Thailand 1\n",
1593 | "Hong Kong 1\n",
1594 | "Netherlands 1\n",
1595 | "South Africa 1\n",
1596 | "Peru 1\n",
1597 | "North America 1\n",
1598 | "Sweden 1\n",
1599 | "Vietnam 1\n",
1600 | "Spain 1\n",
1601 | "dtype: int64"
1602 | ]
1603 | },
1604 | "execution_count": 218,
1605 | "metadata": {},
1606 | "output_type": "execute_result"
1607 | }
1608 | ],
1609 | "source": [
1610 | "ETFs.Region.value_counts()"
1611 | ]
1612 | },
1613 | {
1614 | "cell_type": "code",
1615 | "execution_count": 217,
1616 | "metadata": {
1617 | "collapsed": false
1618 | },
1619 | "outputs": [
1620 | {
1621 | "data": {
1622 | "text/plain": [
1623 | "Energy 45\n",
1624 | "Technology 41\n",
1625 | "Financial 41\n",
1626 | "Industrial 32\n",
1627 | "Health & Biotech 25\n",
1628 | "Utilities 17\n",
1629 | "Retail & Consumer 15\n",
1630 | "Materials 12\n",
1631 | "Communications 11\n",
1632 | "Consumer Staples 6\n",
1633 | "Consumer Discretionary 6\n",
1634 | "Transportation 4\n",
1635 | "Building & Construction 3\n",
1636 | "Agriculture 3\n",
1637 | "Aerospace & Defense 2\n",
1638 | "Environmental 1\n",
1639 | "dtype: int64"
1640 | ]
1641 | },
1642 | "execution_count": 217,
1643 | "metadata": {},
1644 | "output_type": "execute_result"
1645 | }
1646 | ],
1647 | "source": [
1648 | "ETFs.Sector.value_counts()"
1649 | ]
1650 | },
1651 | {
1652 | "cell_type": "code",
1653 | "execution_count": 216,
1654 | "metadata": {
1655 | "collapsed": false
1656 | },
1657 | "outputs": [
1658 | {
1659 | "data": {
1660 | "text/plain": [
1661 | "2x 116\n",
1662 | "3x 44\n",
1663 | "dtype: int64"
1664 | ]
1665 | },
1666 | "execution_count": 216,
1667 | "metadata": {},
1668 | "output_type": "execute_result"
1669 | }
1670 | ],
1671 | "source": [
1672 | "ETFs.Leveraged.value_counts()"
1673 | ]
1674 | },
1675 | {
1676 | "cell_type": "code",
1677 | "execution_count": 215,
1678 | "metadata": {
1679 | "collapsed": false
1680 | },
1681 | "outputs": [
1682 | {
1683 | "data": {
1684 | "text/plain": [
1685 | "False 914\n",
1686 | "True 106\n",
1687 | "dtype: int64"
1688 | ]
1689 | },
1690 | "execution_count": 215,
1691 | "metadata": {},
1692 | "output_type": "execute_result"
1693 | }
1694 | ],
1695 | "source": [
1696 | "ETFs.Inverse.value_counts()"
1697 | ]
1698 | },
1699 | {
1700 | "cell_type": "markdown",
1701 | "metadata": {},
1702 | "source": [
1703 | "## Places to collect holdings data "
1704 | ]
1705 | },
1706 | {
1707 | "cell_type": "code",
1708 | "execution_count": 213,
1709 | "metadata": {
1710 | "collapsed": true
1711 | },
1712 | "outputs": [],
1713 | "source": [
1714 | "# http://www.etfreplay.com/"
1715 | ]
1716 | },
1717 | {
1718 | "cell_type": "code",
1719 | "execution_count": null,
1720 | "metadata": {
1721 | "collapsed": true
1722 | },
1723 | "outputs": [],
1724 | "source": [
1725 | "# http://etfdb.com/etf/###\n",
1726 | "# http://finance.yahoo.com/q/hl?s=### ETF holdings"
1727 | ]
1728 | },
1729 | {
1730 | "cell_type": "code",
1731 | "execution_count": null,
1732 | "metadata": {
1733 | "collapsed": true
1734 | },
1735 | "outputs": [],
1736 | "source": [
1737 | "# https://accounts.profunds.com/etfdata/ByFund/EFAD-psdlyhld.csv\n",
1738 | "# http://www.ishares.com/us/products/239709/ishares-russell-2000-growth-etf"
1739 | ]
1740 | },
1741 | {
1742 | "cell_type": "code",
1743 | "execution_count": null,
1744 | "metadata": {
1745 | "collapsed": true
1746 | },
1747 | "outputs": [],
1748 | "source": []
1749 | }
1750 | ],
1751 | "metadata": {
1752 | "kernelspec": {
1753 | "display_name": "Python 2",
1754 | "language": "python",
1755 | "name": "python2"
1756 | },
1757 | "language_info": {
1758 | "codemirror_mode": {
1759 | "name": "ipython",
1760 | "version": 2
1761 | },
1762 | "file_extension": ".py",
1763 | "mimetype": "text/x-python",
1764 | "name": "python",
1765 | "nbconvert_exporter": "python",
1766 | "pygments_lexer": "ipython2",
1767 | "version": "2.7.9"
1768 | }
1769 | },
1770 | "nbformat": 4,
1771 | "nbformat_minor": 0
1772 | }
1773 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The Feedback MIT License (FMIT)
2 |
3 | Copyright (c) 2014, Paul O. Perry
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | 1. The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | 2. Person obtaining a copy must return feedback to the authors.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/OLPS_algos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/paulperry/quant/a94ff7ea34aa0319e81307390a238e041af56dff/OLPS_algos.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # quant
2 |
3 | Here I collect some Quantitative Finance and Algorithmic Trading
4 | exhaust; mostly ipython notebooks based on
5 | [Quantopian](https://www.quantopian.com),
6 | [Zipline](https://github.com/quantopian/zipline), or
7 | [Pandas](http://pandas.pydata.org/).
8 |
9 | 1. [Comparing some Lazy Portfolios](https://github.com/paulperry/quant/blob/master/Lazy_Backtests.ipynb)
10 | 2. [Exploratory Data Analysis (EDA) of ETFs](https://github.com/paulperry/quant/blob/master/ETFs.ipynb)
11 | 3. [Comparing OLPS Algorithms on ETFs](https://github.com/paulperry/quant/blob/master/OLPS_Comparison.ipynb)
12 | 4. [Comparing Bond ETF's in the 2008 downturn](https://github.com/paulperry/quant/blob/master/Bond_ETFs.ipynb)
13 |
14 | More to come ...
15 |
--------------------------------------------------------------------------------
/spy_100.py:
--------------------------------------------------------------------------------
1 | '''
2 | A benchmark comparison to buying and holding SPY at 100%.
3 |
4 | NOTE: This algo can run in minute-mode simulation and is compatible with LIVE TRADING.
5 | '''
6 |
7 | import pandas as pd
8 | from zipline.api import order_target_percent
9 |
10 | def initialize(context):
11 | set_long_only()
12 | set_symbol_lookup_date('2008-01-01')
13 | schedule_function(trade,
14 | date_rule=date_rules.every_day(),
15 | time_rule=time_rules.market_open())
16 |
17 | context.secs = [symbol('SPY')]
18 | context.pcts = [1.0]
19 | context.ETFs = zip(context.secs, context.pcts) # list of tuples
20 |
21 | def handle_data(context, data):
22 | pass
23 |
24 | def trade(context, data):
25 | """
26 | Make sure the porfolio is fully invested every day.
27 | """
28 | threshold = 0.05
29 |
30 | need_full_rebalance = False
31 | # rebalance if we have too much cash
32 | if context.portfolio.cash / context.portfolio.portfolio_value > threshold:
33 | need_full_rebalance = True
34 |
35 | # What we should do is first sell the overs and then buy the unders.
36 | if need_full_rebalance:
37 | # Get the current exchange time, in the exchange timezone
38 | exchange_time = pd.Timestamp(get_datetime()).tz_convert('US/Eastern')
39 | # perform the full rebalance if we flagged the need to do so
40 | for sid, target in context.ETFs:
41 | order_target_percent(sid, target)
42 | log.info("Rebalanced at %s" % str(exchange_time))
43 |
44 |
--------------------------------------------------------------------------------
/swensen.py:
--------------------------------------------------------------------------------
1 | '''
2 | This algorithm defines a long-only portfolio of 6 ETF's and rebalances all of
3 | them when any one of them is off the target by a threshold of 5%.
4 | It is based on David Swensen's rationale for portfolio construction as defined in
5 | his book: "Unconventional Success: A Fundamental Approach to Personal Investment":
6 | http://www.amazon.com/Unconventional-Success-Fundamental-Approach-Investment/dp/0743228383 .
7 | The representative ETF's are defined here:
8 | http://seekingalpha.com/article/531591-swensens-6-etf-portfolio
9 | The target percents are defined here:
10 | https://www.yalealumnimagazine.com/articles/2398/david-swensen-s-guide-to-sleeping-soundly
11 | The rebalancing strategy is defined in the book and here:
12 | http://socialize.morningstar.com/NewSocialize/forums/p/102207/102207.aspx
13 |
14 | This is effectively a passive managment strategy or Lazy portfolio:
15 | http://en.wikipedia.org/wiki/Passive_management
16 | http://www.bogleheads.org/wiki/Lazy_portfolios
17 |
18 | Taxes are not modelled.
19 |
20 | NOTE: This algo can run in minute-mode simulation and is compatible with LIVE TRADING.
21 | '''
22 |
23 | from __future__ import division
24 | import datetime
25 | import pytz
26 | import pandas as pd
27 | from zipline.api import order_target_percent
28 |
29 | def initialize(context):
30 |
31 | set_long_only()
32 | set_symbol_lookup_date('2005-01-01') # because EEM has multiple sid's.
33 |
34 | context.secs = symbols('TIP', 'TLT', 'VNQ', 'EEM', 'EFA', 'VTI') # Securities
35 | context.pcts = [ 0.15, 0.15, 0.15, 0.1, 0.15, 0.3 ] # Percentages
36 | context.ETFs = zip(context.secs, context.pcts) # list of tuples
37 |
38 | # Change this variable if you want to rebalance less frequently
39 | context.rebalance_days = 20 # 1 = can rebalance any day, 20 = every month
40 |
41 | # Set the trade time, if in minute mode, we trade between 10am and 3pm.
42 | context.rebalance_date = None
43 | context.rebalance_hour_start = 10
44 | context.rebalance_hour_end = 15
45 |
46 | def handle_data(context, data):
47 |
48 | # Get the current exchange time, in the exchange timezone
49 | exchange_time = pd.Timestamp(get_datetime()).tz_convert('US/Eastern')
50 |
51 | # If it's a rebalance day (defined in intialize()) then rebalance:
52 | if context.rebalance_date == None or \
53 | exchange_time >= context.rebalance_date + datetime.timedelta(days=context.rebalance_days):
54 |
55 | # Do nothing if there are open orders:
56 | if has_orders(context):
57 | print('has open orders - doing nothing!')
58 | return
59 |
60 | rebalance(context, data, exchange_time)
61 |
62 | def rebalance(context, data, exchange_time, threshold = 0.05):
63 | """
64 | For every stock or cash position, if the target percent is off by the threshold
65 | amount (5% as a default), then place orders to adjust all positions to the target
66 | percent of the current portfolio value.
67 | """
68 |
69 | # if the backtest is in minute mode
70 | if get_environment('data_frequency') == 'minute':
71 | # rebalance if we are in the user specified rebalance time-of-day window
72 | if exchange_time.hour < context.rebalance_hour_start or \
73 | exchange_time.hour > context.rebalance_hour_end:
74 | return
75 |
76 | need_full_rebalance = False
77 | portfolio_value = context.portfolio.portfolio_value
78 |
79 | # rebalance if we have too much cash
80 | if context.portfolio.cash / portfolio_value > threshold:
81 | need_full_rebalance = True
82 |
83 | # or rebalance if an ETF is off by the given threshold
84 | for sid, target in context.ETFs:
85 | pos = context.portfolio.positions[sid]
86 | position_pct = (pos.amount * pos.last_sale_price) / portfolio_value
87 | # if any position is out of range then rebalance the whole portfolio
88 | if abs(position_pct - target) > threshold:
89 | need_full_rebalance = True
90 | break # don't bother checking the rest
91 |
92 | # perform the full rebalance if we flagged the need to do so
93 | # What we should do is first sell the overs and then buy the unders.
94 | if need_full_rebalance:
95 | for sid, target in context.ETFs:
96 | order_target_percent(sid, target)
97 | log.info("Rebalanced at %s" % str(exchange_time))
98 | context.rebalance_date = exchange_time
99 |
100 |
101 | def has_orders(context):
102 | # Return true if there are pending orders.
103 | has_orders = False
104 | for sec in context.secs:
105 | orders = get_open_orders(sec)
106 | if orders:
107 | for oo in orders:
108 | message = 'Open order for {amount} shares in {stock}'
109 | message = message.format(amount=oo.amount, stock=sec)
110 | log.info(message)
111 |
112 | has_orders = True
113 | return has_orders
114 |
--------------------------------------------------------------------------------
/vti_agg_5050.py:
--------------------------------------------------------------------------------
1 | '''
2 | A Basic Markowitz portfolio of Stocks and Bonds.
3 | Change it from 50/50 to 60/40 or 70/30.
4 | '''
5 |
6 | from __future__ import division
7 | import datetime
8 | import pytz
9 | import pandas as pd
10 | from zipline.api import order_target_percent
11 |
12 | def initialize(context):
13 | set_long_only()
14 | set_symbol_lookup_date('2005-01-01')
15 |
16 | context.secs = symbols( 'VTI', 'AGG') # Securities
17 | context.pcts = [ 0.5, 0.5 ] # Percentages
18 | context.ETFs = zip(context.secs, context.pcts)
19 | # Check to rebalance every month, but only do it in December
20 | schedule_function(rebalance,
21 | date_rules.month_end(days_offset=5), # trade before EOY settlment dates
22 | time_rules.market_open(minutes=45)) # trade after 10:15am
23 | return
24 |
25 | def rebalance(context, data):
26 | threshold = 0.05 # trigger a rebalance if we are off by this threshold (5%)
27 | # Get the current exchange time, in the exchange timezone
28 | exchange_time = pd.Timestamp(get_datetime()).tz_convert('US/Eastern')
29 | if exchange_time.month < 12:
30 | return # bail if it's not December
31 |
32 | need_full_rebalance = False
33 | portfolio_value = context.portfolio.portfolio_value
34 |
35 | # rebalance if we have too much cash
36 | if context.portfolio.cash / portfolio_value > threshold:
37 | need_full_rebalance = True
38 |
39 | # or rebalance if an ETF is off by the given threshold
40 | for sid, target in context.ETFs:
41 | pos = context.portfolio.positions[sid]
42 | position_pct = (pos.amount * pos.last_sale_price) / portfolio_value
43 | # if any position is out of range then rebalance the whole portfolio
44 | if abs(position_pct - target) > threshold:
45 | need_full_rebalance = True
46 | break # don't bother checking the rest
47 | # perform the full rebalance if we flagged the need to do so
48 | if need_full_rebalance:
49 | for sid, target in context.ETFs:
50 | order_target_percent(sid, target)
51 | log.info("Rebalanced at %s" % str(exchange_time))
52 | context.rebalance_date = exchange_time
53 |
54 | def handle_data(context, data):
55 | pass
56 |
57 |
58 |
--------------------------------------------------------------------------------
/vti_agg_6040.py:
--------------------------------------------------------------------------------
1 | '''
2 | A Basic Markowitz portfolio of Stocks and Bonds.
3 | Change it from 50/50 to 60/40 or 70/30.
4 | '''
5 |
6 | from __future__ import division
7 | import datetime
8 | import pytz
9 | import pandas as pd
10 | from zipline.api import order_target_percent
11 |
12 | def initialize(context):
13 | set_long_only()
14 | set_symbol_lookup_date('2005-01-01')
15 |
16 | context.secs = symbols( 'VTI', 'AGG') # Securities
17 | context.pcts = [ 0.6, 0.4 ] # Percentages
18 | context.ETFs = zip(context.secs, context.pcts)
19 | # Check to rebalance every month, but only do it in December
20 | schedule_function(rebalance,
21 | date_rules.month_end(days_offset=5), # trade before EOY settlment dates
22 | time_rules.market_open(minutes=45)) # trade after 10:15am
23 | return
24 |
25 | def rebalance(context, data):
26 | threshold = 0.05 # trigger a rebalance if we are off by this threshold (5%)
27 | # Get the current exchange time, in the exchange timezone
28 | exchange_time = pd.Timestamp(get_datetime()).tz_convert('US/Eastern')
29 | if exchange_time.month < 12:
30 | return # bail if it's not December
31 |
32 | need_full_rebalance = False
33 | portfolio_value = context.portfolio.portfolio_value
34 |
35 | # rebalance if we have too much cash
36 | if context.portfolio.cash / portfolio_value > threshold:
37 | need_full_rebalance = True
38 |
39 | # or rebalance if an ETF is off by the given threshold
40 | for sid, target in context.ETFs:
41 | pos = context.portfolio.positions[sid]
42 | position_pct = (pos.amount * pos.last_sale_price) / portfolio_value
43 | # if any position is out of range then rebalance the whole portfolio
44 | if abs(position_pct - target) > threshold:
45 | need_full_rebalance = True
46 | break # don't bother checking the rest
47 | # perform the full rebalance if we flagged the need to do so
48 | if need_full_rebalance:
49 | for sid, target in context.ETFs:
50 | order_target_percent(sid, target)
51 | log.info("Rebalanced at %s" % str(exchange_time))
52 | context.rebalance_date = exchange_time
53 |
54 | def handle_data(context, data):
55 | pass
56 |
57 |
58 |
--------------------------------------------------------------------------------
/vti_agg_7030.py:
--------------------------------------------------------------------------------
1 | '''
2 | A Basic Markowitz portfolio of Stocks and Bonds.
3 | Change it from 50/50 to 60/40 or 70/30.
4 | '''
5 |
6 | from __future__ import division
7 | import datetime
8 | import pytz
9 | import pandas as pd
10 | from zipline.api import order_target_percent
11 |
12 | def initialize(context):
13 | set_long_only()
14 | set_symbol_lookup_date('2005-01-01')
15 |
16 | context.secs = symbols( 'VTI', 'AGG') # Securities
17 | context.pcts = [ 0.7, 0.3 ] # Percentages
18 | context.ETFs = zip(context.secs, context.pcts)
19 | # Check to rebalance every month, but only do it in December
20 | schedule_function(rebalance,
21 | date_rules.month_end(days_offset=5), # trade before EOY settlment dates
22 | time_rules.market_open(minutes=45)) # trade after 10:15am
23 | return
24 |
25 | def rebalance(context, data):
26 | threshold = 0.05 # trigger a rebalance if we are off by this threshold (5%)
27 | # Get the current exchange time, in the exchange timezone
28 | exchange_time = pd.Timestamp(get_datetime()).tz_convert('US/Eastern')
29 | if exchange_time.month < 12:
30 | return # bail if it's not December
31 |
32 | need_full_rebalance = False
33 | portfolio_value = context.portfolio.portfolio_value
34 |
35 | # rebalance if we have too much cash
36 | if context.portfolio.cash / portfolio_value > threshold:
37 | need_full_rebalance = True
38 |
39 | # or rebalance if an ETF is off by the given threshold
40 | for sid, target in context.ETFs:
41 | pos = context.portfolio.positions[sid]
42 | position_pct = (pos.amount * pos.last_sale_price) / portfolio_value
43 | # if any position is out of range then rebalance the whole portfolio
44 | if abs(position_pct - target) > threshold:
45 | need_full_rebalance = True
46 | break # don't bother checking the rest
47 | # perform the full rebalance if we flagged the need to do so
48 | if need_full_rebalance:
49 | for sid, target in context.ETFs:
50 | order_target_percent(sid, target)
51 | log.info("Rebalanced at %s" % str(exchange_time))
52 | context.rebalance_date = exchange_time
53 |
54 | def handle_data(context, data):
55 | pass
56 |
57 |
58 |
--------------------------------------------------------------------------------