├── 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 | "\"Open" 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 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | "
PapelCotaçãoP/LP/VPPSRDiv.YieldP/AtivoP/Cap.GiroP/EBITP/Ativ Circ.LiqEV/EBITEV/EBITDAMrg EbitMrg. Líq.Liq. Corr.ROICROELiq.2mesesPatrim. LíqDív.Brut/ Patrim.Cresc. Rec.5a
0CSTB3150.000.000.000.000,00%0.0000.000.000.000.000.0040,85%28,98%2.6022,40%20,11%0.08.420670e+090.1431,91%
1IVTT30.000.000.000.000,00%0.0000.000.000.000.000.000,00%0,00%0.000,00%-0,40%0.01.083050e+090.0020,67%
2PORP42.400.000.000.000,00%0.0000.000.000.000.000.000,00%0,00%0.000,00%-2,08%0.02.239900e+070.0013,66%
3MNSA30.420.000.000.000,00%0.0000.000.000.000.000.00-208,15%-362,66%3.63-13,50%145,70%0.0-9.105000e+06-6.52-41,11%
4CSTB4147.690.000.000.000,00%0.0000.000.000.000.000.0040,85%28,98%2.6022,40%20,11%0.08.420670e+090.1431,91%
..................................................................
949UBBR318.001466.614.770.000,00%0.0000.000.000.000.000.000,00%0,00%0.000,00%0,33%0.01.031720e+100.0010,58%
950BIDI459.242580.9713.980.000,08%0.0000.000.000.000.000.000,00%0,00%0.000,00%0,54%171320000.03.240140e+090.0030,91%
951BIDI11180.042614.6614.160.000,07%0.0000.000.000.000.000.000,00%0,00%0.000,00%0,54%307846000.03.240140e+090.0030,91%
952BIDI360.952655.4714.380.000,07%0.0000.000.000.000.000.000,00%0,00%0.000,00%0,54%19837200.03.240140e+090.0030,91%
953NTCO349.964456.812.401.770,00%1.11325.1727.99-4.4831.0214.536,32%0,01%1.185,05%0,05%306014000.02.869130e+100.490,00%
\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 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | "
posEV/EBITROIC
01GPIV33BOAS3
12PSSA3ATOM3
23MNPR3WIZS3
34GOAU3CMIN3
45PCAR3PSSA3
............
145146RAIL3ESPA3
146147BRML3LINX3
147148ELET3ANIM3
148149ELET6POWE3
149150ENEV3CYRE3
\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 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | " \n", 911 | " \n", 912 | " \n", 913 | " \n", 914 | " \n", 915 | " \n", 916 | " \n", 917 | " \n", 918 | " \n", 919 | " \n", 920 | " \n", 921 | " \n", 922 | " \n", 923 | " \n", 924 | " \n", 925 | " \n", 926 | " \n", 927 | " \n", 928 | " \n", 929 | " \n", 930 | " \n", 931 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | " \n", 946 | " \n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | "
ABEV3AGRO3ALLD3ALUP11AMBP3ANIM3ASAI3ATOM3AURA33B3SA3BEEF3BLAU3BMOB3BRDT3BRFS3BRKM3BRKM5BRML3BSEV3CAML3CARD3CCPR3CCRO3CESP6CIEL3CMIG3CMIG4CMIN3CPFE3CPLE3CPLE6CRFB3CSED3CSMG3CSNA3CURY3CYRE3DIRR3DMVF3DTEX3...TEND3TESA3TGMA3TIET11TIMS3TOTS3TRIS3TRPL4TUPY3UGPA3UNIP3UNIP6USIM3USIM5VALE3VIVT3VLID3VVAR3WIZS3WSON33ALPA4BOAS3CASH3ESPA3GNDI3HAPV3LINX3MATD3MOSI3NGRD3ORVR3PETZ3RADL3RDOR3RENT3SULA11TFCO4VAMO3VIVA3WEGE3
pos122733210136132879227111291216593851622147.0765510091.094109.0128.045341762152372144.04440821195731.0116...4768994263104842498134263541371297.0142.081646NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
pos605940471141482527342910321051213130NaN547052NaN103NaNNaN979848110610783NaN822039150143NaN93...8412465271192196581351451413484915NaNNaN9935044.01.063.0146.0122.0100.0147.033.011.094.0131.0104.0116.0138.080.0115.036.087.079.024.0
\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 | "\"Open" 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 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | "
1. open2. high3. low4. close5. volume
date
2020-03-2777708.077708.073057.073429.010301400.0
2020-03-2674956.078846.074923.077710.012758000.0
2020-03-2569727.076714.069360.074956.012951100.0
2020-03-2463604.071535.063604.069729.011679900.0
2020-03-2367067.067604.062161.063570.011962200.0
..................
2000-01-0716125.016449.016125.016309.00.0
2000-01-0616237.016499.015977.016107.00.0
2000-01-0515871.016302.015350.016245.00.0
2000-01-0416908.016908.015851.015851.00.0
2000-01-0317098.017408.016719.016930.00.0
\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 | "\"Open" 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 | "\"Open" 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 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | "
QteCotaçãoEntradaCustoNo diaPreço AtualLucro R$Lucro %
Cod
VALE320044,8654,3310.866,00-4,00%8.972,00-1.894,00-17,43%
PETR440018,0519,177.668,00-0,82%7.220,00-448,00-5,84%
ITUB430022,7738,0311.409,00-3,76%6.831,00-4.578,00-40,13%
TAEE1130027,5030,849.252,00-0,72%8.250,00-1.002,00-10,83%
LREN320038,3957,5011.500,00-5,33%7.678,00-3.822,00-33,23%
\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 | "\"Open" 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 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | "
retorno(%)Fundo de InvestimentoClassePL
CNPJ_FUNDO
34.979.818/0001-1059.694443BTG PACTUAL OURO USD FUNDO DE INVESTIMENTO MULTIMERCADOFundo Multimercado1.254679e+08
09.601.190/0001-7753.340957ÓRAMA OURO FUNDO DE INVESTIMENTO MULTIMERCADOFundo Multimercado3.736876e+08
33.925.149/0001-3052.668225VITREO OURO FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO MULTIMERCADOFundo Multimercado2.462894e+08
24.454.718/0001-1647.552244DOLAR GLOBAL MACRO OPPORTUNITIES FUNDO DE INVESTIMENTO MULTIMERCADO INVESTIMENTO NO EXTERIORFundo Multimercado9.939867e+07
33.144.687/0001-9843.460456BTG PACTUAL DIGITAL DOLAR FUNDO DE INVESTIMENTO CAMBIALFundo Cambial1.838957e+08
01.623.535/0001-8143.153661ITAÚ CAMBIAL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo Cambial1.076893e+09
28.516.058/0001-0143.140339BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL ÁGORAFundo Cambial1.655603e+07
31.132.386/0001-1943.114212TREND DOLAR FUNDO DE INVESTIMENTO CAMBIALFundo Cambial1.292850e+08
01.430.938/0001-0443.096075BTG PACTUAL DOLAR FUNDO DE INVESTIMENTO CAMBIALFundo Cambial1.790911e+08
02.294.024/0001-2643.085551BRADESCO H FUNDO DE INVESTIMENTO CAMBIAL LONGO PRAZO DÓLARFundo Cambial2.627622e+08
\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 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | "
retorno(%)Fundo de InvestimentoClassePL
CNPJ_FUNDO
24.837.071/0001-01-75.899511WM DELTA CRÉDITO ESTRUTURADO FI EM COTAS DE FUNDOS DE INVESTIMENTO MULTIMERCADO - CRÉDITO PRIVADOFundo Multimercado1.107619e+06
26.648.868/0001-96-63.445553ALASKA BLACK FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES II - BDR NÍVEL IFundo de Ações3.411718e+08
12.987.743/0001-86-63.377084ALASKA BLACK FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES - BDR NÍVEL IFundo de Ações1.371619e+09
31.936.857/0001-41-62.783939TREND IBOVESPA ALAVANCADO FUNDO DE INVESTIMENTO EM AÇÕESFundo de Ações8.549544e+07
10.869.628/0001-81-56.136318BB AÇÕES CIELO FUNDO DE INVESTIMENTOFundo de Ações1.815607e+07
10.590.125/0001-72-55.825129BRADESCO FUNDO DE INVESTIMENTO EM AÇÕES CIELOFundo de Ações5.942560e+06
11.182.072/0001-13-53.975565LOGOS TOTAL RETURN FI EM COTAS DE FUNDOS DE INVESTIMENTO MULTIMERCADOFundo Multimercado1.507532e+08
32.319.324/0001-83-53.694348TREND IBOVESPA DOLAR FUNDO DE INVESTIMENTO EM AÇÕESFundo de Ações7.348693e+06
10.551.375/0001-01-50.176998FUNDO DE INVESTIMENTO EM AÇÕES CAIXA CONSTRUÇÃO CIVILFundo de Ações3.788286e+08
09.648.050/0001-54-50.048546BB AÇÕES CONSTRUÇÃO CIVIL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo de Ações2.693042e+08
\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 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | "
retorno(%)Fundo de InvestimentoClassePL
CNPJ_FUNDO
19.831.126/0001-3635.628645WESTERN ASSET FUNDO DE INVESTIMENTO AÇÕES BDR NÍVEL IFundo de Ações6.145908e+08
22.632.237/0001-2829.728232BB AÇÕES GLOBAIS FUNDO DE INVESTIMENTO EM COTAS DE FUNDO DE INVESTIMENTO EM AÇÕES - BDR NÍVEL IFundo de Ações2.461624e+08
17.503.172/0001-8029.717323FUNDO DE INVESTIMENTO EM AÇÕES CAIXA BDR NÍVEL IFundo de Ações2.917604e+08
34.028.082/0001-0228.894926BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES BDR NÍVEL I PLUSFundo de Ações5.168115e+07
13.401.224/0001-5728.473023BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES BDR NÍVEL IFundo de Ações2.350280e+08
31.042.960/0001-4827.784511R8 BOLSA AMERICANA FUNDO DE INVESTIMENTO EM AÇÕESFundo de Ações6.925156e+06
19.436.818/0001-8024.349691SAFRA CONSUMO AMERICANO FUNDO DE INVESTIMENTO EM AÇÕES BDR-NÍVEL I PBFundo de Ações9.741794e+08
19.436.835/0001-1723.891509SAFRA CONSUMO AMERICANO FDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES BDR-NÍVEL IFundo de Ações6.677639e+08
21.347.643/0001-8623.282277BRADESCO FIC DE FUNDOS DE INVESTIMENTO EM AÇÕES GLOBAL INVESTIMENTO NO EXTERIORFundo de Ações5.159633e+07
20.147.389/0001-0018.935361ITAÚ AÇÕES BDR NÍVEL I FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo de Ações1.567433e+08
\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 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | "
retorno(%)Fundo de InvestimentoClassePL
CNPJ_FUNDO
26.648.868/0001-96-63.445553ALASKA BLACK FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES II - BDR NÍVEL IFundo de Ações3.411718e+08
12.987.743/0001-86-63.377084ALASKA BLACK FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO EM AÇÕES - BDR NÍVEL IFundo de Ações1.371619e+09
31.936.857/0001-41-62.783939TREND IBOVESPA ALAVANCADO FUNDO DE INVESTIMENTO EM AÇÕESFundo de Ações8.549544e+07
10.869.628/0001-81-56.136318BB AÇÕES CIELO FUNDO DE INVESTIMENTOFundo de Ações1.815607e+07
10.590.125/0001-72-55.825129BRADESCO FUNDO DE INVESTIMENTO EM AÇÕES CIELOFundo de Ações5.942560e+06
32.319.324/0001-83-53.694348TREND IBOVESPA DOLAR FUNDO DE INVESTIMENTO EM AÇÕESFundo de Ações7.348693e+06
10.551.375/0001-01-50.176998FUNDO DE INVESTIMENTO EM AÇÕES CAIXA CONSTRUÇÃO CIVILFundo de Ações3.788286e+08
09.648.050/0001-54-50.048546BB AÇÕES CONSTRUÇÃO CIVIL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo de Ações2.693042e+08
30.068.271/0001-40-48.961611CAIXA FUNDO DE INVESTIMENTO EM AÇÕES BANCO DO BRASIL PLUSFundo de Ações1.018523e+08
09.134.614/0001-30-48.853611BB AÇÕES BB FUNDO DE INVESTIMENTOFundo de Ações2.424070e+08
\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 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | "
retorno(%)Fundo de InvestimentoClassePL
CNPJ_FUNDO
30.606.402/0001-0340.403400BB RENDA FIXA LONGO PRAZO BONDS GLOBAIS FX PRIVATE CRÉDITO PRIVADO INVESTIMENTO NO EXTERIOR FIC FIFundo de Renda Fixa4.874773e+07
00.360.293/0001-1838.751225BB RENDA FIXA DIVIDA EXTERNA MIL FUNDO INVESTIMENTOFundo de Renda Fixa2.064182e+08
26.751.304/0001-8434.871185BB RENDA FIXA LP CRÉDITO PRIVADO FX BONDS BRASILEIROS INVESTIMENTO NO EXTERIOR PRIVATE FIC FIFundo de Renda Fixa4.380533e+07
04.240.128/0001-8310.592442VOTORANTIM FUNDO DE INVESTIMENTO VINTAGE RENDA FIXA - CRÉDITO PRIVADOFundo de Renda Fixa5.861819e+07
06.114.630/0001-739.191805SANTOS IV LQ FUNDO DE INVESTIMENTO RENDA FIXA CRÉDITO PRIVADOFundo de Renda Fixa1.668154e+06
04.570.232/0001-368.390369MB MATIC RENDA FIXA LONGO PRAZO FUNDO DE INVESTIMENTO FINANCEIROFundo de Renda Fixa2.168682e+06
24.022.566/0001-825.216968BRADESCO FUNDO DE INVESTIMENTO RENDA FIXA IDKA PRÉ 2Fundo de Renda Fixa9.060080e+08
26.344.495/0001-605.088517ITAÚ PRIVATE RENDA FIXA PRÉ IDKA 3 FICFIFundo de Renda Fixa1.350196e+08
29.197.055/0001-154.945899ITAÚ LEGEND RENDA FIXA LONGO PRAZO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo de Renda Fixa3.521745e+09
32.999.313/0001-914.303528SAFRA PREFIXADO ALOCAÇÃO FUNDO DE INVESTIMENTO RENDA FIXAFundo de Renda Fixa4.349905e+08
\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 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | "
retorno(%)Fundo de InvestimentoClassePL
CNPJ_FUNDO
01.671.480/0001-85-26.927657SANTOS VIRTUAL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO RENDA FIXA CRÉDITO PRIVADOFundo de Renda Fixa4.406207e+06
05.357.507/0001-10-14.023970BANESTES INSTITUCIONAL FUNDO DE INVESTIMENTO RENDA FIXAFundo de Renda Fixa1.964791e+08
31.095.989/0001-98-9.976724ITAÚ RENDA FIXA JUROS REAIS B5+ FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo de Renda Fixa1.051130e+09
07.400.556/0001-14-9.927680ICATU VANGUARDA FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO INFLAÇÃO LONGA RF LPFundo de Renda Fixa4.047801e+08
27.884.230/0001-17-9.795351ITAÚ PRIVATE RENDA FIXA IMA-B 5+ FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo de Renda Fixa1.636591e+08
10.577.503/0001-88-9.746506FUNDO DE INVESTIMENTO CAIXA BRASIL IMA B 5+ TITULOS PÚBLICOS RENDA FIXA LONGO PRAZOFundo de Renda Fixa1.935722e+09
20.374.752/0001-20-9.687322BTG PACTUAL TESOURO IPCA LONGO FUNDO DE INVESTIMENTO RENDA FIXA REFERENCIADOFundo de Renda Fixa2.506169e+08
13.327.340/0001-73-9.677096BB PREVIDENCIÁRIO RENDA FIXA IMA-B5+ TÍTULOS PÚBLICOS FUNDO DE INVESTIMENTOFundo de Renda Fixa1.957720e+09
10.264.241/0001-00-9.673596ITAÚ FLEXPREV VÉRTICE IMAB5 MAIS RENDA FIXA - FUNDO DE INVESTIMENTOFundo de Renda Fixa3.541743e+09
05.786.931/0001-80-9.595654BRASILPREV TOP ATUARIAL FUNDO DE INVESTIMENTO RENDA FIXAFundo de Renda Fixa1.492464e+10
\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 | " \n", 1273 | " \n", 1274 | " \n", 1275 | " \n", 1276 | " \n", 1277 | " \n", 1278 | " \n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | "
retorno(%)Fundo de InvestimentoClassePL
CNPJ_FUNDO
33.144.687/0001-9843.460456BTG PACTUAL DIGITAL DOLAR FUNDO DE INVESTIMENTO CAMBIALFundo Cambial1.838957e+08
01.623.535/0001-8143.153661ITAÚ CAMBIAL FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo Cambial1.076893e+09
28.516.058/0001-0143.140339BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL ÁGORAFundo Cambial1.655603e+07
31.132.386/0001-1943.114212TREND DOLAR FUNDO DE INVESTIMENTO CAMBIALFundo Cambial1.292850e+08
01.430.938/0001-0443.096075BTG PACTUAL DOLAR FUNDO DE INVESTIMENTO CAMBIALFundo Cambial1.790911e+08
02.294.024/0001-2643.085551BRADESCO H FUNDO DE INVESTIMENTO CAMBIAL LONGO PRAZO DÓLARFundo Cambial2.627622e+08
04.244.149/0001-7742.961802BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL DÓLAR SPECIALFundo Cambial9.366153e+07
23.731.760/0001-7442.924450ITAÚ PERSONNALITÉ CAMBIAL DÓLAR PLUS FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo Cambial1.196935e+08
05.114.733/0001-7042.771349FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAIXA CAMBIAL DÓLARFundo Cambial1.310395e+08
05.222.509/0001-0042.731874BRADESCO PRIME FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL DÓLARFundo Cambial5.816367e+07
\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 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | " \n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | " \n", 1494 | " \n", 1495 | " \n", 1496 | " \n", 1497 | " \n", 1498 | " \n", 1499 | " \n", 1500 | " \n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | "
retorno(%)Fundo de InvestimentoClassePL
CNPJ_FUNDO
32.246.789/0001-51-29.891478TREND SHORT DOLAR FUNDO DE INVESTIMENTO CAMBIALFundo Cambial6.095320e+06
04.305.193/0001-4038.568461BB CAMBIAL EURO LP FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo Cambial1.299703e+08
00.819.855/0001-4939.422331WESTERN ASSET CÂMBIO DOLAR SILVER FICFI CAMBIALFundo Cambial2.664146e+06
00.819.880/0001-2240.816680WESTERN ASSET CÂMBIO DOLAR PRIME FICFI CAMBIALFundo Cambial4.302020e+07
00.819.889/0001-3340.856621WESTERN ASSET HEDGE DÓLAR FUNDO DE INVESTIMENTO CAMBIALFundo Cambial1.070803e+08
04.128.893/0001-0641.930025BB CAMBIAL DOLAR LP FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo Cambial3.113414e+08
02.543.933/0001-5041.940647SANTANDER FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIALFundo Cambial1.056582e+08
04.061.044/0001-8242.026233BB CAMBIAL DÓLAR LP VIP FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTOFundo Cambial6.060828e+08
01.171.956/0001-1942.214357BRADESCO FUNDO DE INVESTIMENTO EM COTAS DE FUNDOS DE INVESTIMENTO CAMBIAL DÓLARFundo Cambial1.424385e+07
02.838.583/0001-5042.421413BB TOP DOLAR FUNDO DE INVESTIMENTO CAMBIAL LPFundo Cambial1.387918e+09
\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 --------------------------------------------------------------------------------