top of page

หาปัจจัยที่กำหนด Alpha ด้วยการทดสอบนัยสำคัญ

ในบทความที่แล้วเราได้พูดถึงแบบจำลองเชิงปัจจัยกันไปเบื่องต้นแล้ว ในบทความนี้เราจะมาพูดถึงการหาปัจจัยที่สามารถสร้าง Alpha ได้ซึ่งถือว่าเป็นงานที่สำคัญในการลงทุนเชิงปัจจัย



Classic Factor

Factor Investing มีประวัติศาสตร์ที่ยาวนานหลายทศวรรษ แนวคิดของการลงทุนด้วยปัจจัยเกิดจากการวิจัยทางวิชาการด้านการเงินและได้พัฒนาเป็นกลยุทธ์การลงทุนที่ได้รับการยอมรับอย่างกว้างขวาง


ทศวรรษที่ 1970 - 1980: รากฐานของการลงทุนด้านปัจจัยถูกริเริ่มโดย Eugene Fama และ Kenneth French ที่สร้าง Three-Factor Model ในทศวรรษที่ 1990 หากเราไม่นับ CAPM เป็น Factor Investing Three-Factor Model ถือเป็นแบบจำลองเชิงปัจจัยแรกโดย 3 ปัจจัย ได้แก่

  1. ความเสี่ยงด้านตลาด (ความเสี่ยงเชิงระบบ): ปัจจัยแรกในแบบจำลองคือความเสี่ยงด้านตลาด ซึ่งแสดงโดยผลตอบแทนของตลาดโดยรวม ปัจจัยนี้รวบรวมความเสี่ยงอย่างเป็นระบบที่มีอยู่ในการลงทุนในตลาดหุ้นโดยรวม ตาม CAPM ปัจจัยความเสี่ยงด้านตลาดเพียงอย่างเดียวควรอธิบายความแตกต่างของผลตอบแทนที่คาดหวังในหุ้น

  2. ปัจจัยด้านขนาด (SMB): ปัจจัยที่สองคือปัจจัยด้านขนาด หรือที่เรียกว่าปัจจัย Small Minus Big (SMB) อยู่บนข้อสังเกตในอดีตว่าหุ้นขนาดเล็กมีแนวโน้มที่จะมีประสิทธิภาพดีกว่าหุ้นขนาดใหญ่ในระยะยาว ปัจจัยด้านขนาดสะท้อนถึงส่วนชดเชยความเสี่ยงที่เกี่ยวข้องกับการลงทุนในบริษัทขนาดเล็กที่มีศักยภาพในการเติบโตสูงกว่าและมีความเสี่ยงสูง

  3. ปัจจัยด้านมูลค่า (HML): ปัจจัยที่สามคือปัจจัยด้านคุณค่า ซึ่งเรียกว่าปัจจัยสูงลบต่ำ (HML) โดยรวบรวมแนวโน้มในอดีตของหุ้นมูลค่า (หุ้นที่มีอัตราส่วนราคาต่อบัญชีต่ำ) ไปสู่หุ้นเติบโตที่มีประสิทธิภาพดีกว่า (หุ้นที่มีอัตราส่วนราคาต่อบัญชีสูง) ปัจจัยด้านมูลค่าแสดงถึงเบี้ยประกันภัยที่เกี่ยวข้องกับการลงทุนในบริษัทที่มีมูลค่าต่ำกว่าเมื่อเทียบกับปัจจัยพื้นฐาน


Factor Investing ถูกใช้แพร่หลายมากขึ้นเมื่อ MSCI พัฒนา MSCI Factor Model ซึ่งมีจุดมุ่งหมายเพื่อรวบรวมและวิเคราะห์ปัจจัยที่เป็นระบบที่ผลักดันผลตอบแทนของหุ้น ได้รับการออกแบบมาเพื่อให้นักลงทุนได้รับข้อมูลเชิงลึกเกี่ยวกับแหล่งที่มาของความเสี่ยงและผลตอบแทนในตลาดตราสารทุนนอกเหนือจากปัจจัยตลาดแบบดั้งเดิม แบบจำลองปัจจัย MSCI รวมเอาปัจจัยต่างๆ ที่ได้รับการระบุผ่านการวิจัยเชิงประจักษ์ว่ามีอิทธิพลในการอธิบายการเคลื่อนไหวของราคาหุ้นและสร้างผลตอบแทนส่วนเกินรวมถึงเป็นการจัดประเภทของหุ้นให้อยู่ในประเภทต่างๆ



การทดสอบ

เราจะมาเข้าใจถึงการทดสอบเชิงสถิติเพื่อหาปัจจัยที่มีผลต่อผลตอบแทนกัน


Chi2 check

การทดสอบไคสแควร์เป็นการทดสอบสมมติฐานทางสถิติที่ใช้เพื่อตรวจสอบว่ามีความสัมพันธ์ที่มีนัยสำคัญระหว่างตัวแปรเชิงหมวดหมู่สองตัวหรือไม่ ในบริบทของการเลือกคุณลักษณะ การทดสอบไคสแควร์สามารถใช้เพื่อประเมินความสัมพันธ์ระหว่างคุณลักษณะแต่ละรายการกับตัวแปรเป้าหมาย และระบุคุณลักษณะที่สำคัญที่สุดสำหรับงานการจัดประเภทหรือการถดถอย


การทดสอบไคสแควร์ทำงานโดยการเปรียบเทียบการแจกแจงที่สังเกตได้ของข้อมูลกับการแจกแจงที่คาดไว้ โดยสมมติว่าไม่มีความสัมพันธ์ระหว่างตัวแปร การทดสอบจะสร้างสถิติที่เรียกว่าค่าไคสแควร์ ซึ่งจะวัดความแตกต่างระหว่างการแจกแจงที่สังเกตได้และการแจกแจงที่คาดไว้ ค่าไคสแควร์สูงบ่งชี้ว่ามีความสัมพันธ์ที่สำคัญระหว่างตัวแปร ขณะที่ค่าต่ำแสดงว่าไม่มีการเชื่อมโยง


ใน Python ไลบรารี scikit-learn ให้การดำเนินการทดสอบไคสแควร์ที่สามารถใช้สำหรับการเลือกคุณสมบัติ สามารถใช้คลาส SelectKBest จากโมดูล sklearn.feature_selection เพื่อเลือกคุณสมบัติ K อันดับต้น ๆ ตามคะแนนไคสแควร์ นี่คือตัวอย่างโค้ดที่แสดงวิธีใช้การทดสอบไคสแควร์สำหรับการเลือกคุณสมบัติ:


from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2


# Extract the features and target variable
X = data
y = target
# Apply the chi-squared test to select the top 2 features
selector = SelectKBest(chi2, k=2)
X_new = selector.fit_transform(X, y)
# Print the scores and p-values of each feature
scores = selector.scores_
pvalues = selector.pvalues_
for i in range(len(scores)):
    print(f"Feature {i}: score={scores[i]}, p-value={pvalues[i]}")
# Print the indices of the selected features
mask = selector.get_support() # List of boolean values
selected = []
for i in range(len(mask)):
    if mask[i]:
        selected.append(i)
print(f"Selected features: {selected}")

ในตัวอย่างนี้ เราโหลดชุดข้อมูลม่านตาและแยกคุณสมบัติและตัวแปรเป้าหมาย จากนั้นเราใช้การทดสอบไคสแควร์เพื่อเลือกคุณสมบัติ 2 อันดับแรกโดยใช้คลาส SelectKBest ที่มี chi2 เป็นฟังก์ชันการให้คะแนน เราพิมพ์คะแนนและค่า p ของแต่ละคุณลักษณะ และดัชนีของคุณลักษณะที่เลือก


แอตทริบิวต์คะแนนของวัตถุตัวเลือกประกอบด้วยคะแนนไคสแควร์สำหรับแต่ละคุณลักษณะ และแอตทริบิวต์ pvalues มีค่า p ที่สอดคล้องกัน คะแนนสูงและค่า p ต่ำบ่งชี้ว่าคุณลักษณะมีความเกี่ยวข้องสูงกับตัวแปรเป้าหมาย และอาจเป็นตัวทำนายที่สำคัญ


Anova test

ANOVA (การวิเคราะห์ความแปรปรวน) เป็นวิธีการทางสถิติที่ใช้ในการเปรียบเทียบค่าเฉลี่ยของข้อมูลตั้งแต่สองกลุ่มขึ้นไป การทดสอบ ANOVA จะวิเคราะห์ว่าความแตกต่างระหว่างค่าเฉลี่ยของกลุ่มมีนัยสำคัญทางสถิติหรือเกิดจากโอกาสสุ่ม


ในบริบทของการเลือกคุณลักษณะ สามารถใช้ ANOVA เพื่อประเมินความสัมพันธ์ระหว่างคุณลักษณะแต่ละรายการกับตัวแปรเป้าหมาย และระบุคุณลักษณะที่สำคัญที่สุดสำหรับงานการจัดประเภทหรือการถดถอย


ใน Python ไลบรารี scikit-learn มีการใช้งาน ANOVA F-test ที่สามารถใช้สำหรับการเลือกคุณสมบัติ สามารถใช้คลาส SelectKBest จากโมดูล sklearn.feature_selection เพื่อเลือกคุณสมบัติ K อันดับต้น ๆ ตามคะแนน ANOVA F ต่อไปนี้คือตัวอย่างข้อมูลโค้ดที่แสดงวิธีใช้ ANOVA F-test สำหรับการเลือกคุณลักษณะ:


from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import f_classif

# Extract the features and target variable
X = data
y = target

# Apply the ANOVA F-test to select the top 2 features
selector = SelectKBest(f_classif, k=2)
X_new = selector.fit_transform(X, y)

# Print the scores and p-values of each feature
scores = selector.scores_
pvalues = selector.pvalues_
for i inrange(len(scores)):
print(f"Feature {i}: score={scores[i]}, p-value={pvalues[i]}")

# Print the indices of the selected features
mask = selector.get_support() # List of boolean values
selected = []
for i inrange(len(mask)):
if mask[i]:
        selected.append(i)
print(f"Selected features: {selected}")

ในตัวอย่างนี้ เราโหลดชุดข้อมูลม่านตาและแยกคุณสมบัติและตัวแปรเป้าหมาย จากนั้นเราจะใช้ ANOVA F-test เพื่อเลือกคุณสมบัติ 2 อันดับแรกโดยใช้คลาส SelectKBest ที่มี f_classif เป็นฟังก์ชันการให้คะแนน เราพิมพ์คะแนนและค่า p ของแต่ละคุณลักษณะ และดัชนีของคุณลักษณะที่เลือก


แอตทริบิวต์คะแนนของวัตถุตัวเลือกประกอบด้วยคะแนน ANOVA F สำหรับแต่ละคุณลักษณะ และแอตทริบิวต์ pvalues มีค่า p ที่สอดคล้องกัน คะแนนสูงและค่า p ต่ำบ่งชี้ว่าคุณลักษณะมีความเกี่ยวข้องสูงกับตัวแปรเป้าหมาย และอาจเป็นตัวทำนายที่สำคัญ


information coefficient

ค่าสัมประสิทธิ์ข้อมูล (IC) เป็นตัววัดความสำคัญของปัจจัยทางการเงินเชิงปริมาณที่ใช้กันอย่างแพร่หลาย เป็นการวัดทางสถิติที่วัดระดับความสัมพันธ์ระหว่างปัจจัยที่กำหนดกับผลตอบแทนของหุ้นในอนาคต โดยเฉพาะอย่างยิ่ง จะวัดระดับที่ปัจจัยทำนายผลตอบแทนในอนาคต หลังจากปรับความเอนเอียงอย่างเป็นระบบในข้อมูลแล้ว


โดยทั่วไป IC คำนวณโดยการเปรียบเทียบผลตอบแทนที่คาดการณ์ของปัจจัยหนึ่งกับผลตอบแทนจริงในช่วงเวลาที่กำหนด IC ที่เป็นบวกบ่งชี้ว่าปัจจัยดังกล่าวมีความสัมพันธ์เชิงบวกกับผลตอบแทนในอนาคต ในขณะที่ IC ที่เป็นลบบ่งชี้ว่ามีความสัมพันธ์เชิงลบ


มีหลายวิธีในการคำนวณ IC แต่วิธีหนึ่งที่ใช้กันทั่วไปคือการใช้แบบจำลองการถดถอยเชิงเส้น ในแนวทางนี้ ขั้นแรก เราจะถอยปัจจัยเทียบกับผลตอบแทนในอนาคต จากนั้นจึงคำนวณค่าสัมประสิทธิ์สหสัมพันธ์ระหว่างผลตอบแทนที่คาดการณ์และผลตอบแทนจริง


ใน Python ไลบรารี scikit-learn มีโมเดลการถดถอยหลายรูปแบบที่สามารถใช้ในการคำนวณ IC ตัวอย่างเช่น สมมติว่าเรามีชุดข้อมูลที่มีปัจจัย x และตัวแปรเป้าหมาย y แทนผลตอบแทนในอนาคต เราสามารถใส่โมเดลการถดถอยเชิงเส้นโดยใช้คลาส LinearRegression จากโมดูล sklearn.linear_model ดังนี้:


from sklearn.linear_model import LinearRegression
from scipy.stats import pearsonr# Load the data
x = ...  # factor
y = ...  # target variable# Fit the linear regression model
model = LinearRegression().fit(x.reshape(-1, 1), y)# Calculate the IC
predicted_y = model.predict(x.reshape(-1, 1))
ic, _ = pearsonr(predicted_y, y)


ในตัวอย่างนี้ เราโหลดข้อมูลและปรับโมเดลการถดถอยเชิงเส้นให้พอดีโดยใช้คลาส LinearRegression จากนั้นเราจะคำนวณผลตอบแทนที่คาดการณ์ไว้โดยใช้วิธีการคาดการณ์ของแบบจำลอง และคำนวณ IC โดยใช้ฟังก์ชัน pearsonr จากโมดูล scipy.stats


เป็นที่น่าสังเกตว่า IC ไม่ใช่การวัดความสำคัญของปัจจัยที่สมบูรณ์แบบ เนื่องจากมันจับเฉพาะความสัมพันธ์เชิงเส้นระหว่างปัจจัยและผลตอบแทนในอนาคตเท่านั้น อาจมีความสัมพันธ์แบบไม่เชิงเส้นและอาจพลาดโดย IC นอกจากนี้ IC อาจได้รับอิทธิพลจากค่าผิดปกติหรือความผิดปกติอื่นๆ ในข้อมูล ดังนั้นจึงเป็นสิ่งสำคัญที่จะใช้ IC ร่วมกับมาตรการอื่นๆ ที่มีความสำคัญต่อปัจจัย เช่น ค่าสัมประสิทธิ์ความสำคัญของคุณลักษณะที่กล่าวถึงในคำตอบก่อนหน้าของฉัน เพื่อให้ได้รับความเข้าใจที่ครอบคลุมมากขึ้นเกี่ยวกับความสำคัญของปัจจัยที่กำหนด


ส่งท้าย

เป้าหมายของการทดสอบปัจจัยสำคัญคือการเข้าใจพฤติกรรมหรือความสัมพันธ์บางอย่าง ดังนั้นเราต้องระวังปัญหาจากการเปลี่ยนแปลงของโครงสร้างตลาดหรือความสัมพันธ์ของตัวแปรต่าง ๆ รวมถึงมองไปข้างหน้าด้วยอคติที่อาจทำให้เราเข้าใจผิดในบางพฤติกรรม

Note Book:

https://colab.research.google.com/drive/1UOiwAym-_Gvzj7qQ7BGjE6mCB8cQdppb?usp=sharing





ดู 49 ครั้ง0 ความคิดเห็น

โพสต์ล่าสุด

ดูทั้งหมด

Hidden Markov Models

Comments


bottom of page