การบริหารความเสี่ยงเชิงปริมาณด้วย Python
Jamsheed Shorish
Computational Economist
asset_returnsportfolio_returns โดยใช้ weights ของพอร์ตโฟลิโอportfolio_returns เป็น lossesnp.quantile() สำหรับ losses ที่ระดับความเชื่อมั่น เช่น 95%
weights = [0.25, 0.25, 0.25, 0.25]portfolio_returns = asset_returns.dot(weights)losses = - portfolio_returnsVaR_95 = np.quantile(losses, 0.95)
norm จาก scipy.statstotal_steps (1 วัน = 1440 นาที)Nmu และค่าเบี่ยงเบนมาตรฐาน sigma ของข้อมูล portfolio_lossesfrom scipy.stats import normtotal_steps = 1440N = 10000mu = portfolio_losses.mean() sigma = portfolio_losses.std()
daily_loss สำหรับ N runsN runsloss จากการจำลอง Monte Carlonorm.rvs() สุ่มตัวอย่างซ้ำจากการแจกแจงปกติมาตรฐานmu และ sigma ที่สเกลด้วย 1/total_stepsdaily_loss = np.zeros(N)for n in range(N):loss = ( mu * (1/total_steps) + norm.rvs(size=total_steps) * sigma * np.sqrt(1/total_steps) )
daily_loss สะสมสำหรับแต่ละ run nnp.quantile() หาค่า VaR ที่ระดับความเชื่อมั่น เช่น 95% จาก daily_loss
daily_loss = np.zeros(N) for n in range(N):loss = mu * (1/total_steps) + ... norm.rvs(size=total_steps) * sigma * np.sqrt(1/total_steps)daily_loss[n] = sum(loss)VaR_95 = np.quantile(daily_loss, 0.95)
e_covการบริหารความเสี่ยงเชิงปริมาณด้วย Python