如何對股票進行分群並建構親和矩陣?
我的目標是找到股票集群。“親和力”矩陣將定義點的“接近度”。本文提供了更多背景資訊。最終目的是研究 ETF 內部和類似 ETF 之間的“凝聚力”,以尋找套利的可能性。最終,如果一切順利,這可能會導致創建風險建模或估值工具。目前該項目處於提案/POC 階段,因此資源有限。
我找到了這個 Python範例,用於與相關文件進行分群。該程式碼使用開盤價和收盤價差異的相關性作為親和度矩陣的值。我更喜歡使用平均回報和回報的標準差。這可以被視覺化為一個二維空間,以平均值和標準偏差為維度。然後,我將計算數據點(股票)之間的“距離”,而不是相關性,並用距離填充親和力矩陣。距離函式的選擇仍然是一個懸而未決的問題。計算數據點之間的距離而不是相關性是否有效?
如果可以,我可以將這種方法擴展到更多維度,例如股息收益率或市盈率等比率嗎?
我用不同數量的參數和不同的距離函式進行了一些實驗,結果對於 900 隻股票的樣本量,產生了從 1 到超過 300 的不同數量的集群。樣本包括在紐約證券交易所和納斯達克上市的大中型股。對於人們應該期望的集群數量是否有經驗法則?
您應該考慮使用非監督式學習算法,例如 K 近鄰 (‘KNN’)。
KNN 將測量您空間中觀測值之間的距離。您可以並且可能應該考慮替代距離函式(除了歐幾里得),特別是如果您對具有異常值的返回等特徵進行分群。那裡有相當多的非監督式分群算法 - 請參閱此處。您當然可以在這些算法中包含諸如庫存特徵之類的特徵。您還可以包括證券相對於各種風險因素的貝塔。這將允許您擷取相關空間中的距離,因為基於安全性的共變異數矩陣可以表示為:(因子的貝塔)的叉積 * 因子返回的共變異數矩陣 * 轉置(因子的貝塔)。
我會花時間思考特徵的適當選擇(哪些特徵是穩定的?哪些特徵預測風險或回報?哪些特徵集提供了獨特的資訊來源?什麼是不變數?)和距離函式的選擇。
此外,如果您正在混合具有不同單位尺度的特徵(即回報、貝塔、變異數),那麼您需要對輸入進行正規化/預處理,否則具有最高變異數的特徵將成為分群的主要基礎。或者,您可以為您的分群堅持一類特徵,以便您對解釋結果有更多的直覺。