การวัด SemiDeviation ด้วย Python

การทำ portfolio optimization ด้วย google colab V

NUTHDANAI WANGPRATHAM
2 min readApr 25, 2020

ส่วนเบียงเบนมาตรฐาน (Standard Deviation : S.D.,S,s)และ ความแปรปรวน (Variance:σ2) มักจะนิยมใช้วัดวามผันผวนของการลงทุน แต่ตัวชี้วัดความผันผวนทั้งสองนี้ วัดทั้งด้านบวกและด้านลบ แต่ในการลงทุนเรากังวลกับความผันผวนที่เป็นด้านลบมากกว่า

SemiDeviation เป็นตัวชี้วัดทางเลือกจากเบี่ยงเบนมาตรฐานหรือความแปรปรวน โดยแตกต่างจากตัวชี้วัดดังกล่าว คือจะพิจารณาเฉพาะความเสี่ยงขาลงของการลงทุนโดยมีสูตรดังต่อไปนี้

มาเริ่มกันเลย

เราเริ่มต้นด้วยการเปิด google colab และเหมือนทุกครั้งที่เราต้อง load packages กันก่อน

# load packages
import pandas as pd
import numpy as np

ดึงและจัดการข้อมูล

เราจะดึงข้อมูลจาก yahoo และจัดการให้เหลือราคาปิดอย่างเดี่ยว

from pandas_datareader import data as pdrimport fix_yahoo_finance as yfyf.pdr_override() # <== that's all it takes :-)# ===========today = "2020-01-01"  # to make static this script.
tckr = 'VOO'
# download data
data = pdr.get_data_yahoo(tckr, "2010-01-01", today)
# add frequency needed for some pandas functionalities releated with offsets
data = data.asfreq('B')
data.columns = data.columns.map(lambda col: col.lower())
prices = data[['close']]
prices = prices.dropna()
prices

หลังจากนั้นเราก็ต้องหาผลตอบแทนกันก่อน

returns = prices.pct_change()
returns = returns.dropna()
returns.rename(columns={'close':'returns_Vanguard_S&P_500_ETF'},inplace=True)
returns

Calculate Semideviaion

มาถึงไฮไลน์ของวันนี้นะครับเริ่มจากเราสร้างตัวแปร returns_negative คือผลตอบแทนที่น้อยกว่า 0 และเป็นเรื่องง่ายมากคือให้ความแปรปรวนด้วย ddof=0(Delta Degrees of Freedom.)

returns_negative = returns < 0
returns[returns_negative].std(ddof=0)

สร้างฟังชั่น Calculate Semideviaion

เราสามารถสร้างฟังชั่นในการคำนวณ Semideviaion ดังนี้

def semideviation(returns):    returns_negative = returns < 0    return returns[returns_negative].std(ddof=0)semideviation(returns)

Note book ;

อ่านตอนอื่นๆได้ที่

  1. การคำนวณผลตอบแทนการลงทุนด้วย Python
  2. การหาความผันผวนของพอร์ตการลงทุนด้วย Python
  3. การหา Max Drawdown ด้วย Python
  4. การวัด การเบี่ยงเบนของผลตอบแทนด้วย Python
  5. การวัด SemiDeviation ด้วย Python
  6. การวัด VaR. และ CVaR. ด้วย Python
  7. รีวิวการใช้ ffn. ใน Python
  8. การหา Top Drawdown ด้วย Python
  9. การหาค่า Sharpe ratio ด้วย Python
  10. การหากลุ่มหลักรัพย์ที่เส้นประสิทธิภาพ Efficient Frontier ด้วย Python
  11. การหา shape ratio สูงสุดและเส้น CML ด้วย Python
  12. การสร้างมูลค่าตลาดแบบถ่วงน้ำหนักด้วย PYTHON
  13. ข้อจำกัดของการกระจายความเสี่ยงและการทำประกันพอร์ตการลงทุน
  14. การจำลอง ผลตอบแทนด้วย RANDOM WALK Generation และ Montecarlo simulation
  15. Sharpe Style Analysis
  16. Factor Investing ด้วย Python
  17. วิเคราะห์ ประเภทกองทุนรวมด้วย Python
  18. การทำ Portfolio optimization
  19. สร้างแนวรับแนวต้านวิเคราะห์หุ้นด้วย Python

--

--

NUTHDANAI WANGPRATHAM
NUTHDANAI WANGPRATHAM

Written by NUTHDANAI WANGPRATHAM

I am a learner and have a multipotential life. You can contact me at nutdnuy@gmail.com

No responses yet