ETF筛选流程與核心要點整理

robot
摘要生成中
  • 一、基礎數據獲取與初步篩選

獲取ETF列表:通過get_all_securities([‘etf’])獲取全市場ETF,篩選2013年1月1日前成立的(start_date < 2023-01-01),確保歷史數據充足。
排除低流動性ETF:手動剔除成交額均值過低的特定ETF(如159003.XSHE招商快線ETF、159005.XSHE匯添富快錢ETF等,成交額均值≤2.92kw)。

  • 二、ETF日線數據與收益率計算
    數據範圍:獲取截至當前日期(today)前240個交易日的收盤價數據。
    收益率處理:計算日收益率(pchg = close.pct_change()),形成ETF收益率矩陣(prices,行=交易日,列=ETF代碼)。
  • 三、K-Means聚類去重(基於走勢相似性)
    聚類目標:將走勢相似的ETF聚為一類,減少重複標的。
    參數設置:聚類數n_clusters=30(避免簇太少導致不相似ETF誤聚),使用KMeans算法,隨機種子random_state=42。
    簇內篩選:每個簇保留成立時間最早的ETF,原因:
    成立早→成交額通常更大(流動性更好);
    成立早→歷史數據更多(利於模型訓練)。
  • 四、輪廓係數評估聚類效果
    計算聚類輪廓係數:0.4511880967361387(中等水平,說明簇內緊密度與簇間分離度尚可,但需進一步優化)。
  • 五、相關係數二次篩選(進一步降低相關性)
    相關係數矩陣:計算ETF收益率的相關係數矩陣(corr = prices[df.code].corr())。
    高相關對處理:篩選相關係數>0.85的ETF對,每對中僅保留成立時間較早的ETF,剔除其餘(如剔除159922.XSHE、512100.XSHG等)。
  • 六、可選:篩選成立較晚的ETF(提升數據質量)
    設定閾值:剔除2020年後成立的ETF(如513060.XSHG恒生醫療、515790.XSHG光伏ETF等),確保剩餘ETF歷史數據更豐富(適用於模型訓練場景)。
  • 七、注意事項與補充建議
    國債ETF特殊處理:若用於模型訓練,需剔除511010.XSHE國債ETF——其走勢接近直線(類似餘額寶),波動極小,會干擾模型對波動特徵的學習,且無預測必要性。
    下跌ETF的取捨:結果中可能包含長期下跌ETF(如醫藥ETF、地產ETF),是否剔除取決於策略目標:
    若追求穩健收益可剔除;
    若策略在含下跌ETF時仍表現良好,可能說明策略魯棒性強(但需注意“未來函數”風險,無法預知下跌ETF是否反轉)。
    可視化驗證:繪製剩餘ETF走勢圖(如2017年以來收盤價),人工檢查相關性是否符合預期(低相關且分佈合理)。
    最終篩選邏輯總結
    透過“初始篩選→聚類去重→相關係數二次篩選→(可選)成立時間篩選”四步,得到流動性好、走勢低相關、歷史數據充足的ETF池,核心目標是為策略或模型提供多樣化、高質量的基礎標的。
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 打賞
  • 留言
  • 轉發
  • 分享
留言
請輸入留言內容
請輸入留言內容
暫無留言