LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

Odaily星球日报Xuất bản vào 2024-01-24Cập nhật gần nhất vào 2024-01-24

Tóm tắt

本篇将研究因子好坏的判断方法及因子对于收益率的预测能力。

前言

书接上回,关于《用多因子模型构建强大的加密资产投资组合》系列文章中,我们已经发布了两篇:《理论基础篇》《数据预处理篇》

本篇是第三篇:因子有效性检验。

在求出具体的因子值后,需要先对因子进行有效性检验,筛选符合显著性、稳定性、单调性、收益率要求的因子;因子有效性检验通过分析本期因子值与预期收益率的关系,从而确定因子的有效性。主要有 3 种经典方法:

  • IC / IR 法:IC / IR 值为因子值与预期收益率的相关系数,越大因子表现越好。

  • T 值(回归法):T 值体现下期收益率对本期因子值线性回归后系数的显著性,通过比较该回归系数是否通过 t 检验,来判断本期因子值对下期收益率的贡献程度,通常用于多元(即多因子)回归模型。

  • 分层回测法:分层回测法基于因子值对 token 分层,再计算每层 token 的收益率,从而判断因子的单调性

一、IC / IR 法

(1)IC / IR 的定义

IC:即信息系数 Information Coefficient,代表因子预测 Tokens 收益的能力。某一期 IC 值为本期因子值和下期收益率的相关系数。

LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

IC 越接近 1 ,说明因子值和下期收益率的正相关性越强,IC= 1 ,表示该因子选币 100% 准确,对应的是排名分最高的 token,选出来的 token 在下个调仓周期中,涨幅最大;

IC 越接近-1 ,说明因子值和下期收益率的负相关性越强,如果 IC=-1 ,则代表排名分最高的 token,在下个调仓周期中,跌幅最大,是一个完全反指的指标;

若 IC 越接近 0 ,则说明该因子的预测能力极其弱,表明该因子对于 token 没有任何的预测能力。

IR:信息比率 information ratio,代表因子获取稳定 Alpha 的能力。IR 为所有期 IC 均值除以所有期 IC 标准差。

LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

当 IC 的绝对值大于 0.05 (0.02) 时,因子的选股能力较强。当 IR 大于 0.5 时,因子稳定获取超额收益能力较强。

(2)IC 的计算方式

  • Normal IC (Pearson correlation):计算皮尔森相关系数,最经典的一种相关系数。但该计算方式存在较多假设前提:数据连续,正态分布,两个变量满足线性关系等等。

LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

  • Rank IC (Spearman's rank coefficient of correlation):计算斯皮尔曼秩相关系数,先对两个变量排序,再根据排序后的结果求皮尔森相关系数。斯皮尔曼秩相关系数评估的是两个变量之间的单调关系,并且由于转换为排序值,受数据异常值影响较小;而皮尔森相关系数评估的是两个变量之间的线性关系,不仅对原始数据有一定的前提条件,并且受数据异常值影响较大。在现实计算中,求 rank IC 更符合。

(3)IC / IR 法代码实现

创建一个按日期时间升序排列的唯一日期时间值的列表--记录调仓日期 def choosedate(dateList, cycle)

class TestAlpha(object):
   def __init__(self, ini_data):
       self.ini_data = ini_data    
   def chooseDate(self, cycle, start_date, end_date):
       '''
       cycle: day, month, quarter, year
       df: 原始数据框 df,date 列的处理
       '''
       chooseDate = []
       dateList = sorted(self.ini_data[self.ini_data['date'].between(start_date, end_date)]['date'].drop_duplicates().values)
       dateList = pd.to_datetime(dateList)
       for i in range(len(dateList)-1):
           if getattr(dateList[i], cycle) != getattr(dateList[i + 1 ], cycle):
                   chooseDate.append(dateList[i])
           
       chooseDate.append(dateList[-1 ])
       chooseDate = [date.strftime('%Y-%m-%d') for date in chooseDate]
       return chooseDate      
     def ICIR(self, chooseDate, factor):
       # 1.先展示每个调仓日期的 IC,即 ICt
       testIC = pd.DataFrame(index=chooseDate, columns=['normalIC','rankIC'])
       dfFactor = self.ini_data[self.ini_data['date'].isin(chooseDate)][['date','name','price', factor]]
       for i in range(len(chooseDate)-1):
           # ( 1) normalIC
           X = dfFactor[dfFactor['date'] == chooseDate[i]][['date','name','price', factor]].rename(columns={'price':'close 0'})
           Y = pd.merge(X, dfFactor[dfFactor['date'] == chooseDate[i+ 1 ]][['date','name','price']], on=['name']).rename(columns={'price':'close 1'})
           Y['returnM'] = (Y['close 1'] - Y['close 0']) / Y['close 0']
           Yt = np.array(Y['returnM'])
           Xt = np.array(Y[factor])
           Y_mean = Y['returnM'].mean()
           X_mean = Y[factor].mean()
           num = np.sum((Xt-X_mean)*(Yt-Y_mean))
           den = np.sqrt(np.sum((Xt-X_mean)** 2)*np.sum((Yt-Y_mean)** 2))
           normalIC = num / den # pearson correlation
           # ( 2) rankIC
           Yr = Y['returnM'].rank()
           Xr = Y[factor].rank()
           rankIC = Yr.corr(Xr)
           testIC.iloc[i] = normalIC, rankIC    
       testIC  =testIC[:-1 ]
       # 2.基于 ICt,求['IC_Mean', 'IC_Std','IR','IC<0 占比--因子方向','|IC|>0.05 比例']
       '''
       ICmean: |IC|>0.05, 因子的选币能力较强,因子值与下期收益率相关性高。|IC|<0.05,因子的选币能力较弱,因子值与下期收益率相关性低
       IR: |IR|>0.5,因子选币能力较强, IC 值较稳定。|IR|<0.5, IR 值偏小,因子不太有效。若接近 0,基本无效
       IClZero(IC less than Zero): IC<0 占比接近一半->因子中性.IC>0 超过一大半,为负向因子,即因子值增加,收益率降低
       ICALzpF(IC abs large than zero poin five): |IC|>0.05 比例偏高,说明因子大部分有效
       '''
       IR = testIC.mean()/testIC.std()
       IClZero = testIC[testIC<0 ].count()/testIC.count()
       ICALzpF = testIC[abs(testIC)>0.05 ].count()/testIC.count()
       combined =pd.concat([testIC.mean(), testIC.std(), IR, IClZero, ICALzpF], axis= 1)
       combined.columns = ['ICmean','ICstd','IR','IClZero','ICALzpF']
       # 3.IC 调仓期内 IC 的累积图  
       print("Test IC Table:")
       print(testIC)
       print("Result:")
       print('normal Skewness:', combined['normalIC'].skew(),'rank Skewness:', combined['rankIC'].skew())
       print('normal Skewness:', combined['normalIC'].kurt(),'rank Skewness:', combined['rankIC'].kurt())
       return combined, testIC.cumsum().plot()

二、T 值检验(回归法)

T 值法同样检验本期因子值和下期收益率关系,但与 ICIR 法分析二者的相关性不同,t 值法将下期收益率作为因变量 Y,本期因子值作为自变量 X,由 Y 对 X 回归,对回归出因子值的回归系数进行 t 检验,检验其是否显著异于 0 ,即本期因子是否影响下期收益率。

该方法本质是对双变量回归模型的求解,具体公式如下:

LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

(1)回归法理论

LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

(2)回归法代码实现

def regT(self, chooseDate, factor, return_ 24 h):
       testT = pd.DataFrame(index=chooseDate, columns=['coef','T'])
       for i in range(len(chooseDate)-1):
           X = self.ini_data[self.ini_data['date'] == chooseDate[i]][factor].values
           Y = self.ini_data[self.ini_data['date'] == chooseDate[i+ 1 ]][return_ 24 h].values
           b, intc = np.polyfit(X, Y, 1) # 斜率
           ut = Y - (b * X + intc)
           # 求 t 值 t = (\hat{b} - b) / se(b)
           n = len(X)
           dof = n - 2 # 自由度
           std_b = np.sqrt(np.sum(ut** 2) / dof)
           t_stat = b / std_b
           testT.iloc[i] = b, t_stat
       testT = testT[:-1 ]
       testT_mean = testT['T'].abs().mean()
       testT L1 96 = len(testT[testT['T'].abs() > 1.96 ]) / len(testT)
       
       print('testT_mean:', testT_mean)
       print('T 值大于 1.96 的占比:', testT L1 96)
       return testT

三、分层回测法

分层指对所有 token 分层,回测指计算每层 token 组合的收益率。

(1)分层

首先获取 token 池对应的因子值,通过因子值对 token 进行排序。升序排序,即因子值较小的排在前面,根据排序对 token 进行等分。第 0 层 token 的因子值最小,第 9 层 token 的的因子值最大。

理论上“等分”是指均等分拆 token 的个数,即每层 token 个数相同,借助分位数实现。现实中 token 总数不一定是层数的倍数,即每层 token 个数不一定相等。

(2)回测

将 token 按因子值升序分完 10 组后,开始计算每组 token 组合的收益率。该步骤将每层的 token 当成一个投资组合(不同回测期,每层的 token 组合所含的 token 都会有变化),并计算该组合整体的下期收益率。ICIR、t 值分析的是当期因子值和下期整体的收益率,但分层回测需要计算回测时间内每个交易日的分层组合收益率。由于有很多回测期有很多期,在每一期都需要进行分层和回测。最后对每一层的 token 收益率进行累乘,计算出 token 组合的累积收益率。

理想状态下,一个好的因子,第 9 组的曲线收益最高,第 0 组的曲线收益最低。

LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

第 9 组减去第 0 组(即多空收益)曲线呈现单调递增。

LUCIDA:如何利用多因子策略构建强大的加密资产投资组合(因子有效性检验篇)

(3)分层回测法代码实现

def layBackTest(self, chooseDate, factor):
       f = {}
       returnM = {}
       for i in range(len(chooseDate)-1):
           df 1 = self.ini_data[self.ini_data['date'] == chooseDate[i]].rename(columns={'price':'close 0'})
           Y = pd.merge(df 1, self.ini_data[self.ini_data['date'] == chooseDate[i+ 1 ]][['date','name','price']], left_on=['name'], right_on=['name']).rename(columns={'price':'close 1'})
           f[i] = Y[factor]
           returnM[i] = Y['close 1'] / Y['close 0'] -1 
       labels = ['0','1','2','3','4','5','6','7','8','9']
       res = pd.DataFrame(index=['0','1','2','3','4','5','6','7','8','9','LongShort'])
       res[chooseDate[ 0 ]] = 1 
       for i in range(len(chooseDate)-1):
           dfM = pd.DataFrame({'factor':f[i],'returnM':returnM[i]})
           dfM['group'] = pd.qcut(dfM['factor'], 10, labels=labels)
           dfGM = dfM.groupby('group').mean()[['returnM']]
           dfGM.loc['LongShort'] = dfGM.loc['0']- dfGM.loc['9']res[chooseDate[i+ 1 ]] = res[chooseDate[ 0 ]] * ( 1 + dfGM['returnM']) data = pd.DataFrame({'分层累积收益率':res.iloc[: 10,-1 ],'Group':[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]})
       df 3 = data.corr()
       print("Correlation Matrix:")
       print(df 3)
       return res.T.plot(title='Group backtest net worth curve')

原文链接

Nội dung Liên quan

Việc Giảm Mạnh STRC Của Strategy Cho Thấy Rủi Ro Đằng Sau Các Sản Phẩm Tín Dụng Liên Kết Bitcoin

Việc cổ phiếu ưu đãi STRC của Strategy (công ty mẹ của MicroStrategy) giao dịch giảm mạnh dưới mệnh giá 100 USD đã làm nổi bật rủi ro đằng sau các sản phẩm tín dụng gắn với Bitcoin. Dù CEO Matt Cole mô tả đây là đợt "thanh lọc đòn bẩy" do bán ép chứ không phải sự kiện vỡ nợ cơ bản, sự sụt giảm vẫn cho thấy mức độ nhanh chóng mà đòn bẩy có thể làm lộ ra điểm yếu trong các công cụ liên quan đến chiến lược kho bạc Bitcoin. Sự kiện này nhấn mạnh rằng các sản phẩm tín dụng Bitcoin mang rủi ro khác biệt so với nắm giữ BTC trực tiếp hoặc cổ phiếu phổ thông, đặc biệt khi nhà đầu tư sử dụng vay mượn. Nó cũng phản ánh sự phức tạp ngày càng tăng của thị trường tài chính hóa các kho bạc Bitcoin, nơi sự tương tác giữa cổ phiếu ưu đãi, cam kết cổ tức, đòn bẩy và biến động giá Bitcoin có thể dẫn đến bán ép trong điều kiện thanh khoản căng thẳng. Bài học chính là một lời cảnh báo về rủi ro đòn bẩy và tính dễ tổn thương trong cấu trúc tài chính phức tạp, hơn là bằng chứng về khả năng trả nợ của công ty phát hành.

bitcoinist1 giờ trước

Việc Giảm Mạnh STRC Của Strategy Cho Thấy Rủi Ro Đằng Sau Các Sản Phẩm Tín Dụng Liên Kết Bitcoin

bitcoinist1 giờ trước

Tòa Án Tối Cao Australia Trao Thắng Lợi Lớn Cho ASIC Trong Vụ Án Sản Phẩm Yield Tiền Mã Hóa Block Earner

Tòa án Tối cao Úc đã phán quyết nhất trí ủng hộ Ủy ban Chứng khoán và Đầu tư Úc (ASIC) trong vụ kiện chống lại công ty Block Earner. Tòa án xác định sản phẩm "Earner" cố định lợi suất lịch sử của Block Earner là một sản phẩm tài chính và phái sinh, do đó yêu cầu công ty phải có Giấy phép Dịch vụ Tài chính Úc để cung cấp sản phẩm này. Vụ việc giờ sẽ được chuyển lại cho Tòa án Liên bang Toàn thể để xác định hình phạt. Phán quyết này rất quan trọng vì nó áp dụng luật dịch vụ tài chính truyền thống của Úc vào một sản phẩm tiền mã hóa hứa hẹn lợi suất. Nó thiết lập một tiền lệ rõ ràng rằng các sản phẩm cung cấp lợi nhuận có cấu trúc hoặc có đặc điểm kinh tế giống phái sinh có thể phải đáp ứng các yêu cầu cấp phép, bất kể được gắn nhãn là gì. Mặc dù sản phẩm "Earner" cụ thể này không còn được cung cấp, phán quyết cung cấp cho ASIC cơ sở pháp lý vững chắc cho các hành động tương tự trong tương lai, phù hợp với xu hướng toàn cầu của các cơ quan quản lý trong việc đưa các sản phẩm tiền mã hóa vào khuôn khổ quy định hiện hành. Đối với các công ty tiền mã hóa, bài học là cần xem xét kỹ lưỡng bản chất kinh tế của sản phẩm. Đối với người tiêu dùng, phán quyết nhắc nhở rằng các sản phẩm sinh lợi tiềm ẩn rủi ro và khác biệt so với việc nắm giữ tiền mã hóa thông thường. Phán quyết này vạch ra một ranh giới quy định rõ ràng hơn cho ngành công nghiệp tiền mã hóa tại Úc.

bitcoinist4 giờ trước

Tòa Án Tối Cao Australia Trao Thắng Lợi Lớn Cho ASIC Trong Vụ Án Sản Phẩm Yield Tiền Mã Hóa Block Earner

bitcoinist4 giờ trước

Blockchain.com Mở Rộng Truy Cập Cổ Phiếu Token Hóa Thông Qua Ondo Finance

Blockchain.com đã mở rộng khả năng tiếp cận cổ phiếu và ETF được mã hóa (tokenized) của Hoa Kỳ thông qua ví tiền điện tử của mình, nhờ vào quan hệ đối tác với Ondo Finance. Động thái này mang các tài sản trong thế giới thực được quản lý vào giao diện quen thuộc dành cho người dùng tiền điện tử đủ điều kiện, cho phép họ nắm giữ các sản phẩm truyền thống như cổ phiếu bên cạnh stablecoin và công cụ DeFi. Ondo Finance, một tên tuổi nổi bật trong thị trường tài sản thực được mã hóa (RWA), đóng vai trò trung tâm bằng cách cung cấp các sản phẩm tài chính quen thuộc dưới dạng token. Sự hợp tác này giải quyết thách thức về phân phối, đưa các tài sản được mã hóa trực tiếp đến người dùng ví tiền điện tử hiện có. Một khía cạnh quan trọng là mục tiêu phục vụ người dùng bên ngoài Hoa Kỳ, nơi việc tiếp cận thị trường vốn Mỹ có thể bị hạn chế. Giải pháp này cung cấp một lựa chọn thay thế mang tính bản địa hóa cho tiền điện tử, tích hợp vào cơ sở hạ tầng tài chính mà người dùng toàn cầu đã quen thuộc. Bối cảnh thị trường RWA đang trở nên cạnh tranh hơn, với nhiều nền tảng tranh giành để trở thành cổng kết nối chính cho tài sản truyền thống được mã hóa. Blockchain.com và Ondo đặt cược rằng việc tích hợp liền mạch vào ví tiền điện tử có thể cung cấp trải nghiệm đơn giản và đáng tin cậy, giúp thu hẹp khoảng cách so với các sản phẩm môi giới truyền thống.

bitcoinist6 giờ trước

Blockchain.com Mở Rộng Truy Cập Cổ Phiếu Token Hóa Thông Qua Ondo Finance

bitcoinist6 giờ trước

CPU trở lại bàn đàm phán, một vở kịch "thăng tiến" trị giá 1700 tỷ USD bắt đầu

CPU đang trở lại trung tâm sân khấu trong kỷ nguyên AI, dẫn dắt một cơ hội thị trường trị giá 1700 tỷ USD vào năm 2030. Việc chuyển dịch từ huấn luyện sang suy luận (inference) và AI Agent đã làm thay đổi hoàn toàn vai trò của CPU. Trong các tác vụ Agent phức tạp, CPU hiện đảm nhận hơn 70% khối lượng công việc, xử lý luồng điều khiển, gọi công cụ và quản lý bộ nhớ (KV Cache). Tỷ lệ phối hợp GPU:CPU đang thu hẹp từ 1:8 xuống khoảng 1:4, thậm chí 1:1 trong một số trường hợp. Nhu cầu này dẫn đến việc thiếu hụt nguồn cung và lần tăng giá đầu tiên sau hơn một thập kỷ cho server CPU của Intel và AMD, với mức tăng 10-15%. Thị trường CPU server dự kiến tăng từ khoảng 300 tỷ USD năm 2025 lên 1700 tỷ USD vào năm 2030, được thúc đẩy bởi ba phân khúc: điện toán đám mây truyền thống, CPU head-node cho cụm AI và CPU node độc lập cho Agent – một thị trường hoàn toàn mới. NVIDIA cũng đã tham gia cuộc chơi với CPU Vera dựa trên kiến trúc ARM, nhấn mạnh tầm quan trọng chiến lược của CPU. Tại Trung Quốc, các công ty như Hygon (Hải Quang) và Huawei đang nắm bắt cơ hội từ làn sóng nhu cầu này và chương trình thay thế nhập khẩu (xinchuang), với hệ sinh thái phần mềm đang trưởng thành nhanh chóng.

marsbit6 giờ trước

CPU trở lại bàn đàm phán, một vở kịch "thăng tiến" trị giá 1700 tỷ USD bắt đầu

marsbit6 giờ trước

TechFlow Tình Báo: Giám đốc AI của AMD công khai chỉ trích Claude Code 'ngày càng ngốc nghếch và lười biếng', Trump tuyên bố eo biển Hormuz sẽ ngừng bắn toàn diện nhưng vẫn còn 80 quả thủy lôi chờ dọn

TechFlow Intelligence: Tóm tắt tin tức công nghệ & tài chính ngày... * **AI & Mô hình lớn:** Giám đốc AI của AMD chỉ trích Claude Code trở nên "kém thông minh và lười biếng". Z.AI (Trung Quốc) ra mắt GLM-5.2, tuyên bố ngang bằng Claude Opus mà không dùng chip NVIDIA. SK Telecom (Hàn Quốc) bị điều tra về chuyển giao công nghệ với Anthropic. DeepSeek gây sốt trên Zhihu với tính năng đa phương tiện mới. Gemini bị chỉ trích trên Reddit vì đưa lời khuyên sai trong tình huống lừa đảo. * **Chip & Phần cứng:** MIT tự viết hệ điều hành để nghiên cứu chip. Mỹ cáo buộc máy quang khắc EUV tối tân của ASML có thể đã tới Trung Quốc, ASML phủ nhận. Amazon đàm phán bán chip AI tự thiết kế ra bên ngoài. iPhone phiên bản kỷ niệm 20 năm của Apple dự kiến dùng quy trình N2P độc quyền từ TSMC. * **An ninh & Công ty:** Phát hiện 10.000 kho GitHub phân phối phần mềm độc hại. Apple vá lỗ hổng nghe lén nghiêm trọng trên tai nghe Beats. Nhiều kỹ sư Amazon bị điều tra nội bộ vì chỉ trích việc mở rộng trung tâm dữ liệu AI. Microsoft và Amazon có thể đối mặt với điều tra chống độc quyền khắt khe từ EU. * **Web3 / Crypto:** 0G Labs đạt cột mốc 100 tỷ token suy luận AI phi tập trung. Sàn Hàn Quốc Bithumb niêm yết RE, trong khi Upbit hủy niêm yết KERNEL. * **Thị trường & Địa chính trị:** Cổ phiếu bán dẫn Mỹ tăng mạnh, Intel tăng 10.6%, trong khi SpaceX giảm. Eo biển Hormuz chính thức mở cửa theo thỏa thuận Mỹ-Iran, nhưng hiệp hội vận tải dầu cảnh báo vẫn còn khoảng 80 quả thủy lôi trong luồng chính. Gần 80 tàu chở dầu chờ tín hiệu an toàn để xuất phát. Iran hoãn chuyến công du tới Thụy Sĩ, làm dấy lên nghi ngờ về tiến trình hòa bình.

marsbit6 giờ trước

TechFlow Tình Báo: Giám đốc AI của AMD công khai chỉ trích Claude Code 'ngày càng ngốc nghếch và lười biếng', Trump tuyên bố eo biển Hormuz sẽ ngừng bắn toàn diện nhưng vẫn còn 80 quả thủy lôi chờ dọn

marsbit6 giờ trước

Giao dịch

Giao ngay
Hợp đồng Tương lai
活动图片