想要使用 Logs 獲得 20 10 5 天歷史波動率的趨勢,但得到負數
好的,所以我不是數學高手,所以在這裡需要一些認真的幫助。我有歷史波動:
20 天歷史波動率 = 49.07% 10 天歷史波動率 = 47.43% 5 天歷史波動率 = 41.77%
我的目標是顯示以下內容之間的相對變化:
20 天 HV 和 10 天 HV 之間的變化 = diff2010
10 天 HV 和 5 天 hv 之間的變化 = diff105
20 10 5 天的整體變化 = diffabs
我得到了有用的建議,我應該使用 log 函式使用下面的等式以數學上準確的方式獲得差異
log_diff2010 = math.log(10 天高壓) - math.log(20 天高壓)
log_diff105 = math.log(5 天 hv) - math.log(10 天 hv)
log_diffabs = math.log(log_diff105) - math.log(log_diff2010)
但是 log_diffabs 會導致 -ve log num 導致錯誤。所以我有兩個問題:
1 我對 log_diff2010 和 log_diff105 的計算是否正確?
2 如何找到 20 10 5 天期間的整體變化
這是 python 3.5 執行,對我來說一切都出錯了:-(
> > > > > > 導入數學 > > > > > > 數學日誌(47.43) > > > > > > > > >
3.85925493988949
> > > > > > log_diff2010 = math.log(47.43) - math.log(49.07) > > > > > > log_diff105 = math.log(41.77) - math.log(47.43) > > > > > > log_diffabs = math.log(log_diff105) - math.log(log_diff2010) > > > > > > > > >
Traceback (most recent call last): File "<pyshell#6>", line 1, in <module> log_diffabs = math.log(log_diff105) - math.log(log_diff2010) ValueError: math domain error >>> log_diff105 -0.12707656138040635 >>> log_diff2010 -0.03399291021232198 >>> r2010 = round(log_diff2010,4) >>> r105 = round(log_diff105,4) >>> r2010 -0.034 >>> r105 -0.1271 >>> rrabs = math.log(r105) - math.log(r2010) Traceback (most recent call last): File "<pyshell#14>", line 1, in <module> rrabs = math.log(r105) - math.log(r2010) ValueError: math domain error >>>
使用指數/根將解決負值
import math log_diff2010 = math.log(47.43) - math.log(49.07) log_diff105 = (math.log(41.77) - math.log(47.43)) print log_diff105,(log_diff105**2)**.5,(log_diff2010**2)**.5,(log_diff2010**2)**.5 log_diffabs = math.log( (log_diff105**2)**.5) - math.log( (log_diff2010**2)**.5) print log_diffabs