在上一堂課中,掌櫃介紹了獲取**資料的方法,即通過Tushare的API介面獲取最新資料。 有了基礎資料,我們可以做一些簡單的分析。
今天,我們將介紹乙個特別簡單且可操作的策略——簡單定期投資,即在每個月的第乙個交易日,以每年最後乙個交易日的開盤價賣出一手(100股)。
按照慣例,第一次使用時,需要先導入相關的 Python 庫。
importtushare as ts
importpandas as pd
importnumpy as np
根據上一課講授的內容,平安銀行2013-2024年的交易資料一次性提取自圖方股份。
選擇平安銀行自2024年以來的漲跌資訊。
pro = ts.pro api() 初始化介面。
df_pingan = pro.daily(ts_code='000001.sz',start_date='20130101',end_date='20231201')
為了進一步處理資料,原始資料中“交易日期”的格式為文字格式,需要以 Python 支援的日期時間格式進行處理,並將“交易日期”設定為索引。
df_pingan['trade_date'] = pd.to_datetime(df_pingan['trade_date'],format='%y%m%d') 將文字資料轉換為標準時間序列
df_pingan.set_index('trade_date', inplace=true) 將交易時間設定為索引
df_pingan.head()
從十年的資料中提取每個月第乙個交易日的資料,這裡可以使用pandas Dataframe的resample命令來方便資料的分組,類似於groupby分組的用法,但resample更適合時序資料,可以快速分組,按日期過濾。
例如,resample('m') 是每個月日曆的最後一天,resample('a') 是一年中的最後一天。 對各組進行劃分後,可以進行統計分析,例如,使用第乙個和最後乙個方法對第乙個和最後乙個資料進行統計,也有平均值和總和等常規的統計方法。
df_buy = df_pingan.resample('m').first() 選擇每月第乙個交易日的資料作為參考
df_buy.tail()
需要注意的是,此處顯示的系列指數與資料不符,例如 2023-12-31 的開盤價(“開盤價”)65 美元是截至 2023 年 12 月 1 日的資料。 這裡的序列指數對應的是第乙個交易日的資料,應該理解為組名,沒有實際意義。
對每個月進行分組並提取第一天的資料後,就可以輕鬆進入下一步。 你只需要把每個月的開倉時間加起來,再乘以100股的數量就可以得到所有的費用,這要花費175757元。
花的錢
cost = df_buy['open'].sum() 100
成本 同樣,下一步是選擇一年中的最後乙個交易日,並使用開盤價作為交易**。
df_sell = df_pingan.resample('a').last()[1] 每年選擇最後交易日資料作為賣出參考
df_sell.tail()
這裡需要注意的是,2024年還沒有結束,還不是賣出全年的時候。
因此,僅計算 2013 年至 2022 年的銷售利潤。
收益為164064元。
賣**賺錢
revenue = df_sell['open'].sum() 1200
revenue
這裡也計算了2024年***的價值,2024年持有的***的價值,按最近一期計算,即2024年12月1日的***價格為11592元。
計算 2023 年收入
last_money = df_pingan['close'][0]*1200
last_money
將出售**的收益加到2024年的持股價值中,再減去***的成本,定期投資的回報為-101元。
這意味著我在平安銀行十年虧了101塊錢,這還不包括這十年的通貨膨脹,還有交易手續費和稅費,我其實應該虧得更多。
要知道,10年前,平安銀行的股價還不止15元,而現在只值9元6,跌幅整整三分之一。 在股價三分之一的情況下,基本可以保證盈虧平衡,可見簡單的定期投資也有一定的好處。
但總的來說,簡單的定期投資策略還是很難保證到好的回報,還不如把錢存進銀行賺利息。