ARMA-EGARCH মডেলের উপর ভিত্তি করে বিটকয়েনের অস্থিরতার মডেলিং এবং বিশ্লেষণ

লেখক:লিডিয়া, সৃষ্টিঃ ২০২২-১১-১৫ 15:32:43, আপডেটঃ ২০২৩-০৯-১৪ ২০ঃ৩০ঃ৫২

ইডি, এবং প্রক্রিয়াটি বাদ দেওয়া হয়েছিল।

স্বাভাবিক স্বাভাবিক বন্টনের মিলন ডিগ্রি টি বন্টনের মতো ভাল নয়, যা এটিও দেখায় যে ফলন বন্টনের স্বাভাবিক বন্টনের চেয়ে পুরু লেজ রয়েছে। এরপরে, মডেলিং প্রক্রিয়াটি প্রবেশ করুন, একটি এআরএমএ-গার্চ (১,১) মডেল রিগ্রেশন লগ_রিটার্নের জন্য চালানো হয় এবং নিম্নরূপ অনুমান করা হয়ঃ

[২৩] এঃ

am_GARCH = arch_model(training_garch, mean='AR', vol='GARCH',
                      p=1, q=1, lags=3, dist='ged')
res_GARCH = am_GARCH.fit(disp=False, options={'ftol': 1e-01})
res_GARCH.summary()

আউট[23]: পুনরাবৃত্তিঃ ১, ফাংশন গণনাঃ ১০, নেগেটিভ এলএলএফঃ ১৯১৭.৪২৬২১৫৪৯১৭৩০৫

এআর-গার্চ মডেলের ফলাফলimg

গড় মডেলimg

অস্থিরতা মডেলimg

বিতরণimg

কোভ্যারিয়েন্স অনুমানকারীঃ শক্তিশালী এআরসিএইচ ডাটাবেস অনুযায়ী গার্চ ভোলাটিলিটি সমীকরণের বর্ণনাঃimg

অস্থিরতার জন্য শর্তাধীন রিগ্রেশন সমীকরণ নিম্নরূপ পাওয়া যাবেঃimg

সামঞ্জস্যপূর্ণ পূর্বাভাসযুক্ত অস্থিরতার সাথে মিলিয়ে, প্রভাবটি দেখতে নমুনার বাস্তবায়িত অস্থিরতার সাথে তুলনা করুন।

[২৬] এঃ

def recursive_forecast(pd_dataframe):     
    window = predict_lag
    model = 'GARCH'
    index = kline_test[1:].index
    end_loc = np.where(index >= kline_test.index[window])[0].min()
    forecasts = {}
    for i in range(len(kline_test[1:]) - window + 2):
        mod = arch_model(pd_dataframe['log_return'][1:], mean='AR', vol=model, dist='ged',p=1, q=1)
        res = mod.fit(last_obs=i+end_loc, disp='off', options={'ftol': 1e03})
        temp = res.forecast().variance
        fcast = temp.iloc[i + end_loc - 1]
        forecasts[fcast.name] = fcast

    forecasts = pd.DataFrame(forecasts).T
    pd_dataframe['recursive_{}'.format(model)] = forecasts['h.1']
    evaluate(pd_dataframe, 'realized_volatility_1_hour', 'recursive_{}'.format(model))

recursive_forecast(kline_test)

আউট[২৬]: গড় পরম ত্রুটি (MAE): 0.0128 গড় পরম শতাংশ ত্রুটি (এমএপিই): ৯৫.৬ মূল গড় বর্গক্ষেত্র ত্রুটি (RMSE): 0.018

img

তুলনা করার জন্য, নিম্নরূপ একটি ARCH তৈরি করুনঃ

[২৭] এঃ

def recursive_forecast(pd_dataframe):     
    window = predict_lag
    model = 'ARCH'
    index = kline_test[1:].index
    end_loc = np.where(index >= kline_test.index[window])[0].min()
    forecasts = {}
    for i in range(len(kline_test[1:]) - window + 2):
        mod = arch_model(pd_dataframe['log_return'][1:], mean='AR', vol=model, dist='ged', p=1)
        res = mod.fit(last_obs=i+end_loc, disp='off', options={'ftol': 1e03})
        temp = res.forecast().variance
        fcast = temp.iloc[i + end_loc - 1]
        forecasts[fcast.name] = fcast

    forecasts = pd.DataFrame(forecasts).T
    pd_dataframe['recursive_{}'.format(model)] = forecasts['h.1']
    evaluate(pd_dataframe, 'realized_volatility_1_hour', 'recursive_{}'.format(model))

recursive_forecast(kline_test)

আউট[২৭]: গড় পরম ত্রুটি (MAE): 0.0136 গড় পরম শতাংশ ত্রুটি (এমএপিই): ৯৮.১ মূলের গড় বর্গক্ষেত্র ত্রুটি (RMSE): 0.02

img

৭. ইগার্চ মডেলিং

পরবর্তী ধাপ হল EGARCH মডেলিং করা

[২৪] এঃ

am_EGARCH = arch_model(training_egarch, mean='AR', vol='EGARCH', 
                       p=1, lags=3, o=1,q=1, dist='ged')
res_EGARCH = am_EGARCH.fit(disp=False, options={'ftol': 1e-01})
res_EGARCH.summary()

আউট[২৪]: পুনরাবৃত্তিঃ ১, ফাংশন সংখ্যাঃ ১১, নেগেটিভ এলএলএফঃ -1966.610328148909

এআর-ইজিএআরএইচ মডেলের ফলাফলimg

গড় মডেলimg

অস্থিরতা মডেলimg

বিতরণimg

কোভ্যারিয়েন্স অনুমানকারীঃ শক্তিশালী এআরসিএইচ লাইব্রেরির দেওয়া EGARCH ভোল্টেবিলিটি সমীকরণটি নিম্নরূপ বর্ণনা করা হয়েছেঃimg

প্রতিস্থাপনimg

ভোল্টেবিলিটির শর্তাধীন রিগ্রেশন সমীকরণ নিম্নরূপ পাওয়া যাবেঃimg

তাদের মধ্যে, সমতুল্য পদ γ এর আনুমানিক সহগ নির্ভরতা ব্যবধানের চেয়ে কম, যা নির্দেশ করে যে বিটকয়েনের রিটার্ন রেটের অস্থিরতায় একটি উল্লেখযোগ্য অসমতুল্যতা রয়েছে।

মেশানো পূর্বাভাসযুক্ত অস্থিরতার সাথে মিলিয়ে, ফলাফলগুলি নমুনার বাস্তবায়িত অস্থিরতার সাথে নিম্নরূপ তুলনা করা হয়ঃ

[২৮] এঃ

def recursive_forecast(pd_dataframe):     
    window = 280
    model = 'EGARCH'
    index = kline_test[1:].index
    end_loc = np.where(index >= kline_test.index[window])[0].min()
    forecasts = {}
    for i in range(len(kline_test[1:]) - window + 2):
        mod = arch_model(pd_dataframe['log_return'][1:], mean='AR', vol=model, 
                         lags=3, p=2, o=0, q=1, dist='ged')
        res = mod.fit(last_obs=i+end_loc, disp='off', options={'ftol': 1e03})
        temp = res.forecast().variance
        fcast = temp.iloc[i + end_loc - 1]
        forecasts[fcast.name] = fcast

    forecasts = pd.DataFrame(forecasts).T
    pd_dataframe['recursive_{}'.format(model)] = forecasts['h.1']
    evaluate(pd_dataframe, 'realized_volatility_1_hour', 'recursive_{}'.format(model))
    pd_dataframe['recursive_{}'.format(model)]

recursive_forecast(kline_test)

আউট[২৮]: গড় পরম ত্রুটি (এমএই): ০.০২০১ গড় পরম শতাংশ ত্রুটি (এমএপিই): ১২২ মূল গড় বর্গক্ষেত্র ত্রুটি (RMSE): 0.0279

img

এটা দেখা যায় যে এজিএআরসিএইচ অস্থিরতার প্রতি বেশি সংবেদনশীল এবং এআরসিএইচ এবং গার্চ এর তুলনায় অস্থিরতার সাথে আরও ভাল মেলে।

৮. উদ্বায়ীতা পূর্বাভাসের মূল্যায়ন

প্রতি ঘন্টার তথ্য নমুনার উপর ভিত্তি করে নির্বাচন করা হয়, এবং পরবর্তী পদক্ষেপটি এক ঘন্টা এগিয়ে ভবিষ্যদ্বাণী করা। আমরা তিনটি মডেলের প্রথম 10 ঘন্টার পূর্বাভাস অস্থিরতা নির্বাচন করি, বেঞ্চমার্ক অস্থিরতা হিসাবে আরভি সহ। তুলনামূলক ত্রুটি মান নিম্নরূপঃ

[২৯] এঃ

compare_ARCH_X = pd.DataFrame()
compare_ARCH_X['original']=kline_test['realized_volatility_1_hour']

compare_ARCH_X['arch']=kline_test['recursive_ARCH']
compare_ARCH_X['arch_diff']=compare_ARCH_X['original']-np.abs(compare_ARCH_X['arch'])

compare_ARCH_X['garch']=kline_test['recursive_GARCH']
compare_ARCH_X['garch_diff']=compare_ARCH_X['original']-np.abs(compare_ARCH_X['garch'])

compare_ARCH_X['egarch']=kline_test['recursive_EGARCH']
compare_ARCH_X['egarch_diff']=compare_ARCH_X['original']-np.abs(compare_ARCH_X['egarch'])
compare_ARCH_X = compare_ARCH_X[280:]
compare_ARCH_X.head(10)

আউট[29]:img

[৩০] এঃ

compare_ARCH_X_diff = pd.DataFrame(index=['ARCH','GARCH','EGARCH'], columns=['head 1 step', 'head 10 steps', 'head 100 steps'])
compare_ARCH_X_diff['head 1 step']['ARCH'] = compare_ARCH_X['arch_diff']['2020-03-13 04:00:00+08:00']
compare_ARCH_X_diff['head 10 steps']['ARCH'] = np.mean(compare_ARCH_X['arch_diff'][:10])
compare_ARCH_X_diff['head 100 steps']['ARCH'] = np.mean(compare_ARCH_X['arch_diff'][:100])
compare_ARCH_X_diff['head 1 step']['GARCH'] = compare_ARCH_X['garch_diff']['2020-03-13 04:00:00+08:00']
compare_ARCH_X_diff['head 10 steps']['GARCH'] = np.mean(compare_ARCH_X['garch_diff'][:10])
compare_ARCH_X_diff['head 100 steps']['GARCH'] = np.mean(compare_ARCH_X['garch_diff'][:100])
compare_ARCH_X_diff['head 1 step']['EGARCH'] = compare_ARCH_X['egarch_diff']['2020-03-13 04:00:00+08:00']
compare_ARCH_X_diff['head 10 steps']['EGARCH'] = np.mean(compare_ARCH_X['egarch_diff'][:10])
compare_ARCH_X_diff['head 100 steps']['EGARCH'] = np.abs(np.mean(compare_ARCH_X['egarch_diff'][:100]))
compare_ARCH_X_diff

আউট[৩০]:img

বেশ কয়েকটি পরীক্ষা পরিচালিত হয়েছে, প্রথম ঘন্টার পূর্বাভাস ফলাফলগুলিতে, EGARCH এর ক্ষুদ্রতম ত্রুটির সম্ভাবনা তুলনামূলকভাবে বড়, তবে সামগ্রিক পার্থক্যটি বিশেষভাবে সুস্পষ্ট নয়; স্বল্পমেয়াদী পূর্বাভাস প্রভাবগুলিতে কিছু সুস্পষ্ট পার্থক্য রয়েছে; দীর্ঘমেয়াদী পূর্বাভাসে EGARCH এর সবচেয়ে অসামান্য পূর্বাভাস ক্ষমতা রয়েছে

[31]:

compare_ARCH_X = pd.DataFrame()
compare_ARCH_X['Model'] = ['ARCH','GARCH','EGARCH']
compare_ARCH_X['RMSE'] = [get_rmse(kline_test['realized_volatility_1_hour'][280:320],kline_test['recursive_ARCH'][280:320]),
                          get_rmse(kline_test['realized_volatility_1_hour'][280:320],kline_test['recursive_GARCH'][280:320]),
                          get_rmse(kline_test['realized_volatility_1_hour'][280:320],kline_test['recursive_EGARCH'][280:320])]
compare_ARCH_X['MAPE'] = [get_mape(kline_test['realized_volatility_1_hour'][280:320],kline_test['recursive_ARCH'][280:320]),
                          get_mape(kline_test['realized_volatility_1_hour'][280:320],kline_test['recursive_GARCH'][280:320]),
                          get_mape(kline_test['realized_volatility_1_hour'][280:320],kline_test['recursive_EGARCH'][280:320])]
compare_ARCH_X['MASE'] = [get_mape(kline_test['realized_volatility_1_hour'][280:320],kline_test['recursive_ARCH'][280:320]),
                          get_mape(kline_test['realized_volatility_1_hour'][280:320],kline_test['recursive_GARCH'][280:320]),
                          get_mape(kline_test['realized_volatility_1_hour'][280:320],kline_test['recursive_EGARCH'][280:320])]

compare_ARCH_X

আউট[31]:img

সূচকগুলির ক্ষেত্রে, ARCH এর তুলনায় GARCH এবং EGARCH এর কিছুটা উন্নতি রয়েছে, তবে পার্থক্যটি বিশেষভাবে সুস্পষ্ট নয়। মাল্টি-স্যাম্পল ইন্টারভেল নির্বাচন এবং যাচাইয়ের পরে, EGARCH এর আরও ভাল পারফরম্যান্স থাকবে, যা মূলত কারণ EGARCH নমুনার heteroscedasticity ভাল ব্যাখ্যা করে।

৯. উপসংহার

উপরের সহজ বিশ্লেষণ থেকে দেখা যায় যে বিটকয়েনের লোগারিদমিক রিটার্ন রেট স্বাভাবিক বন্টনের সাথে সামঞ্জস্যপূর্ণ নয়, যা ঘন ফ্যাট লেজ দ্বারা চিহ্নিত হয়, এবং অস্থিরতার সমষ্টি এবং লিভারেজ প্রভাব রয়েছে, যদিও স্পষ্ট শর্তাধীন বিচিত্রতা প্রদর্শন করে।

লোগারিদমিক রিটার্ন রেট পূর্বাভাস এবং মূল্যায়নে, এআরএমএ মডেলের ইনট্রা স্যাম্পল স্ট্যাটিক পূর্বাভাস ক্ষমতা গতিশীল এক উল্লেখযোগ্যভাবে ভাল, যা দেখায় যে রোলিং পদ্ধতিটি স্পষ্টতই পুনরাবৃত্তি পদ্ধতির চেয়ে ভাল, এবং ওভারম্যাচিং এবং ত্রুটি পরিবর্ধনের সমস্যাগুলি এড়াতে পারে। নমুনার বাইরে রিটার্নের হার পূর্বাভাস দেওয়া কঠিন, যা বাজারের দুর্বল দক্ষতা অনুমানকে সন্তুষ্ট করে।

এছাড়াও, বিটকয়েনের পুরু লেজ ঘটনা, অর্থাৎ রিটার্নের পুরু লেজ বন্টন নিয়ে কাজ করার সময় দেখা যায় যে জিইডি (সাধারণ ত্রুটি) বন্টনটি টি বন্টন এবং স্বাভাবিক বন্টনের তুলনায় উল্লেখযোগ্যভাবে ভাল, যা লেজ ঝুঁকির পরিমাপের নির্ভুলতা উন্নত করতে পারে। একই সাথে, দীর্ঘমেয়াদী অস্থিরতা পূর্বাভাস দেওয়ার ক্ষেত্রে ইজিএআরসিএইচ এর আরও সুবিধা রয়েছে, যা নমুনার heteroscedasticity ভালভাবে ব্যাখ্যা করে। মডেল মেলে সিমট্রিক অনুমান সহগটি আত্মবিশ্বাস ব্যবধানের চেয়ে কম, যা নির্দেশ করে যে বিটকয়েনের রিটার্ন রেট ফ্লুক্টোশনে একটি উল্লেখযোগ্য অসিমট্রি রয়েছে।

পুরো মডেলিং প্রক্রিয়াটি বিভিন্ন সাহসী অনুমানের সাথে পূর্ণ, এবং বৈধতার উপর নির্ভর করে কোনও ধারাবাহিকতা সনাক্তকরণ নেই, তাই আমরা কেবল কয়েকটি ঘটনা সাবধানে যাচাই করতে পারি। ইতিহাস কেবল পরিসংখ্যানের ভবিষ্যতের ভবিষ্যদ্বাণী করার সম্ভাবনাকে সমর্থন করতে পারে, তবে নির্ভুলতা এবং ব্যয় কার্যকারিতা অনুপাতের এখনও দীর্ঘ কঠিন যাত্রা রয়েছে।

ঐতিহ্যবাহী বাজারের তুলনায়, বিটকয়েনের উচ্চ-ফ্রিকোয়েন্সি ডেটার প্রাপ্যতা সহজ। উচ্চ-ফ্রিকোয়েন্সি ডেটার উপর ভিত্তি করে বিভিন্ন সূচকগুলির বাস্তবায়িত পরিমাপ সহজ এবং গুরুত্বপূর্ণ হয়ে ওঠে। যদি নন-প্যারামিটারিক পরিমাপগুলি ঘটেছে এমন বাজারের জন্য দ্রুত পর্যবেক্ষণ সরবরাহ করতে পারে এবং পরামিতিগুলির সাথে পরিমাপগুলি মডেলের ইনপুট নির্ভুলতা উন্নত করতে পারে, তবে মডেলের হাইপারপ্যারামিটার হিসাবে বাস্তবায়িত নন-প্যারামিটারিক পরিমাপগুলি গ্রহণ করা আরও সম্পূর্ণ মডেল প্রতিষ্ঠা করতে পারে।

বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। বিটকয়েন বাজার একটি বৈদ্যুতিন মুদ্রা বাজার। যাইহোক, উপরের তফসিলের তথ্য প্রকৃতপক্ষে ব্যবসায়ীদের আচরণের আরও নির্ভুল বিশ্লেষণ সরবরাহ করতে পারে। এটি কেবলমাত্র আর্থিক তাত্ত্বিক মডেলগুলির জন্য আরও নির্ভরযোগ্য পরীক্ষা সরবরাহ করতে পারে না, তবে ব্যবসায়ীদের জন্য আরও প্রচুর সিদ্ধান্ত গ্রহণের তথ্য সরবরাহ করতে পারে, এমনকি তথ্য প্র

অবশেষে, যদি আপনি উপরের বিষয়বস্তুটি সহায়ক মনে করেন, তবে আপনি আমাকে একটি কাপ কোলা কিনতে কিছুটা বিটিসিও দিতে পারেন। তবে আমার কফির দরকার নেই, এটি পান করার পরে আমি ঘুমিয়ে পড়ব।


সম্পর্কিত

আরো