Spaces:
Running
Running
| <html lang="pt-br"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Bitcoin's Data Story - Documentação</title> | |
| <!-- Fontes Google para estilo Docs --> | |
| <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&family=Product+Sans&display=swap" rel="stylesheet"> | |
| <!-- Ícones --> | |
| <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"> | |
| <style> | |
| :root { | |
| --bg-color: #F0F2F5; | |
| --doc-bg: #FFFFFF; | |
| --text-color: #1F1F1F; | |
| --sidebar-width: 280px; | |
| --accent-color: #1a73e8; | |
| --code-bg: #f5f5f5; | |
| } | |
| * { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| body { | |
| font-family: 'Roboto', Arial, sans-serif; | |
| background-color: var(--bg-color); | |
| color: var(--text-color); | |
| display: flex; | |
| height: 100vh; | |
| overflow: hidden; | |
| } | |
| /* Sidebar Navegação */ | |
| .sidebar { | |
| width: var(--sidebar-width); | |
| background-color: #fff; | |
| border-right: 1px solid #e0e0e0; | |
| display: flex; | |
| flex-direction: column; | |
| padding: 20px 0; | |
| overflow-y: auto; | |
| flex-shrink: 0; | |
| } | |
| .sidebar-header { | |
| padding: 0 24px 20px; | |
| border-bottom: 1px solid #e0e0e0; | |
| margin-bottom: 10px; | |
| } | |
| .sidebar-header h2 { | |
| font-family: 'Product Sans', sans-serif; | |
| font-size: 18px; | |
| color: #444; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .nav-item { | |
| padding: 10px 24px; | |
| cursor: pointer; | |
| font-size: 14px; | |
| color: #5f6368; | |
| text-decoration: none; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| transition: background 0.2s; | |
| } | |
| .nav-item:hover { | |
| background-color: #f1f3f4; | |
| color: var(--text-color); | |
| } | |
| .nav-item.active { | |
| color: var(--accent-color); | |
| background-color: #e8f0fe; | |
| font-weight: 500; | |
| } | |
| /* Área Principal */ | |
| .main-content { | |
| flex-grow: 1; | |
| overflow-y: auto; | |
| padding: 30px; | |
| display: flex; | |
| justify-content: center; | |
| } | |
| /* Estilo da "Folha de Papel" */ | |
| .document-page { | |
| background-color: var(--doc-bg); | |
| width: 100%; | |
| max-width: 850px; /* Largura A4 aprox */ | |
| min-height: 1100px; | |
| padding: 60px 70px; | |
| box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); | |
| margin-bottom: 50px; | |
| } | |
| /* Tipografia do Documento */ | |
| h1 { | |
| font-family: 'Product Sans', sans-serif; | |
| font-size: 28px; | |
| margin-bottom: 10px; | |
| color: #000; | |
| } | |
| .subtitle { | |
| color: #5f6368; | |
| font-size: 14px; | |
| margin-bottom: 40px; | |
| border-bottom: 1px solid #e0e0e0; | |
| padding-bottom: 20px; | |
| } | |
| h2 { | |
| font-size: 20px; | |
| margin-top: 30px; | |
| margin-bottom: 15px; | |
| color: #202124; | |
| border-bottom: 1px solid #eee; | |
| padding-bottom: 5px; | |
| } | |
| h3 { | |
| font-size: 16px; | |
| margin-top: 20px; | |
| margin-bottom: 10px; | |
| color: #444; | |
| font-weight: 600; | |
| } | |
| p { | |
| font-size: 11pt; | |
| line-height: 1.6; | |
| margin-bottom: 15px; | |
| color: #333; | |
| text-align: justify; | |
| } | |
| ul { | |
| margin-left: 20px; | |
| margin-bottom: 15px; | |
| } | |
| li { | |
| font-size: 11pt; | |
| line-height: 1.6; | |
| margin-bottom: 5px; | |
| } | |
| /* Estilo das Imagens inseridas */ | |
| .doc-image { | |
| max-width: 100%; | |
| height: auto; | |
| display: block; | |
| margin: 25px auto; | |
| border: 1px solid #e0e0e0; | |
| border-radius: 4px; | |
| box-shadow: 0 2px 4px rgba(0,0,0,0.05); | |
| } | |
| .caption { | |
| text-align: center; | |
| font-size: 12px; | |
| color: #777; | |
| margin-top: -15px; | |
| margin-bottom: 25px; | |
| font-style: italic; | |
| } | |
| /* Caixas de Código */ | |
| .code-block { | |
| background-color: var(--code-bg); | |
| border: 1px solid #e0e0e0; | |
| border-radius: 4px; | |
| padding: 15px; | |
| font-family: 'Consolas', 'Monaco', monospace; | |
| font-size: 12px; | |
| overflow-x: auto; | |
| margin: 15px 0; | |
| position: relative; | |
| } | |
| .code-copy { | |
| position: absolute; | |
| top: 5px; | |
| right: 5px; | |
| background: #fff; | |
| border: 1px solid #ccc; | |
| border-radius: 4px; | |
| padding: 2px 8px; | |
| font-size: 10px; | |
| cursor: pointer; | |
| } | |
| /* Tabelas */ | |
| table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| margin: 20px 0; | |
| font-size: 14px; | |
| } | |
| th, td { | |
| border: 1px solid #e0e0e0; | |
| padding: 10px; | |
| text-align: left; | |
| } | |
| th { | |
| background-color: #f8f9fa; | |
| font-weight: 500; | |
| } | |
| .badge { | |
| display: inline-block; | |
| padding: 4px 8px; | |
| background-color: #e8f0fe; | |
| color: #1967d2; | |
| border-radius: 12px; | |
| font-size: 12px; | |
| font-weight: 500; | |
| margin-right: 5px; | |
| } | |
| .metrics-card { | |
| background: #fff; | |
| border: 1px solid #dadce0; | |
| border-radius: 8px; | |
| padding: 20px; | |
| margin: 20px 0; | |
| display: flex; | |
| justify-content: space-around; | |
| } | |
| .metric { | |
| text-align: center; | |
| } | |
| .metric-value { | |
| font-size: 24px; | |
| font-weight: bold; | |
| color: var(--accent-color); | |
| } | |
| .metric-label { | |
| font-size: 12px; | |
| color: #5f6368; | |
| text-transform: uppercase; | |
| margin-top: 5px; | |
| } | |
| /* Botões */ | |
| .btn-kaggle { | |
| display: inline-flex; | |
| align-items: center; | |
| background-color: #20BEFF; | |
| color: white; | |
| padding: 8px 16px; | |
| border-radius: 20px; | |
| text-decoration: none; | |
| font-weight: 500; | |
| font-size: 14px; | |
| margin-top: 10px; | |
| transition: opacity 0.2s; | |
| } | |
| .btn-kaggle:hover { | |
| opacity: 0.9; | |
| } | |
| blockquote { | |
| border-left: 4px solid var(--accent-color); | |
| padding-left: 15px; | |
| color: #555; | |
| font-style: italic; | |
| background: #f9f9f9; | |
| padding: 10px; | |
| margin: 15px 0; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <!-- Sidebar --> | |
| <nav class="sidebar"> | |
| <div class="sidebar-header"> | |
| <h2><i class="fa-brands fa-kaggle" style="color:#20BEFF;"></i> Docs BTC</h2> | |
| </div> | |
| <a href="#intro" class="nav-item active"><i class="fas fa-home"></i> Introdução</a> | |
| <a href="#dataset" class="nav-item"><i class="fas fa-database"></i> O Dataset</a> | |
| <a href="#analysis" class="nav-item"><i class="fas fa-chart-line"></i> Análise Histórica</a> | |
| <a href="#risk" class="nav-item"><i class="fas fa-balance-scale"></i> Risco vs Retorno</a> | |
| <a href="#montecarlo" class="nav-item"><i class="fas fa-dice"></i> Simulação Monte Carlo</a> | |
| <a href="#conclusion" class="nav-item"><i class="fas fa-clipboard-check"></i> Conclusão</a> | |
| <a href="#citation" class="nav-item"><i class="fas fa-quote-right"></i> Citação</a> | |
| </nav> | |
| <!-- Conteúdo Principal --> | |
| <main class="main-content"> | |
| <div class="document-page"> | |
| <!-- Header do Documento --> | |
| <div id="intro"> | |
| <h1>Bitcoin's Data Story: A Comprehensive Automated Report</h1> | |
| <div class="subtitle"> | |
| Autor: Takashi Sato (MatsumotoArcade) | Plataforma: Kaggle | Data: Dezembro 2025 | |
| <br><br> | |
| <a href="https://www.kaggle.com/code/matsumotoarcade/bitcoin-s-data-story-a-comprehensive-automated-re" target="_blank" class="btn-kaggle"> | |
| <i class="fas fa-external-link-alt"></i> Ver Notebook no Kaggle | |
| </a> | |
| </div> | |
| <p>Este documento apresenta uma documentação detalhada da análise realizada sobre o histórico de preços do Bitcoin. O objetivo deste projeto foi carregar dados históricos, calcular métricas financeiras essenciais (retorno, volatilidade) e realizar simulações preditivas utilizando o método de Monte Carlo.</p> | |
| <div class="metrics-card"> | |
| <div class="metric"> | |
| <div class="metric-value">0.4351</div> | |
| <div class="metric-label">Retorno Anual</div> | |
| </div> | |
| <div class="metric"> | |
| <div class="metric-value">0.5509</div> | |
| <div class="metric-label">Volatilidade Anual</div> | |
| </div> | |
| <div class="metric"> | |
| <div class="metric-value">-0.3539</div> | |
| <div class="metric-label">Retorno Ajustado</div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Seção Dataset --> | |
| <div id="dataset"> | |
| <h2>1. Sobre o Dataset</h2> | |
| <p>Os dados utilizados nesta análise provêm do dataset <strong>BTC Historic</strong>, criado para capturar a dinâmica de preços da criptomoeda líder mundial.</p> | |
| <p><strong>Descrição:</strong> Explore a jornada do Bitcoin através deste conjunto de dados histórico abrangente. Contendo dados diários de Abertura, Alta, Baixa, Fechamento e Volume (OHLCV) em USD, este dataset permite aprofundar nas flutuações de preço do Bitcoin, identificar tendências e construir modelos preditivos.</p> | |
| <h3>Colunas do Dataset:</h3> | |
| <ul> | |
| <li><span class="badge">Date</span> Data da observação</li> | |
| <li><span class="badge">Open</span> Preço de abertura (USD)</li> | |
| <li><span class="badge">High</span> Preço máximo do dia (USD)</li> | |
| <li><span class="badge">Low</span> Preço mínimo do dia (USD)</li> | |
| <li><span class="badge">Close</span> Preço de fechamento (USD)</li> | |
| <li><span class="badge">Volume</span> Volume negociado</li> | |
| </ul> | |
| <a href="https://www.kaggle.com/datasets/matsumotoarcade/btc-historic" target="_blank" class="btn-kaggle" style="background-color: #5f6368;"> | |
| <i class="fas fa-database"></i> Acessar Dataset | |
| </a> | |
| </div> | |
| <!-- Seção Análise --> | |
| <div id="analysis"> | |
| <h2>2. Análise Histórica</h2> | |
| <h3>Evolução do Preço de Fechamento</h3> | |
| <p>O gráfico abaixo ilustra a evolução do preço de fechamento do Bitcoin ao longo do tempo. Permite identificar tendências de longo prazo, picos históricos e a volatilidade inerente ao ativo.</p> | |
| <!-- Imagem: Preço de Fechamento --> | |
| <img src="preco_fechamento.png" alt="Gráfico do Preço de Fechamento" class="doc-image"> | |
| <div class="caption">Fig 1. Histórico de preços de fechamento (Close) do Bitcoin.</div> | |
| <div class="code-block"> | |
| <button class="code-copy">Copy</button> | |
| # Trecho de código para geração do gráfico | |
| plt.figure(figsize=(12, 6)) | |
| plt.plot(df['Close'], label='Preço de Fechamento') | |
| plt.title('Preço de Fechamento do Bitcoin ao Longo do Tempo') | |
| plt.show() | |
| </div> | |
| <h3>Distribuição dos Retornos Diários</h3> | |
| <p>Calculamos os retornos diários através da fórmula:</p> | |
| <blockquote>Daily Return = (Price(t) - Price(t-1)) / Price(t-1)</blockquote> | |
| <p>O histograma resultante mostra a frequência das variações percentuais. Uma distribuição mais larga indica maior volatilidade.</p> | |
| <!-- Imagem: Distribuição Retornos --> | |
| <img src="distribuicao_retornos.png" alt="Histograma de Retornos Diários" class="doc-image"> | |
| <div class="caption">Fig 2. Distribuição de frequência dos retornos diários.</div> | |
| </div> | |
| <!-- Seção Risco --> | |
| <div id="risk"> | |
| <h2>3. Risco vs Retorno</h2> | |
| <p>Esta análise compara a volatilidade anualizada (Risco) contra o retorno anual esperado. O Bitcoin posiciona-se como um ativo de alta volatilidade com potencial de alto retorno.</p> | |
| <ul> | |
| <li><strong>Volatilidade Diária:</strong> 0.0347 (aprox. 3.5% ao dia)</li> | |
| <li><strong>Volatilidade Anual:</strong> 0.5509 (aprox. 55% ao ano)</li> | |
| </ul> | |
| <!-- Imagem: Risco vs Retorno --> | |
| <img src="risco_retorno.png" alt="Gráfico Scatter Risco vs Retorno" class="doc-image"> | |
| <div class="caption">Fig 3. Posição do Bitcoin no espectro Risco x Retorno Anual.</div> | |
| </div> | |
| <!-- Seção Monte Carlo --> | |
| <div id="montecarlo"> | |
| <h2>4. Simulação de Monte Carlo</h2> | |
| <p>Utilizamos o método de Monte Carlo (Movimento Browniano Geométrico) para simular 1000 cenários possíveis para o preço do Bitcoin nos próximos 252 dias (1 ano de negociação).</p> | |
| <div class="code-block"> | |
| <button class="code-copy">Copy</button> | |
| # Fórmula do Movimento Browniano Geométrico | |
| S[t] = S[t-1] * exp((mu - 0.5 * sigma^2) * dt + sigma * sqrt(dt) * Z[t]) | |
| </div> | |
| <h3>Caminhos de Preço Simulados</h3> | |
| <p>Visualização das 1000 trajetórias possíveis a partir do último preço de fechamento.</p> | |
| <!-- Imagem: Caminhos Monte Carlo --> | |
| <img src="caminhos_preco_monte_carlo.png" alt="Caminhos de Preço Simulados" class="doc-image"> | |
| <div class="caption">Fig 4. 1000 simulações de trajetória de preço para os próximos 252 dias.</div> | |
| <h3>Distribuição dos Retornos Simulados</h3> | |
| <p>Abaixo observamos a distribuição de probabilidade dos retornos ao final da simulação.</p> | |
| <!-- Imagem: Retornos Monte Carlo (Extra) --> | |
| <img src="distribuicao_retornos_monte_carlo.png" alt="Distribuição Retornos Monte Carlo" class="doc-image"> | |
| <div class="caption">Fig 5. Histograma dos retornos finais obtidos na simulação.</div> | |
| <h3>Resultados da Simulação (Percentis)</h3> | |
| <p>Baseado na distribuição final dos retornos simulados, temos as seguintes probabilidades:</p> | |
| <table> | |
| <thead> | |
| <tr> | |
| <th>Cenário</th> | |
| <th>Retorno Esperado</th> | |
| <th>Descrição</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td><strong>Pessimista (5%)</strong></td> | |
| <td style="color: red;">-46.41%</td> | |
| <td>Risco de cauda inferior.</td> | |
| </tr> | |
| <tr> | |
| <td><strong>Mediana (50%)</strong></td> | |
| <td style="color: green;">+37.86%</td> | |
| <td>Cenário base probabilístico.</td> | |
| </tr> | |
| <tr> | |
| <td><strong>Otimista (95%)</strong></td> | |
| <td style="color: green;">+216.52%</td> | |
| <td>Risco de cauda superior (Bull run).</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <p><strong>Probabilidade de Perda:</strong> A simulação indicou uma probabilidade de aproximadamente <strong>29.00%</strong> de o retorno ser negativo ao final do período.</p> | |
| </div> | |
| <!-- Conclusão --> | |
| <div id="conclusion"> | |
| <h2>5. Conclusão</h2> | |
| <p>O notebook "Bitcoin's Data Story" forneceu uma visão automatizada e abrangente sobre o comportamento do ativo. Os dados mostram que, historicamente, o Bitcoin oferece retornos anuais significativos (43.51%), mas exige tolerância a uma volatilidade extrema (55.09%).</p> | |
| <p>As simulações de Monte Carlo sugerem que, embora haja uma chance considerável de perda (~29%), a assimetria positiva dos retornos (potencial de alta de >200% no cenário otimista) continua a atrair investidores em busca de alpha.</p> | |
| </div> | |
| <!-- Citação --> | |
| <div id="citation"> | |
| <h2>Citação (BibTeX)</h2> | |
| <p>Se você utilizar este dataset ou a metodologia de análise em sua pesquisa, favor citar:</p> | |
| <div class="code-block"> | |
| <button class="code-copy">Copy</button> | |
| @misc{takashi_sato_2025, | |
| title={BTC HISTORIC}, | |
| url={https://www.kaggle.com/dsv/10933748}, | |
| DOI={10.34740/KAGGLE/DSV/10933748}, | |
| publisher={Kaggle}, | |
| author={takashi sato}, | |
| year={2025} | |
| } | |
| </div> | |
| </div> | |
| <footer style="margin-top: 50px; border-top: 1px solid #eee; padding-top: 20px; text-align: center; color: #888; font-size: 12px;"> | |
| <p>Gerado automaticamente a partir do Notebook Kaggle "Bitcoin's Data Story".</p> | |
| </footer> | |
| </div> | |
| </main> | |
| <script> | |
| // Script simples para navegação e interação | |
| document.querySelectorAll('.nav-item').forEach(anchor => { | |
| anchor.addEventListener('click', function (e) { | |
| e.preventDefault(); | |
| // Remove active class from all | |
| document.querySelectorAll('.nav-item').forEach(item => item.classList.remove('active')); | |
| // Add active to clicked | |
| this.classList.add('active'); | |
| const targetId = this.getAttribute('href'); | |
| document.querySelector(targetId).scrollIntoView({ | |
| behavior: 'smooth' | |
| }); | |
| }); | |
| }); | |
| // Botão de Copiar | |
| document.querySelectorAll('.code-copy').forEach(btn => { | |
| btn.addEventListener('click', () => { | |
| const code = btn.parentElement.innerText.replace('Copy', '').trim(); | |
| navigator.clipboard.writeText(code); | |
| btn.innerText = 'Copied!'; | |
| setTimeout(() => btn.innerText = 'Copy', 2000); | |
| }); | |
| }); | |
| </script> | |
| </body> | |
| </html> |