گزینه های پرچین با استفاده از جعبه ابزار یادگیری تقویت

ساخت وبلاگ

از رویکرد سنتی BSM با استفاده از یک خط مشی بهینه محافظت کنید.

مدل سازی گزینه با استفاده از مدل Black-Scholes-Merton

مدل Black-Scholes-Merton (BSM) ، که در سال 1997 جایزه نوبل اقتصاد را به سازندگان خود بدست آورد ، یک چارچوب مدل سازی برای قیمت گذاری و تجزیه و تحلیل مشتقات مالی یا گزینه ها فراهم می کند. گزینه ها ابزارهای مالی هستند که ارزش آنها را از یک دارایی اساسی خاص استخراج می کنند. مفهوم محافظت از پویا برای مدل BSM اساسی است. حصار پویا این ایده است که با خرید و فروش مداوم سهام در دارایی زیربنایی مربوطه ، می توانید خطر ابزار مشتق را به گونه ای محافظت کنید که خطر صفر باشد. این چارچوب قیمت گذاری "بی طرف" برای استخراج فرمول های قیمت گذاری برای بسیاری از ابزارهای مختلف مالی استفاده می شود.

ساده ترین مشتق مالی گزینه تماس اروپایی است که به خریدار حق ، اما نه تعهد را برای خرید دارایی زیربنایی با ارزش قبلی مشخص شده (قیمت اعتصاب) در یک زمان (بلوغ) که قبلاً مشخص شده است ، می دهد.

برای قیمت گذاری گزینه تماس اروپایی می توانید از یک مدل BSM استفاده کنید. مدل BSM فرضیات ساده را در زیر می سازد:

  • رفتار دارایی زیرین با حرکت هندسی براونیان (GBM) تعریف می شود.
  • هیچ هزینه معامله وجود ندارد.
  • نوسانات ثابت است.

استراتژی Hedging Dynamic BSM نیز پس از Delta Delta ، که حساسیت به گزینه با توجه به دارایی زیرین است ، "دلتا-هدینگ" نیز نامیده می شود. در محیطی که فرضیات BSM قبلاً بیان شده را برآورده می کند ، استفاده از یک استراتژی دلتا در مورد یک رویکرد بهینه برای محافظت از گزینه است. با این حال ، کاملاً مشهور است که در محیطی با هزینه های معامله ، استفاده از مدل BSM منجر به یک استراتژی محافظت از محافظت می شود. هدف از این مثال استفاده از جعبه ابزار یادگیری revorcement ™ برای یادگیری استراتژی است که از استراتژی Hedging BSM بهتر است ، در حضور هزینه های معامله.

هدف از یادگیری تقویت (RL) آموزش یک عامل برای انجام یک کار در یک محیط ناشناخته است. نماینده مشاهدات و پاداش از محیط را دریافت می کند و اقداماتی را به محیط می فرستد. پاداش اندازه گیری این است که چگونه یک عمل با توجه به تکمیل هدف کار موفقیت آمیز است.

نماینده شامل دو مؤلفه است: یک سیاست و یک الگوریتم یادگیری.

  • این سیاست نقشه برداری است که اقدامات را بر اساس مشاهدات ناشی از محیط انتخاب می کند. به طور معمول ، این خط مشی یک عملکرد تقریبی با پارامترهای قابل تنظیم ، مانند یک شبکه عصبی عمیق است.
  • الگوریتم یادگیری به طور مداوم پارامترهای خط مشی را بر اساس اقدامات ، مشاهدات و پاداش به روز می کند. هدف از الگوریتم یادگیری یافتن یک سیاست بهینه است که حداکثر پاداش تجمعی دریافت شده در طول کار را به حداکثر می رساند.

به عبارت دیگر ، یادگیری تقویت کننده شامل یک عامل است که رفتار بهینه را از طریق تعامل مکرر آزمایش و خطا با محیط بدون درگیری انسان می آموزد. برای کسب اطلاعات بیشتر در مورد یادگیری تقویت ، ببینید یادگیری تقویت چیست؟(جعبه ابزار یادگیری تقویت).

CAO [2] تنظیمات یادگیری تقویت را به این صورت توصیف می کند:

  • من دولت در زمان من است.
  • A من عملی است که در من انجام شده است.
  • R I + 1 پاداش حاصل در زمان I + 1 است.

هدف از یادگیری تقویت ، به حداکثر رساندن پاداش های آینده مورد انتظار است. در این کاربرد مالی از یادگیری تقویت ، به حداکثر رساندن پاداش های مورد انتظار ، یادگیری یک استراتژی برای حل و فصل دلتا به عنوان یک رویکرد بهینه برای محافظت از گزینه تماس اروپایی است.

این مثال از چارچوب بیان شده در CAO پیروی می کند [2]. به طور خاص ، از فرمولاسیون سود و زیان حسابداری (P& L) از آن مقاله برای تنظیم مشکل یادگیری تقویت استفاده می شود و یک عامل شیب سیاست قطعی عمیق (DDPG) استفاده می شود. این مثال دقیقاً رویکرد [2] را تولید نمی کند زیرا CAO ET. همیک روش یادگیری Q را با دو عملکرد Q جداگانه توصیه کنید (یکی برای هزینه محافظت و دیگری برای مربع مورد انتظار هزینه حصار) ، اما این مثال در عوض از یک عملکرد پاداش ساده استفاده می کند.

پارامترهای آموزش را تعریف کنید

در مرحله بعد ، گزینه AT-THE را با سه ماه از بلوغ مشخص کنید. برای سادگی ، نرخ بهره و سود سهام در 0 تعیین شده است.

پارامترهای گزینهاعتصاب = 100 ؛بلوغ = 21*3/250 ؛پارامترهای دارایی ٪SpotPrice = 100 ؛expvol = . 2 ؛expretu = . 05 ؛پارامترهای شبیه سازی ٪rfrate = 0 ؛dt = 1/250 ؛nSteps = بلوغ/dt ؛ntrials = 5000 ؛پارامترهای عملکرد هزینه و هزینه انتقالc = 1. 5 ؛kappa = . 01 ؛InitPosition = 0 ؛٪ دانه ژنراتور تصادفی را برای تکرارپذیری تنظیم کنید.RNG (3)

محیط را تعریف کنید

در این بخش ، پارامترهای عمل و مشاهده ، Actinfo و Obsinfo. عمل عامل مقدار H Edge فعلی است که می تواند بین 0 تا 1 متغیر باشد. در مشاهده عامل سه متغیر وجود دارد:

  • پول (نسبت قیمت نقطه به قیمت اعتصاب)
  • زمان بلوغ
  • موقعیت یا میزان دارایی زیربنایی که نگهداری می شود
ObservationInfo = rlnumericspec ([3 1] ،'حد پایین'، 0 ،'حد بالا'، [10 بلوغ 1] ') ؛ObservationInfo. name ="حالت محافظت"؛ObservationInfo. description = ["پول", "زمان بندی","موقعیت"] ؛actionInfo = rlnumericspec ([1 1] ،'حد پایین'، 0 ،'حد بالا'، 1) ؛actionInfo. name ='پرچین';

پاداش را تعریف کنید

از CAO [2] ، فرمولاسیون و پاداش های حسابداری P& L (هزینه های منفی)

r i + 1 = v i + 1 - v i + h i + 1 (s i + 1 - s i) - κ |S I + 1 (H I + 1 - H I) |

v i: مقدار گزینه

S I: قیمت دارایی زیربنایی

κ: هزینه های معامله

پاداش نهایی در آخرین مرحله ، پرچین را که κ |S N (H N) |بشر

در این اجرای ، پاداش (R I) توسط مربع پاداش ضرب شده توسط یک ثابت برای مجازات نوسانات بزرگ در ارزش موقعیت پرچین مجازات می شود:

r i + 1 = r i + 1 - c (r i + 1) 2

پاداش در StepFCN تعریف شده است که در هر مرحله از شبیه سازی فراخوانی می شود.

env = rlfunctionEnv (ObservationInfo ، ActionInfo ،.@(پرچین ، LoggedSignals) Stepfcn (پرچین ، loggedSignals ، RFRATE ، EXPVOL ، DT ، اعتصاب ، Expretu ، C ، Kappa).@() RESETFCN (SpotPrice/Strike ، بلوغ ، شروع)) ؛Obsinfo = getObservateInfo (env) ؛actinfo = getActionInfo (env) ؛

رابط محیط برای عامل RL ایجاد کنید

با استفاده از RLDDPGAGENT (جعبه ابزار یادگیری تقویت) عامل DDPG را ایجاد کنید. در حالی که امکان ایجاد شبکه های بازیگر و منتقد سفارشی وجود دارد ، این مثال از شبکه های پیش فرض استفاده می کند.

initopts = rlagentInitializationOptions ("numhiddenunit"، 64) ؛CRINDOPTS = RLOPTIMIZEROPTIONS ("یادگیری"، 1E-4) ؛بازیگران = rloptimizeroptions ("یادگیری"، 1E-4) ؛AgentOptions = rlddpGagentOptions (. "AmeroptimizerOptions"، بازیگران ،. "CriticOptimizerOptions"، منتقدین ،. "عامل تخفیف"، . 9995 ،. "TargetSmoothFactor"، 5e-4) ؛عامل = rlddpgagent (Obsinfo ، actinfo ، initopts ، AgentOptions) ؛

شبکه های بازیگر و منتقد را تجسم کنید

شبکه های بازیگر و منتقد را با استفاده از طراح شبکه عمیق تجسم کنید.

DeepNetworkDesigner (LayerGraph (getModel (getActor (عامل))))

DND2.png

نماینده قطار

عامل را با استفاده از عملکرد قطار (جعبه ابزار یادگیری تقویت) آموزش دهید.

trainopts = rltrainingOptions (. "maxepisodes"، ntrials ،. "MaxStepsperepisode"، nsteps ،. "Verbose"، نادرست ،. "ScoreainagingWindowl طول"، 200 ،. "StoptrainingCriteria","Averagereward", . 'StopTrainingValue'، -40 ،. "Stoponerror","بر", . "کاربردی"، نادرست) ؛dotraining = false ؛ifخجالتی٪ عامل را آموزش دهید.TrainingStats = قطار (عامل ، Env ، Trainopts) ؛دیگر برای مثال ، عامل پیش ساخته را بارگیری کنید.بار('Deephedgingddpg. mat','عامل') پایان

برای جلوگیری از انتظار برای آموزش ، با تنظیم پرچم dotraining به False ، شبکه های از پیش تنظیم شده را بارگذاری کنید. اگر dotraining را به حقیقت تنظیم کنید ، مدیر قسمت یادگیری تقویت کننده پیشرفت آموزش را نشان می دهد.

train.png

عامل معتبر

برای محاسبه قیمت به عنوان گزینه تماس اروپایی ، از جعبه ابزار مالی blsdelta و Blsprice برای محاسبه قیمت به عنوان گزینه تماس اروپایی استفاده کنید. هنگام مقایسه رویکرد متعارف با رویکرد RL ، نتایج مشابه یافته های CAO [2] در نمایشگاه 4 است. این مثال نشان می دهد که رویکرد RL به طور قابل توجهی هزینه های محافظت را کاهش می دهد.

پارامترهای شبیه سازی ٪ntrials = 1000 ؛Policy_bsm = @(MR ، TTM ، POS) Blsdelta (MR ، 1 ، RFRATE ، MAX (TTM ، EPS) ، Expvol) ؛Policy_rl = @(MR ، TTM ، POS) Arrayfun ( @(MR ، TTM ، POS) CELL2MAT (GetAction (عامل ، [MR TTM POS])) ، MR ، TTM ، POS) ؛OptionPrice = Blsprice (SpotPrice ، Strike ، RFRATE ، بلوغ ، expvol) ؛casts_bsm = computecosts (خط مشی_BSM ، ntrials ، nSteps ، SpotPrice ، اعتصاب ، بلوغ ، rfrate ، expvol ، Initosition ، dt ، expretu ، kappa) ؛casts_rl = computecosts (خط مشی_RL ، ntrials ، nSteps ، SpotPrice ، اعتصاب ، بلوغ ، rfrate ، expvol ، initposition ، dt ، expectu ، kappa) ؛hedgecomp = جدول (100*[-میانگین (هزینه های_BSM) STD (هزینه_BSM)]/گزینه price ،.100*[-میانگین (هزینه های_RL) std (هزینه های_RL)] '/optionprice ،. 'rownames',["متوسط هزینه پرچین (٪ قیمت گزینه)","هزینه پرچین STD (٪ از قیمت گزینه)"], . "VariableNames",["BSM","RL"]) ؛اختلاف (HEDGECOMP)
BSM RL ______ ______ متوسط هزینه پرچین (٪ از قیمت گزینه) 91. 259 47. 022 هزینه پرچین STD (٪ قیمت گزینه) 35. 712 68. 119

هیستوگرام زیر طیف وسیعی از هزینه های مختلف محافظت از هر دو رویکرد را نشان می دهد. رویکرد RL عملکرد بهتری دارد ، اما با واریانس بزرگتر از رویکرد BSM. ارزیابی RL در این مثال احتمالاً از دو رویکرد Q عملکردی که CAO [2] در مورد و پیاده سازی صحبت می کند ، بهره مند می شود.

numbins شکل = 10 ؛هیستوگرام (-costs_rl ، numbins ،"صورت",'r',"FaceAlpha"، . 5) نگه داریدonهیستوگرام (-costs_bsm ، numbins ،"صورت","ب","FaceAlpha"، . 5) xlabel ("هزینه های محافظت") ylabel ("تعداد آزمایشات") عنوان("RL Hedge هزینه در مقابل هزینه های پرچین BLS") افسانه('RL پرچین',"Delta BLS نظری",'محل','بهترین')

طرح نسبت پرچین با توجه به پول ، تفاوت بین رویکردهای BSM و RL را نشان می دهد. همانطور که در CAO [2] مورد بحث قرار گرفت ، با حضور در هزینه های معامله ، نماینده می آموزد که "وقتی Delta Hedging نیاز به خرید سهام دارد ، تمایل دارد که یک معامله گر نسبت به Delta کم ارزش باشد. به فروش سهام نیاز دارد ، تمایل دارد که یک معامله گر نسبت به دلتا بیش از حد هنگو باشد. "

خط مشی_RL_MR = @(MR ، TTM ، POS) CELL2MAT (GetAction (عامل ، [آقای TTM POS] ')) ؛mrange = (. 8: . 01: 1. 2) '؛شکل t_plot = 2/12 ؛طرح (mrange ، blsdelta (mrange ، 1 ، rfrate ، t_plot ، expvol) ،"ب"))onطرح (mrange ، arrayfun (@(mr) خط مشی )_RL_MR (MR ، T_Plot ، Blsdelta (MR ، 1 ، rfrate ، t_plot ، expvol) ، mrange)'r') طرح (mrange ، arrayfun (@(mr) policy_rl_mr (MR ، T_Plot ، Blsdelta (MR+. 1،1 ، rfrate ، t_plot ، expvol)) ، mrange)'g') طرح (mrange ، arrayfun (@(mr) خط مشی )_RL_MR (MR ، T_Plot ، Blsdelta (MR-. 1،1 ، rfrate ، t_plot ، expvol)) ، mrange)'م') افسانه("Delta BLS نظری",'RL Hedge - ATM',"پرچین RL - فروش","RL پرچین - خرید", . 'محل','بهترین') xlabel ("پول") ylabel ("نسبت پرچین") عنوان('RL Hedge در مقابل Delta BLS برای TTM 2/12')

منابع

[1] Buehler H. ، L. Gonon ، J. Teichmann ، and B. Wood."محافظت عمیق."امور مالی کمیجلد19 ، شماره 8 ، 2019 ، صص 1271-91.

[2] Cao J. ، J. Chen ، J. Hull ، and Z. Poulos."محافظت عمیق مشتقات با استفاده از یادگیری تقویت."مجله علوم داده های مالی. جلد3 ، شماره 1 ، 2021 ، صص 10-27.

[3] Halperin I. "Qlbs: Q-Leaer در جهان سیاه (-Merton)."مجله مشتقات. جلد28 ، شماره 1 ، 2020 ، صص 99–122.

[4] Kolm P. N. و G. Ritter."تکثیر پویا و پرچین: یک رویکرد یادگیری تقویت."مجله علوم داده های مالی. جلد1 ، شماره 1 ، 2019 ، صص 159-71.

توابع محلی

تابع[اولیه observation ، loggedsignals] = resetfcn (پول ، زمان بندی ، زمانبندی)عملکرد تنظیم مجدد برای تنظیم مجدد در ابتدای هر قسمت.loggedSignals. state = [زمانبندی پولی شروع می شود] ؛IDIALOBSERVATION = loggedSignals. state ؛پایان تابع[NextObs ، پاداش ، isdone ، loggedSignals] = StepFCN (موقعیت_نوکس ، LoggedSignals ، R ، Vol ، DT ، X ، MU ، C ، Kappa)٪ عملکرد مرحله برای ارزیابی در هر مرحله از قسمت.moneyness_prev = loggedsignals. state (1) ؛ttm_prev = loggedsignals. state (2) ؛position_prev = loggedsignals. state (3) ؛s_prev = moneyness_prev*x ؛٪ GBM حرکتs_next = s_prev*((1 + mu*dt) + (randn*vol).*sqrt (dt)) ؛ttm_next = حداکثر (0 ، ttm_prev - dt) ؛isDone = ttm_next.blsprice (s_next ، x ، r ، ttm_next ، vol) + blsprice (s_prev ، x ، r ، ttm_prev ، جلد) ؛ifisdone stepreward = stepreward - position_next*s_next*kappa ؛پایانپاداش = stepreward - c*stepreward.^2 ؛loggedsignals. state = [s_next/x ؛ ttm_next ؛ station_next] ؛nextObs = loggedSignals. state ؛پایان تابعpercosts = computecosts (خط مشی ، ntrials ، nsteps ، Spotprice ، Strike ، T ، R ، Expvol ، Initpos ، DT ، MU ، Kappa)عملکرد یاور برای محاسبه هزینه برای هر رویکرد پرچین.g (0) simobj = gbm (mu ، expvol ،"StartState"، SpotPrice) ؛[simpaths ، simtimes] = شبیه سازی (simobj ، nsteps ،'ntrials'، ntrials ،'Deltatime'، dt) ؛simpaths = فشار (simpaths) ؛rew = صفر (nsteps ، ntrials) ؛position_prev = initpos ؛position_next = خط مشی (simpaths (1 ،:)/strike ، t*موارد (1 ، ntrials) ، initpos*موارد (1 ، ntrials)) ؛برایtimeidx = 2: nsteps+1 rew (timeid x-1 ، :) = (simpaths (timeidx ، :) -simpaths (timeid x-1 ،:)).*position_prev -.abs (station_next - position_prev).*simpaths (timeidx ،:)*kappa -.blsprice (simpaths (timeidx ، :) ، اعتصاب ، r ، max (0 ، t - simtimes (timeidx)) ، expvol) +.blsprice (simpaths (timeidx-1 ، :) ، اعتصاب ، r ، t-simtimes (timeidx-1) ، expvol) ؛iftimeIdx == nsteps+1 rew (timeIdx-1 ، :) = rew (timeidx-1 ، :)-position_next.*simpaths (timeidx.)*kappa ؛دیگرPOSTION_PREV = موقعیت_next ؛position_next = خط مشی (simpaths (timeidx.)/strike ، (t - simtimes (timeIdx)).*موارد (1 ، ntrials) ، position_prev) ؛پایان پایانpercosts = sum (rew) ؛پایان

همچنین ببینید

وب سایت های خارجی

  • یادگیری تقویت در امور مالی (4 دقیقه 15 ثانیه)
فارکس وکسب درامد...
ما را در سایت فارکس وکسب درامد دنبال می کنید

برچسب : نویسنده : آرش اصل زاد بازدید : 35 تاريخ : پنجشنبه 9 شهريور 1402 ساعت: 16:14