Python 解鎖 - Berkshire Hathaway 13F Report

閱讀時間約 7 分鐘


raw-image


使用Python 於valuesider網站爬取巴菲特(波克夏 海瑟威)13F報告,並製作成動態barchart,數據更新至FY24Q3。





▌Python 爬蟲細節

  1. 定義資料範圍(year/q/ page) 按年份、季度和頁數構造 URL 並發送 HTTP 請求抓取網頁內容。
  2. 使用BeautifulSoup 從 HTML 中找到股票代號ticker和投資比例percent的相關資料。
  3. 整理資料並存入dict (year/quarter/ ticker/ %)。
  4. 將dict轉為 Pandas dataframe。
  5. 將百分比轉換為float,並將小於3%的股票分類為 “Other”。
  6. 聚合資料。


from bs4 import BeautifulSoup

import re
import requests
import pandas as pd
import numpy as np

page = range(1,4)
quarter = range(1,4)
year = range(2022,2025)

my_dict = {"year":[], "quarter":[], "ticker":[],"percent":[]};

for y in year:
for q in quarter:
for p in page:
url = 'https://valuesider.com/guru/warren-buffett-berkshire-hathaway/portfolio/{}/{}?sort=-percent_portfolio&sells_page=1&page={}'.format(y, q, p)
response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser')
ticker_list = soup.find_all('div', class_ = 'guru_table_column scroll-fix text-center', string=re.compile(".+"))
percent_list = soup.find_all('div', class_ = 'guru_table_column text-center', string=re.compile("%"))

for i in range(len(percent_list)):
my_dict["year"].append(y)
my_dict["quarter"].append(q)
my_dict["ticker"].append(ticker_list[i].get_text())
my_dict["percent"].append(percent_list[i].get_text())

df_data = pd.DataFrame(my_dict)# Convert 'percent' column to numeric before comparison
df_data['percent'] = df_data['percent'].str.rstrip('%').astype(float)

# Now you can perform the comparison

df_data['ticker_adj'] = np.where(df_data['percent']>= 3, df_data['ticker'], 'Other')
df_data = df_data.assign(year_quarter = df_data['year'].astype(str) + "-" + df_data['quarter'].astype(str))
df_data.sort_values('year_quarter', ascending=True, inplace = True)
df_final = df_data.groupby(['year_quarter' , 'ticker_adj']).agg(percentage = ('percent', 'sum')) # Changed 'percentage' to 'percent'
df_final.reset_index(inplace= True)



raw-image


raw-image


▌Python 視覺化

  1. 使用 px.bar 繪製條形圖,設定橫軸為 股票 代號、縱軸為百分比。
  2. 利用 animation_frame 增加年份季度的動畫效果。這裡設定為 "year_quarter",表示按年份和季度動態顯示數據。
  3. 更新 X 軸顯示順序以降序排列。
import plotly.express as px

fig = px.bar(df_final, x="ticker_adj", y="percentage", color="ticker_adj",
animation_frame="year_quarter", animation_group="ticker_adj", range_y=[0,60])

fig.update_layout (xaxis={'categoryorder':'total descending'})
fig.show()


raw-image


下載連結

以下為本 python 練習題 的程式碼(持續增加中),想拿資料作練習的朋友可以點下單連結,下載連結會寄至您提供的Email喔! 目前資源都是免費的,當然也歡迎您輸入金額小額贊助我們喔!

Python - Project 實作 - Payhip



謝謝您花時間將此篇文章讀完,若覺得對您有幫助可以幫忙按個讚、分享來或是珍藏喔!也歡迎Follow我的Threads/ FB,持續追蹤生產力工具、商業分析、商業英文的實用範例,提升自己的職場力喔!



avatar-img
28會員
53內容數
我們秉持著從原人進化的精神,不斷追求智慧的累積和工具的運用來提升生產力。我們相信,每一個成員都擁有無限的潛力,透過學習和實踐,不斷成長和進步。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
DigNo Ape 數遊原人 的其他內容
在Part 3,我們獲取了00878的每個持倉的盈餘和價格,本篇會講解最後的部分,將統整後的市值、盈餘計算此ETF的本益比。
本篇我們會繼續討論從Part 1 撈取的 df_878 中提取股票代碼,並使用先前Part 2 定義的 get_info_yfinance 函式來獲取 Yahoo Finance 上的財務資料,接著將這些資料貼回 df_878 的相應欄位中。
在前一篇 Part 1中,我們成功地將國泰永續高股息ETF (代號00878)的持倉內容(股名、股數)撈出,本篇會介紹如何定義函式來撈取相關盈餘、股價等資訊,輸入股票代碼後回傳預估EPS。
如何計算 ETF 的PE Ratio? 本益比評估一檔股票是便宜或是昂貴常用的工具,公式是 股價 ÷ 每股盈餘 (或市值÷總盈餘)。我們可以使用相同原理,根據持有權重,對一檔股票型ETF裡一籃子的股票進行計算其本益比,了解你持有的ETF價格位階。
Snowflake 是一家基於雲端運算的數據庫公司,提供「data warehouse-as-a-service」的雲端數據存儲和分析服務。透過 Snowflake,用戶可以使用雲端硬體和軟體存儲及分析資料。本教學將介紹如何使用 Python 將不同平台上的資料上傳至 Snowflake。
Notion 是一款強大的生產力工具,幫助我們紀錄、組織和管理訊息,並把這些訊息存取至資料庫(Notion 解鎖 - Threads 串文資料庫)。 當我們需要對這些數據進行進一步的分析時,有沒有什麼程式工具是我們可以使用,進一步釋放Notion的潛力呢? 在本篇文章中,我將介紹我如何在Not
在Part 3,我們獲取了00878的每個持倉的盈餘和價格,本篇會講解最後的部分,將統整後的市值、盈餘計算此ETF的本益比。
本篇我們會繼續討論從Part 1 撈取的 df_878 中提取股票代碼,並使用先前Part 2 定義的 get_info_yfinance 函式來獲取 Yahoo Finance 上的財務資料,接著將這些資料貼回 df_878 的相應欄位中。
在前一篇 Part 1中,我們成功地將國泰永續高股息ETF (代號00878)的持倉內容(股名、股數)撈出,本篇會介紹如何定義函式來撈取相關盈餘、股價等資訊,輸入股票代碼後回傳預估EPS。
如何計算 ETF 的PE Ratio? 本益比評估一檔股票是便宜或是昂貴常用的工具,公式是 股價 ÷ 每股盈餘 (或市值÷總盈餘)。我們可以使用相同原理,根據持有權重,對一檔股票型ETF裡一籃子的股票進行計算其本益比,了解你持有的ETF價格位階。
Snowflake 是一家基於雲端運算的數據庫公司,提供「data warehouse-as-a-service」的雲端數據存儲和分析服務。透過 Snowflake,用戶可以使用雲端硬體和軟體存儲及分析資料。本教學將介紹如何使用 Python 將不同平台上的資料上傳至 Snowflake。
Notion 是一款強大的生產力工具,幫助我們紀錄、組織和管理訊息,並把這些訊息存取至資料庫(Notion 解鎖 - Threads 串文資料庫)。 當我們需要對這些數據進行進一步的分析時,有沒有什麼程式工具是我們可以使用,進一步釋放Notion的潛力呢? 在本篇文章中,我將介紹我如何在Not
本篇參與的主題活動
「為甚麼要投資理財?」 現在物價飛漲,薪水卻不漲,年輕人買不起房,所以選擇活在當下、及時行樂,可是這樣的生活態度真的沒問題嗎?每每看到社群上經常出國玩的貼文、買名牌包的照片,我都會疑惑大家真的都這麼好過嗎? 今天分享兩本書,介紹非常實用且白話的投資理財方法。
隨著美國大選進入最後階段,川普在面對賀錦麗的競爭情勢中展現出領先態勢,影響了市場動向及股市表現。根據聯準會的最新預測,今明年美國經濟成長率穩定在2%。川普若勝選,預計將有利於金融股及內需類股,而賀錦麗勝選則可能繼續拜登政策,市場反應經濟基本面。投資人應關注選舉結果,合理配置投資組合。
終於開始看施昇輝老師的書了,之前主要是看他在節目上發言,這次算是靜下來真的第一次看他的書。這算是他特別為了小資族打造的書,所以針對的收入跟各種也走向小資,力求簡單無腦投資,捨棄一些不需要的動作。下面就來看看書中我覺得很不錯的概念吧。
市值型ETF包括美股和臺股,美股因手續費推薦長抱,而臺股則適合進出。不斷買進又賣出可能錯過配發股息和獲利時機,增加成本。定期定額投資則能享受複利效應,建議躺平投資以獲得最大效益。結論永遠留在市場享受複利,若需要現金流可配置到市值型ETF或債券型ETF,不要必須賣股換現金。
在高股息ETF的投資中,重要的是要找到適合的買入時間和賣出時間。一般來說,計算股價和股利的比值可以判斷是否適合買入,而在賣出時,可以以總股利收益作為參考。股票投資的關鍵在於持續的買入和加碼,以及在合適的時間出場,以最大化收益。
「為甚麼要投資理財?」 現在物價飛漲,薪水卻不漲,年輕人買不起房,所以選擇活在當下、及時行樂,可是這樣的生活態度真的沒問題嗎?每每看到社群上經常出國玩的貼文、買名牌包的照片,我都會疑惑大家真的都這麼好過嗎? 今天分享兩本書,介紹非常實用且白話的投資理財方法。
隨著美國大選進入最後階段,川普在面對賀錦麗的競爭情勢中展現出領先態勢,影響了市場動向及股市表現。根據聯準會的最新預測,今明年美國經濟成長率穩定在2%。川普若勝選,預計將有利於金融股及內需類股,而賀錦麗勝選則可能繼續拜登政策,市場反應經濟基本面。投資人應關注選舉結果,合理配置投資組合。
終於開始看施昇輝老師的書了,之前主要是看他在節目上發言,這次算是靜下來真的第一次看他的書。這算是他特別為了小資族打造的書,所以針對的收入跟各種也走向小資,力求簡單無腦投資,捨棄一些不需要的動作。下面就來看看書中我覺得很不錯的概念吧。
市值型ETF包括美股和臺股,美股因手續費推薦長抱,而臺股則適合進出。不斷買進又賣出可能錯過配發股息和獲利時機,增加成本。定期定額投資則能享受複利效應,建議躺平投資以獲得最大效益。結論永遠留在市場享受複利,若需要現金流可配置到市值型ETF或債券型ETF,不要必須賣股換現金。
在高股息ETF的投資中,重要的是要找到適合的買入時間和賣出時間。一般來說,計算股價和股利的比值可以判斷是否適合買入,而在賣出時,可以以總股利收益作為參考。股票投資的關鍵在於持續的買入和加碼,以及在合適的時間出場,以最大化收益。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
持股大公開,獲利100%,TLT,Intel,BTI,迪士尼DIS,3M,拜耳,輝瑞PFE,REIT,派拉蒙,航空,Disney,paypal PYPL, 美債ETF,VOD,AT&T,VZ,BAC,股票,獲利100%,KQJ
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
持股大公開,獲利100%,TLT,Intel,BTI,迪士尼DIS,3M,拜耳,輝瑞PFE,REIT,派拉蒙,航空,Disney,paypal PYPL, 美債ETF,VOD,AT&T,VZ,BAC,股票,獲利100%,KQJ