├── 01_Python_para_Investimentos_com_Google_Colab_Obtendo_cotações_do_Yahoo_Finance.ipynb
├── 02_Calculando_e_Plotando_Médias_Móveis_Python_para_Investimentos_com_Google_Colab.ipynb
├── 03_CORRELAÇÃO_entre_DÓLAR_e_IBOVESPA_Python_para_Investimentos.ipynb
├── 04_Simulando_CARTEIRA_DE_AÇÕES_e_comparando_com_o_IBOVESPA_Python_para_Investimentos_com_Google_Colab.ipynb
├── 05_Backtesting_com_Pyfolio_Python_para_Investimentos.ipynb
├── 06_Simulando_Carteiras_de_Ações_Aleatórias_Python_para_Investimentos_com_Google_Colab.ipynb
├── 07_ANÁLISE_ESTATÍSTICA_DA_QUEDA_DE_12_DO_IBOV_Python_para_Investimentos_com_Google_Colab.ipynb
├── 08_Análise_de_Empresas_com_Python_no_Google_Colab_Python_para_Investimentos.ipynb
├── 09_Alpha_Vantage_Python_para_Investimentos.ipynb
├── 10_API_Banco_Central_do_Brasil_Python_para_Investimentos.ipynb
├── 11_13_Acessando_Dados_do_Investing_com_Python_para_Investimentos.ipynb
├── 14_Integrando_Google_Colab_e_Google_Planilhas_(spreadsheet).ipynb
├── 15_Integrando_Google_Colab_e_Google_Planilhas_(spreadsheet).ipynb
├── 16_CVM_Os_Melhores_e_os_Piores_Fundos_de_Investimento_do_mes_Python_para_Investimentos.ipynb
├── 17_CVM_Os_Melhores_e_os_Piores_Fundos_de_Investimento_de_2020.ipynb
├── 18_WebScraping_B3_Raspando_dados_da_Bolsa_de_Valores.ipynb
├── 19_SALVANDO_em_uma_Planilha_EXCEL_os_Dados_do_GOOGLE_COLAB_(DataFrame_Pandas).ipynb
├── 20_Tesouro_Direto_com_Python.ipynb
├── 21_Os_piores_e_os_melhores_dias_S&P500_e_IBOV.ipynb
├── 22_5_Dicas_Incriveis_do_Google_Colab.ipynb
├── 23_FED_Banco_Central_Americano_Dados_Economicos_dos_Estados_Unidos.ipynb
├── 24_BackTesting_de_Carteira_com_Python_(BT).ipynb
├── 25_BackTesting_de_Carteira_com_Python_Parte_2_(BT).ipynb
├── 26_Analisando_Fundos_de_Investimento_com_Python_Os_Melhores_e_os_Piores_de_2020S1.ipynb
├── 27_Rentabilidade_da_Carteira_por_cotas_Considerando_aportes.ipynb
├── LICENSE
├── README.md
└── historico_leiloes_tesouro.csv
/08_Análise_de_Empresas_com_Python_no_Google_Colab_Python_para_Investimentos.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "08 - Análise de Empresas com Python no Google Colab - Python para Investimentos.ipynb",
7 | "provenance": [],
8 | "collapsed_sections": [],
9 | "include_colab_link": true
10 | },
11 | "kernelspec": {
12 | "name": "python3",
13 | "display_name": "Python 3"
14 | }
15 | },
16 | "cells": [
17 | {
18 | "cell_type": "markdown",
19 | "metadata": {
20 | "id": "view-in-github",
21 | "colab_type": "text"
22 | },
23 | "source": [
24 | " "
25 | ]
26 | },
27 | {
28 | "cell_type": "markdown",
29 | "metadata": {
30 | "id": "Ix6_7zq6PGan"
31 | },
32 | "source": [
33 | "#Ricos pelo Acaso"
34 | ]
35 | },
36 | {
37 | "cell_type": "markdown",
38 | "metadata": {
39 | "id": "rM-myTSyPKaK"
40 | },
41 | "source": [
42 | "Link para o vídeo: https://youtu.be/e_ZRDG4F4ZA"
43 | ]
44 | },
45 | {
46 | "cell_type": "markdown",
47 | "metadata": {
48 | "id": "2jz98EaGXWes"
49 | },
50 | "source": [
51 | "# Importando Bibliotecas"
52 | ]
53 | },
54 | {
55 | "cell_type": "code",
56 | "metadata": {
57 | "id": "OiURQn3EQ0go"
58 | },
59 | "source": [
60 | "import numpy as np\n",
61 | "import pandas as pd\n",
62 | "import string\n",
63 | "import warnings\n",
64 | "warnings.filterwarnings('ignore')\n",
65 | "\n",
66 | "import requests"
67 | ],
68 | "execution_count": 1,
69 | "outputs": []
70 | },
71 | {
72 | "cell_type": "markdown",
73 | "metadata": {
74 | "id": "LFnn2N6yXh9b"
75 | },
76 | "source": [
77 | "# Obtendo e tratando os dados"
78 | ]
79 | },
80 | {
81 | "cell_type": "code",
82 | "metadata": {
83 | "id": "WM76SRll9vyA"
84 | },
85 | "source": [
86 | "url = 'http://www.fundamentus.com.br/resultado.php'"
87 | ],
88 | "execution_count": 2,
89 | "outputs": []
90 | },
91 | {
92 | "cell_type": "code",
93 | "metadata": {
94 | "id": "K43D5nBw9hQA"
95 | },
96 | "source": [
97 | "header = {\n",
98 | " \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36\" \n",
99 | " }\n",
100 | "\n",
101 | "r = requests.get(url, headers=header)"
102 | ],
103 | "execution_count": 3,
104 | "outputs": []
105 | },
106 | {
107 | "cell_type": "code",
108 | "metadata": {
109 | "id": "skFbCPQ9XnR1"
110 | },
111 | "source": [
112 | "df = pd.read_html(r.text, decimal=',', thousands='.')[0]"
113 | ],
114 | "execution_count": 4,
115 | "outputs": []
116 | },
117 | {
118 | "cell_type": "code",
119 | "metadata": {
120 | "id": "YjZSHe6mc5Ue",
121 | "colab": {
122 | "base_uri": "https://localhost:8080/",
123 | "height": 425
124 | },
125 | "outputId": "4defd7b0-5af5-41fd-cf7e-82b8054f4996"
126 | },
127 | "source": [
128 | "df"
129 | ],
130 | "execution_count": 5,
131 | "outputs": [
132 | {
133 | "output_type": "execute_result",
134 | "data": {
135 | "text/html": [
136 | "
\n",
137 | "\n",
150 | "
\n",
151 | " \n",
152 | " \n",
153 | " \n",
154 | " Papel \n",
155 | " Cotação \n",
156 | " P/L \n",
157 | " P/VP \n",
158 | " PSR \n",
159 | " Div.Yield \n",
160 | " P/Ativo \n",
161 | " P/Cap.Giro \n",
162 | " P/EBIT \n",
163 | " P/Ativ Circ.Liq \n",
164 | " EV/EBIT \n",
165 | " EV/EBITDA \n",
166 | " Mrg Ebit \n",
167 | " Mrg. Líq. \n",
168 | " Liq. Corr. \n",
169 | " ROIC \n",
170 | " ROE \n",
171 | " Liq.2meses \n",
172 | " Patrim. Líq \n",
173 | " Dív.Brut/ Patrim. \n",
174 | " Cresc. Rec.5a \n",
175 | " \n",
176 | " \n",
177 | " \n",
178 | " \n",
179 | " 0 \n",
180 | " CSTB3 \n",
181 | " 150.00 \n",
182 | " 0.00 \n",
183 | " 0.00 \n",
184 | " 0.00 \n",
185 | " 0,00% \n",
186 | " 0.000 \n",
187 | " 0.00 \n",
188 | " 0.00 \n",
189 | " 0.00 \n",
190 | " 0.00 \n",
191 | " 0.00 \n",
192 | " 40,85% \n",
193 | " 28,98% \n",
194 | " 2.60 \n",
195 | " 22,40% \n",
196 | " 20,11% \n",
197 | " 0.0 \n",
198 | " 8.420670e+09 \n",
199 | " 0.14 \n",
200 | " 31,91% \n",
201 | " \n",
202 | " \n",
203 | " 1 \n",
204 | " IVTT3 \n",
205 | " 0.00 \n",
206 | " 0.00 \n",
207 | " 0.00 \n",
208 | " 0.00 \n",
209 | " 0,00% \n",
210 | " 0.000 \n",
211 | " 0.00 \n",
212 | " 0.00 \n",
213 | " 0.00 \n",
214 | " 0.00 \n",
215 | " 0.00 \n",
216 | " 0,00% \n",
217 | " 0,00% \n",
218 | " 0.00 \n",
219 | " 0,00% \n",
220 | " -0,40% \n",
221 | " 0.0 \n",
222 | " 1.083050e+09 \n",
223 | " 0.00 \n",
224 | " 20,67% \n",
225 | " \n",
226 | " \n",
227 | " 2 \n",
228 | " PORP4 \n",
229 | " 2.40 \n",
230 | " 0.00 \n",
231 | " 0.00 \n",
232 | " 0.00 \n",
233 | " 0,00% \n",
234 | " 0.000 \n",
235 | " 0.00 \n",
236 | " 0.00 \n",
237 | " 0.00 \n",
238 | " 0.00 \n",
239 | " 0.00 \n",
240 | " 0,00% \n",
241 | " 0,00% \n",
242 | " 0.00 \n",
243 | " 0,00% \n",
244 | " -2,08% \n",
245 | " 0.0 \n",
246 | " 2.239900e+07 \n",
247 | " 0.00 \n",
248 | " 13,66% \n",
249 | " \n",
250 | " \n",
251 | " 3 \n",
252 | " MNSA3 \n",
253 | " 0.42 \n",
254 | " 0.00 \n",
255 | " 0.00 \n",
256 | " 0.00 \n",
257 | " 0,00% \n",
258 | " 0.000 \n",
259 | " 0.00 \n",
260 | " 0.00 \n",
261 | " 0.00 \n",
262 | " 0.00 \n",
263 | " 0.00 \n",
264 | " -208,15% \n",
265 | " -362,66% \n",
266 | " 3.63 \n",
267 | " -13,50% \n",
268 | " 145,70% \n",
269 | " 0.0 \n",
270 | " -9.105000e+06 \n",
271 | " -6.52 \n",
272 | " -41,11% \n",
273 | " \n",
274 | " \n",
275 | " 4 \n",
276 | " CSTB4 \n",
277 | " 147.69 \n",
278 | " 0.00 \n",
279 | " 0.00 \n",
280 | " 0.00 \n",
281 | " 0,00% \n",
282 | " 0.000 \n",
283 | " 0.00 \n",
284 | " 0.00 \n",
285 | " 0.00 \n",
286 | " 0.00 \n",
287 | " 0.00 \n",
288 | " 40,85% \n",
289 | " 28,98% \n",
290 | " 2.60 \n",
291 | " 22,40% \n",
292 | " 20,11% \n",
293 | " 0.0 \n",
294 | " 8.420670e+09 \n",
295 | " 0.14 \n",
296 | " 31,91% \n",
297 | " \n",
298 | " \n",
299 | " ... \n",
300 | " ... \n",
301 | " ... \n",
302 | " ... \n",
303 | " ... \n",
304 | " ... \n",
305 | " ... \n",
306 | " ... \n",
307 | " ... \n",
308 | " ... \n",
309 | " ... \n",
310 | " ... \n",
311 | " ... \n",
312 | " ... \n",
313 | " ... \n",
314 | " ... \n",
315 | " ... \n",
316 | " ... \n",
317 | " ... \n",
318 | " ... \n",
319 | " ... \n",
320 | " ... \n",
321 | " \n",
322 | " \n",
323 | " 949 \n",
324 | " UBBR3 \n",
325 | " 18.00 \n",
326 | " 1466.61 \n",
327 | " 4.77 \n",
328 | " 0.00 \n",
329 | " 0,00% \n",
330 | " 0.000 \n",
331 | " 0.00 \n",
332 | " 0.00 \n",
333 | " 0.00 \n",
334 | " 0.00 \n",
335 | " 0.00 \n",
336 | " 0,00% \n",
337 | " 0,00% \n",
338 | " 0.00 \n",
339 | " 0,00% \n",
340 | " 0,33% \n",
341 | " 0.0 \n",
342 | " 1.031720e+10 \n",
343 | " 0.00 \n",
344 | " 10,58% \n",
345 | " \n",
346 | " \n",
347 | " 950 \n",
348 | " BIDI4 \n",
349 | " 59.24 \n",
350 | " 2580.97 \n",
351 | " 13.98 \n",
352 | " 0.00 \n",
353 | " 0,08% \n",
354 | " 0.000 \n",
355 | " 0.00 \n",
356 | " 0.00 \n",
357 | " 0.00 \n",
358 | " 0.00 \n",
359 | " 0.00 \n",
360 | " 0,00% \n",
361 | " 0,00% \n",
362 | " 0.00 \n",
363 | " 0,00% \n",
364 | " 0,54% \n",
365 | " 171320000.0 \n",
366 | " 3.240140e+09 \n",
367 | " 0.00 \n",
368 | " 30,91% \n",
369 | " \n",
370 | " \n",
371 | " 951 \n",
372 | " BIDI11 \n",
373 | " 180.04 \n",
374 | " 2614.66 \n",
375 | " 14.16 \n",
376 | " 0.00 \n",
377 | " 0,07% \n",
378 | " 0.000 \n",
379 | " 0.00 \n",
380 | " 0.00 \n",
381 | " 0.00 \n",
382 | " 0.00 \n",
383 | " 0.00 \n",
384 | " 0,00% \n",
385 | " 0,00% \n",
386 | " 0.00 \n",
387 | " 0,00% \n",
388 | " 0,54% \n",
389 | " 307846000.0 \n",
390 | " 3.240140e+09 \n",
391 | " 0.00 \n",
392 | " 30,91% \n",
393 | " \n",
394 | " \n",
395 | " 952 \n",
396 | " BIDI3 \n",
397 | " 60.95 \n",
398 | " 2655.47 \n",
399 | " 14.38 \n",
400 | " 0.00 \n",
401 | " 0,07% \n",
402 | " 0.000 \n",
403 | " 0.00 \n",
404 | " 0.00 \n",
405 | " 0.00 \n",
406 | " 0.00 \n",
407 | " 0.00 \n",
408 | " 0,00% \n",
409 | " 0,00% \n",
410 | " 0.00 \n",
411 | " 0,00% \n",
412 | " 0,54% \n",
413 | " 19837200.0 \n",
414 | " 3.240140e+09 \n",
415 | " 0.00 \n",
416 | " 30,91% \n",
417 | " \n",
418 | " \n",
419 | " 953 \n",
420 | " NTCO3 \n",
421 | " 49.96 \n",
422 | " 4456.81 \n",
423 | " 2.40 \n",
424 | " 1.77 \n",
425 | " 0,00% \n",
426 | " 1.113 \n",
427 | " 25.17 \n",
428 | " 27.99 \n",
429 | " -4.48 \n",
430 | " 31.02 \n",
431 | " 14.53 \n",
432 | " 6,32% \n",
433 | " 0,01% \n",
434 | " 1.18 \n",
435 | " 5,05% \n",
436 | " 0,05% \n",
437 | " 306014000.0 \n",
438 | " 2.869130e+10 \n",
439 | " 0.49 \n",
440 | " 0,00% \n",
441 | " \n",
442 | " \n",
443 | "
\n",
444 | "
954 rows × 21 columns
\n",
445 | "
"
446 | ],
447 | "text/plain": [
448 | " Papel Cotação P/L ... Patrim. Líq Dív.Brut/ Patrim. Cresc. Rec.5a\n",
449 | "0 CSTB3 150.00 0.00 ... 8.420670e+09 0.14 31,91%\n",
450 | "1 IVTT3 0.00 0.00 ... 1.083050e+09 0.00 20,67%\n",
451 | "2 PORP4 2.40 0.00 ... 2.239900e+07 0.00 13,66%\n",
452 | "3 MNSA3 0.42 0.00 ... -9.105000e+06 -6.52 -41,11%\n",
453 | "4 CSTB4 147.69 0.00 ... 8.420670e+09 0.14 31,91%\n",
454 | ".. ... ... ... ... ... ... ...\n",
455 | "949 UBBR3 18.00 1466.61 ... 1.031720e+10 0.00 10,58%\n",
456 | "950 BIDI4 59.24 2580.97 ... 3.240140e+09 0.00 30,91%\n",
457 | "951 BIDI11 180.04 2614.66 ... 3.240140e+09 0.00 30,91%\n",
458 | "952 BIDI3 60.95 2655.47 ... 3.240140e+09 0.00 30,91%\n",
459 | "953 NTCO3 49.96 4456.81 ... 2.869130e+10 0.49 0,00%\n",
460 | "\n",
461 | "[954 rows x 21 columns]"
462 | ]
463 | },
464 | "metadata": {
465 | "tags": []
466 | },
467 | "execution_count": 5
468 | }
469 | ]
470 | },
471 | {
472 | "cell_type": "code",
473 | "metadata": {
474 | "id": "fiZbA283diRP"
475 | },
476 | "source": [
477 | "for coluna in ['Div.Yield', 'Mrg Ebit', 'Mrg. Líq.', 'ROIC', 'ROE', 'Cresc. Rec.5a']:\n",
478 | " df[coluna] = df[coluna].str.replace('.', '')\n",
479 | " df[coluna] = df[coluna].str.replace(',', '.')\n",
480 | " df[coluna] = df[coluna].str.rstrip('%').astype('float') / 100"
481 | ],
482 | "execution_count": 6,
483 | "outputs": []
484 | },
485 | {
486 | "cell_type": "markdown",
487 | "metadata": {
488 | "id": "L-8C2O4zXoBP"
489 | },
490 | "source": [
491 | "# Analisando os dados"
492 | ]
493 | },
494 | {
495 | "cell_type": "code",
496 | "metadata": {
497 | "id": "-xXaDjo4XtNs"
498 | },
499 | "source": [
500 | "df = df[df['Liq.2meses'] > 1000000]"
501 | ],
502 | "execution_count": 7,
503 | "outputs": []
504 | },
505 | {
506 | "cell_type": "code",
507 | "metadata": {
508 | "id": "GFrBbUwde62S"
509 | },
510 | "source": [
511 | "ranking = pd.DataFrame()\n",
512 | "ranking['pos'] = range(1,151)\n",
513 | "ranking['EV/EBIT'] = df[ df['EV/EBIT'] > 0 ].sort_values(by=['EV/EBIT'])['Papel'][:150].values\n",
514 | "ranking['ROIC'] = df.sort_values(by=['ROIC'], ascending=False)['Papel'][:150].values"
515 | ],
516 | "execution_count": 8,
517 | "outputs": []
518 | },
519 | {
520 | "cell_type": "code",
521 | "metadata": {
522 | "id": "hLRMM7YDgjXE",
523 | "colab": {
524 | "base_uri": "https://localhost:8080/",
525 | "height": 407
526 | },
527 | "outputId": "e8cdc1c5-9812-4842-b0ed-0c5ac55802c3"
528 | },
529 | "source": [
530 | "ranking"
531 | ],
532 | "execution_count": 9,
533 | "outputs": [
534 | {
535 | "output_type": "execute_result",
536 | "data": {
537 | "text/html": [
538 | "\n",
539 | "\n",
552 | "
\n",
553 | " \n",
554 | " \n",
555 | " \n",
556 | " pos \n",
557 | " EV/EBIT \n",
558 | " ROIC \n",
559 | " \n",
560 | " \n",
561 | " \n",
562 | " \n",
563 | " 0 \n",
564 | " 1 \n",
565 | " GPIV33 \n",
566 | " BOAS3 \n",
567 | " \n",
568 | " \n",
569 | " 1 \n",
570 | " 2 \n",
571 | " PSSA3 \n",
572 | " ATOM3 \n",
573 | " \n",
574 | " \n",
575 | " 2 \n",
576 | " 3 \n",
577 | " MNPR3 \n",
578 | " WIZS3 \n",
579 | " \n",
580 | " \n",
581 | " 3 \n",
582 | " 4 \n",
583 | " GOAU3 \n",
584 | " CMIN3 \n",
585 | " \n",
586 | " \n",
587 | " 4 \n",
588 | " 5 \n",
589 | " PCAR3 \n",
590 | " PSSA3 \n",
591 | " \n",
592 | " \n",
593 | " ... \n",
594 | " ... \n",
595 | " ... \n",
596 | " ... \n",
597 | " \n",
598 | " \n",
599 | " 145 \n",
600 | " 146 \n",
601 | " RAIL3 \n",
602 | " ESPA3 \n",
603 | " \n",
604 | " \n",
605 | " 146 \n",
606 | " 147 \n",
607 | " BRML3 \n",
608 | " LINX3 \n",
609 | " \n",
610 | " \n",
611 | " 147 \n",
612 | " 148 \n",
613 | " ELET3 \n",
614 | " ANIM3 \n",
615 | " \n",
616 | " \n",
617 | " 148 \n",
618 | " 149 \n",
619 | " ELET6 \n",
620 | " POWE3 \n",
621 | " \n",
622 | " \n",
623 | " 149 \n",
624 | " 150 \n",
625 | " ENEV3 \n",
626 | " CYRE3 \n",
627 | " \n",
628 | " \n",
629 | "
\n",
630 | "
150 rows × 3 columns
\n",
631 | "
"
632 | ],
633 | "text/plain": [
634 | " pos EV/EBIT ROIC\n",
635 | "0 1 GPIV33 BOAS3\n",
636 | "1 2 PSSA3 ATOM3\n",
637 | "2 3 MNPR3 WIZS3\n",
638 | "3 4 GOAU3 CMIN3\n",
639 | "4 5 PCAR3 PSSA3\n",
640 | ".. ... ... ...\n",
641 | "145 146 RAIL3 ESPA3\n",
642 | "146 147 BRML3 LINX3\n",
643 | "147 148 ELET3 ANIM3\n",
644 | "148 149 ELET6 POWE3\n",
645 | "149 150 ENEV3 CYRE3\n",
646 | "\n",
647 | "[150 rows x 3 columns]"
648 | ]
649 | },
650 | "metadata": {
651 | "tags": []
652 | },
653 | "execution_count": 9
654 | }
655 | ]
656 | },
657 | {
658 | "cell_type": "code",
659 | "metadata": {
660 | "id": "C1zue-skgsUR"
661 | },
662 | "source": [
663 | "a = ranking.pivot_table(columns='EV/EBIT', values='pos')"
664 | ],
665 | "execution_count": 10,
666 | "outputs": []
667 | },
668 | {
669 | "cell_type": "code",
670 | "metadata": {
671 | "id": "2TLSMa6phAX6"
672 | },
673 | "source": [
674 | "b = ranking.pivot_table(columns='ROIC', values='pos')"
675 | ],
676 | "execution_count": 11,
677 | "outputs": []
678 | },
679 | {
680 | "cell_type": "code",
681 | "metadata": {
682 | "id": "YZgDcRKohDvB",
683 | "colab": {
684 | "base_uri": "https://localhost:8080/",
685 | "height": 157
686 | },
687 | "outputId": "e0aef241-4a6f-4859-8d05-59ccd9333025"
688 | },
689 | "source": [
690 | "t = pd.concat([a,b])\n",
691 | "t"
692 | ],
693 | "execution_count": 12,
694 | "outputs": [
695 | {
696 | "output_type": "execute_result",
697 | "data": {
698 | "text/html": [
699 | "\n",
700 | "\n",
713 | "
\n",
714 | " \n",
715 | " \n",
716 | " \n",
717 | " ABEV3 \n",
718 | " AGRO3 \n",
719 | " ALLD3 \n",
720 | " ALUP11 \n",
721 | " AMBP3 \n",
722 | " ANIM3 \n",
723 | " ASAI3 \n",
724 | " ATOM3 \n",
725 | " AURA33 \n",
726 | " B3SA3 \n",
727 | " BEEF3 \n",
728 | " BLAU3 \n",
729 | " BMOB3 \n",
730 | " BRDT3 \n",
731 | " BRFS3 \n",
732 | " BRKM3 \n",
733 | " BRKM5 \n",
734 | " BRML3 \n",
735 | " BSEV3 \n",
736 | " CAML3 \n",
737 | " CARD3 \n",
738 | " CCPR3 \n",
739 | " CCRO3 \n",
740 | " CESP6 \n",
741 | " CIEL3 \n",
742 | " CMIG3 \n",
743 | " CMIG4 \n",
744 | " CMIN3 \n",
745 | " CPFE3 \n",
746 | " CPLE3 \n",
747 | " CPLE6 \n",
748 | " CRFB3 \n",
749 | " CSED3 \n",
750 | " CSMG3 \n",
751 | " CSNA3 \n",
752 | " CURY3 \n",
753 | " CYRE3 \n",
754 | " DIRR3 \n",
755 | " DMVF3 \n",
756 | " DTEX3 \n",
757 | " ... \n",
758 | " TEND3 \n",
759 | " TESA3 \n",
760 | " TGMA3 \n",
761 | " TIET11 \n",
762 | " TIMS3 \n",
763 | " TOTS3 \n",
764 | " TRIS3 \n",
765 | " TRPL4 \n",
766 | " TUPY3 \n",
767 | " UGPA3 \n",
768 | " UNIP3 \n",
769 | " UNIP6 \n",
770 | " USIM3 \n",
771 | " USIM5 \n",
772 | " VALE3 \n",
773 | " VIVT3 \n",
774 | " VLID3 \n",
775 | " VVAR3 \n",
776 | " WIZS3 \n",
777 | " WSON33 \n",
778 | " ALPA4 \n",
779 | " BOAS3 \n",
780 | " CASH3 \n",
781 | " ESPA3 \n",
782 | " GNDI3 \n",
783 | " HAPV3 \n",
784 | " LINX3 \n",
785 | " MATD3 \n",
786 | " MOSI3 \n",
787 | " NGRD3 \n",
788 | " ORVR3 \n",
789 | " PETZ3 \n",
790 | " RADL3 \n",
791 | " RDOR3 \n",
792 | " RENT3 \n",
793 | " SULA11 \n",
794 | " TFCO4 \n",
795 | " VAMO3 \n",
796 | " VIVA3 \n",
797 | " WEGE3 \n",
798 | " \n",
799 | " \n",
800 | " \n",
801 | " \n",
802 | " pos \n",
803 | " 122 \n",
804 | " 73 \n",
805 | " 32 \n",
806 | " 10 \n",
807 | " 136 \n",
808 | " 132 \n",
809 | " 87 \n",
810 | " 92 \n",
811 | " 27 \n",
812 | " 111 \n",
813 | " 29 \n",
814 | " 121 \n",
815 | " 65 \n",
816 | " 93 \n",
817 | " 85 \n",
818 | " 16 \n",
819 | " 22 \n",
820 | " 147.0 \n",
821 | " 76 \n",
822 | " 55 \n",
823 | " 100 \n",
824 | " 91.0 \n",
825 | " 94 \n",
826 | " 109.0 \n",
827 | " 128.0 \n",
828 | " 45 \n",
829 | " 34 \n",
830 | " 17 \n",
831 | " 62 \n",
832 | " 15 \n",
833 | " 23 \n",
834 | " 72 \n",
835 | " 144.0 \n",
836 | " 44 \n",
837 | " 40 \n",
838 | " 82 \n",
839 | " 119 \n",
840 | " 57 \n",
841 | " 31.0 \n",
842 | " 116 \n",
843 | " ... \n",
844 | " 47 \n",
845 | " 68 \n",
846 | " 99 \n",
847 | " 42 \n",
848 | " 63 \n",
849 | " 104 \n",
850 | " 84 \n",
851 | " 24 \n",
852 | " 98 \n",
853 | " 134 \n",
854 | " 26 \n",
855 | " 35 \n",
856 | " 41 \n",
857 | " 37 \n",
858 | " 12 \n",
859 | " 97.0 \n",
860 | " 142.0 \n",
861 | " 81 \n",
862 | " 6 \n",
863 | " 46 \n",
864 | " NaN \n",
865 | " NaN \n",
866 | " NaN \n",
867 | " NaN \n",
868 | " NaN \n",
869 | " NaN \n",
870 | " NaN \n",
871 | " NaN \n",
872 | " NaN \n",
873 | " NaN \n",
874 | " NaN \n",
875 | " NaN \n",
876 | " NaN \n",
877 | " NaN \n",
878 | " NaN \n",
879 | " NaN \n",
880 | " NaN \n",
881 | " NaN \n",
882 | " NaN \n",
883 | " NaN \n",
884 | " \n",
885 | " \n",
886 | " pos \n",
887 | " 60 \n",
888 | " 59 \n",
889 | " 40 \n",
890 | " 47 \n",
891 | " 114 \n",
892 | " 148 \n",
893 | " 25 \n",
894 | " 2 \n",
895 | " 7 \n",
896 | " 34 \n",
897 | " 29 \n",
898 | " 10 \n",
899 | " 32 \n",
900 | " 105 \n",
901 | " 121 \n",
902 | " 31 \n",
903 | " 30 \n",
904 | " NaN \n",
905 | " 54 \n",
906 | " 70 \n",
907 | " 52 \n",
908 | " NaN \n",
909 | " 103 \n",
910 | " NaN \n",
911 | " NaN \n",
912 | " 97 \n",
913 | " 98 \n",
914 | " 4 \n",
915 | " 81 \n",
916 | " 106 \n",
917 | " 107 \n",
918 | " 83 \n",
919 | " NaN \n",
920 | " 82 \n",
921 | " 20 \n",
922 | " 39 \n",
923 | " 150 \n",
924 | " 143 \n",
925 | " NaN \n",
926 | " 93 \n",
927 | " ... \n",
928 | " 84 \n",
929 | " 124 \n",
930 | " 65 \n",
931 | " 27 \n",
932 | " 119 \n",
933 | " 21 \n",
934 | " 96 \n",
935 | " 58 \n",
936 | " 135 \n",
937 | " 145 \n",
938 | " 14 \n",
939 | " 13 \n",
940 | " 48 \n",
941 | " 49 \n",
942 | " 15 \n",
943 | " NaN \n",
944 | " NaN \n",
945 | " 99 \n",
946 | " 3 \n",
947 | " 50 \n",
948 | " 44.0 \n",
949 | " 1.0 \n",
950 | " 63.0 \n",
951 | " 146.0 \n",
952 | " 122.0 \n",
953 | " 100.0 \n",
954 | " 147.0 \n",
955 | " 33.0 \n",
956 | " 11.0 \n",
957 | " 94.0 \n",
958 | " 131.0 \n",
959 | " 104.0 \n",
960 | " 116.0 \n",
961 | " 138.0 \n",
962 | " 80.0 \n",
963 | " 115.0 \n",
964 | " 36.0 \n",
965 | " 87.0 \n",
966 | " 79.0 \n",
967 | " 24.0 \n",
968 | " \n",
969 | " \n",
970 | "
\n",
971 | "
2 rows × 170 columns
\n",
972 | "
"
973 | ],
974 | "text/plain": [
975 | " ABEV3 AGRO3 ALLD3 ALUP11 AMBP3 ... SULA11 TFCO4 VAMO3 VIVA3 WEGE3\n",
976 | "pos 122 73 32 10 136 ... NaN NaN NaN NaN NaN\n",
977 | "pos 60 59 40 47 114 ... 115.0 36.0 87.0 79.0 24.0\n",
978 | "\n",
979 | "[2 rows x 170 columns]"
980 | ]
981 | },
982 | "metadata": {
983 | "tags": []
984 | },
985 | "execution_count": 12
986 | }
987 | ]
988 | },
989 | {
990 | "cell_type": "code",
991 | "metadata": {
992 | "id": "akOZIhfVhIXJ",
993 | "colab": {
994 | "base_uri": "https://localhost:8080/"
995 | },
996 | "outputId": "036e4993-e75f-4d05-a2b4-780800875734"
997 | },
998 | "source": [
999 | "rank = t.dropna(axis=1).sum()\n",
1000 | "rank"
1001 | ],
1002 | "execution_count": 13,
1003 | "outputs": [
1004 | {
1005 | "output_type": "execute_result",
1006 | "data": {
1007 | "text/plain": [
1008 | "ABEV3 182\n",
1009 | "AGRO3 132\n",
1010 | "ALLD3 72\n",
1011 | "ALUP11 57\n",
1012 | "AMBP3 250\n",
1013 | " ... \n",
1014 | "USIM5 86\n",
1015 | "VALE3 27\n",
1016 | "VVAR3 180\n",
1017 | "WIZS3 9\n",
1018 | "WSON33 96\n",
1019 | "Length: 130, dtype: int64"
1020 | ]
1021 | },
1022 | "metadata": {
1023 | "tags": []
1024 | },
1025 | "execution_count": 13
1026 | }
1027 | ]
1028 | },
1029 | {
1030 | "cell_type": "code",
1031 | "metadata": {
1032 | "id": "jVmQtM8chVyQ",
1033 | "colab": {
1034 | "base_uri": "https://localhost:8080/"
1035 | },
1036 | "outputId": "62f3805f-dbf7-46ac-9e70-74a137a47171"
1037 | },
1038 | "source": [
1039 | "rank.sort_values()[:15]"
1040 | ],
1041 | "execution_count": 14,
1042 | "outputs": [
1043 | {
1044 | "output_type": "execute_result",
1045 | "data": {
1046 | "text/plain": [
1047 | "PSSA3 7\n",
1048 | "WIZS3 9\n",
1049 | "CMIN3 21\n",
1050 | "PLPL3 25\n",
1051 | "MRFG3 25\n",
1052 | "VALE3 27\n",
1053 | "TASA4 28\n",
1054 | "MNPR3 29\n",
1055 | "AURA33 34\n",
1056 | "TASA3 34\n",
1057 | "UNIP3 40\n",
1058 | "BRKM3 47\n",
1059 | "UNIP6 48\n",
1060 | "FHER3 49\n",
1061 | "BRKM5 52\n",
1062 | "dtype: int64"
1063 | ]
1064 | },
1065 | "metadata": {
1066 | "tags": []
1067 | },
1068 | "execution_count": 14
1069 | }
1070 | ]
1071 | },
1072 | {
1073 | "cell_type": "code",
1074 | "metadata": {
1075 | "id": "wQU3hp4shcsI"
1076 | },
1077 | "source": [
1078 | ""
1079 | ],
1080 | "execution_count": null,
1081 | "outputs": []
1082 | }
1083 | ]
1084 | }
--------------------------------------------------------------------------------
/09_Alpha_Vantage_Python_para_Investimentos.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "09 - Alpha Vantage - Python para Investimentos.ipynb",
7 | "provenance": [],
8 | "collapsed_sections": [],
9 | "authorship_tag": "ABX9TyMyEEIkeE7fDkFPSQiYckqP",
10 | "include_colab_link": true
11 | },
12 | "kernelspec": {
13 | "name": "python3",
14 | "display_name": "Python 3"
15 | }
16 | },
17 | "cells": [
18 | {
19 | "cell_type": "markdown",
20 | "metadata": {
21 | "id": "view-in-github",
22 | "colab_type": "text"
23 | },
24 | "source": [
25 | " "
26 | ]
27 | },
28 | {
29 | "cell_type": "markdown",
30 | "metadata": {
31 | "id": "Vjr4Ro8xQll7",
32 | "colab_type": "text"
33 | },
34 | "source": [
35 | "# Ricos pelo Acaso\n",
36 | "\n",
37 | "*Link* para o vídeo: https://youtu.be/kB4jCoVyLRI"
38 | ]
39 | },
40 | {
41 | "cell_type": "markdown",
42 | "metadata": {
43 | "id": "XXN3-mNhxNOP",
44 | "colab_type": "text"
45 | },
46 | "source": [
47 | "# Bibliotecas"
48 | ]
49 | },
50 | {
51 | "cell_type": "code",
52 | "metadata": {
53 | "id": "OHHEzZzwRRhx",
54 | "colab_type": "code",
55 | "colab": {}
56 | },
57 | "source": [
58 | "import numpy as np\n",
59 | "import pandas as pd\n",
60 | "import matplotlib.pyplot as plt\n",
61 | "import seaborn as sns; sns.set()\n",
62 | "\n",
63 | "import matplotlib\n",
64 | "matplotlib.rcParams['figure.figsize'] = (16, 8)"
65 | ],
66 | "execution_count": 0,
67 | "outputs": []
68 | },
69 | {
70 | "cell_type": "code",
71 | "metadata": {
72 | "id": "F336SM7MPniI",
73 | "colab_type": "code",
74 | "colab": {}
75 | },
76 | "source": [
77 | "!pip install alpha_vantage"
78 | ],
79 | "execution_count": 0,
80 | "outputs": []
81 | },
82 | {
83 | "cell_type": "code",
84 | "metadata": {
85 | "id": "B4w76OYeQLCP",
86 | "colab_type": "code",
87 | "colab": {}
88 | },
89 | "source": [
90 | "from alpha_vantage.timeseries import TimeSeries"
91 | ],
92 | "execution_count": 0,
93 | "outputs": []
94 | },
95 | {
96 | "cell_type": "markdown",
97 | "metadata": {
98 | "id": "uTu7q3p8QOrH",
99 | "colab_type": "text"
100 | },
101 | "source": [
102 | "# Chave de Acesso a API da Alpha Vantage"
103 | ]
104 | },
105 | {
106 | "cell_type": "code",
107 | "metadata": {
108 | "id": "CidOSQf2QQ7_",
109 | "colab_type": "code",
110 | "colab": {}
111 | },
112 | "source": [
113 | "ALPHAVANTAGE_API_KEY ='cole aqui sua chave obtida no site alphavantage.co'"
114 | ],
115 | "execution_count": 0,
116 | "outputs": []
117 | },
118 | {
119 | "cell_type": "markdown",
120 | "metadata": {
121 | "id": "jauhh7l1QwMx",
122 | "colab_type": "text"
123 | },
124 | "source": [
125 | "# Acessando a API"
126 | ]
127 | },
128 | {
129 | "cell_type": "code",
130 | "metadata": {
131 | "id": "aG8KOldPT7Jc",
132 | "colab_type": "code",
133 | "colab": {}
134 | },
135 | "source": [
136 | "ts = TimeSeries(key=ALPHAVANTAGE_API_KEY, output_format='pandas')"
137 | ],
138 | "execution_count": 0,
139 | "outputs": []
140 | },
141 | {
142 | "cell_type": "code",
143 | "metadata": {
144 | "id": "jdtBezS8JzT6",
145 | "colab_type": "code",
146 | "outputId": "e3b796f7-29ad-4cb5-ca6f-720dd6705f10",
147 | "colab": {
148 | "base_uri": "https://localhost:8080/",
149 | "height": 260
150 | }
151 | },
152 | "source": [
153 | "ts.get_symbol_search('itau')"
154 | ],
155 | "execution_count": 0,
156 | "outputs": [
157 | {
158 | "output_type": "execute_result",
159 | "data": {
160 | "text/plain": [
161 | "( 1. symbol ... 9. matchScore\n",
162 | " date ... \n",
163 | " 1970-01-01 00:00:00.000000000 ITUB ... 0.7500\n",
164 | " 1970-01-01 00:00:00.000000001 ITCB ... 0.5455\n",
165 | " 1970-01-01 00:00:00.000000002 ITUB4.SAO ... 0.5333\n",
166 | " 1970-01-01 00:00:00.000000003 ITSA4.SAO ... 0.5000\n",
167 | " 1970-01-01 00:00:00.000000004 ITUB3.SAO ... 0.5000\n",
168 | " 1970-01-01 00:00:00.000000005 ITSA3.SAO ... 0.5000\n",
169 | " 1970-01-01 00:00:00.000000006 ITAUCORP.SAN ... 0.5000\n",
170 | " 1970-01-01 00:00:00.000000007 0P0000UBY2.SAO ... 0.5000\n",
171 | " 1970-01-01 00:00:00.000000008 ITUB.ARG ... 0.4211\n",
172 | " 1970-01-01 00:00:00.000000009 ITAITAUPREVP.SAO ... 0.1176\n",
173 | " \n",
174 | " [10 rows x 9 columns], None)"
175 | ]
176 | },
177 | "metadata": {
178 | "tags": []
179 | },
180 | "execution_count": 6
181 | }
182 | ]
183 | },
184 | {
185 | "cell_type": "code",
186 | "metadata": {
187 | "id": "m7CVaoEXJ4_k",
188 | "colab_type": "code",
189 | "colab": {}
190 | },
191 | "source": [
192 | "dados, meta_dados = ts.get_daily(symbol='^BVSP', outputsize='full')"
193 | ],
194 | "execution_count": 0,
195 | "outputs": []
196 | },
197 | {
198 | "cell_type": "code",
199 | "metadata": {
200 | "id": "NJcSIuWoKHXj",
201 | "colab_type": "code",
202 | "outputId": "07e6a1f7-14ce-431d-ff43-f98c19263ed1",
203 | "colab": {
204 | "base_uri": "https://localhost:8080/",
205 | "height": 446
206 | }
207 | },
208 | "source": [
209 | "dados"
210 | ],
211 | "execution_count": 0,
212 | "outputs": [
213 | {
214 | "output_type": "execute_result",
215 | "data": {
216 | "text/html": [
217 | "\n",
218 | "\n",
231 | "
\n",
232 | " \n",
233 | " \n",
234 | " \n",
235 | " 1. open \n",
236 | " 2. high \n",
237 | " 3. low \n",
238 | " 4. close \n",
239 | " 5. volume \n",
240 | " \n",
241 | " \n",
242 | " date \n",
243 | " \n",
244 | " \n",
245 | " \n",
246 | " \n",
247 | " \n",
248 | " \n",
249 | " \n",
250 | " \n",
251 | " \n",
252 | " 2020-03-27 \n",
253 | " 77708.0 \n",
254 | " 77708.0 \n",
255 | " 73057.0 \n",
256 | " 73429.0 \n",
257 | " 10301400.0 \n",
258 | " \n",
259 | " \n",
260 | " 2020-03-26 \n",
261 | " 74956.0 \n",
262 | " 78846.0 \n",
263 | " 74923.0 \n",
264 | " 77710.0 \n",
265 | " 12758000.0 \n",
266 | " \n",
267 | " \n",
268 | " 2020-03-25 \n",
269 | " 69727.0 \n",
270 | " 76714.0 \n",
271 | " 69360.0 \n",
272 | " 74956.0 \n",
273 | " 12951100.0 \n",
274 | " \n",
275 | " \n",
276 | " 2020-03-24 \n",
277 | " 63604.0 \n",
278 | " 71535.0 \n",
279 | " 63604.0 \n",
280 | " 69729.0 \n",
281 | " 11679900.0 \n",
282 | " \n",
283 | " \n",
284 | " 2020-03-23 \n",
285 | " 67067.0 \n",
286 | " 67604.0 \n",
287 | " 62161.0 \n",
288 | " 63570.0 \n",
289 | " 11962200.0 \n",
290 | " \n",
291 | " \n",
292 | " ... \n",
293 | " ... \n",
294 | " ... \n",
295 | " ... \n",
296 | " ... \n",
297 | " ... \n",
298 | " \n",
299 | " \n",
300 | " 2000-01-07 \n",
301 | " 16125.0 \n",
302 | " 16449.0 \n",
303 | " 16125.0 \n",
304 | " 16309.0 \n",
305 | " 0.0 \n",
306 | " \n",
307 | " \n",
308 | " 2000-01-06 \n",
309 | " 16237.0 \n",
310 | " 16499.0 \n",
311 | " 15977.0 \n",
312 | " 16107.0 \n",
313 | " 0.0 \n",
314 | " \n",
315 | " \n",
316 | " 2000-01-05 \n",
317 | " 15871.0 \n",
318 | " 16302.0 \n",
319 | " 15350.0 \n",
320 | " 16245.0 \n",
321 | " 0.0 \n",
322 | " \n",
323 | " \n",
324 | " 2000-01-04 \n",
325 | " 16908.0 \n",
326 | " 16908.0 \n",
327 | " 15851.0 \n",
328 | " 15851.0 \n",
329 | " 0.0 \n",
330 | " \n",
331 | " \n",
332 | " 2000-01-03 \n",
333 | " 17098.0 \n",
334 | " 17408.0 \n",
335 | " 16719.0 \n",
336 | " 16930.0 \n",
337 | " 0.0 \n",
338 | " \n",
339 | " \n",
340 | "
\n",
341 | "
5094 rows × 5 columns
\n",
342 | "
"
343 | ],
344 | "text/plain": [
345 | " 1. open 2. high 3. low 4. close 5. volume\n",
346 | "date \n",
347 | "2020-03-27 77708.0 77708.0 73057.0 73429.0 10301400.0\n",
348 | "2020-03-26 74956.0 78846.0 74923.0 77710.0 12758000.0\n",
349 | "2020-03-25 69727.0 76714.0 69360.0 74956.0 12951100.0\n",
350 | "2020-03-24 63604.0 71535.0 63604.0 69729.0 11679900.0\n",
351 | "2020-03-23 67067.0 67604.0 62161.0 63570.0 11962200.0\n",
352 | "... ... ... ... ... ...\n",
353 | "2000-01-07 16125.0 16449.0 16125.0 16309.0 0.0\n",
354 | "2000-01-06 16237.0 16499.0 15977.0 16107.0 0.0\n",
355 | "2000-01-05 15871.0 16302.0 15350.0 16245.0 0.0\n",
356 | "2000-01-04 16908.0 16908.0 15851.0 15851.0 0.0\n",
357 | "2000-01-03 17098.0 17408.0 16719.0 16930.0 0.0\n",
358 | "\n",
359 | "[5094 rows x 5 columns]"
360 | ]
361 | },
362 | "metadata": {
363 | "tags": []
364 | },
365 | "execution_count": 8
366 | }
367 | ]
368 | },
369 | {
370 | "cell_type": "code",
371 | "metadata": {
372 | "id": "KDagA-X9KIyk",
373 | "colab_type": "code",
374 | "outputId": "d4d2a232-cfb2-4c56-c045-e7bfadf23dac",
375 | "colab": {
376 | "base_uri": "https://localhost:8080/",
377 | "height": 104
378 | }
379 | },
380 | "source": [
381 | "meta_dados"
382 | ],
383 | "execution_count": 0,
384 | "outputs": [
385 | {
386 | "output_type": "execute_result",
387 | "data": {
388 | "text/plain": [
389 | "{'1. Information': 'Daily Prices (open, high, low, close) and Volumes',\n",
390 | " '2. Symbol': '^BVSP',\n",
391 | " '3. Last Refreshed': '2020-03-27',\n",
392 | " '4. Output Size': 'Full size',\n",
393 | " '5. Time Zone': 'US/Eastern'}"
394 | ]
395 | },
396 | "metadata": {
397 | "tags": []
398 | },
399 | "execution_count": 9
400 | }
401 | ]
402 | },
403 | {
404 | "cell_type": "code",
405 | "metadata": {
406 | "id": "0nBX9-U1KMr8",
407 | "colab_type": "code",
408 | "outputId": "b2b3af36-7f9c-4db9-f73f-1379f349dce4",
409 | "colab": {
410 | "base_uri": "https://localhost:8080/",
411 | "height": 489
412 | }
413 | },
414 | "source": [
415 | "dados['4. close'].plot()"
416 | ],
417 | "execution_count": 0,
418 | "outputs": [
419 | {
420 | "output_type": "execute_result",
421 | "data": {
422 | "text/plain": [
423 | ""
424 | ]
425 | },
426 | "metadata": {
427 | "tags": []
428 | },
429 | "execution_count": 10
430 | },
431 | {
432 | "output_type": "display_data",
433 | "data": {
434 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAA74AAAHHCAYAAACYzIQhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3gc5bk28Hu2q3fJslzkKsu9genF\nFMPBGAg5MXEICSQETgghOQngcHKAfGnYkFACDiEnTqEmDgSCDdgUUww2uBtXGVuW1XtdadvsfH/s\nzmh2d7ZIuyutVvfvurjYna6RLO0z7/M+jyBJkgQiIiIiIiKiJKUb7gsgIiIiIiIiiicGvkRERERE\nRJTUGPgSERERERFRUmPgS0REREREREmNgS8RERERERElNQa+RERERERElNQY+BIREREREVFSMwz3\nBQy19nYr3G62Lo6HvLx0tLb2DPdlJC3e3/ji/Y0/3uP44v2NL97f+OL9jT/e4/ji/Y2vSO+vTicg\nJydNc92oC3zdbomBbxzx3sYX72988f7GH+9xfPH+xhfvb3zx/sYf73F88f7GV7T3l6nORERERERE\nlNQY+BIREREREVFSY+BLRERERERESY2BLxERERERESU1Br5ERERERESU1Bj4EhERERERUVJj4EtE\nRERERERJjYEvERERERERJTUGvkRERERERJTUIgp816xZg6VLl6KsrAwVFRUAgPb2dtx6661YtmwZ\nrr76anzve99DW1ubss++ffuwYsUKLFu2DLfccgtaW1vjuo6IiIiIiIhIS0SB7yWXXILnn38eJSUl\nyjJBEPDtb38bmzdvxuuvv47x48fjkUceAQC43W7cfffduP/++7F582YsXrw4ruuIiIiIiIiIgoko\n8F28eDGKi4t9lmVnZ2PJkiXK+/nz56Ourg4AcPDgQZjNZixevBgAcMMNN+Ctt96K2zoiIiIiIiKi\nYGIyx9ftduPFF1/E0qVLAQD19fUYO3assj43NxdutxsdHR1xWUdEREREREQUjCEWB/n5z3+O1NRU\n3HjjjbE4XFzl5aUP9yUktYKCjOG+hKTG+xtfvL/xx3scX7y/8cX7G1+8v/HHexxfvL/xFe39jTrw\nXbNmDaqqqvD0009Dp/MMIBcXFytpzwDQ1tYGnU6H7OzsuKwbiNbWHrjd0mC/XAqhoCADzc3dw30Z\nSYv3N754f+OP9zi+eH/ji/c3vnh/44/3OL54f+NLvr8/eWYHrlwyARfMG6u5nU4nBB3ojCrV+be/\n/S0OHjyIp556CiaTSVk+e/Zs2Gw27Nq1CwDw0ksv4YorrojbOiIiIiIiIkpebreExrZe/OXNo4Pa\nP6IR31/84hfYsmULWlpacPPNNyM7OxuPPfYY/vCHP6C0tBQ33HADAGDcuHF46qmnoNPpsHbtWjzw\nwAOw2+0oKSnBww8/DABxWUdERERERETJq6a5J6r9BUmSRlXeL1Od44cpHvHF+xtfvL/xx3scX7y/\n8cX7G1+8v/HHexxfvL/xs+toE3YcacKRU23os7sAAOtXL9XcNlSqc0yKWxERERERERHF2rpXD8bk\nODFpZ0RERERERESUqBj4EhERERERUVJj4EtEREREREQJx+4UY3YsBr5ERERERESUcJ5/uyJmx2Lg\nS0RERERERAmnvsUasKwoJwUHT7biz28cQZfVEfGxGPgSERERERFRwtHqQtvY3off/mM/PjpQjx/8\nblvEx2LgS0RERERERAknK80Us2Mx8CUiIiIiIqKEw+JWRERERERElNQa23tx9qwiZKVHP/LLwJeI\niIiIiIgSSqfVgbYuO4pyU/HYDy/C3TfMj+p4DHyJiIiIiIgooTS19wIAMtNMyM9OQXlpblTHY+BL\nRERERERECcXpcgMAinNTY3I8Br5ERERERESUUOTA12jQK8uiSXdm4EtEREREREQJxSXKgW9/yDql\nJMtnGwGAJGk0+9XAwJeIiIiIiIgSijzia9ALyjKDwTd8lQCIbga+RERERERENAL1pzr3h6w6QcD6\n1Ut9tmPgS0RERERERCOSUwyc46tFFBn4EhERERER0Qi0dW8tAMCoSnXW4nK7IzoeA18iIiIiIiJK\nKLXNVgCAyRg44nvxwhLkZ1kAcMSXiIiIiIiIRiC3at6uQR8Ysn798jJcfW4pAEAUOeJLRERERERE\nI4zdKYbdxqDzhLIsbkVEREREREQjjhz43rSsLOg2eu/cXxdHfImIiIiIiGikeepfnwMAzBrze2V6\njvgSERERERHRSHWitgsAYHO4gm5j8I74MvAlIiIiIiKiEWve1Pyg6waa6myIyRURERERERERxYDJ\noMPSheOQm2kJuo1S3IrtjIiIiIiIiGgkcbslOFxumE3B5/cCqhFfN4tbERERERERUYI7WtWOWx56\n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\n+uVe/HvlUVTW6iSvr6rT4btNZ6DTm/DSf/aIQS8A3DClr/g4SKXAvKuzYMu03nuyDP/3fnNRrWkj\nU73x4xERERERURfiiC9JuErnzc5suSWRN2RnxmDxny6CJsjyEf3rv3fi2PkqHDtfBcCSAm2zfm8B\nIkLUmD2pNwCgtKoRT767BQDEOboAcM9VgxEXpUFMRLDkvXIHJWD0wHi8s/wgdlr79ALAEzcPb7WC\nNRERERERdX8MfEkiIVqLZ+8ajeAgBWrq9YiP0iLCLh24K9mCXsDSgsiefTsiAPhu01nMGJ0GbbAS\nR+wKWNm88eBEhLfwc8hkMtx7dRbu1JtwPK8KgzKiWm3FREREREREPQOHs8hJemIYEqK06Jca6bOg\n19HdVw52uXz+rSMQHR4EAHjgjQ1YuS0POmsF6OH9YnHPVYPx5kMtB702CrkcIcEqDO8fx6CXiIiI\niMiP8Ns99QgJUVqkJYSif69IlFU1Ye/JMjx95yhkJoXjhTlj8MAbGwAAX609CcCSsv3AtUMkbZKI\niIiIiCgwMfClHkGllOO53+e6XKcNVmLaiFSs3t0873dSThKDXiIiIiIiAsBUZ/ITl+b2Qp+U8OYF\njHmJiIiIiMiKI77kF2IjNXjq9lGoazTgtS/3YiZ77xIRERERkRUDX/IroRoVnrlrtK8Pg4iIiIiI\nuhGmOhMREREREZFfY+BLREREREREfo2BLxEREREREfk1Br5ERERERETk1xj4EhERERERkV9j4EtE\nRERERER+jYEvERERERER+TUGvkREREREROTXGPgSERERERGRX2PgS0RERERERH6NgS8RERERERH5\nNQa+RERERERE5NcY+BIREREREZFfY+BLREREREREfo2BLxEREREREfk1pa8PoKvJ5TJfH4Jf4/n1\nLp5f7+L59T6eY+/i+fUunl/v4vn1Pp5j7+L59a62nN+WtpEJgiB48oCIiIiIiIiIuhOmOhMRERER\nEZFfY+BLREREREREfo2BLxEREREREfk1Br5ERERERETk1xj4EhERERERkV9j4EtERERERER+jYEv\nERERERER+TUGvkREREREROTXGPhSuwiC4OtD8Gs8v0TUEv6N8C6eX+/i+SWilnj7bwQDX2oXmUzm\n60Pwa/X19QAAs9ns4yPxT6tXr0ZVVZWvD8NvVVRUwGQyAeAXXG+xnV+A59gbeI3zLl7jvIvXOO/j\n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\nIiIiIvJrXPgSERERERGRX+PCl4iIiIiIiPwaF75EREQ+6r333kNRUZG3h0FERDTtceFLRETk57Ky\nsnDw4EFvD4OIiMhruPAlIiIiIiIiv8aFLxERkY9obm7GmjVrEBsbi7fffhs2mw0A0NPTg9zcXCQm\nJiI+Ph65ubkwm80AgKKiIvz+++8oKChAbGwsCgoKAAAXL15ETk4OEhISkJycjMrKSq9tFxERkWxc\n+BIREfkAu92OjRs34vnnn0ddXR1SUlJQXV0NAHC5XFi7di1qampQU1MDjUbjXuBu2rQJcXFx2LZt\nGxoaGrBt2zbcuHEDr776Kp599lmcPn0aRUVF+Oijj/D33397cxOJiIik4cKXiIjIBzQ2NsLhcGDD\nhg1Qq9VISUnB8uXLAQBz585FcnIyZs2aBa1WizfeeAP19fUjPtaJEycQFhaG9PR0qFQqLFmyBMnJ\nyaiqqpqqzSEiIppSKm8PgIiIiEbX0dGB0NBQKBQK99fuvfdeAIDVakVhYSFqa2vR09MDALBYLBgY\nGIBSqbzlsdrb29HU1IS4uDj31wYGBpCamip5K4iIiLyDC18iIiIfEBISgsuXL0MI4V78mkwmRERE\n4Ouvv8a///6LAwcOICQkBBcuXEBaWhqEEMM+1j333IP4+HiUlZVN5SYQERF5DS91JiIi8gEPP/ww\nVCoVvv32WzgcDlRXV+PcuXMABs/uajQazJkzB93d3di5c+dNvxscHIy2tjb350888QRaWlpw+PBh\nOBwOOBwONDU14eLFi1O6TURERFOFC18iIiIfEBgYiJKSEhw6dAgJCQmorKzE008/DQDYsGEDbDYb\nEhMTkZmZCZ1Od9PvvvLKKzh+/Dji4+Oxfft2aLVafPXVV6isrIROp0NSUhI+++wz2O12b2waERGR\ndAox0nVQRERERERERH6AZ3yJiIiIiIjIr3HhS0RERERERH6NC18iIiIiIiLya1z4EhERERERkV/j\nwpeIiIiIiIj8Ghe+RERERERE5Ne48CUiIiIiIiK/xoUvERERERER+TUufImIiIiIiMiv/Q/b3RTT\nOnt0ngAAAABJRU5ErkJggg==\n",
435 | "text/plain": [
436 | ""
437 | ]
438 | },
439 | "metadata": {
440 | "tags": []
441 | }
442 | }
443 | ]
444 | },
445 | {
446 | "cell_type": "code",
447 | "metadata": {
448 | "id": "7GZlX0SoKR4e",
449 | "colab_type": "code",
450 | "colab": {}
451 | },
452 | "source": [
453 | ""
454 | ],
455 | "execution_count": 0,
456 | "outputs": []
457 | }
458 | ]
459 | }
--------------------------------------------------------------------------------
/14_Integrando_Google_Colab_e_Google_Planilhas_(spreadsheet).ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "14 - Integrando Google Colab e Google Planilhas (spreadsheet).ipynb",
7 | "provenance": [],
8 | "include_colab_link": true
9 | },
10 | "kernelspec": {
11 | "name": "python3",
12 | "display_name": "Python 3"
13 | }
14 | },
15 | "cells": [
16 | {
17 | "cell_type": "markdown",
18 | "metadata": {
19 | "id": "view-in-github",
20 | "colab_type": "text"
21 | },
22 | "source": [
23 | " "
24 | ]
25 | },
26 | {
27 | "cell_type": "markdown",
28 | "metadata": {
29 | "id": "_X9BhKltk_cb",
30 | "colab_type": "text"
31 | },
32 | "source": [
33 | "###Ricos pelo Acaso\n",
34 | "* Link para o vídeo: https://youtu.be/YaCeqXpxWUk"
35 | ]
36 | },
37 | {
38 | "cell_type": "markdown",
39 | "metadata": {
40 | "id": "xdIDjdI1Uq5Y",
41 | "colab_type": "text"
42 | },
43 | "source": [
44 | ">Instalando `gspread`"
45 | ]
46 | },
47 | {
48 | "cell_type": "code",
49 | "metadata": {
50 | "id": "8f78dBjnA3Y-",
51 | "colab_type": "code",
52 | "colab": {}
53 | },
54 | "source": [
55 | "!pip install gspread"
56 | ],
57 | "execution_count": 0,
58 | "outputs": []
59 | },
60 | {
61 | "cell_type": "markdown",
62 | "metadata": {
63 | "id": "40vthssCUv1X",
64 | "colab_type": "text"
65 | },
66 | "source": [
67 | ">Importando as Bibliotecas"
68 | ]
69 | },
70 | {
71 | "cell_type": "code",
72 | "metadata": {
73 | "id": "VgLSPFycA9SJ",
74 | "colab_type": "code",
75 | "colab": {}
76 | },
77 | "source": [
78 | "from google.colab import auth\n",
79 | "import gspread\n",
80 | "from oauth2client.client import GoogleCredentials"
81 | ],
82 | "execution_count": 0,
83 | "outputs": []
84 | },
85 | {
86 | "cell_type": "markdown",
87 | "metadata": {
88 | "id": "R2du4Rvuxq4h",
89 | "colab_type": "text"
90 | },
91 | "source": [
92 | ">Realizando a Autenticação"
93 | ]
94 | },
95 | {
96 | "cell_type": "code",
97 | "metadata": {
98 | "id": "bJGFIHvJxcfo",
99 | "colab_type": "code",
100 | "colab": {}
101 | },
102 | "source": [
103 | "auth.authenticate_user()\n",
104 | "gc = gspread.authorize(GoogleCredentials.get_application_default())"
105 | ],
106 | "execution_count": 0,
107 | "outputs": []
108 | },
109 | {
110 | "cell_type": "markdown",
111 | "metadata": {
112 | "id": "SBpuhBm9U8cg",
113 | "colab_type": "text"
114 | },
115 | "source": [
116 | ">Criando uma planilha vazia"
117 | ]
118 | },
119 | {
120 | "cell_type": "code",
121 | "metadata": {
122 | "id": "PpVsOifeBB0m",
123 | "colab_type": "code",
124 | "outputId": "ec175888-ae1c-4d87-acb3-813f6beab574",
125 | "colab": {
126 | "base_uri": "https://localhost:8080/",
127 | "height": 34
128 | }
129 | },
130 | "source": [
131 | "gc.create('Planilha01')"
132 | ],
133 | "execution_count": 0,
134 | "outputs": [
135 | {
136 | "output_type": "execute_result",
137 | "data": {
138 | "text/plain": [
139 | ""
140 | ]
141 | },
142 | "metadata": {
143 | "tags": []
144 | },
145 | "execution_count": 4
146 | }
147 | ]
148 | },
149 | {
150 | "cell_type": "markdown",
151 | "metadata": {
152 | "id": "PLGoqsjliO8P",
153 | "colab_type": "text"
154 | },
155 | "source": [
156 | ">Abrindo uma Planilha"
157 | ]
158 | },
159 | {
160 | "cell_type": "code",
161 | "metadata": {
162 | "id": "WCxNYLZCiPBv",
163 | "colab_type": "code",
164 | "colab": {}
165 | },
166 | "source": [
167 | "planilha = gc.open('Planilha01')"
168 | ],
169 | "execution_count": 0,
170 | "outputs": []
171 | },
172 | {
173 | "cell_type": "markdown",
174 | "metadata": {
175 | "id": "4qHcboXCVZ_j",
176 | "colab_type": "text"
177 | },
178 | "source": [
179 | ">Adicionando uma nova Página\n",
180 | "\n"
181 | ]
182 | },
183 | {
184 | "cell_type": "code",
185 | "metadata": {
186 | "id": "gSLxsA5sVfuR",
187 | "colab_type": "code",
188 | "outputId": "9fec4a45-58f6-4a39-be01-df732dead789",
189 | "colab": {
190 | "base_uri": "https://localhost:8080/",
191 | "height": 34
192 | }
193 | },
194 | "source": [
195 | "planilha.add_worksheet('nova_pagina', 10, 5)"
196 | ],
197 | "execution_count": 0,
198 | "outputs": [
199 | {
200 | "output_type": "execute_result",
201 | "data": {
202 | "text/plain": [
203 | ""
204 | ]
205 | },
206 | "metadata": {
207 | "tags": []
208 | },
209 | "execution_count": 7
210 | }
211 | ]
212 | },
213 | {
214 | "cell_type": "markdown",
215 | "metadata": {
216 | "id": "UtRICcfNaMOq",
217 | "colab_type": "text"
218 | },
219 | "source": [
220 | ">Selecionando uma Página"
221 | ]
222 | },
223 | {
224 | "cell_type": "code",
225 | "metadata": {
226 | "id": "dGhngLzmhJO1",
227 | "colab_type": "code",
228 | "colab": {}
229 | },
230 | "source": [
231 | "pagina1 = planilha.get_worksheet(0)"
232 | ],
233 | "execution_count": 0,
234 | "outputs": []
235 | },
236 | {
237 | "cell_type": "markdown",
238 | "metadata": {
239 | "id": "hkWy8KOCi4py",
240 | "colab_type": "text"
241 | },
242 | "source": [
243 | ">Apagando uma Página"
244 | ]
245 | },
246 | {
247 | "cell_type": "code",
248 | "metadata": {
249 | "id": "6HvqjzJghZZH",
250 | "colab_type": "code",
251 | "outputId": "b118859d-0405-4385-973e-ff48182b7377",
252 | "colab": {
253 | "base_uri": "https://localhost:8080/",
254 | "height": 51
255 | }
256 | },
257 | "source": [
258 | "planilha.del_worksheet(pagina1)"
259 | ],
260 | "execution_count": 0,
261 | "outputs": [
262 | {
263 | "output_type": "execute_result",
264 | "data": {
265 | "text/plain": [
266 | "{'replies': [{}],\n",
267 | " 'spreadsheetId': '19pRZ5GYD4cGGa-p2yoiuy05sKefT6w-XFUpi04jPlgE'}"
268 | ]
269 | },
270 | "metadata": {
271 | "tags": []
272 | },
273 | "execution_count": 9
274 | }
275 | ]
276 | },
277 | {
278 | "cell_type": "markdown",
279 | "metadata": {
280 | "id": "4-B4RpqpaOu5",
281 | "colab_type": "text"
282 | },
283 | "source": [
284 | ">Alterando os valores das células"
285 | ]
286 | },
287 | {
288 | "cell_type": "markdown",
289 | "metadata": {
290 | "id": "TkU-D5Zhkle4",
291 | "colab_type": "text"
292 | },
293 | "source": [
294 | ">>1º passo: selecionar a página"
295 | ]
296 | },
297 | {
298 | "cell_type": "code",
299 | "metadata": {
300 | "id": "BMNOIhJKjIQL",
301 | "colab_type": "code",
302 | "colab": {}
303 | },
304 | "source": [
305 | "nova_pagina = planilha.get_worksheet(0)"
306 | ],
307 | "execution_count": 0,
308 | "outputs": []
309 | },
310 | {
311 | "cell_type": "markdown",
312 | "metadata": {
313 | "id": "Xx7MhtXaktQp",
314 | "colab_type": "text"
315 | },
316 | "source": [
317 | ">>`update_acell()`: pelo código da célula"
318 | ]
319 | },
320 | {
321 | "cell_type": "code",
322 | "metadata": {
323 | "id": "9w9LPmdRZtuQ",
324 | "colab_type": "code",
325 | "outputId": "60dc71a4-0f2a-4c78-c16d-a168e6436a1e",
326 | "colab": {
327 | "base_uri": "https://localhost:8080/",
328 | "height": 102
329 | }
330 | },
331 | "source": [
332 | "nova_pagina.update_acell('a1', 120)"
333 | ],
334 | "execution_count": 0,
335 | "outputs": [
336 | {
337 | "output_type": "execute_result",
338 | "data": {
339 | "text/plain": [
340 | "{'spreadsheetId': '19pRZ5GYD4cGGa-p2yoiuy05sKefT6w-XFUpi04jPlgE',\n",
341 | " 'updatedCells': 1,\n",
342 | " 'updatedColumns': 1,\n",
343 | " 'updatedRange': 'nova_pagina!A1',\n",
344 | " 'updatedRows': 1}"
345 | ]
346 | },
347 | "metadata": {
348 | "tags": []
349 | },
350 | "execution_count": 11
351 | }
352 | ]
353 | },
354 | {
355 | "cell_type": "markdown",
356 | "metadata": {
357 | "id": "Fr1mLethlDIF",
358 | "colab_type": "text"
359 | },
360 | "source": [
361 | ">>`update_cell`: pelos números da linha e coluna"
362 | ]
363 | },
364 | {
365 | "cell_type": "code",
366 | "metadata": {
367 | "id": "1eU9gm3qZtya",
368 | "colab_type": "code",
369 | "outputId": "c8872f71-dab5-4411-b07d-a9dbd03721e8",
370 | "colab": {
371 | "base_uri": "https://localhost:8080/",
372 | "height": 102
373 | }
374 | },
375 | "source": [
376 | "nova_pagina.update_cell(2,2, 'qualquer texto')"
377 | ],
378 | "execution_count": 0,
379 | "outputs": [
380 | {
381 | "output_type": "execute_result",
382 | "data": {
383 | "text/plain": [
384 | "{'spreadsheetId': '19pRZ5GYD4cGGa-p2yoiuy05sKefT6w-XFUpi04jPlgE',\n",
385 | " 'updatedCells': 1,\n",
386 | " 'updatedColumns': 1,\n",
387 | " 'updatedRange': 'nova_pagina!B2',\n",
388 | " 'updatedRows': 1}"
389 | ]
390 | },
391 | "metadata": {
392 | "tags": []
393 | },
394 | "execution_count": 12
395 | }
396 | ]
397 | },
398 | {
399 | "cell_type": "markdown",
400 | "metadata": {
401 | "id": "tldCxUqWlQBc",
402 | "colab_type": "text"
403 | },
404 | "source": [
405 | ">>`update_cells()`: por uma lista de valores"
406 | ]
407 | },
408 | {
409 | "cell_type": "code",
410 | "metadata": {
411 | "id": "ME3vC5O8bgR9",
412 | "colab_type": "code",
413 | "outputId": "2c0ca856-00d5-45d9-88cb-356166f8e6f6",
414 | "colab": {
415 | "base_uri": "https://localhost:8080/",
416 | "height": 85
417 | }
418 | },
419 | "source": [
420 | "lista_cel = nova_pagina.range('a1:b2')\n",
421 | "lista_cel"
422 | ],
423 | "execution_count": 0,
424 | "outputs": [
425 | {
426 | "output_type": "execute_result",
427 | "data": {
428 | "text/plain": [
429 | "[,\n",
430 | " ,\n",
431 | " ,\n",
432 | " ]"
433 | ]
434 | },
435 | "metadata": {
436 | "tags": []
437 | },
438 | "execution_count": 13
439 | }
440 | ]
441 | },
442 | {
443 | "cell_type": "code",
444 | "metadata": {
445 | "id": "fDF-oFOznejR",
446 | "colab_type": "code",
447 | "outputId": "e13d8237-f8c4-46dd-884f-532e0b79836d",
448 | "colab": {
449 | "base_uri": "https://localhost:8080/",
450 | "height": 34
451 | }
452 | },
453 | "source": [
454 | "valores = ['a','b','c','d']\n",
455 | "\n",
456 | "for i, valor in enumerate(valores):\n",
457 | " lista_cel[i].value = valor\n",
458 | "\n",
459 | "lista_cel"
460 | ],
461 | "execution_count": 0,
462 | "outputs": [
463 | {
464 | "output_type": "execute_result",
465 | "data": {
466 | "text/plain": [
467 | "[, , , ]"
468 | ]
469 | },
470 | "metadata": {
471 | "tags": []
472 | },
473 | "execution_count": 17
474 | }
475 | ]
476 | },
477 | {
478 | "cell_type": "code",
479 | "metadata": {
480 | "id": "litmy4_xnGKx",
481 | "colab_type": "code",
482 | "outputId": "3e8f646c-1194-40c8-8fcb-390818279f3b",
483 | "colab": {
484 | "base_uri": "https://localhost:8080/",
485 | "height": 102
486 | }
487 | },
488 | "source": [
489 | "nova_pagina.update_cells(lista_cel)"
490 | ],
491 | "execution_count": 0,
492 | "outputs": [
493 | {
494 | "output_type": "execute_result",
495 | "data": {
496 | "text/plain": [
497 | "{'spreadsheetId': '19pRZ5GYD4cGGa-p2yoiuy05sKefT6w-XFUpi04jPlgE',\n",
498 | " 'updatedCells': 4,\n",
499 | " 'updatedColumns': 2,\n",
500 | " 'updatedRange': 'nova_pagina!A1:B2',\n",
501 | " 'updatedRows': 2}"
502 | ]
503 | },
504 | "metadata": {
505 | "tags": []
506 | },
507 | "execution_count": 18
508 | }
509 | ]
510 | },
511 | {
512 | "cell_type": "code",
513 | "metadata": {
514 | "id": "_CqDZr8LAj-3",
515 | "colab_type": "code",
516 | "colab": {}
517 | },
518 | "source": [
519 | ""
520 | ],
521 | "execution_count": 0,
522 | "outputs": []
523 | }
524 | ]
525 | }
--------------------------------------------------------------------------------
/15_Integrando_Google_Colab_e_Google_Planilhas_(spreadsheet).ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "15 - Integrando Google Colab e Google Planilhas (spreadsheet).ipynb",
7 | "provenance": [],
8 | "include_colab_link": true
9 | },
10 | "kernelspec": {
11 | "name": "python3",
12 | "display_name": "Python 3"
13 | }
14 | },
15 | "cells": [
16 | {
17 | "cell_type": "markdown",
18 | "metadata": {
19 | "id": "view-in-github",
20 | "colab_type": "text"
21 | },
22 | "source": [
23 | " "
24 | ]
25 | },
26 | {
27 | "cell_type": "markdown",
28 | "metadata": {
29 | "id": "jAFCrMR4lhOk",
30 | "colab_type": "text"
31 | },
32 | "source": [
33 | "#Ricos pelo Acaso\n",
34 | "* Link para o vídeo: https://youtu.be/HlhbsrJ4_PQ"
35 | ]
36 | },
37 | {
38 | "cell_type": "markdown",
39 | "metadata": {
40 | "id": "xdIDjdI1Uq5Y",
41 | "colab_type": "text"
42 | },
43 | "source": [
44 | ">Instalando `gspread`"
45 | ]
46 | },
47 | {
48 | "cell_type": "code",
49 | "metadata": {
50 | "id": "8f78dBjnA3Y-",
51 | "colab_type": "code",
52 | "colab": {}
53 | },
54 | "source": [
55 | "!pip install gspread"
56 | ],
57 | "execution_count": 0,
58 | "outputs": []
59 | },
60 | {
61 | "cell_type": "markdown",
62 | "metadata": {
63 | "id": "40vthssCUv1X",
64 | "colab_type": "text"
65 | },
66 | "source": [
67 | ">Importando as Bibliotecas"
68 | ]
69 | },
70 | {
71 | "cell_type": "code",
72 | "metadata": {
73 | "id": "VgLSPFycA9SJ",
74 | "colab_type": "code",
75 | "colab": {}
76 | },
77 | "source": [
78 | "from google.colab import auth\n",
79 | "import gspread\n",
80 | "from oauth2client.client import GoogleCredentials"
81 | ],
82 | "execution_count": 0,
83 | "outputs": []
84 | },
85 | {
86 | "cell_type": "markdown",
87 | "metadata": {
88 | "id": "R2du4Rvuxq4h",
89 | "colab_type": "text"
90 | },
91 | "source": [
92 | ">Realizando a Autenticação"
93 | ]
94 | },
95 | {
96 | "cell_type": "code",
97 | "metadata": {
98 | "id": "bJGFIHvJxcfo",
99 | "colab_type": "code",
100 | "colab": {}
101 | },
102 | "source": [
103 | "auth.authenticate_user()\n",
104 | "gc = gspread.authorize(GoogleCredentials.get_application_default())"
105 | ],
106 | "execution_count": 0,
107 | "outputs": []
108 | },
109 | {
110 | "cell_type": "markdown",
111 | "metadata": {
112 | "id": "SBpuhBm9U8cg",
113 | "colab_type": "text"
114 | },
115 | "source": [
116 | ">Criando uma planilha vazia"
117 | ]
118 | },
119 | {
120 | "cell_type": "code",
121 | "metadata": {
122 | "id": "PpVsOifeBB0m",
123 | "colab_type": "code",
124 | "outputId": "ec175888-ae1c-4d87-acb3-813f6beab574",
125 | "colab": {
126 | "base_uri": "https://localhost:8080/",
127 | "height": 34
128 | }
129 | },
130 | "source": [
131 | "gc.create('Planilha01')"
132 | ],
133 | "execution_count": 0,
134 | "outputs": [
135 | {
136 | "output_type": "execute_result",
137 | "data": {
138 | "text/plain": [
139 | ""
140 | ]
141 | },
142 | "metadata": {
143 | "tags": []
144 | },
145 | "execution_count": 4
146 | }
147 | ]
148 | },
149 | {
150 | "cell_type": "markdown",
151 | "metadata": {
152 | "id": "PLGoqsjliO8P",
153 | "colab_type": "text"
154 | },
155 | "source": [
156 | ">Abrindo uma Planilha"
157 | ]
158 | },
159 | {
160 | "cell_type": "code",
161 | "metadata": {
162 | "id": "WCxNYLZCiPBv",
163 | "colab_type": "code",
164 | "colab": {}
165 | },
166 | "source": [
167 | "planilha = gc.open('Planilha01')"
168 | ],
169 | "execution_count": 0,
170 | "outputs": []
171 | },
172 | {
173 | "cell_type": "markdown",
174 | "metadata": {
175 | "id": "4qHcboXCVZ_j",
176 | "colab_type": "text"
177 | },
178 | "source": [
179 | ">Adicionando uma nova Página\n",
180 | "\n"
181 | ]
182 | },
183 | {
184 | "cell_type": "code",
185 | "metadata": {
186 | "id": "gSLxsA5sVfuR",
187 | "colab_type": "code",
188 | "outputId": "9fec4a45-58f6-4a39-be01-df732dead789",
189 | "colab": {
190 | "base_uri": "https://localhost:8080/",
191 | "height": 34
192 | }
193 | },
194 | "source": [
195 | "planilha.add_worksheet('nova_pagina', 10, 5)"
196 | ],
197 | "execution_count": 0,
198 | "outputs": [
199 | {
200 | "output_type": "execute_result",
201 | "data": {
202 | "text/plain": [
203 | ""
204 | ]
205 | },
206 | "metadata": {
207 | "tags": []
208 | },
209 | "execution_count": 7
210 | }
211 | ]
212 | },
213 | {
214 | "cell_type": "markdown",
215 | "metadata": {
216 | "id": "UtRICcfNaMOq",
217 | "colab_type": "text"
218 | },
219 | "source": [
220 | ">Selecionando uma Página"
221 | ]
222 | },
223 | {
224 | "cell_type": "code",
225 | "metadata": {
226 | "id": "dGhngLzmhJO1",
227 | "colab_type": "code",
228 | "colab": {}
229 | },
230 | "source": [
231 | "pagina1 = planilha.get_worksheet(0)"
232 | ],
233 | "execution_count": 0,
234 | "outputs": []
235 | },
236 | {
237 | "cell_type": "markdown",
238 | "metadata": {
239 | "id": "hkWy8KOCi4py",
240 | "colab_type": "text"
241 | },
242 | "source": [
243 | ">Apagando uma Página"
244 | ]
245 | },
246 | {
247 | "cell_type": "code",
248 | "metadata": {
249 | "id": "6HvqjzJghZZH",
250 | "colab_type": "code",
251 | "outputId": "b118859d-0405-4385-973e-ff48182b7377",
252 | "colab": {
253 | "base_uri": "https://localhost:8080/",
254 | "height": 51
255 | }
256 | },
257 | "source": [
258 | "planilha.del_worksheet(pagina1)"
259 | ],
260 | "execution_count": 0,
261 | "outputs": [
262 | {
263 | "output_type": "execute_result",
264 | "data": {
265 | "text/plain": [
266 | "{'replies': [{}],\n",
267 | " 'spreadsheetId': '19pRZ5GYD4cGGa-p2yoiuy05sKefT6w-XFUpi04jPlgE'}"
268 | ]
269 | },
270 | "metadata": {
271 | "tags": []
272 | },
273 | "execution_count": 9
274 | }
275 | ]
276 | },
277 | {
278 | "cell_type": "markdown",
279 | "metadata": {
280 | "id": "4-B4RpqpaOu5",
281 | "colab_type": "text"
282 | },
283 | "source": [
284 | ">Alterando os valores das células"
285 | ]
286 | },
287 | {
288 | "cell_type": "markdown",
289 | "metadata": {
290 | "id": "TkU-D5Zhkle4",
291 | "colab_type": "text"
292 | },
293 | "source": [
294 | ">>1º passo: selecionar a página"
295 | ]
296 | },
297 | {
298 | "cell_type": "code",
299 | "metadata": {
300 | "id": "BMNOIhJKjIQL",
301 | "colab_type": "code",
302 | "colab": {}
303 | },
304 | "source": [
305 | "nova_pagina = planilha.get_worksheet(0)"
306 | ],
307 | "execution_count": 0,
308 | "outputs": []
309 | },
310 | {
311 | "cell_type": "markdown",
312 | "metadata": {
313 | "id": "Xx7MhtXaktQp",
314 | "colab_type": "text"
315 | },
316 | "source": [
317 | ">>`update_acell()`: pelo código da célula"
318 | ]
319 | },
320 | {
321 | "cell_type": "code",
322 | "metadata": {
323 | "id": "9w9LPmdRZtuQ",
324 | "colab_type": "code",
325 | "outputId": "60dc71a4-0f2a-4c78-c16d-a168e6436a1e",
326 | "colab": {
327 | "base_uri": "https://localhost:8080/",
328 | "height": 102
329 | }
330 | },
331 | "source": [
332 | "nova_pagina.update_acell('a1', 120)"
333 | ],
334 | "execution_count": 0,
335 | "outputs": [
336 | {
337 | "output_type": "execute_result",
338 | "data": {
339 | "text/plain": [
340 | "{'spreadsheetId': '19pRZ5GYD4cGGa-p2yoiuy05sKefT6w-XFUpi04jPlgE',\n",
341 | " 'updatedCells': 1,\n",
342 | " 'updatedColumns': 1,\n",
343 | " 'updatedRange': 'nova_pagina!A1',\n",
344 | " 'updatedRows': 1}"
345 | ]
346 | },
347 | "metadata": {
348 | "tags": []
349 | },
350 | "execution_count": 11
351 | }
352 | ]
353 | },
354 | {
355 | "cell_type": "markdown",
356 | "metadata": {
357 | "id": "Fr1mLethlDIF",
358 | "colab_type": "text"
359 | },
360 | "source": [
361 | ">>`update_cell`: pelos números da linha e coluna"
362 | ]
363 | },
364 | {
365 | "cell_type": "code",
366 | "metadata": {
367 | "id": "1eU9gm3qZtya",
368 | "colab_type": "code",
369 | "outputId": "c8872f71-dab5-4411-b07d-a9dbd03721e8",
370 | "colab": {
371 | "base_uri": "https://localhost:8080/",
372 | "height": 102
373 | }
374 | },
375 | "source": [
376 | "nova_pagina.update_cell(2,2, 'qualquer texto')"
377 | ],
378 | "execution_count": 0,
379 | "outputs": [
380 | {
381 | "output_type": "execute_result",
382 | "data": {
383 | "text/plain": [
384 | "{'spreadsheetId': '19pRZ5GYD4cGGa-p2yoiuy05sKefT6w-XFUpi04jPlgE',\n",
385 | " 'updatedCells': 1,\n",
386 | " 'updatedColumns': 1,\n",
387 | " 'updatedRange': 'nova_pagina!B2',\n",
388 | " 'updatedRows': 1}"
389 | ]
390 | },
391 | "metadata": {
392 | "tags": []
393 | },
394 | "execution_count": 12
395 | }
396 | ]
397 | },
398 | {
399 | "cell_type": "markdown",
400 | "metadata": {
401 | "id": "tldCxUqWlQBc",
402 | "colab_type": "text"
403 | },
404 | "source": [
405 | ">>`update_cells()`: por uma lista de valores"
406 | ]
407 | },
408 | {
409 | "cell_type": "code",
410 | "metadata": {
411 | "id": "ME3vC5O8bgR9",
412 | "colab_type": "code",
413 | "outputId": "2c0ca856-00d5-45d9-88cb-356166f8e6f6",
414 | "colab": {
415 | "base_uri": "https://localhost:8080/",
416 | "height": 85
417 | }
418 | },
419 | "source": [
420 | "lista_cel = nova_pagina.range('a1:b2')\n",
421 | "lista_cel"
422 | ],
423 | "execution_count": 0,
424 | "outputs": [
425 | {
426 | "output_type": "execute_result",
427 | "data": {
428 | "text/plain": [
429 | "[,\n",
430 | " ,\n",
431 | " ,\n",
432 | " ]"
433 | ]
434 | },
435 | "metadata": {
436 | "tags": []
437 | },
438 | "execution_count": 13
439 | }
440 | ]
441 | },
442 | {
443 | "cell_type": "code",
444 | "metadata": {
445 | "id": "fDF-oFOznejR",
446 | "colab_type": "code",
447 | "outputId": "e13d8237-f8c4-46dd-884f-532e0b79836d",
448 | "colab": {
449 | "base_uri": "https://localhost:8080/",
450 | "height": 34
451 | }
452 | },
453 | "source": [
454 | "valores = ['a','b','c','d']\n",
455 | "\n",
456 | "for i, valor in enumerate(valores):\n",
457 | " lista_cel[i].value = valor\n",
458 | "\n",
459 | "lista_cel"
460 | ],
461 | "execution_count": 0,
462 | "outputs": [
463 | {
464 | "output_type": "execute_result",
465 | "data": {
466 | "text/plain": [
467 | "[, , , ]"
468 | ]
469 | },
470 | "metadata": {
471 | "tags": []
472 | },
473 | "execution_count": 17
474 | }
475 | ]
476 | },
477 | {
478 | "cell_type": "code",
479 | "metadata": {
480 | "id": "litmy4_xnGKx",
481 | "colab_type": "code",
482 | "outputId": "3e8f646c-1194-40c8-8fcb-390818279f3b",
483 | "colab": {
484 | "base_uri": "https://localhost:8080/",
485 | "height": 102
486 | }
487 | },
488 | "source": [
489 | "nova_pagina.update_cells(lista_cel)"
490 | ],
491 | "execution_count": 0,
492 | "outputs": [
493 | {
494 | "output_type": "execute_result",
495 | "data": {
496 | "text/plain": [
497 | "{'spreadsheetId': '19pRZ5GYD4cGGa-p2yoiuy05sKefT6w-XFUpi04jPlgE',\n",
498 | " 'updatedCells': 4,\n",
499 | " 'updatedColumns': 2,\n",
500 | " 'updatedRange': 'nova_pagina!A1:B2',\n",
501 | " 'updatedRows': 2}"
502 | ]
503 | },
504 | "metadata": {
505 | "tags": []
506 | },
507 | "execution_count": 18
508 | }
509 | ]
510 | },
511 | {
512 | "cell_type": "code",
513 | "metadata": {
514 | "id": "_CqDZr8LAj-3",
515 | "colab_type": "code",
516 | "colab": {}
517 | },
518 | "source": [
519 | ""
520 | ],
521 | "execution_count": 0,
522 | "outputs": []
523 | },
524 | {
525 | "cell_type": "markdown",
526 | "metadata": {
527 | "id": "gcVRSFNPmnTB",
528 | "colab_type": "text"
529 | },
530 | "source": [
531 | "###Carteira de Ações"
532 | ]
533 | },
534 | {
535 | "cell_type": "code",
536 | "metadata": {
537 | "id": "X7uTTvK2ocva",
538 | "colab_type": "code",
539 | "colab": {}
540 | },
541 | "source": [
542 | "plan_carteira = gc.open('Carteira')"
543 | ],
544 | "execution_count": 0,
545 | "outputs": []
546 | },
547 | {
548 | "cell_type": "markdown",
549 | "metadata": {
550 | "id": "4qjPfpRDmyxv",
551 | "colab_type": "text"
552 | },
553 | "source": [
554 | ">Criando um DataFrame Pandas com uma planilha do Google Planilhas"
555 | ]
556 | },
557 | {
558 | "cell_type": "code",
559 | "metadata": {
560 | "id": "ooDFcrDbm2Dd",
561 | "colab_type": "code",
562 | "colab": {}
563 | },
564 | "source": [
565 | "import pandas as pd"
566 | ],
567 | "execution_count": 0,
568 | "outputs": []
569 | },
570 | {
571 | "cell_type": "code",
572 | "metadata": {
573 | "id": "h5nZXPFRnfzp",
574 | "colab_type": "code",
575 | "outputId": "edfb5d71-5265-44ff-f637-2908a1d7e13f",
576 | "colab": {
577 | "base_uri": "https://localhost:8080/",
578 | "height": 235
579 | }
580 | },
581 | "source": [
582 | "carteira = pd.DataFrame(plan_carteira.sheet1.get_all_records())\n",
583 | "carteira.set_index('Cod', inplace=True)\n",
584 | "\n",
585 | "carteira"
586 | ],
587 | "execution_count": 0,
588 | "outputs": [
589 | {
590 | "output_type": "execute_result",
591 | "data": {
592 | "text/html": [
593 | "\n",
594 | "\n",
607 | " \n",
608 | " \n",
609 | " \n",
610 | " \n",
611 | " Qte \n",
612 | " Cotação \n",
613 | " Entrada \n",
614 | " Custo \n",
615 | " No dia \n",
616 | " Preço Atual \n",
617 | " Lucro R$ \n",
618 | " Lucro % \n",
619 | " \n",
620 | " \n",
621 | " Cod \n",
622 | " \n",
623 | " \n",
624 | " \n",
625 | " \n",
626 | " \n",
627 | " \n",
628 | " \n",
629 | " \n",
630 | " \n",
631 | " \n",
632 | " \n",
633 | " \n",
634 | " VALE3 \n",
635 | " 200 \n",
636 | " 44,86 \n",
637 | " 54,33 \n",
638 | " 10.866,00 \n",
639 | " -4,00% \n",
640 | " 8.972,00 \n",
641 | " -1.894,00 \n",
642 | " -17,43% \n",
643 | " \n",
644 | " \n",
645 | " PETR4 \n",
646 | " 400 \n",
647 | " 18,05 \n",
648 | " 19,17 \n",
649 | " 7.668,00 \n",
650 | " -0,82% \n",
651 | " 7.220,00 \n",
652 | " -448,00 \n",
653 | " -5,84% \n",
654 | " \n",
655 | " \n",
656 | " ITUB4 \n",
657 | " 300 \n",
658 | " 22,77 \n",
659 | " 38,03 \n",
660 | " 11.409,00 \n",
661 | " -3,76% \n",
662 | " 6.831,00 \n",
663 | " -4.578,00 \n",
664 | " -40,13% \n",
665 | " \n",
666 | " \n",
667 | " TAEE11 \n",
668 | " 300 \n",
669 | " 27,50 \n",
670 | " 30,84 \n",
671 | " 9.252,00 \n",
672 | " -0,72% \n",
673 | " 8.250,00 \n",
674 | " -1.002,00 \n",
675 | " -10,83% \n",
676 | " \n",
677 | " \n",
678 | " LREN3 \n",
679 | " 200 \n",
680 | " 38,39 \n",
681 | " 57,50 \n",
682 | " 11.500,00 \n",
683 | " -5,33% \n",
684 | " 7.678,00 \n",
685 | " -3.822,00 \n",
686 | " -33,23% \n",
687 | " \n",
688 | " \n",
689 | " \n",
690 | " "
691 | ],
692 | "text/plain": [
693 | " Qte Cotação Entrada Custo No dia Preço Atual Lucro R$ Lucro %\n",
694 | "Cod \n",
695 | "VALE3 200 44,86 54,33 10.866,00 -4,00% 8.972,00 -1.894,00 -17,43%\n",
696 | "PETR4 400 18,05 19,17 7.668,00 -0,82% 7.220,00 -448,00 -5,84%\n",
697 | "ITUB4 300 22,77 38,03 11.409,00 -3,76% 6.831,00 -4.578,00 -40,13%\n",
698 | "TAEE11 300 27,50 30,84 9.252,00 -0,72% 8.250,00 -1.002,00 -10,83%\n",
699 | "LREN3 200 38,39 57,50 11.500,00 -5,33% 7.678,00 -3.822,00 -33,23%"
700 | ]
701 | },
702 | "metadata": {
703 | "tags": []
704 | },
705 | "execution_count": 24
706 | }
707 | ]
708 | },
709 | {
710 | "cell_type": "markdown",
711 | "metadata": {
712 | "id": "lcysVrODm3L1",
713 | "colab_type": "text"
714 | },
715 | "source": [
716 | "###Salvando cotações do Yahoo Finance"
717 | ]
718 | },
719 | {
720 | "cell_type": "markdown",
721 | "metadata": {
722 | "id": "PXXkHBJDnBn1",
723 | "colab_type": "text"
724 | },
725 | "source": [
726 | ">Adicionando uma página à planilha"
727 | ]
728 | },
729 | {
730 | "cell_type": "code",
731 | "metadata": {
732 | "id": "VOwbyK4EnK0R",
733 | "colab_type": "code",
734 | "outputId": "94e38a6c-e5e1-48ad-c31f-f316ae1c2814",
735 | "colab": {
736 | "base_uri": "https://localhost:8080/",
737 | "height": 34
738 | }
739 | },
740 | "source": [
741 | "plan_carteira.add_worksheet('Cotações Yahoo', 1500, 71)"
742 | ],
743 | "execution_count": 0,
744 | "outputs": [
745 | {
746 | "output_type": "execute_result",
747 | "data": {
748 | "text/plain": [
749 | ""
750 | ]
751 | },
752 | "metadata": {
753 | "tags": []
754 | },
755 | "execution_count": 25
756 | }
757 | ]
758 | },
759 | {
760 | "cell_type": "markdown",
761 | "metadata": {
762 | "id": "sv_-LjLynLqn",
763 | "colab_type": "text"
764 | },
765 | "source": [
766 | ">Instalando o YFinance"
767 | ]
768 | },
769 | {
770 | "cell_type": "code",
771 | "metadata": {
772 | "id": "Ma4LCm2cnRIk",
773 | "colab_type": "code",
774 | "colab": {}
775 | },
776 | "source": [
777 | "!pip install yfinance"
778 | ],
779 | "execution_count": 0,
780 | "outputs": []
781 | },
782 | {
783 | "cell_type": "code",
784 | "metadata": {
785 | "id": "YRs4eN89nlSc",
786 | "colab_type": "code",
787 | "colab": {}
788 | },
789 | "source": [
790 | "import yfinance as yf"
791 | ],
792 | "execution_count": 0,
793 | "outputs": []
794 | },
795 | {
796 | "cell_type": "code",
797 | "metadata": {
798 | "id": "syEMASfNnlZl",
799 | "colab_type": "code",
800 | "colab": {}
801 | },
802 | "source": [
803 | "tickers_ibov = \"ABEV3.SA AZUL4.SA B3SA3.SA BBAS3.SA BBDC4.SA BBSE3.SA BPAC11.SA BRAP4.SA BRDT3.SA BRFS3.SA BRKM5.SA BRML3.SA BTOW3.SA CCRO3.SA CIEL3.SA CMIG4.SA COGN3.SA CRFB3.SA CSAN3.SA CSNA3.SA CVCB3.SA CYRE3.SA ECOR3.SA EGIE3.SA ELET6.SA EMBR3.SA ENBR3.SA EQTL3.SA FLRY3.SA GGBR4.SA GNDI3.SA GOAU4.SA GOLL4.SA HAPV3.SA HGTX3.SA HYPE3.SA IGTA3.SA IRBR3.SA ITSA4.SA ITUB4.SA JBSS3.SA KLBN11.SA LAME4.SA LREN3.SA MGLU3.SA MRFG3.SA MRVE3.SA MULT3.SA NTCO3.SA PCAR4.SA PETR4.SA QUAL3.SA RADL3.SA RAIL3.SA RENT3.SA SANB11.SA SBSP3.SA SMLS3.SA SULA11.SA SUZB3.SA TAEE11.SA TIMP3.SA TOTS3.SA UGPA3.SA USIM5.SA VALE3.SA VIVT4.SA VVAR3.SA WEGE3.SA YDUQ3.SA\""
804 | ],
805 | "execution_count": 0,
806 | "outputs": []
807 | },
808 | {
809 | "cell_type": "code",
810 | "metadata": {
811 | "id": "7QI6aIV1nlfc",
812 | "colab_type": "code",
813 | "outputId": "463c0ad2-76ed-4fe4-aeaf-0e9cbd0187a9",
814 | "colab": {
815 | "base_uri": "https://localhost:8080/",
816 | "height": 34
817 | }
818 | },
819 | "source": [
820 | "dados_yf = yf.download(tickers=tickers_ibov, period='5y')[\"Adj Close\"]"
821 | ],
822 | "execution_count": 0,
823 | "outputs": [
824 | {
825 | "output_type": "stream",
826 | "text": [
827 | "[*********************100%***********************] 70 of 70 completed\n"
828 | ],
829 | "name": "stdout"
830 | }
831 | ]
832 | },
833 | {
834 | "cell_type": "markdown",
835 | "metadata": {
836 | "id": "XLHQlDRfnUXr",
837 | "colab_type": "text"
838 | },
839 | "source": [
840 | ">Selecionando a página criada"
841 | ]
842 | },
843 | {
844 | "cell_type": "code",
845 | "metadata": {
846 | "id": "hOLsAxLaDf9S",
847 | "colab_type": "code",
848 | "colab": {}
849 | },
850 | "source": [
851 | ""
852 | ],
853 | "execution_count": 0,
854 | "outputs": []
855 | },
856 | {
857 | "cell_type": "code",
858 | "metadata": {
859 | "id": "dANyQ2b1nU9F",
860 | "colab_type": "code",
861 | "colab": {}
862 | },
863 | "source": [
864 | "pagina_yahoo = plan_carteira.get_worksheet(1)"
865 | ],
866 | "execution_count": 0,
867 | "outputs": []
868 | },
869 | {
870 | "cell_type": "markdown",
871 | "metadata": {
872 | "id": "fHAEMXDrnYZY",
873 | "colab_type": "text"
874 | },
875 | "source": [
876 | ">Instalando a biblioteca `gspread-dataframe`"
877 | ]
878 | },
879 | {
880 | "cell_type": "code",
881 | "metadata": {
882 | "id": "ib8F1f_TnZEN",
883 | "colab_type": "code",
884 | "colab": {}
885 | },
886 | "source": [
887 | "!pip install gspread-dataframe"
888 | ],
889 | "execution_count": 0,
890 | "outputs": []
891 | },
892 | {
893 | "cell_type": "code",
894 | "metadata": {
895 | "id": "DV3en5p0n1QJ",
896 | "colab_type": "code",
897 | "colab": {}
898 | },
899 | "source": [
900 | "from gspread_dataframe import get_as_dataframe, set_with_dataframe"
901 | ],
902 | "execution_count": 0,
903 | "outputs": []
904 | },
905 | {
906 | "cell_type": "markdown",
907 | "metadata": {
908 | "id": "UJBePoaIn2lm",
909 | "colab_type": "text"
910 | },
911 | "source": [
912 | ">Preenchendo os dados na planilha"
913 | ]
914 | },
915 | {
916 | "cell_type": "code",
917 | "metadata": {
918 | "id": "-c0Uem6Tn4Ut",
919 | "colab_type": "code",
920 | "colab": {}
921 | },
922 | "source": [
923 | "set_with_dataframe(pagina_yahoo, dados_yf, include_index=True)"
924 | ],
925 | "execution_count": 0,
926 | "outputs": []
927 | },
928 | {
929 | "cell_type": "markdown",
930 | "metadata": {
931 | "id": "5FH62gxXoANy",
932 | "colab_type": "text"
933 | },
934 | "source": [
935 | "###Dados Fundamentalistas"
936 | ]
937 | },
938 | {
939 | "cell_type": "code",
940 | "metadata": {
941 | "id": "tfBjEIjsoD4F",
942 | "colab_type": "code",
943 | "outputId": "049e2e00-acbb-4231-b4c6-d918037a26dc",
944 | "colab": {
945 | "base_uri": "https://localhost:8080/",
946 | "height": 34
947 | }
948 | },
949 | "source": [
950 | "plan_carteira.add_worksheet('fundamentus', 500, 20)"
951 | ],
952 | "execution_count": 0,
953 | "outputs": [
954 | {
955 | "output_type": "execute_result",
956 | "data": {
957 | "text/plain": [
958 | ""
959 | ]
960 | },
961 | "metadata": {
962 | "tags": []
963 | },
964 | "execution_count": 37
965 | }
966 | ]
967 | },
968 | {
969 | "cell_type": "code",
970 | "metadata": {
971 | "id": "yvElrUO8oFN5",
972 | "colab_type": "code",
973 | "colab": {}
974 | },
975 | "source": [
976 | "pagina_fundamentus = plan_carteira.get_worksheet(2)"
977 | ],
978 | "execution_count": 0,
979 | "outputs": []
980 | },
981 | {
982 | "cell_type": "code",
983 | "metadata": {
984 | "id": "mGc9yqFYoFT3",
985 | "colab_type": "code",
986 | "colab": {}
987 | },
988 | "source": [
989 | "url = 'https://www.fundamentus.com.br/resultado.php'"
990 | ],
991 | "execution_count": 0,
992 | "outputs": []
993 | },
994 | {
995 | "cell_type": "code",
996 | "metadata": {
997 | "id": "kYH4bxEeoFZp",
998 | "colab_type": "code",
999 | "colab": {}
1000 | },
1001 | "source": [
1002 | "df = pd.read_html(url, decimal=',', thousands='.')[0]"
1003 | ],
1004 | "execution_count": 0,
1005 | "outputs": []
1006 | },
1007 | {
1008 | "cell_type": "code",
1009 | "metadata": {
1010 | "id": "lJylwqARoFfM",
1011 | "colab_type": "code",
1012 | "colab": {}
1013 | },
1014 | "source": [
1015 | "set_with_dataframe(pagina_fundamentus, df)"
1016 | ],
1017 | "execution_count": 0,
1018 | "outputs": []
1019 | },
1020 | {
1021 | "cell_type": "code",
1022 | "metadata": {
1023 | "id": "uvKZ_il-vZF_",
1024 | "colab_type": "code",
1025 | "colab": {}
1026 | },
1027 | "source": [
1028 | ""
1029 | ],
1030 | "execution_count": 0,
1031 | "outputs": []
1032 | }
1033 | ]
1034 | }
--------------------------------------------------------------------------------
/17_CVM_Os_Melhores_e_os_Piores_Fundos_de_Investimento_de_2020.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "name": "17 - CVM - Os Melhores e os Piores Fundos de Investimento de 2020.ipynb",
7 | "provenance": [],
8 | "authorship_tag": "ABX9TyO2X7tWi/1jIVRgLHu//asd",
9 | "include_colab_link": true
10 | },
11 | "kernelspec": {
12 | "name": "python3",
13 | "display_name": "Python 3"
14 | }
15 | },
16 | "cells": [
17 | {
18 | "cell_type": "markdown",
19 | "metadata": {
20 | "id": "view-in-github",
21 | "colab_type": "text"
22 | },
23 | "source": [
24 | " "
25 | ]
26 | },
27 | {
28 | "cell_type": "markdown",
29 | "metadata": {
30 | "id": "Oz_2zb3QiAag",
31 | "colab_type": "text"
32 | },
33 | "source": [
34 | "* Base de Dados: http://dados.cvm.gov.br/\n",
35 | "\n",
36 | "\n"
37 | ]
38 | },
39 | {
40 | "cell_type": "markdown",
41 | "metadata": {
42 | "id": "54Ldgp4FSzwk",
43 | "colab_type": "text"
44 | },
45 | "source": [
46 | "###Bibliotecas"
47 | ]
48 | },
49 | {
50 | "cell_type": "code",
51 | "metadata": {
52 | "id": "N999MJOc6JYg",
53 | "colab_type": "code",
54 | "colab": {}
55 | },
56 | "source": [
57 | "import pandas as pd\n",
58 | "from pandas.tseries.offsets import BDay\n",
59 | "from datetime import date\n",
60 | "pd.set_option(\"display.max_colwidth\", 150)"
61 | ],
62 | "execution_count": 0,
63 | "outputs": []
64 | },
65 | {
66 | "cell_type": "markdown",
67 | "metadata": {
68 | "id": "y2c696fB6keA",
69 | "colab_type": "text"
70 | },
71 | "source": [
72 | "###Funções para Coleta e Tratamento de dados de Fundos de Investimento fornecidos pela CVM"
73 | ]
74 | },
75 | {
76 | "cell_type": "code",
77 | "metadata": {
78 | "id": "I3XFMCp5rb6X",
79 | "colab_type": "code",
80 | "colab": {}
81 | },
82 | "source": [
83 | "def busca_cadastro_cvm(data=(date.today()-BDay(2))):\n",
84 | " if data is not busca_cadastro_cvm.__defaults__[0]:\n",
85 | " data = pd.to_datetime(data)\n",
86 | " \n",
87 | " try:\n",
88 | " url = 'http://dados.cvm.gov.br/dados/FI/CAD/DADOS/inf_cadastral_fi_{}{:02d}{:02d}.csv'.format(data.year, data.month, data.day)\n",
89 | " return pd.read_csv(url, sep=';', encoding='ISO-8859-1')\n",
90 | "\n",
91 | " except: \n",
92 | " print(\"Arquivo {} não encontrado!\".format(url))\n",
93 | " print(\"Forneça outra data!\")"
94 | ],
95 | "execution_count": 0,
96 | "outputs": []
97 | },
98 | {
99 | "cell_type": "code",
100 | "metadata": {
101 | "id": "3TFPvD__6LaA",
102 | "colab_type": "code",
103 | "colab": {}
104 | },
105 | "source": [
106 | "def busca_informes_diarios_cvm_por_periodo(data_inicio, data_fim):\n",
107 | " datas = pd.date_range(data_inicio, data_fim, freq='MS') \n",
108 | " informe_completo = pd.DataFrame()\n",
109 | "\n",
110 | " for data in datas:\n",
111 | " try:\n",
112 | " url ='http://dados.cvm.gov.br/dados/FI/DOC/INF_DIARIO/DADOS/inf_diario_fi_{}{:02d}.csv'.format(data.year, data.month)\n",
113 | " informe_mensal = pd.read_csv(url, sep=';') \n",
114 | " \n",
115 | " except: \n",
116 | " print(\"Arquivo {} não encontrado!\".format(url)) \n",
117 | "\n",
118 | " informe_completo = pd.concat([informe_completo, informe_mensal], ignore_index=True)\n",
119 | "\n",
120 | " return informe_completo"
121 | ],
122 | "execution_count": 0,
123 | "outputs": []
124 | },
125 | {
126 | "cell_type": "code",
127 | "metadata": {
128 | "id": "iWLM-jriWVy_",
129 | "colab_type": "code",
130 | "colab": {}
131 | },
132 | "source": [
133 | "def melhores_e_piores(informes, cadastro, top=5, minimo_de_cotistas=100, classe=''): \n",
134 | " cadastro = cadastro[cadastro['SIT'] == 'EM FUNCIONAMENTO NORMAL']\n",
135 | " fundos = informes[informes['NR_COTST'] >= minimo_de_cotistas]\n",
136 | " cnpj_informes = fundos['CNPJ_FUNDO'].drop_duplicates()\n",
137 | " \n",
138 | " fundos = fundos.pivot(index='DT_COMPTC', columns='CNPJ_FUNDO') \n",
139 | " cotas_normalizadas = fundos['VL_QUOTA'] / fundos['VL_QUOTA'].iloc[0]\n",
140 | " \n",
141 | " if classe == 'multimercado':\n",
142 | " cnpj_cadastro = cadastro[cadastro['CLASSE'] == 'Fundo Multimercado']['CNPJ_FUNDO'] \n",
143 | " cotas_normalizadas = cotas_normalizadas[cnpj_cadastro[cnpj_cadastro.isin(cnpj_informes)]]\n",
144 | "\n",
145 | " if classe == 'acoes':\n",
146 | " cnpj_cadastro = cadastro[cadastro['CLASSE'] == 'Fundo de Ações']['CNPJ_FUNDO'] \n",
147 | " cotas_normalizadas = cotas_normalizadas[cnpj_cadastro[cnpj_cadastro.isin(cnpj_informes)]]\n",
148 | "\n",
149 | " if classe == 'rendafixa':\n",
150 | " cnpj_cadastro = cadastro[cadastro['CLASSE'] == 'Fundo de Renda Fixa']['CNPJ_FUNDO'] \n",
151 | " cotas_normalizadas = cotas_normalizadas[cnpj_cadastro[cnpj_cadastro.isin(cnpj_informes)]]\n",
152 | "\n",
153 | " if classe == 'cambial':\n",
154 | " cnpj_cadastro = cadastro[cadastro['CLASSE'] == 'Fundo Cambial']['CNPJ_FUNDO'] \n",
155 | " cotas_normalizadas = cotas_normalizadas[cnpj_cadastro[cnpj_cadastro.isin(cnpj_informes)]]\n",
156 | " \n",
157 | " #melhores\n",
158 | " melhores = pd.DataFrame()\n",
159 | " melhores['retorno(%)'] = (cotas_normalizadas.iloc[-1].sort_values(ascending=False)[:top] - 1) * 100\n",
160 | " for cnpj in melhores.index:\n",
161 | " fundo = cadastro[cadastro['CNPJ_FUNDO'] == cnpj]\n",
162 | " melhores.at[cnpj, 'Fundo de Investimento'] = fundo['DENOM_SOCIAL'].values[0]\n",
163 | " melhores.at[cnpj, 'Classe'] = fundo['CLASSE'].values[0]\n",
164 | " melhores.at[cnpj, 'PL'] = fundo['VL_PATRIM_LIQ'].values[0]\n",
165 | "\n",
166 | " #piores\n",
167 | " piores = pd.DataFrame()\n",
168 | " piores['retorno(%)'] = (cotas_normalizadas.iloc[-1].sort_values(ascending=True)[:top] - 1) * 100\n",
169 | " for cnpj in piores.index:\n",
170 | " fundo = cadastro[cadastro['CNPJ_FUNDO'] == cnpj]\n",
171 | " piores.at[cnpj, 'Fundo de Investimento'] = fundo['DENOM_SOCIAL'].values[0]\n",
172 | " piores.at[cnpj, 'Classe'] = fundo['CLASSE'].values[0]\n",
173 | " piores.at[cnpj, 'PL'] = fundo['VL_PATRIM_LIQ'].values[0]\n",
174 | " \n",
175 | " return melhores, piores"
176 | ],
177 | "execution_count": 0,
178 | "outputs": []
179 | },
180 | {
181 | "cell_type": "markdown",
182 | "metadata": {
183 | "id": "sB4ggm9IMq46",
184 | "colab_type": "text"
185 | },
186 | "source": [
187 | "###Buscando Dados da CVM"
188 | ]
189 | },
190 | {
191 | "cell_type": "code",
192 | "metadata": {
193 | "id": "VQB2ThWo9KC7",
194 | "colab_type": "code",
195 | "colab": {}
196 | },
197 | "source": [
198 | "cadastro = busca_cadastro_cvm()"
199 | ],
200 | "execution_count": 0,
201 | "outputs": []
202 | },
203 | {
204 | "cell_type": "code",
205 | "metadata": {
206 | "id": "o_xehpSWTi00",
207 | "colab_type": "code",
208 | "colab": {}
209 | },
210 | "source": [
211 | "informes = busca_informes_diarios_cvm_por_periodo(data_inicio='2020-01', data_fim='2020-05')"
212 | ],
213 | "execution_count": 0,
214 | "outputs": []
215 | },
216 | {
217 | "cell_type": "code",
218 | "metadata": {
219 | "id": "Q6U20LwsTSxt",
220 | "colab_type": "code",
221 | "colab": {}
222 | },
223 | "source": [
224 | "cadastro"
225 | ],
226 | "execution_count": 0,
227 | "outputs": []
228 | },
229 | {
230 | "cell_type": "code",
231 | "metadata": {
232 | "id": "3GGH5wegTS2w",
233 | "colab_type": "code",
234 | "colab": {}
235 | },
236 | "source": [
237 | "informes"
238 | ],
239 | "execution_count": 0,
240 | "outputs": []
241 | },
242 | {
243 | "cell_type": "markdown",
244 | "metadata": {
245 | "id": "v2P9YCzVRxg5",
246 | "colab_type": "text"
247 | },
248 | "source": [
249 | "###Fundos de Investimento: 10 Melhores e 10 Piores de 2020"
250 | ]
251 | },
252 | {
253 | "cell_type": "code",
254 | "metadata": {
255 | "id": "cPYAsuFhSQ5k",
256 | "colab_type": "code",
257 | "colab": {}
258 | },
259 | "source": [
260 | "melhores, piores = melhores_e_piores(informes, cadastro, top=10, minimo_de_cotistas=100)"
261 | ],
262 | "execution_count": 0,
263 | "outputs": []
264 | },
265 | {
266 | "cell_type": "code",
267 | "metadata": {
268 | "id": "RdMBVncVCjRu",
269 | "colab_type": "code",
270 | "outputId": "b9c47b22-5387-40c6-9235-9c15e9a23f28",
271 | "colab": {
272 | "base_uri": "https://localhost:8080/",
273 | "height": 559
274 | }
275 | },
276 | "source": [
277 | "melhores"
278 | ],
279 | "execution_count": 0,
280 | "outputs": [
281 | {
282 | "output_type": "execute_result",
283 | "data": {
284 | "text/html": [
285 | "\n",
286 | "\n",
299 | " \n",
300 | " \n",
301 | " \n",
302 | " \n",
303 | " retorno(%) \n",
304 | " Fundo de Investimento \n",
305 | " Classe \n",
306 | " PL \n",
307 | " \n",
308 | " \n",
309 | " CNPJ_FUNDO \n",
310 | " \n",
311 | " \n",
312 | " \n",
313 | " \n",
314 | " \n",
315 | " \n",
316 | " \n",
317 | " \n",
318 | " 34.979.818/0001-10 \n",
319 | " 59.694443 \n",
320 | " BTG PACTUAL OURO USD FUNDO DE INVESTIMENTO MULTIMERCADO \n",
321 | " Fundo Multimercado \n",
322 | " 1.254679e+08 \n",
323 | " \n",
324 | " \n",
325 | " 09.601.190/0001-77 \n",
326 | " 53.340957 \n",
327 | " ÓRAMA OURO FUNDO DE INVESTIMENTO MULTIMERCADO \n",
328 | " Fundo Multimercado \n",
329 | " 3.736876e+08 \n",
330 | " \n",
331 | " \n",
332 | " 33.925.149/0001-30 \n",
333 | " 52.668225 \n",
334 | " VITREO OURO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO MULTIMERCADO \n",
335 | " Fundo Multimercado \n",
336 | " 2.462894e+08 \n",
337 | " \n",
338 | " \n",
339 | " 24.454.718/0001-16 \n",
340 | " 47.552244 \n",
341 | " DOLAR GLOBAL MACRO OPPORTUNITIES FUNDO DE INVESTIMENTO MULTIMERCADO INVESTIMENTO NO EXTERIOR \n",
342 | " Fundo Multimercado \n",
343 | " 9.939867e+07 \n",
344 | " \n",
345 | " \n",
346 | " 33.144.687/0001-98 \n",
347 | " 43.460456 \n",
348 | " BTG PACTUAL DIGITAL DOLAR FUNDO DE INVESTIMENTO CAMBIAL \n",
349 | " Fundo Cambial \n",
350 | " 1.838957e+08 \n",
351 | " \n",
352 | " \n",
353 | " 01.623.535/0001-81 \n",
354 | " 43.153661 \n",
355 | " ITAÚ CAMBIAL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
356 | " Fundo Cambial \n",
357 | " 1.076893e+09 \n",
358 | " \n",
359 | " \n",
360 | " 28.516.058/0001-01 \n",
361 | " 43.140339 \n",
362 | " BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL ÁGORA \n",
363 | " Fundo Cambial \n",
364 | " 1.655603e+07 \n",
365 | " \n",
366 | " \n",
367 | " 31.132.386/0001-19 \n",
368 | " 43.114212 \n",
369 | " TREND DOLAR FUNDO DE INVESTIMENTO CAMBIAL \n",
370 | " Fundo Cambial \n",
371 | " 1.292850e+08 \n",
372 | " \n",
373 | " \n",
374 | " 01.430.938/0001-04 \n",
375 | " 43.096075 \n",
376 | " BTG PACTUAL DOLAR FUNDO DE INVESTIMENTO CAMBIAL \n",
377 | " Fundo Cambial \n",
378 | " 1.790911e+08 \n",
379 | " \n",
380 | " \n",
381 | " 02.294.024/0001-26 \n",
382 | " 43.085551 \n",
383 | " BRADESCO H FUNDO DE INVESTIMENTO CAMBIAL LONGO PRAZO DÓLAR \n",
384 | " Fundo Cambial \n",
385 | " 2.627622e+08 \n",
386 | " \n",
387 | " \n",
388 | " \n",
389 | " "
390 | ],
391 | "text/plain": [
392 | " retorno(%) ... PL\n",
393 | "CNPJ_FUNDO ... \n",
394 | "34.979.818/0001-10 59.694443 ... 1.254679e+08\n",
395 | "09.601.190/0001-77 53.340957 ... 3.736876e+08\n",
396 | "33.925.149/0001-30 52.668225 ... 2.462894e+08\n",
397 | "24.454.718/0001-16 47.552244 ... 9.939867e+07\n",
398 | "33.144.687/0001-98 43.460456 ... 1.838957e+08\n",
399 | "01.623.535/0001-81 43.153661 ... 1.076893e+09\n",
400 | "28.516.058/0001-01 43.140339 ... 1.655603e+07\n",
401 | "31.132.386/0001-19 43.114212 ... 1.292850e+08\n",
402 | "01.430.938/0001-04 43.096075 ... 1.790911e+08\n",
403 | "02.294.024/0001-26 43.085551 ... 2.627622e+08\n",
404 | "\n",
405 | "[10 rows x 4 columns]"
406 | ]
407 | },
408 | "metadata": {
409 | "tags": []
410 | },
411 | "execution_count": 11
412 | }
413 | ]
414 | },
415 | {
416 | "cell_type": "code",
417 | "metadata": {
418 | "id": "deEkkNNoNLG8",
419 | "colab_type": "code",
420 | "outputId": "586d3774-3eee-49f3-a7bf-7a5777351974",
421 | "colab": {
422 | "base_uri": "https://localhost:8080/",
423 | "height": 559
424 | }
425 | },
426 | "source": [
427 | "piores"
428 | ],
429 | "execution_count": 0,
430 | "outputs": [
431 | {
432 | "output_type": "execute_result",
433 | "data": {
434 | "text/html": [
435 | "\n",
436 | "\n",
449 | " \n",
450 | " \n",
451 | " \n",
452 | " \n",
453 | " retorno(%) \n",
454 | " Fundo de Investimento \n",
455 | " Classe \n",
456 | " PL \n",
457 | " \n",
458 | " \n",
459 | " CNPJ_FUNDO \n",
460 | " \n",
461 | " \n",
462 | " \n",
463 | " \n",
464 | " \n",
465 | " \n",
466 | " \n",
467 | " \n",
468 | " 24.837.071/0001-01 \n",
469 | " -75.899511 \n",
470 | " WM DELTA CRÉDITO ESTRUTURADO FI EM COTAS DE FUNDOS DE INVESTIMENTO MULTIMERCADO - CRÉDITO PRIVADO \n",
471 | " Fundo Multimercado \n",
472 | " 1.107619e+06 \n",
473 | " \n",
474 | " \n",
475 | " 26.648.868/0001-96 \n",
476 | " -63.445553 \n",
477 | " ALASKA BLACK FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES II - BDR NÍVEL I \n",
478 | " Fundo de Ações \n",
479 | " 3.411718e+08 \n",
480 | " \n",
481 | " \n",
482 | " 12.987.743/0001-86 \n",
483 | " -63.377084 \n",
484 | " ALASKA BLACK FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES - BDR NÍVEL I \n",
485 | " Fundo de Ações \n",
486 | " 1.371619e+09 \n",
487 | " \n",
488 | " \n",
489 | " 31.936.857/0001-41 \n",
490 | " -62.783939 \n",
491 | " TREND IBOVESPA ALAVANCADO FUNDO DE INVESTIMENTO EM AÇÕES \n",
492 | " Fundo de Ações \n",
493 | " 8.549544e+07 \n",
494 | " \n",
495 | " \n",
496 | " 10.869.628/0001-81 \n",
497 | " -56.136318 \n",
498 | " BB AÇÕES CIELO FUNDO DE INVESTIMENTO \n",
499 | " Fundo de Ações \n",
500 | " 1.815607e+07 \n",
501 | " \n",
502 | " \n",
503 | " 10.590.125/0001-72 \n",
504 | " -55.825129 \n",
505 | " BRADESCO FUNDO DE INVESTIMENTO EM AÇÕES CIELO \n",
506 | " Fundo de Ações \n",
507 | " 5.942560e+06 \n",
508 | " \n",
509 | " \n",
510 | " 11.182.072/0001-13 \n",
511 | " -53.975565 \n",
512 | " LOGOS TOTAL RETURN FI EM COTAS DE FUNDOS DE INVESTIMENTO MULTIMERCADO \n",
513 | " Fundo Multimercado \n",
514 | " 1.507532e+08 \n",
515 | " \n",
516 | " \n",
517 | " 32.319.324/0001-83 \n",
518 | " -53.694348 \n",
519 | " TREND IBOVESPA DOLAR FUNDO DE INVESTIMENTO EM AÇÕES \n",
520 | " Fundo de Ações \n",
521 | " 7.348693e+06 \n",
522 | " \n",
523 | " \n",
524 | " 10.551.375/0001-01 \n",
525 | " -50.176998 \n",
526 | " FUNDO DE INVESTIMENTO EM AÇÕES CAIXA CONSTRUÇÃO CIVIL \n",
527 | " Fundo de Ações \n",
528 | " 3.788286e+08 \n",
529 | " \n",
530 | " \n",
531 | " 09.648.050/0001-54 \n",
532 | " -50.048546 \n",
533 | " BB AÇÕES CONSTRUÇÃO CIVIL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
534 | " Fundo de Ações \n",
535 | " 2.693042e+08 \n",
536 | " \n",
537 | " \n",
538 | " \n",
539 | " "
540 | ],
541 | "text/plain": [
542 | " retorno(%) ... PL\n",
543 | "CNPJ_FUNDO ... \n",
544 | "24.837.071/0001-01 -75.899511 ... 1.107619e+06\n",
545 | "26.648.868/0001-96 -63.445553 ... 3.411718e+08\n",
546 | "12.987.743/0001-86 -63.377084 ... 1.371619e+09\n",
547 | "31.936.857/0001-41 -62.783939 ... 8.549544e+07\n",
548 | "10.869.628/0001-81 -56.136318 ... 1.815607e+07\n",
549 | "10.590.125/0001-72 -55.825129 ... 5.942560e+06\n",
550 | "11.182.072/0001-13 -53.975565 ... 1.507532e+08\n",
551 | "32.319.324/0001-83 -53.694348 ... 7.348693e+06\n",
552 | "10.551.375/0001-01 -50.176998 ... 3.788286e+08\n",
553 | "09.648.050/0001-54 -50.048546 ... 2.693042e+08\n",
554 | "\n",
555 | "[10 rows x 4 columns]"
556 | ]
557 | },
558 | "metadata": {
559 | "tags": []
560 | },
561 | "execution_count": 12
562 | }
563 | ]
564 | },
565 | {
566 | "cell_type": "markdown",
567 | "metadata": {
568 | "id": "_9Nw8GGCNYNY",
569 | "colab_type": "text"
570 | },
571 | "source": [
572 | "###Fundos de Ações: 10 Melhores e 10 Piores de 2020"
573 | ]
574 | },
575 | {
576 | "cell_type": "code",
577 | "metadata": {
578 | "id": "snDDBkgnNd7T",
579 | "colab_type": "code",
580 | "colab": {}
581 | },
582 | "source": [
583 | "melhores, piores = melhores_e_piores(informes, cadastro, top=10, minimo_de_cotistas=100, classe='acoes')"
584 | ],
585 | "execution_count": 0,
586 | "outputs": []
587 | },
588 | {
589 | "cell_type": "code",
590 | "metadata": {
591 | "id": "FM1S1ri4NrVp",
592 | "colab_type": "code",
593 | "outputId": "9fcd55c3-db40-4d98-8390-554f416a90cf",
594 | "colab": {
595 | "base_uri": "https://localhost:8080/",
596 | "height": 559
597 | }
598 | },
599 | "source": [
600 | "melhores"
601 | ],
602 | "execution_count": 0,
603 | "outputs": [
604 | {
605 | "output_type": "execute_result",
606 | "data": {
607 | "text/html": [
608 | "\n",
609 | "\n",
622 | " \n",
623 | " \n",
624 | " \n",
625 | " \n",
626 | " retorno(%) \n",
627 | " Fundo de Investimento \n",
628 | " Classe \n",
629 | " PL \n",
630 | " \n",
631 | " \n",
632 | " CNPJ_FUNDO \n",
633 | " \n",
634 | " \n",
635 | " \n",
636 | " \n",
637 | " \n",
638 | " \n",
639 | " \n",
640 | " \n",
641 | " 19.831.126/0001-36 \n",
642 | " 35.628645 \n",
643 | " WESTERN ASSET FUNDO DE INVESTIMENTO AÇÕES BDR NÍVEL I \n",
644 | " Fundo de Ações \n",
645 | " 6.145908e+08 \n",
646 | " \n",
647 | " \n",
648 | " 22.632.237/0001-28 \n",
649 | " 29.728232 \n",
650 | " BB AÇÕES GLOBAIS FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO EM AÇÕES - BDR NÍVEL I \n",
651 | " Fundo de Ações \n",
652 | " 2.461624e+08 \n",
653 | " \n",
654 | " \n",
655 | " 17.503.172/0001-80 \n",
656 | " 29.717323 \n",
657 | " FUNDO DE INVESTIMENTO EM AÇÕES CAIXA BDR NÍVEL I \n",
658 | " Fundo de Ações \n",
659 | " 2.917604e+08 \n",
660 | " \n",
661 | " \n",
662 | " 34.028.082/0001-02 \n",
663 | " 28.894926 \n",
664 | " BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES BDR NÍVEL I PLUS \n",
665 | " Fundo de Ações \n",
666 | " 5.168115e+07 \n",
667 | " \n",
668 | " \n",
669 | " 13.401.224/0001-57 \n",
670 | " 28.473023 \n",
671 | " BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES BDR NÍVEL I \n",
672 | " Fundo de Ações \n",
673 | " 2.350280e+08 \n",
674 | " \n",
675 | " \n",
676 | " 31.042.960/0001-48 \n",
677 | " 27.784511 \n",
678 | " R8 BOLSA AMERICANA FUNDO DE INVESTIMENTO EM AÇÕES \n",
679 | " Fundo de Ações \n",
680 | " 6.925156e+06 \n",
681 | " \n",
682 | " \n",
683 | " 19.436.818/0001-80 \n",
684 | " 24.349691 \n",
685 | " SAFRA CONSUMO AMERICANO FUNDO DE INVESTIMENTO EM AÇÕES BDR-NÍVEL I PB \n",
686 | " Fundo de Ações \n",
687 | " 9.741794e+08 \n",
688 | " \n",
689 | " \n",
690 | " 19.436.835/0001-17 \n",
691 | " 23.891509 \n",
692 | " SAFRA CONSUMO AMERICANO FDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES BDR-NÍVEL I \n",
693 | " Fundo de Ações \n",
694 | " 6.677639e+08 \n",
695 | " \n",
696 | " \n",
697 | " 21.347.643/0001-86 \n",
698 | " 23.282277 \n",
699 | " BRADESCO FIC DE FUNDOS DE INVESTIMENTO EM AÇÕES GLOBAL INVESTIMENTO NO EXTERIOR \n",
700 | " Fundo de Ações \n",
701 | " 5.159633e+07 \n",
702 | " \n",
703 | " \n",
704 | " 20.147.389/0001-00 \n",
705 | " 18.935361 \n",
706 | " ITAÚ AÇÕES BDR NÍVEL I FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
707 | " Fundo de Ações \n",
708 | " 1.567433e+08 \n",
709 | " \n",
710 | " \n",
711 | " \n",
712 | " "
713 | ],
714 | "text/plain": [
715 | " retorno(%) ... PL\n",
716 | "CNPJ_FUNDO ... \n",
717 | "19.831.126/0001-36 35.628645 ... 6.145908e+08\n",
718 | "22.632.237/0001-28 29.728232 ... 2.461624e+08\n",
719 | "17.503.172/0001-80 29.717323 ... 2.917604e+08\n",
720 | "34.028.082/0001-02 28.894926 ... 5.168115e+07\n",
721 | "13.401.224/0001-57 28.473023 ... 2.350280e+08\n",
722 | "31.042.960/0001-48 27.784511 ... 6.925156e+06\n",
723 | "19.436.818/0001-80 24.349691 ... 9.741794e+08\n",
724 | "19.436.835/0001-17 23.891509 ... 6.677639e+08\n",
725 | "21.347.643/0001-86 23.282277 ... 5.159633e+07\n",
726 | "20.147.389/0001-00 18.935361 ... 1.567433e+08\n",
727 | "\n",
728 | "[10 rows x 4 columns]"
729 | ]
730 | },
731 | "metadata": {
732 | "tags": []
733 | },
734 | "execution_count": 14
735 | }
736 | ]
737 | },
738 | {
739 | "cell_type": "code",
740 | "metadata": {
741 | "id": "8K9UWp4INtAk",
742 | "colab_type": "code",
743 | "outputId": "04dcb9d7-aac7-462e-a784-625252283973",
744 | "colab": {
745 | "base_uri": "https://localhost:8080/",
746 | "height": 559
747 | }
748 | },
749 | "source": [
750 | "piores"
751 | ],
752 | "execution_count": 0,
753 | "outputs": [
754 | {
755 | "output_type": "execute_result",
756 | "data": {
757 | "text/html": [
758 | "\n",
759 | "\n",
772 | " \n",
773 | " \n",
774 | " \n",
775 | " \n",
776 | " retorno(%) \n",
777 | " Fundo de Investimento \n",
778 | " Classe \n",
779 | " PL \n",
780 | " \n",
781 | " \n",
782 | " CNPJ_FUNDO \n",
783 | " \n",
784 | " \n",
785 | " \n",
786 | " \n",
787 | " \n",
788 | " \n",
789 | " \n",
790 | " \n",
791 | " 26.648.868/0001-96 \n",
792 | " -63.445553 \n",
793 | " ALASKA BLACK FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES II - BDR NÍVEL I \n",
794 | " Fundo de Ações \n",
795 | " 3.411718e+08 \n",
796 | " \n",
797 | " \n",
798 | " 12.987.743/0001-86 \n",
799 | " -63.377084 \n",
800 | " ALASKA BLACK FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES - BDR NÍVEL I \n",
801 | " Fundo de Ações \n",
802 | " 1.371619e+09 \n",
803 | " \n",
804 | " \n",
805 | " 31.936.857/0001-41 \n",
806 | " -62.783939 \n",
807 | " TREND IBOVESPA ALAVANCADO FUNDO DE INVESTIMENTO EM AÇÕES \n",
808 | " Fundo de Ações \n",
809 | " 8.549544e+07 \n",
810 | " \n",
811 | " \n",
812 | " 10.869.628/0001-81 \n",
813 | " -56.136318 \n",
814 | " BB AÇÕES CIELO FUNDO DE INVESTIMENTO \n",
815 | " Fundo de Ações \n",
816 | " 1.815607e+07 \n",
817 | " \n",
818 | " \n",
819 | " 10.590.125/0001-72 \n",
820 | " -55.825129 \n",
821 | " BRADESCO FUNDO DE INVESTIMENTO EM AÇÕES CIELO \n",
822 | " Fundo de Ações \n",
823 | " 5.942560e+06 \n",
824 | " \n",
825 | " \n",
826 | " 32.319.324/0001-83 \n",
827 | " -53.694348 \n",
828 | " TREND IBOVESPA DOLAR FUNDO DE INVESTIMENTO EM AÇÕES \n",
829 | " Fundo de Ações \n",
830 | " 7.348693e+06 \n",
831 | " \n",
832 | " \n",
833 | " 10.551.375/0001-01 \n",
834 | " -50.176998 \n",
835 | " FUNDO DE INVESTIMENTO EM AÇÕES CAIXA CONSTRUÇÃO CIVIL \n",
836 | " Fundo de Ações \n",
837 | " 3.788286e+08 \n",
838 | " \n",
839 | " \n",
840 | " 09.648.050/0001-54 \n",
841 | " -50.048546 \n",
842 | " BB AÇÕES CONSTRUÇÃO CIVIL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
843 | " Fundo de Ações \n",
844 | " 2.693042e+08 \n",
845 | " \n",
846 | " \n",
847 | " 30.068.271/0001-40 \n",
848 | " -48.961611 \n",
849 | " CAIXA FUNDO DE INVESTIMENTO EM AÇÕES BANCO DO BRASIL PLUS \n",
850 | " Fundo de Ações \n",
851 | " 1.018523e+08 \n",
852 | " \n",
853 | " \n",
854 | " 09.134.614/0001-30 \n",
855 | " -48.853611 \n",
856 | " BB AÇÕES BB FUNDO DE INVESTIMENTO \n",
857 | " Fundo de Ações \n",
858 | " 2.424070e+08 \n",
859 | " \n",
860 | " \n",
861 | " \n",
862 | " "
863 | ],
864 | "text/plain": [
865 | " retorno(%) ... PL\n",
866 | "CNPJ_FUNDO ... \n",
867 | "26.648.868/0001-96 -63.445553 ... 3.411718e+08\n",
868 | "12.987.743/0001-86 -63.377084 ... 1.371619e+09\n",
869 | "31.936.857/0001-41 -62.783939 ... 8.549544e+07\n",
870 | "10.869.628/0001-81 -56.136318 ... 1.815607e+07\n",
871 | "10.590.125/0001-72 -55.825129 ... 5.942560e+06\n",
872 | "32.319.324/0001-83 -53.694348 ... 7.348693e+06\n",
873 | "10.551.375/0001-01 -50.176998 ... 3.788286e+08\n",
874 | "09.648.050/0001-54 -50.048546 ... 2.693042e+08\n",
875 | "30.068.271/0001-40 -48.961611 ... 1.018523e+08\n",
876 | "09.134.614/0001-30 -48.853611 ... 2.424070e+08\n",
877 | "\n",
878 | "[10 rows x 4 columns]"
879 | ]
880 | },
881 | "metadata": {
882 | "tags": []
883 | },
884 | "execution_count": 15
885 | }
886 | ]
887 | },
888 | {
889 | "cell_type": "markdown",
890 | "metadata": {
891 | "id": "Q0MBC3WMOYrb",
892 | "colab_type": "text"
893 | },
894 | "source": [
895 | "###Fundos de Renda Fixa: 10 Melhores e 10 Piores de 2020"
896 | ]
897 | },
898 | {
899 | "cell_type": "code",
900 | "metadata": {
901 | "id": "A3ja6RWvObbz",
902 | "colab_type": "code",
903 | "colab": {}
904 | },
905 | "source": [
906 | "melhores, piores = melhores_e_piores(informes, cadastro, top=10, minimo_de_cotistas=100, classe='rendafixa')"
907 | ],
908 | "execution_count": 0,
909 | "outputs": []
910 | },
911 | {
912 | "cell_type": "code",
913 | "metadata": {
914 | "id": "NCDYTG2pOjjd",
915 | "colab_type": "code",
916 | "outputId": "4e39ea35-3327-43ac-fd73-35bae0693465",
917 | "colab": {
918 | "base_uri": "https://localhost:8080/",
919 | "height": 559
920 | }
921 | },
922 | "source": [
923 | "melhores"
924 | ],
925 | "execution_count": 0,
926 | "outputs": [
927 | {
928 | "output_type": "execute_result",
929 | "data": {
930 | "text/html": [
931 | "\n",
932 | "\n",
945 | " \n",
946 | " \n",
947 | " \n",
948 | " \n",
949 | " retorno(%) \n",
950 | " Fundo de Investimento \n",
951 | " Classe \n",
952 | " PL \n",
953 | " \n",
954 | " \n",
955 | " CNPJ_FUNDO \n",
956 | " \n",
957 | " \n",
958 | " \n",
959 | " \n",
960 | " \n",
961 | " \n",
962 | " \n",
963 | " \n",
964 | " 30.606.402/0001-03 \n",
965 | " 40.403400 \n",
966 | " BB RENDA FIXA LONGO PRAZO BONDS GLOBAIS FX PRIVATE CRÉDITO PRIVADO INVESTIMENTO NO EXTERIOR FIC FI \n",
967 | " Fundo de Renda Fixa \n",
968 | " 4.874773e+07 \n",
969 | " \n",
970 | " \n",
971 | " 00.360.293/0001-18 \n",
972 | " 38.751225 \n",
973 | " BB RENDA FIXA DIVIDA EXTERNA MIL FUNDO INVESTIMENTO \n",
974 | " Fundo de Renda Fixa \n",
975 | " 2.064182e+08 \n",
976 | " \n",
977 | " \n",
978 | " 26.751.304/0001-84 \n",
979 | " 34.871185 \n",
980 | " BB RENDA FIXA LP CRÉDITO PRIVADO FX BONDS BRASILEIROS INVESTIMENTO NO EXTERIOR PRIVATE FIC FI \n",
981 | " Fundo de Renda Fixa \n",
982 | " 4.380533e+07 \n",
983 | " \n",
984 | " \n",
985 | " 04.240.128/0001-83 \n",
986 | " 10.592442 \n",
987 | " VOTORANTIM FUNDO DE INVESTIMENTO VINTAGE RENDA FIXA - CRÉDITO PRIVADO \n",
988 | " Fundo de Renda Fixa \n",
989 | " 5.861819e+07 \n",
990 | " \n",
991 | " \n",
992 | " 06.114.630/0001-73 \n",
993 | " 9.191805 \n",
994 | " SANTOS IV LQ FUNDO DE INVESTIMENTO RENDA FIXA CRÉDITO PRIVADO \n",
995 | " Fundo de Renda Fixa \n",
996 | " 1.668154e+06 \n",
997 | " \n",
998 | " \n",
999 | " 04.570.232/0001-36 \n",
1000 | " 8.390369 \n",
1001 | " MB MATIC RENDA FIXA LONGO PRAZO FUNDO DE INVESTIMENTO FINANCEIRO \n",
1002 | " Fundo de Renda Fixa \n",
1003 | " 2.168682e+06 \n",
1004 | " \n",
1005 | " \n",
1006 | " 24.022.566/0001-82 \n",
1007 | " 5.216968 \n",
1008 | " BRADESCO FUNDO DE INVESTIMENTO RENDA FIXA IDKA PRÉ 2 \n",
1009 | " Fundo de Renda Fixa \n",
1010 | " 9.060080e+08 \n",
1011 | " \n",
1012 | " \n",
1013 | " 26.344.495/0001-60 \n",
1014 | " 5.088517 \n",
1015 | " ITAÚ PRIVATE RENDA FIXA PRÉ IDKA 3 FICFI \n",
1016 | " Fundo de Renda Fixa \n",
1017 | " 1.350196e+08 \n",
1018 | " \n",
1019 | " \n",
1020 | " 29.197.055/0001-15 \n",
1021 | " 4.945899 \n",
1022 | " ITAÚ LEGEND RENDA FIXA LONGO PRAZO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
1023 | " Fundo de Renda Fixa \n",
1024 | " 3.521745e+09 \n",
1025 | " \n",
1026 | " \n",
1027 | " 32.999.313/0001-91 \n",
1028 | " 4.303528 \n",
1029 | " SAFRA PREFIXADO ALOCAÇÃO FUNDO DE INVESTIMENTO RENDA FIXA \n",
1030 | " Fundo de Renda Fixa \n",
1031 | " 4.349905e+08 \n",
1032 | " \n",
1033 | " \n",
1034 | " \n",
1035 | " "
1036 | ],
1037 | "text/plain": [
1038 | " retorno(%) ... PL\n",
1039 | "CNPJ_FUNDO ... \n",
1040 | "30.606.402/0001-03 40.403400 ... 4.874773e+07\n",
1041 | "00.360.293/0001-18 38.751225 ... 2.064182e+08\n",
1042 | "26.751.304/0001-84 34.871185 ... 4.380533e+07\n",
1043 | "04.240.128/0001-83 10.592442 ... 5.861819e+07\n",
1044 | "06.114.630/0001-73 9.191805 ... 1.668154e+06\n",
1045 | "04.570.232/0001-36 8.390369 ... 2.168682e+06\n",
1046 | "24.022.566/0001-82 5.216968 ... 9.060080e+08\n",
1047 | "26.344.495/0001-60 5.088517 ... 1.350196e+08\n",
1048 | "29.197.055/0001-15 4.945899 ... 3.521745e+09\n",
1049 | "32.999.313/0001-91 4.303528 ... 4.349905e+08\n",
1050 | "\n",
1051 | "[10 rows x 4 columns]"
1052 | ]
1053 | },
1054 | "metadata": {
1055 | "tags": []
1056 | },
1057 | "execution_count": 17
1058 | }
1059 | ]
1060 | },
1061 | {
1062 | "cell_type": "code",
1063 | "metadata": {
1064 | "id": "Z62oPUlpOmS7",
1065 | "colab_type": "code",
1066 | "outputId": "3a0f12ed-fb74-4722-ec61-d598be590048",
1067 | "colab": {
1068 | "base_uri": "https://localhost:8080/",
1069 | "height": 559
1070 | }
1071 | },
1072 | "source": [
1073 | "piores"
1074 | ],
1075 | "execution_count": 0,
1076 | "outputs": [
1077 | {
1078 | "output_type": "execute_result",
1079 | "data": {
1080 | "text/html": [
1081 | "\n",
1082 | "\n",
1095 | " \n",
1096 | " \n",
1097 | " \n",
1098 | " \n",
1099 | " retorno(%) \n",
1100 | " Fundo de Investimento \n",
1101 | " Classe \n",
1102 | " PL \n",
1103 | " \n",
1104 | " \n",
1105 | " CNPJ_FUNDO \n",
1106 | " \n",
1107 | " \n",
1108 | " \n",
1109 | " \n",
1110 | " \n",
1111 | " \n",
1112 | " \n",
1113 | " \n",
1114 | " 01.671.480/0001-85 \n",
1115 | " -26.927657 \n",
1116 | " SANTOS VIRTUAL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO RENDA FIXA CRÉDITO PRIVADO \n",
1117 | " Fundo de Renda Fixa \n",
1118 | " 4.406207e+06 \n",
1119 | " \n",
1120 | " \n",
1121 | " 05.357.507/0001-10 \n",
1122 | " -14.023970 \n",
1123 | " BANESTES INSTITUCIONAL FUNDO DE INVESTIMENTO RENDA FIXA \n",
1124 | " Fundo de Renda Fixa \n",
1125 | " 1.964791e+08 \n",
1126 | " \n",
1127 | " \n",
1128 | " 31.095.989/0001-98 \n",
1129 | " -9.976724 \n",
1130 | " ITAÚ RENDA FIXA JUROS REAIS B5+ FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
1131 | " Fundo de Renda Fixa \n",
1132 | " 1.051130e+09 \n",
1133 | " \n",
1134 | " \n",
1135 | " 07.400.556/0001-14 \n",
1136 | " -9.927680 \n",
1137 | " ICATU VANGUARDA FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO INFLAÇÃO LONGA RF LP \n",
1138 | " Fundo de Renda Fixa \n",
1139 | " 4.047801e+08 \n",
1140 | " \n",
1141 | " \n",
1142 | " 27.884.230/0001-17 \n",
1143 | " -9.795351 \n",
1144 | " ITAÚ PRIVATE RENDA FIXA IMA-B 5+ FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
1145 | " Fundo de Renda Fixa \n",
1146 | " 1.636591e+08 \n",
1147 | " \n",
1148 | " \n",
1149 | " 10.577.503/0001-88 \n",
1150 | " -9.746506 \n",
1151 | " FUNDO DE INVESTIMENTO CAIXA BRASIL IMA B 5+ TITULOS PÚBLICOS RENDA FIXA LONGO PRAZO \n",
1152 | " Fundo de Renda Fixa \n",
1153 | " 1.935722e+09 \n",
1154 | " \n",
1155 | " \n",
1156 | " 20.374.752/0001-20 \n",
1157 | " -9.687322 \n",
1158 | " BTG PACTUAL TESOURO IPCA LONGO FUNDO DE INVESTIMENTO RENDA FIXA REFERENCIADO \n",
1159 | " Fundo de Renda Fixa \n",
1160 | " 2.506169e+08 \n",
1161 | " \n",
1162 | " \n",
1163 | " 13.327.340/0001-73 \n",
1164 | " -9.677096 \n",
1165 | " BB PREVIDENCIÁRIO RENDA FIXA IMA-B5+ TÍTULOS PÚBLICOS FUNDO DE INVESTIMENTO \n",
1166 | " Fundo de Renda Fixa \n",
1167 | " 1.957720e+09 \n",
1168 | " \n",
1169 | " \n",
1170 | " 10.264.241/0001-00 \n",
1171 | " -9.673596 \n",
1172 | " ITAÚ FLEXPREV VÉRTICE IMAB5 MAIS RENDA FIXA - FUNDO DE INVESTIMENTO \n",
1173 | " Fundo de Renda Fixa \n",
1174 | " 3.541743e+09 \n",
1175 | " \n",
1176 | " \n",
1177 | " 05.786.931/0001-80 \n",
1178 | " -9.595654 \n",
1179 | " BRASILPREV TOP ATUARIAL FUNDO DE INVESTIMENTO RENDA FIXA \n",
1180 | " Fundo de Renda Fixa \n",
1181 | " 1.492464e+10 \n",
1182 | " \n",
1183 | " \n",
1184 | " \n",
1185 | " "
1186 | ],
1187 | "text/plain": [
1188 | " retorno(%) ... PL\n",
1189 | "CNPJ_FUNDO ... \n",
1190 | "01.671.480/0001-85 -26.927657 ... 4.406207e+06\n",
1191 | "05.357.507/0001-10 -14.023970 ... 1.964791e+08\n",
1192 | "31.095.989/0001-98 -9.976724 ... 1.051130e+09\n",
1193 | "07.400.556/0001-14 -9.927680 ... 4.047801e+08\n",
1194 | "27.884.230/0001-17 -9.795351 ... 1.636591e+08\n",
1195 | "10.577.503/0001-88 -9.746506 ... 1.935722e+09\n",
1196 | "20.374.752/0001-20 -9.687322 ... 2.506169e+08\n",
1197 | "13.327.340/0001-73 -9.677096 ... 1.957720e+09\n",
1198 | "10.264.241/0001-00 -9.673596 ... 3.541743e+09\n",
1199 | "05.786.931/0001-80 -9.595654 ... 1.492464e+10\n",
1200 | "\n",
1201 | "[10 rows x 4 columns]"
1202 | ]
1203 | },
1204 | "metadata": {
1205 | "tags": []
1206 | },
1207 | "execution_count": 18
1208 | }
1209 | ]
1210 | },
1211 | {
1212 | "cell_type": "markdown",
1213 | "metadata": {
1214 | "id": "4JOsCOMfO8NA",
1215 | "colab_type": "text"
1216 | },
1217 | "source": [
1218 | "###Fundos Cambiais: 10 Melhores de 10 Piores de 2020"
1219 | ]
1220 | },
1221 | {
1222 | "cell_type": "code",
1223 | "metadata": {
1224 | "id": "dxTopZghPByN",
1225 | "colab_type": "code",
1226 | "colab": {}
1227 | },
1228 | "source": [
1229 | "melhores, piores = melhores_e_piores(informes, cadastro, top=10, minimo_de_cotistas=100, classe='cambial')"
1230 | ],
1231 | "execution_count": 0,
1232 | "outputs": []
1233 | },
1234 | {
1235 | "cell_type": "code",
1236 | "metadata": {
1237 | "id": "xD8_vsrYPETy",
1238 | "colab_type": "code",
1239 | "outputId": "07545b5b-2aef-4f9c-cb4a-0265994f2e43",
1240 | "colab": {
1241 | "base_uri": "https://localhost:8080/",
1242 | "height": 559
1243 | }
1244 | },
1245 | "source": [
1246 | "melhores"
1247 | ],
1248 | "execution_count": 0,
1249 | "outputs": [
1250 | {
1251 | "output_type": "execute_result",
1252 | "data": {
1253 | "text/html": [
1254 | "\n",
1255 | "\n",
1268 | " \n",
1269 | " \n",
1270 | " \n",
1271 | " \n",
1272 | " retorno(%) \n",
1273 | " Fundo de Investimento \n",
1274 | " Classe \n",
1275 | " PL \n",
1276 | " \n",
1277 | " \n",
1278 | " CNPJ_FUNDO \n",
1279 | " \n",
1280 | " \n",
1281 | " \n",
1282 | " \n",
1283 | " \n",
1284 | " \n",
1285 | " \n",
1286 | " \n",
1287 | " 33.144.687/0001-98 \n",
1288 | " 43.460456 \n",
1289 | " BTG PACTUAL DIGITAL DOLAR FUNDO DE INVESTIMENTO CAMBIAL \n",
1290 | " Fundo Cambial \n",
1291 | " 1.838957e+08 \n",
1292 | " \n",
1293 | " \n",
1294 | " 01.623.535/0001-81 \n",
1295 | " 43.153661 \n",
1296 | " ITAÚ CAMBIAL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
1297 | " Fundo Cambial \n",
1298 | " 1.076893e+09 \n",
1299 | " \n",
1300 | " \n",
1301 | " 28.516.058/0001-01 \n",
1302 | " 43.140339 \n",
1303 | " BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL ÁGORA \n",
1304 | " Fundo Cambial \n",
1305 | " 1.655603e+07 \n",
1306 | " \n",
1307 | " \n",
1308 | " 31.132.386/0001-19 \n",
1309 | " 43.114212 \n",
1310 | " TREND DOLAR FUNDO DE INVESTIMENTO CAMBIAL \n",
1311 | " Fundo Cambial \n",
1312 | " 1.292850e+08 \n",
1313 | " \n",
1314 | " \n",
1315 | " 01.430.938/0001-04 \n",
1316 | " 43.096075 \n",
1317 | " BTG PACTUAL DOLAR FUNDO DE INVESTIMENTO CAMBIAL \n",
1318 | " Fundo Cambial \n",
1319 | " 1.790911e+08 \n",
1320 | " \n",
1321 | " \n",
1322 | " 02.294.024/0001-26 \n",
1323 | " 43.085551 \n",
1324 | " BRADESCO H FUNDO DE INVESTIMENTO CAMBIAL LONGO PRAZO DÓLAR \n",
1325 | " Fundo Cambial \n",
1326 | " 2.627622e+08 \n",
1327 | " \n",
1328 | " \n",
1329 | " 04.244.149/0001-77 \n",
1330 | " 42.961802 \n",
1331 | " BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL DÓLAR SPECIAL \n",
1332 | " Fundo Cambial \n",
1333 | " 9.366153e+07 \n",
1334 | " \n",
1335 | " \n",
1336 | " 23.731.760/0001-74 \n",
1337 | " 42.924450 \n",
1338 | " ITAÚ PERSONNALITÉ CAMBIAL DÓLAR PLUS FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
1339 | " Fundo Cambial \n",
1340 | " 1.196935e+08 \n",
1341 | " \n",
1342 | " \n",
1343 | " 05.114.733/0001-70 \n",
1344 | " 42.771349 \n",
1345 | " FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAIXA CAMBIAL DÓLAR \n",
1346 | " Fundo Cambial \n",
1347 | " 1.310395e+08 \n",
1348 | " \n",
1349 | " \n",
1350 | " 05.222.509/0001-00 \n",
1351 | " 42.731874 \n",
1352 | " BRADESCO PRIME FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL DÓLAR \n",
1353 | " Fundo Cambial \n",
1354 | " 5.816367e+07 \n",
1355 | " \n",
1356 | " \n",
1357 | " \n",
1358 | " "
1359 | ],
1360 | "text/plain": [
1361 | " retorno(%) ... PL\n",
1362 | "CNPJ_FUNDO ... \n",
1363 | "33.144.687/0001-98 43.460456 ... 1.838957e+08\n",
1364 | "01.623.535/0001-81 43.153661 ... 1.076893e+09\n",
1365 | "28.516.058/0001-01 43.140339 ... 1.655603e+07\n",
1366 | "31.132.386/0001-19 43.114212 ... 1.292850e+08\n",
1367 | "01.430.938/0001-04 43.096075 ... 1.790911e+08\n",
1368 | "02.294.024/0001-26 43.085551 ... 2.627622e+08\n",
1369 | "04.244.149/0001-77 42.961802 ... 9.366153e+07\n",
1370 | "23.731.760/0001-74 42.924450 ... 1.196935e+08\n",
1371 | "05.114.733/0001-70 42.771349 ... 1.310395e+08\n",
1372 | "05.222.509/0001-00 42.731874 ... 5.816367e+07\n",
1373 | "\n",
1374 | "[10 rows x 4 columns]"
1375 | ]
1376 | },
1377 | "metadata": {
1378 | "tags": []
1379 | },
1380 | "execution_count": 20
1381 | }
1382 | ]
1383 | },
1384 | {
1385 | "cell_type": "code",
1386 | "metadata": {
1387 | "id": "QmOI62qTPFg9",
1388 | "colab_type": "code",
1389 | "outputId": "31e09af4-b78f-47b7-8435-6cfd6495b840",
1390 | "colab": {
1391 | "base_uri": "https://localhost:8080/",
1392 | "height": 559
1393 | }
1394 | },
1395 | "source": [
1396 | "piores"
1397 | ],
1398 | "execution_count": 0,
1399 | "outputs": [
1400 | {
1401 | "output_type": "execute_result",
1402 | "data": {
1403 | "text/html": [
1404 | "\n",
1405 | "\n",
1418 | " \n",
1419 | " \n",
1420 | " \n",
1421 | " \n",
1422 | " retorno(%) \n",
1423 | " Fundo de Investimento \n",
1424 | " Classe \n",
1425 | " PL \n",
1426 | " \n",
1427 | " \n",
1428 | " CNPJ_FUNDO \n",
1429 | " \n",
1430 | " \n",
1431 | " \n",
1432 | " \n",
1433 | " \n",
1434 | " \n",
1435 | " \n",
1436 | " \n",
1437 | " 32.246.789/0001-51 \n",
1438 | " -29.891478 \n",
1439 | " TREND SHORT DOLAR FUNDO DE INVESTIMENTO CAMBIAL \n",
1440 | " Fundo Cambial \n",
1441 | " 6.095320e+06 \n",
1442 | " \n",
1443 | " \n",
1444 | " 04.305.193/0001-40 \n",
1445 | " 38.568461 \n",
1446 | " BB CAMBIAL EURO LP FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
1447 | " Fundo Cambial \n",
1448 | " 1.299703e+08 \n",
1449 | " \n",
1450 | " \n",
1451 | " 00.819.855/0001-49 \n",
1452 | " 39.422331 \n",
1453 | " WESTERN ASSET CÂMBIO DOLAR SILVER FICFI CAMBIAL \n",
1454 | " Fundo Cambial \n",
1455 | " 2.664146e+06 \n",
1456 | " \n",
1457 | " \n",
1458 | " 00.819.880/0001-22 \n",
1459 | " 40.816680 \n",
1460 | " WESTERN ASSET CÂMBIO DOLAR PRIME FICFI CAMBIAL \n",
1461 | " Fundo Cambial \n",
1462 | " 4.302020e+07 \n",
1463 | " \n",
1464 | " \n",
1465 | " 00.819.889/0001-33 \n",
1466 | " 40.856621 \n",
1467 | " WESTERN ASSET HEDGE DÓLAR FUNDO DE INVESTIMENTO CAMBIAL \n",
1468 | " Fundo Cambial \n",
1469 | " 1.070803e+08 \n",
1470 | " \n",
1471 | " \n",
1472 | " 04.128.893/0001-06 \n",
1473 | " 41.930025 \n",
1474 | " BB CAMBIAL DOLAR LP FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
1475 | " Fundo Cambial \n",
1476 | " 3.113414e+08 \n",
1477 | " \n",
1478 | " \n",
1479 | " 02.543.933/0001-50 \n",
1480 | " 41.940647 \n",
1481 | " SANTANDER FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL \n",
1482 | " Fundo Cambial \n",
1483 | " 1.056582e+08 \n",
1484 | " \n",
1485 | " \n",
1486 | " 04.061.044/0001-82 \n",
1487 | " 42.026233 \n",
1488 | " BB CAMBIAL DÓLAR LP VIP FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO \n",
1489 | " Fundo Cambial \n",
1490 | " 6.060828e+08 \n",
1491 | " \n",
1492 | " \n",
1493 | " 01.171.956/0001-19 \n",
1494 | " 42.214357 \n",
1495 | " BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL DÓLAR \n",
1496 | " Fundo Cambial \n",
1497 | " 1.424385e+07 \n",
1498 | " \n",
1499 | " \n",
1500 | " 02.838.583/0001-50 \n",
1501 | " 42.421413 \n",
1502 | " BB TOP DOLAR FUNDO DE INVESTIMENTO CAMBIAL LP \n",
1503 | " Fundo Cambial \n",
1504 | " 1.387918e+09 \n",
1505 | " \n",
1506 | " \n",
1507 | " \n",
1508 | " "
1509 | ],
1510 | "text/plain": [
1511 | " retorno(%) ... PL\n",
1512 | "CNPJ_FUNDO ... \n",
1513 | "32.246.789/0001-51 -29.891478 ... 6.095320e+06\n",
1514 | "04.305.193/0001-40 38.568461 ... 1.299703e+08\n",
1515 | "00.819.855/0001-49 39.422331 ... 2.664146e+06\n",
1516 | "00.819.880/0001-22 40.816680 ... 4.302020e+07\n",
1517 | "00.819.889/0001-33 40.856621 ... 1.070803e+08\n",
1518 | "04.128.893/0001-06 41.930025 ... 3.113414e+08\n",
1519 | "02.543.933/0001-50 41.940647 ... 1.056582e+08\n",
1520 | "04.061.044/0001-82 42.026233 ... 6.060828e+08\n",
1521 | "01.171.956/0001-19 42.214357 ... 1.424385e+07\n",
1522 | "02.838.583/0001-50 42.421413 ... 1.387918e+09\n",
1523 | "\n",
1524 | "[10 rows x 4 columns]"
1525 | ]
1526 | },
1527 | "metadata": {
1528 | "tags": []
1529 | },
1530 | "execution_count": 21
1531 | }
1532 | ]
1533 | },
1534 | {
1535 | "cell_type": "code",
1536 | "metadata": {
1537 | "id": "2wRxjf2rKCJ1",
1538 | "colab_type": "code",
1539 | "colab": {}
1540 | },
1541 | "source": [
1542 | ""
1543 | ],
1544 | "execution_count": 0,
1545 | "outputs": []
1546 | }
1547 | ]
1548 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 CódigoQuant
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Python para Investimentos
2 |
3 | **Python para Investimentos** é um conjunto de códigos e vídeos em que mostro como utilizar a linguagem de programação PYTHON através da ferramenta online Google Colab para fazer estudos no mercado financeiro.
4 |
5 |
6 | ✅ 𝐏𝐘𝐓𝐇𝐎𝐍 𝐏𝐀𝐑𝐀 𝐈𝐍𝐕𝐄𝐒𝐓𝐈𝐌𝐄𝐍𝐓𝐎𝐒 𝐂𝐎𝐌𝐏𝐋𝐄𝐓𝐎:
7 |
8 | 🎬 Playlist Completa: https://www.youtube.com/watch?v=7GGrt3-rRH8&list=PLCAhGm8nJ9CBn51o0x3j1p1LuMRqpeqCy
9 |
10 | 🎬 1 - Obtendo cotações do Yahoo Finance: https://youtu.be/7GGrt3-rRH8
11 |
12 | 🎬 2 - Definindo intervalos, calculando e plotando médias móveis: https://youtu.be/BBomKv3NFNc
13 |
14 | 🎬 3 - Calculando Correlação entre DÓLAR e IBOVESPA: https://youtu.be/zjaGIcUb6Ek
15 |
16 | 🎬 4 - Simulando uma CARTEIRA DE AÇÕES e comparando com o IBOVESPA: https://youtu.be/TiNLwmLN-iE
17 |
18 | 🎬 5 - Backtesting com Pyfolio: https://youtu.be/d2qrsCfXung
19 |
20 | 🎬 6 - SIMULANDO CARTEIRAS ALEATÓRIAS DE AÇÕES: https://youtu.be/G2Tr2dcjR3U
21 |
22 | 🎬 7 - ANÁLISE ESTATÍSTICA DA QUEDA DE 12% DO IBOV: https://youtu.be/h4rDzDOoZPA
23 |
24 | 🎬 8 - Obtendo e trabalhando com dados dos balanços | Classificando empresas segundo a Magic Formula: https://youtu.be/e_ZRDG4F4ZA
25 |
26 | 🎬 9 - ALPHA VANTAGE: Obtendo Cotações de Empresas Brasileiras com PYTHON
27 | https://youtu.be/kB4jCoVyLRI
28 |
29 | 🎬 10 -COMO ACESSAR A BASE DE DADOS DO BANCO CENTRAL DO BRASIL COM PYTHON
30 | https://youtu.be/7rFsu48oBn8
31 |
32 | 🎬 11 - ACESSANDO DADOS DO INVESTING.COM COM PYTHON: Fundos de Investimento
33 | https://youtu.be/PfLqj1UWafc
34 |
35 | 🎬 12 - ACESSANDO DADOS DO INVESTING.COM COM PYTHON #2: Índices e Ações
36 | https://youtu.be/Tv2-BGOLf9E
37 |
38 | 🎬 13 - CURVA DE JUROS COM PYTHON (PLOTLY) E DADOS DO INVESTING.COM
39 | https://youtu.be/JmpZQAIDboo
40 |
41 | 🎬 14 - GOOGLE COLAB e GOOGLE PLANILHAS INTEGRADOS: Salvando Dados na Nuvem com PYTHON
42 | https://youtu.be/YaCeqXpxWUk
43 |
44 | 🎬 15 - SALVANDO PREÇOS HISTÓRICOS (COM PYTHON) de TODAS as AÇÕES do ÍNDICE BOVESPA no GOOGLE PLANILHAS
45 | https://youtu.be/HlhbsrJ4_PQ
46 |
47 | 🎬 16 - DADOS CVM DE FUNDOS DE INVESTIMENTO: Como obter e tratar com PYTHON
48 | https://youtu.be/NHCUUZOvk7k
49 |
50 | 🎬 17 - 10 MELHORES E PIORES FUNDOS DE INVESTIMENTO EM 2020: obtendo e tratando dados da CVM com Python
51 | https://youtu.be/dIqYBI7cvZ0
52 |
53 | 🎬 18 - COLETANDO DADOS DA B3: Web Scraping das Carteiras Teoricas de Índices
54 | https://youtu.be/GEeuYkgq79E
55 |
56 | 🎬 19 - DADOS DA BOLSA NO EXCEL COM PYTHON: Exportando do GOOGLE COLAB para uma PLANILHA
57 | https://youtu.be/zekmnLPvqTM
58 |
59 | ---
60 |
61 | ✅ 𝐑𝐄𝐃𝐄𝐒 𝐒𝐎𝐂𝐈𝐀𝐈𝐒:
62 |
63 | https://www.youtube.com/@codigoquant
64 |
65 | https://www.instagram.com/codigoquant
66 |
67 | https://www.facebook.com/codigoquant
68 |
69 | https://twitter.com/codigoquant
70 |
71 | https://github.com/codigoquant
72 |
--------------------------------------------------------------------------------
/historico_leiloes_tesouro.csv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/codigoquant/python_para_investimentos/b4d1a37e5d0b2c81d1eaca1906e811a58c0caa87/historico_leiloes_tesouro.csv
--------------------------------------------------------------------------------
| | | | | | | | | | | | | | | |