日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python探究小市值因子的有效性

發布時間:2023/12/31 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python探究小市值因子的有效性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:在Barra的10個風格因子中,size(市值)因子引起了很多人的關注。其中就包括著名的小市值因子。
有的人將小市值股票定義為,按照市值排序,后50%的股票是小市值股票。
而本文中,將股票按照每日收盤價的市值排序,令后30%的股票是小市值股票。

設計一個簡單的投資策略,檢驗小市值因子的有效性。
每日收盤前,以收盤價等權重買入當日流通市值最小的30%股票。
第二日收盤前,立刻賣出前一日的股票倉位,買入第二日流通市值最小的30%股票。
接下來,以此類推。。
最終查看按照該策略進行投資,近10年來的投資收益情況。

數據來源:2009年3月17日至2019年3月15日,中國A股市場上所有股票(股票總數隨著時間在變動)的‘
股票代碼、交易日期、收盤價、日個股交易股數、日個股交易金額、日個股流通市值、日個股總市值、考慮現金紅利再投資的日個股回報率、交易狀態。
其對應的代碼如下:
Stkcd,Trddt,Clsprc,Dnshrtrd,Dnvaltrd,Dsmvosd,Dsmvtll,Dretwd,Trdsta

代碼如下:

#本程序實現了小盤因子的收益率分析 #先導入數據,保存每日個股的數據 import pandas as pd import numpy as np""" data_raw = pd.read_csv(".\\new_total_little_size.csv") #處理回報率數據,使其對應x日后的回報率 data_x = data_raw["Dretwd"].values data_x = data_x.flatten() length = len(data_raw) data_new_x = np.zeros(length) x = 1 data_new_x[0 : length - x] = data_x[x : length] data_raw["Dretwd"] = data_new_x data_raw = pd.DataFrame(data_raw).sort_values(by = ["Trddt", "Dsmvosd"]) data_raw.to_csv("new2_total_little_size.csv", index = False)data_raw = pd.DataFrame(pd.read_csv(".\\new2_total_little_size.csv")) print("OK") #用于讀取文件數據,并找到時間間隔點,寫入文件location中, 此處用簡單的二分法快速查詢時間間隔點。 data = data_raw location = [] for i in range(1500, len(data_raw) - 1, 1500):if data_raw["Trddt"][i - 1500] != data_raw["Trddt"][i]:left, right = i - 1500, ileft_date, right_date = data_raw["Trddt"][i - 1500], data_raw["Trddt"][i]while True:judge = int((left + right) / 2)if data["Trddt"][judge] == data["Trddt"][judge + 1] and data["Trddt"][judge] == left_date:left = judgecontinueif data["Trddt"][judge] == data["Trddt"][judge - 1] and data["Trddt"][judge] == right_date:right = judgecontinueif data["Trddt"][judge] != left_date and data["Trddt"][judge] != right_date:print("find new one")breakif data["Trddt"][judge] != data["Trddt"][judge - 1]:location.append(judge)breakif data["Trddt"][judge] != data["Trddt"][judge + 1]:location.append(judge + 1)break with open("location_little_size", "a+", encoding = "utf-8") as f:for i in range(len(location)):f.write(str(location[i]) + "\n") """data_raw = pd.DataFrame(pd.read_csv(".\\new2_total_little_size.csv")) print("OK") time_table = [] with open("location_little_size", "r") as f:for line in f:line = line.strip('\n')time_table.append(int(line)) rate1 = [] rate2 = [] rate3 = [] for i in range(len(time_table)):if i == 0:begin = 0end = time_table[i] - 1else:begin = time_table[i-1]end = time_table[i] - 1return_rate = 0#取前30%的小市值股票divisor = round((end - begin) * 0.3)for j in range(divisor):return_rate += float(data_raw["Dretwd"][begin + j])rate1.append(return_rate / divisor)return_rate = 0#取后30%的大市值股票divisor = round((end - begin) * 0.3)for j in range(divisor):return_rate += float(data_raw["Dretwd"][end - divisor + j + 1])rate2.append(return_rate / divisor)return_rate = 0#取30%-70%的中等市值股票begin_length = round((end - begin) * 0.3)divisor = round((end - begin) * 0.4)for j in range(divisor):return_rate += float(data_raw["Dretwd"][begin + begin_length + j])rate3.append(return_rate / divisor)for i in range(len(rate1)):print(rate1[i])print("Changing!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")for i in range(len(rate2)):print(rate2[i])print("Changing!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")for i in range(len(rate3)):print(rate3[i]) #按照位置輸出日期 #for i in range(len(time_table)): # print(data_raw["Trddt"][time_table[i]])#讀取指數文件數據 #data_index = pd.read_csv(".\little_size\index_2009-2019\TRD_index.csv")

結論:
如下圖所示,很明顯,小市值因子是有效的,按照該理想策略的投資收益率,顯著高于其他市值因子。
大概在2018年初,有一段時間小市值因子失效了,引得行業內跟蹤小市值因子或者以此為策略的人開始懷疑人生了。
好在2019年,小市值因子重新煥發生機。
除此之外,也可以看出,隨著市值的增大,該策略的投資回報率在下降。

運行結果太長了,自己搜集數據來運行吧,分享給對小市值因子感興趣的人。

總結

以上是生活随笔為你收集整理的python探究小市值因子的有效性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。