เพิ่ม Drift เข้าไป
ในแบบฝึกหัดที่แล้ว คุณได้จำลองราคาหุ้นที่เป็นไปตาม random walk แบบฝึกหัดนี้จะต่อยอดจากนั้นใน 2 ด้าน
- จะพิจารณา random walk แบบที่มี drift หลายๆ time series เช่น ราคาหุ้น เป็น random walk แต่มีแนวโน้มที่จะค่อยๆ ปรับตัวขึ้นเรื่อยๆ ตามเวลา
- ในแบบฝึกหัดที่แล้ว noise ใน random walk เป็นแบบบวก (additive) กล่าวคือการเปลี่ยนแปลงของราคาแบบ normal สุ่มจะถูกบวกเข้ากับราคาล่าสุด อย่างไรก็ตาม วิธีนี้อาจทำให้ราคาติดลบได้ในทางทฤษฎี แบบฝึกหัดนี้จึงเปลี่ยนมาใช้ noise แบบคูณ (multiplicative) แทน โดยบวก 1 เข้ากับการเปลี่ยนแปลงแบบ normal สุ่มเพื่อให้ได้ผลตอบแทนรวม แล้วนำไปคูณกับราคาล่าสุด
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์อนุกรมเวลาด้วย Python
คำแนะนำการฝึกหัด
- สร้างขั้นตอนการคูณแบบ normal สุ่ม 500 ขั้น ที่มีค่าเฉลี่ย 0.1% และส่วนเบี่ยงเบนมาตรฐาน 1% โดยใช้
np.random.normal()ซึ่งขั้นตอนเหล่านี้แทนผลตอบแทน แล้วบวก 1 เพื่อให้ได้ผลตอบแทนรวม - จำลองราคาหุ้น
P:- คูณสะสมขั้นตอนต่างๆ โดยใช้เมธอด
.cumprod()ของ numpy - คูณผลคูณสะสมของผลตอบแทนรวมด้วย 100 เพื่อให้ได้ค่าเริ่มต้นเท่ากับ 100
- คูณสะสมขั้นตอนต่างๆ โดยใช้เมธอด
- พล็อต random walk ที่จำลองขึ้นพร้อม drift
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Generate 500 random steps
steps = np.random.normal(loc=___, scale=___, size=___) + ___
# Set first element to 1
steps[0]=1
# Simulate the stock price, P, by taking the cumulative product
P = ___ * np.cumprod(___)
# Plot the simulated stock prices
plt.plot(___)
plt.title("Simulated Random Walk with Drift")
plt.show()