當actor-critic遇到black-scholes - 財務
By Olive
at 2023-01-28T14:45
at 2023-01-28T14:45
Table of Contents
※ [本文轉錄自 DataScience 看板 #1ZrCHlhy ]
作者: subgn ( ) 看板: DataScience
標題: [心得] 當actor-critic遇到black-scholes
時間: Sat Jan 28 14:44:57 2023
Medium網頁好讀版
https://tinyurl.com/u4au6u2e
本文試著將Reinforcement Learning的Actor-Critic模式與選擇權評價模型裡的投資組合
複製框架(delta hedge)兩種極為相似的概念整合,實作出可以同時計算選擇權價格(對應
到RL的critic)與避險比率(對應到RL的actor)的強化學習框架。
https://miro.medium.com/max/750/1*Jzkn6FmYbD0UC_GkukwHvg.png
Black-Scholes Model
相信交易過選擇權的人一定都對Black-Scholes與Delta不陌生(已經熟悉Black-Scholes的
讀者可以直接跳過這一段,這邊不打算花太多篇幅講解它)。首先,根據此理論,選擇權
評價公式長這樣:
https://miro.medium.com/max/750/1*Jzkn6FmYbD0UC_GkukwHvg.png
還有一個很重要的公式,Delta,代表若要複製一個選擇權的報酬,所需持有的標的物的
數量,就是前面選擇權價格公式的其中一部分:
https://miro.medium.com/max/252/1*dE53bK_AWzr8o3-dXkAbVQ.png
Black-Scholes雖然是一套從純理論出發的公式,但他能在實務中屹立長久,靠的就是這
個評價模型 與 複製報酬的架構。在這個架構中,造市者藉由持有一個特定比例(delta)
的選擇權標的物,就可以對沖掉選擇權價格的漲跌。至於這價格公式與Delta公式怎麼來
的?簡單的說,先假設股價的走勢呈現幾何布朗運動(這是最基礎的假設,當然也有更複
雜的模型,例如固定收益的LMM或是Hull-White),再套入Ito’s Lemma得到一個微分方程
,接著再以選擇權的到期報酬(payoff),以買權為例,Max(0, stock price — strike)
,作為邊界條件去解微分方程式,就可以得到價格公式與delta公式。
https://miro.medium.com/max/538/1*qOd9yf62We6Ysay0sDHSiA.png
描述股價瞬時變動的幾何布朗運動模型
Actor-Critic
這裡同樣的,已經對強化學習的Actor-Critic演算法熟悉的讀者可以跳過這段,因為網路
上有太多優秀的教學資源,所以這邊我同樣的也簡單的介紹一下就好。Actor-Critic是一
種結合policy based與value based的強化學習演算法,Actor負責執行動作,Critic負責
替前者執行的動作給予評價。兩者各自有一個類神經網路,Actor靠Critic給出的評價來
以policy-gradient更新參數,Critic則是藉由Actor實際與環境互動出來的結果,以
Bellman-Equation來更新參數。
藉由不斷的「環境互動 — 更新Policy — 更新Critic」的循環,最終達到策略最佳化的
目的。而回顧Black-Scholes的框架,他的價格公式與Delta公式,是由對股價走勢的假設
(幾何布朗運動)決定,並由數學推導(解微分方程)來獲得。而強化學習的Actor與Critic
的函數,是由Agent與環境的互動出來的經驗決定,並由學習獲得,這兩者有很多相似之
處,因此把Actor Critic稍加改造應該可以訓練出一個不用理解Black-Scholes Model就
可以近似出其價格公式與Delta公式的神經網路。
Critic的更新方法:
https://miro.medium.com/max/588/1*kL8PqGCaaaxv6EjOcGz7qg.png
這邊的→符號,是指以梯度下降法更新神經網路權重θ,使左邊的值趨近右邊值,也就是
以右邊為target來訓練θ。Critic是用來衡量根據目前狀態St,未來所有Reward的折現期
望值(是的,折現期望值,這點也跟財務工程的思維很像),如果我們要用一個神經網路來
估計選擇權價值,回顧一下,Black-Scholes框架的一個重點就是用delta避險來複製選擇
權,那我們會希望評估值的變動會儘量接近避險部位價值的變動
https://miro.medium.com/max/616/1*zI3FcKVQQ_nTnJbSUNUbvw.png
移項後再把delta*St替換為RL 領域熟悉的符號r,就得到
https://miro.medium.com/max/632/1*BgIZkrwjxvL8kdl3-WpZ2g.png
(選擇權版本的critic更新公式,注意rt的部分與原版A2C正副相反)
訓練Actor
除了訓練評價函數V(也就是critic)來計算選擇權價格以外,我們還需要一個actor來決定
delta避險部位,而這次是反過來,critic要去指導actor函數,critic透過advantage
function來告訴actor,剛剛選的action是好還是壞。
https://miro.medium.com/max/720/1*V0gHx98xs5aLW7FJXjrI2A.png
(原版actor critic的期望reward的梯度)
注意在原本的actor-critic框架中,Actor是產生一組離散的機率分佈,代表執行各種
action的機率,訓練actor的方式是讓reward總和的期望值最大化,而要最大化期望值,
就是靠advantage function來告訴actor什麼action是好,什麼action是壞,數學上來說
就是用policy gradient來更新這個policy的權重。
https://miro.medium.com/max/1094/1*sNVHuhAliTKOyxGAeRoBng.png
(原版actor critic的期望reward的梯度)
但是因為我們要決定的是一個避險比例delta,它只是一個數值,而非在多個action中選
一個來執行(離散機率分佈),所以問題更簡單,只要讓他產生的delta值去逼近
advantage function(這就成為一個簡單的regression problem)
實作
建立起理論基礎後,下一步就是來實作了,作為一個概念驗證專案(POC),這邊先不打算
從實際市場歷史股價來訓練,而是先用Black-Scholes Model產生出模擬股價(雖然原本的
目的是做出model-less架構),並用這些模擬價格訓練出選擇權估值函數與delta函數,並
驗證算出來的值是否與Black-Scholes公式相差不遠。
程式碼部分如下,首先是產生模擬股價的BlackProcess類
https://medium.com/media/ad9ff5c07bec38ad1ee711fad713756b
再來是強化學習必定要有的自定義Env類,這邊並沒有繼承openAI的env,而是直接創建新
的類
https://medium.com/media/083e21555e72a3fc27412557766028a7
還有產生actor與critic model的function,餵給actor與critic的input有5個,分別是價
內程度、價內程度的平方、剩餘天期、剩餘天期的平方、價內程度*剩餘天期。(值得注意
的是,因為選擇權價格永遠大於0,所以critic最後一層的activation要用sigmoid,而
delta值有正有負(看是call還是put),所以actor最後一層activation選tanh。)
https://medium.com/media/dd4f17469493152f7ec6e9324bf6ac35
以及定義好要進行神經網路學習的loss function:
https://medium.com/media/33f25206127a3fc90fb6d324fcdb510b
接著是actor-critic的訓練流程:
https://medium.com/media/d4e2fc91b531013789648686a1d912cd
最後是結合再一起進行測試,假設的初始股價S0=1,波動度30%,無風險利率1%,天期為
30日,履約價K=1.1。
https://medium.com/media/ec1dc2f0d99fce3d08c1d55ef29799d8
測試的結果,可以發現不論是估值還是delta算出來的結果跟Black-Scholes公式天差底遠
,在經過50回合訓練後,神經網路預估的選擇權價值是0.0106,Black-Scholes公式計算
值為0.0347,delta方面,神經網路預估值是-0.0689,Black-Scholes公式計算值為0.521
。
為了解決這個問題,在真正開始actor-critic互動式訓練之前,先對兩者分別進行「預訓
練」。
首先是actor(delta預估函數)的預訓練,假設天期為10個交易日的選擇權,則我們製作一
個輸出10個delta值的Model,因為用delta避險倉位要能複製選擇權的最終payoff,所以
讓輸出的delta各自乘以對應時間的dS,相加後,再加上選擇權初始價值,整個總和讓它
逼近選擇權到期時的Payoff,因為我們還沒有正確的價格函數,所以選擇一個價外選擇權
,並假設其價格等於0。
https://miro.medium.com/max/828/1*WjxUgS8OFwUo5hsJ4M0f5w.png
接著利用預訓練完畢的actor(delta預估函數)來預訓練critic(估值函數),從期末的
payoff值開始,以反序方式,藉由本期估值等於下一期估值減去避險部位損益,當作估值
函數的神經網路學習目標。
https://miro.medium.com/max/640/1*BCWsULH9oG4mwWvwIUhnYw.png
在先對模型施以預訓練後再進入actor-critic後,我們發現兩個模型很快地進入狀況,在
50回合訓練後,估值方面,神經網路的預估為0.0373,Black-Scholes公式解為0.0347,
delta方面,神經網路的預估為0.4471,Black-Scholes計算值為0.5210。
雖然這只是一個用模擬價格訓練出來的Proof of Concept模型,還是最簡單的vanilla選
擇權,但是它初步驗證了將actor-critic與Black-Shcoles兩個框架相似之處融合之後的
可行性。
--
作者: subgn ( ) 看板: DataScience
標題: [心得] 當actor-critic遇到black-scholes
時間: Sat Jan 28 14:44:57 2023
Medium網頁好讀版
https://tinyurl.com/u4au6u2e
本文試著將Reinforcement Learning的Actor-Critic模式與選擇權評價模型裡的投資組合
複製框架(delta hedge)兩種極為相似的概念整合,實作出可以同時計算選擇權價格(對應
到RL的critic)與避險比率(對應到RL的actor)的強化學習框架。
https://miro.medium.com/max/750/1*Jzkn6FmYbD0UC_GkukwHvg.png
Black-Scholes Model
相信交易過選擇權的人一定都對Black-Scholes與Delta不陌生(已經熟悉Black-Scholes的
讀者可以直接跳過這一段,這邊不打算花太多篇幅講解它)。首先,根據此理論,選擇權
評價公式長這樣:
https://miro.medium.com/max/750/1*Jzkn6FmYbD0UC_GkukwHvg.png
還有一個很重要的公式,Delta,代表若要複製一個選擇權的報酬,所需持有的標的物的
數量,就是前面選擇權價格公式的其中一部分:
https://miro.medium.com/max/252/1*dE53bK_AWzr8o3-dXkAbVQ.png
Black-Scholes雖然是一套從純理論出發的公式,但他能在實務中屹立長久,靠的就是這
個評價模型 與 複製報酬的架構。在這個架構中,造市者藉由持有一個特定比例(delta)
的選擇權標的物,就可以對沖掉選擇權價格的漲跌。至於這價格公式與Delta公式怎麼來
的?簡單的說,先假設股價的走勢呈現幾何布朗運動(這是最基礎的假設,當然也有更複
雜的模型,例如固定收益的LMM或是Hull-White),再套入Ito’s Lemma得到一個微分方程
,接著再以選擇權的到期報酬(payoff),以買權為例,Max(0, stock price — strike)
,作為邊界條件去解微分方程式,就可以得到價格公式與delta公式。
https://miro.medium.com/max/538/1*qOd9yf62We6Ysay0sDHSiA.png
描述股價瞬時變動的幾何布朗運動模型
Actor-Critic
這裡同樣的,已經對強化學習的Actor-Critic演算法熟悉的讀者可以跳過這段,因為網路
上有太多優秀的教學資源,所以這邊我同樣的也簡單的介紹一下就好。Actor-Critic是一
種結合policy based與value based的強化學習演算法,Actor負責執行動作,Critic負責
替前者執行的動作給予評價。兩者各自有一個類神經網路,Actor靠Critic給出的評價來
以policy-gradient更新參數,Critic則是藉由Actor實際與環境互動出來的結果,以
Bellman-Equation來更新參數。
藉由不斷的「環境互動 — 更新Policy — 更新Critic」的循環,最終達到策略最佳化的
目的。而回顧Black-Scholes的框架,他的價格公式與Delta公式,是由對股價走勢的假設
(幾何布朗運動)決定,並由數學推導(解微分方程)來獲得。而強化學習的Actor與Critic
的函數,是由Agent與環境的互動出來的經驗決定,並由學習獲得,這兩者有很多相似之
處,因此把Actor Critic稍加改造應該可以訓練出一個不用理解Black-Scholes Model就
可以近似出其價格公式與Delta公式的神經網路。
Critic的更新方法:
https://miro.medium.com/max/588/1*kL8PqGCaaaxv6EjOcGz7qg.png
這邊的→符號,是指以梯度下降法更新神經網路權重θ,使左邊的值趨近右邊值,也就是
以右邊為target來訓練θ。Critic是用來衡量根據目前狀態St,未來所有Reward的折現期
望值(是的,折現期望值,這點也跟財務工程的思維很像),如果我們要用一個神經網路來
估計選擇權價值,回顧一下,Black-Scholes框架的一個重點就是用delta避險來複製選擇
權,那我們會希望評估值的變動會儘量接近避險部位價值的變動
https://miro.medium.com/max/616/1*zI3FcKVQQ_nTnJbSUNUbvw.png
移項後再把delta*St替換為RL 領域熟悉的符號r,就得到
https://miro.medium.com/max/632/1*BgIZkrwjxvL8kdl3-WpZ2g.png
(選擇權版本的critic更新公式,注意rt的部分與原版A2C正副相反)
訓練Actor
除了訓練評價函數V(也就是critic)來計算選擇權價格以外,我們還需要一個actor來決定
delta避險部位,而這次是反過來,critic要去指導actor函數,critic透過advantage
function來告訴actor,剛剛選的action是好還是壞。
https://miro.medium.com/max/720/1*V0gHx98xs5aLW7FJXjrI2A.png
(原版actor critic的期望reward的梯度)
注意在原本的actor-critic框架中,Actor是產生一組離散的機率分佈,代表執行各種
action的機率,訓練actor的方式是讓reward總和的期望值最大化,而要最大化期望值,
就是靠advantage function來告訴actor什麼action是好,什麼action是壞,數學上來說
就是用policy gradient來更新這個policy的權重。
https://miro.medium.com/max/1094/1*sNVHuhAliTKOyxGAeRoBng.png
(原版actor critic的期望reward的梯度)
但是因為我們要決定的是一個避險比例delta,它只是一個數值,而非在多個action中選
一個來執行(離散機率分佈),所以問題更簡單,只要讓他產生的delta值去逼近
advantage function(這就成為一個簡單的regression problem)
實作
建立起理論基礎後,下一步就是來實作了,作為一個概念驗證專案(POC),這邊先不打算
從實際市場歷史股價來訓練,而是先用Black-Scholes Model產生出模擬股價(雖然原本的
目的是做出model-less架構),並用這些模擬價格訓練出選擇權估值函數與delta函數,並
驗證算出來的值是否與Black-Scholes公式相差不遠。
程式碼部分如下,首先是產生模擬股價的BlackProcess類
https://medium.com/media/ad9ff5c07bec38ad1ee711fad713756b
再來是強化學習必定要有的自定義Env類,這邊並沒有繼承openAI的env,而是直接創建新
的類
https://medium.com/media/083e21555e72a3fc27412557766028a7
還有產生actor與critic model的function,餵給actor與critic的input有5個,分別是價
內程度、價內程度的平方、剩餘天期、剩餘天期的平方、價內程度*剩餘天期。(值得注意
的是,因為選擇權價格永遠大於0,所以critic最後一層的activation要用sigmoid,而
delta值有正有負(看是call還是put),所以actor最後一層activation選tanh。)
https://medium.com/media/dd4f17469493152f7ec6e9324bf6ac35
以及定義好要進行神經網路學習的loss function:
https://medium.com/media/33f25206127a3fc90fb6d324fcdb510b
接著是actor-critic的訓練流程:
https://medium.com/media/d4e2fc91b531013789648686a1d912cd
最後是結合再一起進行測試,假設的初始股價S0=1,波動度30%,無風險利率1%,天期為
30日,履約價K=1.1。
https://medium.com/media/ec1dc2f0d99fce3d08c1d55ef29799d8
測試的結果,可以發現不論是估值還是delta算出來的結果跟Black-Scholes公式天差底遠
,在經過50回合訓練後,神經網路預估的選擇權價值是0.0106,Black-Scholes公式計算
值為0.0347,delta方面,神經網路預估值是-0.0689,Black-Scholes公式計算值為0.521
。
為了解決這個問題,在真正開始actor-critic互動式訓練之前,先對兩者分別進行「預訓
練」。
首先是actor(delta預估函數)的預訓練,假設天期為10個交易日的選擇權,則我們製作一
個輸出10個delta值的Model,因為用delta避險倉位要能複製選擇權的最終payoff,所以
讓輸出的delta各自乘以對應時間的dS,相加後,再加上選擇權初始價值,整個總和讓它
逼近選擇權到期時的Payoff,因為我們還沒有正確的價格函數,所以選擇一個價外選擇權
,並假設其價格等於0。
https://miro.medium.com/max/828/1*WjxUgS8OFwUo5hsJ4M0f5w.png
接著利用預訓練完畢的actor(delta預估函數)來預訓練critic(估值函數),從期末的
payoff值開始,以反序方式,藉由本期估值等於下一期估值減去避險部位損益,當作估值
函數的神經網路學習目標。
https://miro.medium.com/max/640/1*BCWsULH9oG4mwWvwIUhnYw.png
在先對模型施以預訓練後再進入actor-critic後,我們發現兩個模型很快地進入狀況,在
50回合訓練後,估值方面,神經網路的預估為0.0373,Black-Scholes公式解為0.0347,
delta方面,神經網路的預估為0.4471,Black-Scholes計算值為0.5210。
雖然這只是一個用模擬價格訓練出來的Proof of Concept模型,還是最簡單的vanilla選
擇權,但是它初步驗證了將actor-critic與Black-Shcoles兩個框架相似之處融合之後的
可行性。
--
Tags:
財務
All Comments
Related Posts
新春開戶送開運元寶
By Elvira
at 2023-01-18T20:37
at 2023-01-18T20:37
期貨選擇權技術分析專班-政府補助
By Hedy
at 2023-01-18T12:40
at 2023-01-18T12:40
系所請益
By Xanthe
at 2022-12-14T21:01
at 2022-12-14T21:01
台股與台指期貨交易策略實務專班
By James
at 2022-11-25T16:52
at 2022-11-25T16:52
python 期權演算法交易實務
By Gary
at 2022-11-16T20:54
at 2022-11-16T20:54