發表文章

人工智慧金融投資決策_ 利用Bi-section反推求解Volatility_希臘字風險係數

圖片
https://mwrona.com/posts/bisection-method/ 二分逼近法(Bisection Method) 當處於連續函數情境,則適合去套用bisection方法。 以下是一個推導的動畫示意 求解 f(x) = x² - 2 = 0 ,即找到 √2 ≈ 1.4142... 根據上面的數學式子很明顯會知道要求解的根位於1~2之間 那我們一開始就取二分,也就是中間值1.5 1.5帶入式子計算 => 1.5²  -2 > 0 代表我們猜的中間值取大了 這時候就要再去二分了,取的是[1,1.5]之間的中間值也就是1.25。 1.25帶入式子計算 => 1.25² -2 < 0 代表我們猜的中間值取小了 這時候就要再去二分了,取的是[1.25,1.5]之間的中間值 後續就持續往中間去逼近要求解的根,這就是Bi-Section 所以程式演算法每一次都會圍繞在[a,b]區間做三件事 先找中間值 接著判斷根在哪一半,再去調整左右哪側要取代為新的中間值 只要目前左右邊界 a 和 b 的距離還大於 0.000001,就繼續二分。 二分逼近法程式範例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def f (x): return x** 2 - 2 a, b = 1 , 2 while b - a > 0.000001 : c = (a + b) / 2 if f(a) * f(c) < 0 : b = c else : a = c print ((a + b) / 2 ) 運行結果 利用Bi-section反推求解Volatility 選擇權定價主要是以 S 0 S_0 S 0 ​    、 K 、 r 、 T、volatility來計算call 和 put的價格 其中以下這些都是能根據當時市場狀況和合約內容直接得知或推得,也是固定值: S 0 S_0 S 0 ​ :時間 0 時的股票價格 K K K :履約價(合約到期價格) r r r :無風險利率 T T T :選擇權的存續期間,以年為單位,通常以交易日計算,例如一年為 252 個交易日 而唯獨V...

VB6寫DLL註冊給Classic ASP網頁使用_VB6的ActiveX DLL專案建構

圖片
  ASP呼叫DLL寫好的VB6封裝函數 執行結果 Step1.新增VB6的ActiveX DLL專案 Step2.到專案屬性面板去更改Project Name跟Project Description以及調整其Threading Model設置為Apartment Threaded Step3.更改Class名稱設置為MyFunction Step4.撰寫函數功能邏輯 Step5.將專案跟cls程式檔存檔 Step6.選擇製成dll Step7.新增註冊用.bat檔案,放在跟dll同樣目錄位置 雙點擊執行按OK https://expect7.pixnet.net/blog/posts/5058511170

人工智慧金融投資決策_複利計算(Compounding the Interest)_Put-Call Parity(買賣權平價關係)、Black-Scholes Formulas

圖片
  https://www.wallstreetmojo.com/put-call-parity/ 利息的複利計算(Compounding the Interest) 附息證券的價值不僅取決於利率,也取決於利息的複利計算頻率。 (PS:假設取得的利息會以相同利率再投資。) 令: P 0 P_0 P 0 ​ :初始時間 t 0 t_0 t 0 ​ 的本金金額 r r r :年利率 n n n :年數 則經過第 n n n 年後,債券的價值為: 其中: P n P_n P n ​ :經過 n n n 年後的本金與利息總額 P 0 P_0 P 0 ​ :初始本金 r r r :每年的利率 n n n :投資年數 若提高利息支付頻率,也就是增加複利計算的次數,假設每年計息 m > 1 m>1 m > 1 次,則 P n P_n P n ​ 的價值為: 其中: m m m :每年的複利計算次數 r m \frac{r}{m} m r ​ :每一期的利率 n m nm nm :在 n n n 年內的總計息次數 假設有一項無風險證券,其固定利率為 r r r ,並且在一段 τ > 0 \tau>0 τ > 0 的期間內採用 連續複利 ,則其價值為: 其中: P 0 P_0 P 0 ​ :初始時間 t 0 t_0 t 0 ​ 的投資本金 P τ P_{\tau} P τ ​ :從時間 t 0 t_0 t 0 ​ 投資至 t 0 + τ t_0+\tau t 0 ​ + τ 時的到期價值 r r r :固定年利率 τ \tau τ :投資期間 e x e^x e x :指數函數 例如,100 歐元以年利率 10% 連續複利一年,其價值為: P 1 = 100 e 0.1 ≈ 110.517 P_1=100e^{0.1}\approx110.517 P 1 ​ = 100 e 0.1 ≈ 110.517 測試程式 #1-1. r = 0.1 #年利率百分之10 100 *( 1 + r )** 10 #100元投入,投資10年獲得259.37元 #1-2.離散的發行,年利率 10% 時,100 歐元在一年內受到複利計息...

DSP筆記1_使用 NumPy自帶的fft做_觀察fft結果、ifft後的訊號波形圖、頻率對應相位

圖片
https://www.sintef.no/en/expert-list/digital/sustainable-communication-technologies/signal-processing-and-machine-learning/ 在Python當中我們可使用 FFT 函式,將時域訊號轉換成頻域訊號。 例如使用 NumPy自帶的: import numpy.fft as fft 而另一套scipy引入方式則是用 import scipy.fftpack as scifft fft功能:主要就是把時間序列訊號做FFT,獲得其幾個頻率、振福和初始相位。 ifft功能:也就是把複數值序列做傅立葉逆變化,獲得複數值的訊號,取其實部,是時頻訊號。可以寫出訊號的余弦函數的結構式。 以下就DSP幾個術語做個介紹 訊號頻率: 指訊號本身週期性變化的速度,通常使用 f 表示,單位為赫茲(Hz)。 例如,一秒鐘重複 10 次的訊號,其頻率為 10 Hz。 取樣頻率: 指每秒鐘對連續訊號取樣的次數,通常使用 Fs 表示,單位也是 Hz。 表示每秒取得 100 個取樣點。 奈奎斯(Nyquist-Shannon sampling theorem)取樣定理: 為了正確還原訊號,取樣頻率至少必須大於訊號最高頻率的兩倍。 舉例:像是人類聽力範圍坐落於20赫茲-20000赫茲(20kHz) 根據奈奎斯取樣定理,fs > 2 fH 也就是 fs > 2 * 20kHz 目前網際網路流傳的音樂檔mp3,其取樣頻率也通常是設在44kHz、48kHz。 實際應用通常會選擇比兩倍更高的取樣頻率,以降低混疊現象。 FFT 頻譜幅值: fft_magnitude = np.abs(np.fft.fft(signal, n=NFFT)) np.abs() 用來計算 FFT 複數結果的絕對值,也就是頻譜的幅值。 振幅(頻)譜(amplitude spectrum): 透過傅立葉變換(Fourier Transform)將時域訊號轉成頻域後,取其絕對值或強度大小而得到的結果。 能量訊號: 若訊號振幅的絕對值平方,在整個時間範圍 (−∞,+∞) 內的積分為有限值,則稱為能量訊號。 常見例子包括有限時間的方波訊號、三角形訊號、脈衝訊號、暫態訊號、非週期性的確定訊號,以及非隨機訊號。 能量頻譜:...