ในการคำนวณถ้ามีหุ้นไม่กี่ตัวยงพอทนใช้เครื่องคิดเลขคำนวณได้ แต่ถ้าหุ้นเป็น 10 ต้องให้คอมช่วย
ขอบคุณที่มาของ code จากบล็อกของ Bernard Brenyah , Markowitz’s Efficient Frontier in Python
https://medium.com/python-data/effient-frontier-in-python-34b0c3043314
https://medium.com/python-data/efficient-frontier-portfolio-optimization-with-python-part-2-2-2fe23413ad94
เรื่องผลตอบแทนและความเสี่ยงของพอร์ท เริ่มต้นแนวคิดการคำนวณมาจาก อ. Markowitz ได้นำเสนอทฤษฎี modern portfolio theory ในปี 1950 ไอเดียคือนำเสนอแนวคิดการวัดความเสี่ยงด้วยค่าความแปรปรวน วิธีง่ายๆแต่นึกกันไม่ถึง
ทีนี้ก็จับหุ้นหลายๆตัวมาใส่พอร์ท สิ่งที่เกิดขึ้นแล้วพลิกโลกการลงทุนคือ หุ้นหลายตัวมีความสัมพันธ์ทิศทางตรงข้ามกัน พอจับมารวมกันแล้วความเสี่ยงของพอร์ทลดลงได้ โดยที่สินทรัพย์ก็ขึ้นๆลงๆตามธรรมชาติของมันเหมือนเดิม
ทีนี้พอลองปรับสัดส่วนของหุ้นแต่ละตัวในพอร์ทดู ก็พบกว่าผลตอบแทน และความเสี่ยงของพอร์ทก็เปลี่ยนไปเรื่อยๆ ทำให้เราสามารถสร้างพอร์ทที่ผลตอบแทนสูงสุดโดยความเสี่ยงน้อยที่สุดได้
แนวคิดตรงนี้ได้ต่อยอดไปเป็นเรื่อง CAPM จน อ. ได้รางวัลโนเบลไปเลย
ผลตอบแทนและความเสี่ยงของพอร์ท ที่ระดับสัดส่วนของหุ้นต่างๆกัน |
เริ่มต้นกำหนดหุ้นที่จะดึง แล้วเลือกจุดเริ่มต้นกับสิ้นสุด คนที่โหลด code ไปใช้เปลี่ยนแค่ชื่อหุ้นตรงนี้พอ และอย่าลืมใส่ .bk ข้างหลังหุ้นด้วยถ้าจะโหลดหุ้นไทย
stockselected = ['chg.bk','ever.bk','bwg.bk','ekh.bk','rph.bk']
start="2018-06-01"
end="2018-11-30"
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas_datareader import data as pdr
import fix_yahoo_finance as yf
yf.pdr_override() # ตัวแก้pandas_datareader ให้โหลดจาก yahoo finance ได้
# download dataframe
data = pdr.get_data_yahoo(stockselected,start,end )
data = data['Adj Close']
data.head()
# คำนวณผลตอบแทนรายวันและรายปี
returns_daily = data.pct_change().dropna()
returns_annual = returns_daily.mean() * 250
returns_annual*100
# คำนวณ covariance ของผลตอบแทนหุ้น
cov_daily = returns_daily.cov()
cov_annual = cov_daily * 250
cov_annual*100
# empty lists to store returns, volatility and weights of imiginary portfolios
port_returns = []
port_volatility = []
stock_weights = []
# set the number of combinations for imaginary portfolios
num_assets = len(stockselected)
num_portfolios = 50000
# populate the empty lists with each portfolios returns,risk and weights
for single_portfolio in range(num_portfolios):
weights = np.random.random(num_assets)
weights /= np.sum(weights)
returns = np.dot(weights, returns_annual)
volatility = np.sqrt(np.dot(weights.T, np.dot(cov_annual, weights)))
port_returns.append(returns)
port_volatility.append(volatility)
stock_weights.append(weights)
# a dictionary for Returns and Risk values of each portfolio
portfolio = {'Returns': port_returns,
'Volatility': port_volatility}
# extend original dictionary to accomodate each ticker and weight in the portfolio
for counter,symbol in enumerate(stockselected):
portfolio[symbol+' Weight'] = [Weight[counter] for Weight in stock_weights]
# make a nice dataframe of the extended dictionary
df = pd.DataFrame(portfolio)
# get better labels for desired arrangement of columns
column_order = ['Returns', 'Volatility'] + [stock+' Weight' for stock in stockselected]
# reorder dataframe columns
df = df[column_order]
# plot the efficient frontier with a scatter plot
plt.style.use('seaborn')
df.plot.scatter(x='Volatility', y='Returns', figsize=(10, 8), grid=True)
plt.xlabel('Volatility (Std. Deviation)')
plt.ylabel('Expected Returns')
plt.title('Efficient Frontier')
plt.show()
นอกจากนั้นสามารถประยุกต์ได้อีก จากภาพเป็นการไล่สีตาม sharp ratio และการหาน้ำหนักของพอร์ทที่ทำให้ได้รับ ผลตอบแทนของพอร์ทสูงสุด และ ความผันผวนของพอร์ทต่ำสุด
การหาพอร์ทเหมาะสมที่มี ผลตอบแทนสูงสุด และค่าความเสี่ยงต่ำสุด |
code ใน google colab ไปเล่นกันได้คร้าบ
https://colab.research.google.com/drive/1zVjgdYC_oqbg4I8Zt6twis_Ggr3Wn9vL
น่าอ่านเพิ่มเติม
https://blog.quantopian.com/markowitz-portfolio-optimization-2/
https://towardsdatascience.com/efficient-frontier-portfolio-optimisation-in-python-e7844051e7f
http://ahmedas91.github.io/blog/2016/03/01/efficient-frontier-with-python/
☀หลักสูตรวิเคราะห์หุ้นด้วยปัจจัยพื้นฐาน☀
✅เจาะลึกหุ้นอย่างเซียน เห็นผลจริง100% สไตร์ อ.ภัทร
✅Workshop !! ทำจริง เห็นผลจริง พิสูจน์ได้
✅เรียนคลาสเล็ก ถามได้ทุกคำถามคาใจ
☀เรียนแล้วได้อะไร☀
✅10 จุุดสำคัญอ่านงบการเงิน วิเคราะห์ธุรกิจไม่เสียเวลา
✅ปัจจัยเร่ง ให้หุ้นวิ่ง และสัญญาณยืนยันในงบการเงิน
✅ประมาณราคาเหมาะสม เห็นเป้าราคาหุ้นตั้งแต่วันที่ซื้อ
✅เคล็ดลับสแกนหุ้น ถูก ดี กำไรโต
🔈สอนโดย อ ภัทรธร ช่อวิชิต
นักลงทุนอิสระ เจ้าของผลงานหนังสือ คุ้ยแคะแกะหุ้นเด้ง และเจาะหุ้นร้อนสแกนหุ้นเด้ง
=======================================
🔈รายละเอียดหลักสูตร วันเวลา
investidea.in.th/p/value-investor
=======================================
☎ติดต่อสอบถามและลงทะเบียน (รับจำนวนจำกัด)
มือถือ: 0865035023
ข้อความ; www.facebook.com/messages/investidea.in.th/
line id; pat4310
=======================================
☀เนื้อหาหลักสูตร☀
✅แหล่งข้อมูลการวิเคราะห์ปัจจัยพื้นฐาน งบการเงิน คำอธิบายงบ ตัวเลขเศรษฐกิจ
✅วิเคราะห์ ปัจจัยเชิงคุณภาพ ผลกระทบต่องบการเงิน และแนวโน้มราคา
✅โครงสร้างงบดุล และลักษณะธุรกิจ จุดสำคัญที่ต้องดูในงบการเงิน
✅งบกำไรขาดทุน ลักษณะงบการเงินที่ดี
✅งบกระแสเงินสด และความสัมพันธ์กับวงจรธุรกิจ
✅การค้นปัญหาธุรกิจใน 1 นาที ด้วยอัตราส่วนทางการเงิน
✅ปัจจัยทางการเงินที่มีผลต่อทิศทางราคาหุ้น
✅การประเมินมูลค่าหุ้นด้วย PE ratio เทคนิคการใช้งานกับแต่ละอุตสาหกรรม
✅ดูความเห็นของนักลงทุนส่วนใหญ่ผ่านการเคลื่อนไหวของราคา
=======================================
☎ติดต่อสอบถามและลงทะเบียน (รับจำนวนจำกัด)
มือถือ: 0865035023
ข้อความ; www.facebook.com/messages/investidea.in.th/
line id; pat4310
ไม่มีความคิดเห็น :
แสดงความคิดเห็น
สงสัยอะไรถามได้ครับผม