Type/to search
2
Follow
484
Followers
ক্রিপ্টো মার্কেট RWA মাল্টি-অ্যাসেট ডাইনামিক ওয়েট বরাদ্দ: রিস্ক প্যারিটি কৌশল
Discussions
Created 2026-04-08 16:37:16  Updated 2026-04-20 18:13:03
 0
 206

img

ক্রিপ্টো বাজার সম্প্রতি খুব একটা ভালো যাচ্ছে না। BTC উচ্চতা থেকে নেমে এসেছে, altcoin গুলো আরও খারাপ অবস্থায় আছে, অনেকে পর্যবেক্ষণ করছে বা বাজার ছেড়ে দিচ্ছে। কিন্তু ঠিক এই সময়ে, আরেকটি জিনিস চুপিচুপি জনপ্রিয় হয়ে উঠছে - RWA, অর্থাৎ রিয়েল ওয়ার্ল্ড অ্যাসেটের টোকেনাইজেশন। সোনা, মার্কিন শেয়ারবাজার, অপরিশোধিত তেল - ঐতিহ্যবাহী বাজারের এই সম্পদগুলি ক্রিপ্টো এক্সচেঞ্জে কন্ট্রাক্ট আকারে আসতে শুরু করেছে। বড় বড় এক্সচেঞ্জগুলি ক্রমশ SPY (S&P 500 ETF প্রতিনিধিত্বকারী), গোল্ড XAU, অপরিষ্কৃত তেল CL এর মতো পণ্যগুলি চালু করছে। এর সাথে ইতিমধ্যে থাকা BTC মিলিয়ে, একটি মাল্টি-অ্যাসেট ট্রেডিং পরিবেশ যা মার্কিন শেয়ার, স্বর্ণ, অপরিষ্কৃত তেল এবং ক্রিপ্টোকারেন্সি কভার করে, প্রথমবারের মতো চেইনে রূপ নিয়েছে।

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


প্রথমে রিস্ক প্যারিটি পরিষ্কার করে নিন, তারপর পড়তে থাকুন

কিছু করার আগে, এই চারটি শব্দ 'রিস্ক প্যারিটি' ব্যাখ্যা করা দরকার, অন্যথায় পরবর্তী যুক্তি বোঝা কঠিন হবে।

সাধারণ মানুষ সম্পদ বরাদ্দ করার সময় ভাবতে পারে: আমি টাকা চার ভাগে সমানভাবে ভাগ করব, প্রতিটি সম্পদে ২৫% করে। শুনতে ভারসাম্যপূর্ণ মনে হয়, কিন্তু সমস্যা হল BTC একদিনে ১০% ওঠানামা করতে পারে, যেখানে স্বর্ণ হয়তো মাত্র ০.৫%। একই ২৫% পজিশন হলে, BTC থেকে আপনি যে ঝুঁকি নেবেন তা স্বর্ণের বিশ গুণ। চারটি সম্পদ গড়ে সমান দেখালেও, পোর্টফোলিওর ভাগ্য প্রায় সম্পূর্ণভাবে BTC দ্বারা নির্ধারিত হয়; বাকি তিনটি কেবল সাজসজ্জা।

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

img

প্রথমে সম্পদ নির্বাচন করুন, বৈচিত্র্যকরণ তখনই অর্থপূর্ণ হবে

রিস্ক প্যারিটি করতে প্রথম কাজ হল সঠিক সম্পদ নির্বাচন করা। সম্পদ ভুল হলে পরবর্তী হিসাব যতই সূক্ষ্ম হোক না কেন, কোনো লাভ হবে না।

সম্পদ পুলে SPY, XAU, CL, BTC এই চারটি রাখা হয়েছে। এই নির্বাচনের পেছনে যুক্তি আছে - এদের গতিবিধি সাধারণত সম্পূর্ণ সিঙ্ক্রোনাস নয়। অর্থনীতি ভালো থাকলে শেয়ার বাড়ে, ভীতি সৃষ্টি হলে স্বর্ণ বাড়ে, মুদ্রাস্ফীতি প্রত্যাশা বেশি হলে অপরিষ্কৃত তেল এবং স্বর্ণ উভয়ই বাড়ে, ক্রিপ্টো বাজার কখনও শেয়ারের সাথে একমুখী হয়, আবার কখনও সম্পূর্ণ ভিন্ন পথে চলে। যেহেতু এদের মধ্যে পারস্পরিক সম্পর্ক কম, তাই এগুলো একসাথে রাখলে ঝুঁকি বৈচিত্র্যকরণ বাস্তবে সম্ভব হয়। যদি চারটি সম্পদ প্রতিদিন একসাথে বাড়ে এবং পড়ে, তবে বৈচিত্র্যকরণ একটি মাত্র ভ্রম; কোনো পদ্ধতিই তখন রক্ষা করতে পারবে না।

সম্পদ নির্বাচন করার পরের প্রশ্ন: প্রতিটি সম্পদে কতটা বরাদ্দ করতে হবে? এটিই প্রকৃতপক্ষে রিস্ক প্যারিটি গণনার জন্য প্রয়োজনীয়।

img

কীভাবে প্রতিটি সম্পদের বরাদ্দের পরিমাণ গণনা করা যায়

কৌশলের গণনার যুক্তি দুটি ধাপে বিভক্ত।

প্রথম ধাপ, চারটি সম্পদের K-লাইন ডেটা টেনে আনুন এবং টাইমস্ট্যাম্প অনুযায়ী সারিবদ্ধ করুন। কৌশলটি 1 ঘণ্টার K-লাইন (PERIOD_H1) ডেটা ইনপুট হিসেবে ব্যবহার করে। এই ধাপটি সহজ মনে হলেও, বাস্তবে RWA কন্ট্রাক্ট পণ্যগুলির ডেটা কখনও কখনও অনুপস্থিত থাকে; যদি কোনো সময় পয়েন্টে SPY-এর কোনো উদ্ধৃতি না থাকে, তাহলে সেই সময় পয়েন্টের সম্পূর্ণ সারি বাদ দেওয়া হয় এবং কেবল চারটি সম্পদ একই সময়ে উদ্ধৃতি থাকা পয়েন্টগুলি ধরে রাখা হয়, তারপর পরবর্তী গণনা করা হয়।

javascript
for (var k = 0; k < keys.length; k++) { var row = timeMap[keys[k]], ok = true; for (var i = 0; i < LABELS.length; i++) { if (row[LABELS[i]] === undefined) { ok = false; break; } } if (ok) timestamps.push(parseInt(keys[k])); }

ডেটা সারিবদ্ধ করার পর, ক্লোজিং প্রাইস সিরিজটিকে লগারিদমিক রিটার্নে রূপান্তর করুন, অর্থাৎ ln(বর্তমান মূল্য / পূর্ববর্তী মূল্য)। সাধারণ শতাংশ পরিবর্তনের পরিবর্তে লগারিদমিক রিটার্ন ব্যবহার করা হয় কারণ এতে সময় যোগ করার বৈশিষ্ট্য রয়েছে - একাধিক সময়কালের যোগফল সরাসরি মোট লগারিদমিক রিটার্নের সমান হয়, যা প্রক্রিয়াকে সহজ করে; এছাড়াও সম্পদের মূল্য জ্যামিতিক ব্রাউনিয়ান মোশন অনুসরণ করে এমন সাধারণ ধারণা অনুযায়ী, লগারিদমিক রিটার্ন স্বাভাবিক বণ্টন অনুসরণ করে, যা পরবর্তী কোভেরিয়েন্স ম্যাট্রিক্স গণনার কাঠামোর সাথে সামঞ্জস্যপূর্ণ। তবে লক্ষণীয় যে, ক্রিপ্টো সম্পদের প্রকৃত রিটার্নে প্রায়ই মোটা লেজ থাকে, এটি একটি সম্ভাব্য অনুমানগত পক্ষপাত; চরম পরিস্থিতিতে কোভেরিয়েন্স ম্যাট্রিক্স প্রকৃত ঝুঁকি কম মূল্যায়ন করতে পারে।

javascript
function calcLogReturns(prices) { var r = []; for (var i = 1; i < prices.length; i++) { var prev = prices[i - 1], cur = prices[i]; if (!prev || !cur || prev <= 0 || cur <= 0) { r.push(0); continue; } r.push(Math.log(cur / prev)); } return r; }

দ্বিতীয় ধাপ, এই রিটার্ন সিরিজগুলি ব্যবহার করে কোভেরিয়েন্স ম্যাট্রিক্স গণনা করুন। কেবল ঐতিহাসিক গড় কোভেরিয়েন্স গণনা করা খুবই মোটা; এখানে EWMA ওয়েটিং ব্যবহার করা হয়েছে - সাম্প্রতিক ডেটাকে বেশি ওজন দেওয়া, যাতে কোভেরিয়েন্স ম্যাট্রিক্স বাজারের অবস্থার পরিবর্তন দ্রুত অনুধাবন করতে পারে।

javascript
for (var t = T - 1; t >= 0; t--) { var w = Math.pow(lambda, T - 1 - t); c += w * (retMat[i][t] - means[i]) * (retMat[j][t] - means[j]); ws += w; } cov[i][j] = c / ws; cov[j][i] = cov[i][j];

lambda হল ক্ষয় সহগ। কৌশলটি ডিফল্টভাবে EWMA_LAMBDA = 0.94 ব্যবহার করে, যা RiskMetrics থেকে দৈনিক ডেটার জন্য নেওয়া অভিজ্ঞতামূলক সেটিংসের সাথে সঙ্গতিপূর্ণ। তবে মনে রাখবেন, RiskMetrics-এর 0.94 দৈনিক ডেটার জন্য ডিজাইন করা; কৌশলটি 1 ঘণ্টার ডেটা ব্যবহার করে, যা বেশি ঘন। যদি আপনি চান যে কোভেরিয়েন্স ম্যাট্রিক্স সাম্প্রতিক পরিবর্তনের প্রতি সংবেদনশীলতা দৈনিক স্তরের 0.94-এর মতো হোক, তাত্ত্বিকভাবে এটিকে 1-এর কাছাকাছি একটি মানে রূপান্তর করতে হবে। কিন্তু বাস্তব ব্যবহারে, 0.94 ঘণ্টা স্তরেও একটি গ্রহণযোগ্য শুরু বিন্দু, যা নির্দেশ করে সাম্প্রতিক ডেটার ওজন বেশি এবং ঐতিহাসিক ক্ষয় দ্রুত। প্রকৃত ব্যাকটেস্ট ফলাফল অনুযায়ী আরও সমন্বয় করা যেতে পারে। lambda যত 1-এর কাছাকাছি, ঐতিহাসিক ডেটার প্রভাব তত দীর্ঘস্থায়ী হয় এবং কোভেরিয়েন্স ম্যাট্রিক্স সাম্প্রতিক পরিবর্তনের প্রতি ধীর প্রতিক্রিয়া দেখায়; lambda যত ছোট, কৌশল বাজারের অবস্থার পরিবর্তনের প্রতি তত বেশি সংবেদনশীল, কিন্তু স্বল্পমেয়াদী শব্দের কারণে অপ্রয়োজনীয় পুনর্বিন্যাসের ঝুঁকি বেড়ে যায়।

গণনা শেষে, ডায়াগোনালে একটি নিয়মিতকরণ পদ যোগ করা হয়, যার সহগ ডায়াগোনাল গড়ের 0.1% ( eps = diagMean * 0.001 )। 0.001 গুণের এই সহগটি পরীক্ষার মাধ্যমে নির্বাচন করা হয়েছে; এটি সংখ্যাগতভাবে ম্যাট্রিক্সকে ধনাত্মক সুনির্দিষ্ট রাখতে যথেষ্ট, এবং কোভেরিয়েন্স কাঠামোর উপর প্রভাব উপেক্ষা করা যায়। আরও একটি সরলীকরণ উল্লেখ করা দরকার: EWMA কোভেরিয়েন্সের কঠোর পদ্ধতিতে ওয়েটেড মিন ব্যবহার করে বিচ্যুতি গণনা করা উচিত, কিন্তু কোডটি পুরো রি-ওয়াইন্ডো উইন্ডোর সরল গাণিতিক গড় ব্যবহার করে। যেহেতু রিটার্নের গড় প্রায় শূন্যের কাছাকাছি (আর্থিক সম্পদের স্বল্পমেয়াদী রিটার্নের সাধারণ অবস্থা), এই সরলীকরণের ফলাফলের উপর প্রভাব উপেক্ষা করা যায়, কিন্তু গড় উল্লেখযোগ্যভাবে শূন্য থেকে বিচ্যুত হলে সামান্য পক্ষপাত সৃষ্টি হতে পারে।

কোভেরিয়েন্স ম্যাট্রিক্স পাওয়ার পর, প্রকৃত রিস্ক প্যারিটি সমাধান শুরু হয় - এমন একটি ওজন সেট খুঁজে বের করা যাতে প্রতিটি সম্পদের পোর্টফোলিও ঝুঁকিতে অবদান প্রায় সমান হয়। পুনরাবৃত্তি শুরু করার আগে, কৌশলটি ইকুয়াল ভোলাটিলিটি পোর্টফোলিও কোভেরিয়েন্সের মাধ্যমে প্রতিটি সম্পদের দিক নির্ধারণ করে, যা signs[] অ্যারেতে সংরক্ষিত থাকে (+1 লং, -1 শর্ট নির্দেশ করে)। পুনরাবৃত্তি প্রক্রিয়াটি এই পূর্বনির্ধারিত স্থির চিহ্নগুলি ব্যবহার করে এবং কেবল ওজনের পরিমাণ সামঞ্জস্য করে, দিক পরিবর্তন করে না - এটি প্রকৌশল স্থিতিশীলতার জন্য করা হয়, যাতে সংখ্যাগত অস্থিরতার কারণে ওজন পুনরাবৃত্তির সময় বারবার দিক পরিবর্তন না করে।

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

javascript
for (var iter = 0; iter < 2000; iter++) { var trc = riskContribs(w, scaledCov); var pv = portVol(w, scaledCov); var target = pv / n; var obj = 0; for (var i = 0; i < n; i++) { for (var j = i + 1; j < n; j++) { var d = Math.abs(trc[i]) - Math.abs(trc[j]); obj += d * d; } } if (obj < 1e-12) break; var nw = [], ns = 0; for (var i = 0; i < n; i++) { var rc = Math.abs(trc[i]); var sign = signs[i]; // পূর্বনির্ধারিত স্থির চিহ্ন ব্যবহার করুন var a = target / rc; var v = sign * Math.max(Math.abs(w[i]) * Math.pow(a, 0.5), 1e-6); nw.push(v); ns += Math.abs(v); } // পরম মান স্বাভাবিকীকরণ, যাতে প্রতিটি সম্পদের ওজনের পরম মানের যোগফল 1 হয় for (var i = 0; i < n; i++) w[i] = nw[i] / ns; }

অভিসারণের মানদণ্ড হলো সমস্ত সম্পদের ঝুঁকি অবদানের পার্থক্যের বর্গের সমষ্টি 1e-12 এর কম, তখন ধরা হয় প্রতিটি সম্পদের ঝুঁকি অবদান যথেষ্ট কাছাকাছি, পুনরাবৃত্তি বন্ধ করা হয়। সর্বোচ্চ পুনরাবৃত্তি সংখ্যা 2000 বার সীমাবদ্ধ করা হয়েছে, যাতে কোভেরিয়েন্স ম্যাট্রিক্স অস্বাভাবিক হলে অসীম লুপে না যায়। বাস্তবে সাধারণত কয়েকশ'র মধ্যে অভিসার ঘটে। যদি উপরের সীমায় পৌঁছানোর পরেও অভিসার না ঘটে, তাহলে বুঝতে হবে ইনপুট ডেটা বা কোভেরিয়েন্স ম্যাট্রিক্সে সমস্যা আছে, তখন কৌশলটি সমান ওজনের লং পজিশনে নেমে আসে, নিশ্চিত করে সিস্টেমটি অলস হয়ে না থাকে।

প্রতিটি সম্পদের ঝুঁকি অবদানকে তার ওজন গুণ প্রান্তিক ঝুঁকি হিসাবে সংজ্ঞায়িত করা হয়, ফলাফল ঋণাত্মক হতে পারে, যা নির্দেশ করে এই সম্পদটি পোর্টফোলিওর সামগ্রিক অস্থিরতা কমাচ্ছে।

javascript
function riskContribs(w, cov) { var sv = matVecMul(cov, w); var pv = portVol(w, cov); var trc = []; for (var i = 0; i < w.length; i++) trc.push(w[i] * sv[i] / pv); return trc; }

ওজন ঋণাত্মক হতে পারে, অর্থাৎ শর্ট সেলিং

স্ট্যান্ডার্ড রিস্ক প্যারিটি কৌশল সাধারণত শুধু লং করে, কিন্তু কন্ট্র্যাক্ট মার্কেটে শর্ট করা যায়, তাই এই কৌশলটি একটি এক্সটেনশন করেছে, ওজনকে ঋণাত্মক হতে দেয়।

নির্ণয়ের যুক্তিটি এ রকম: প্রথমে একটি সম-অস্থিরতা রেফারেন্স পোর্টফোলিও গণনা করা হয়—উচ্চ অস্থিরতার সম্পদের ওজন কম, নিম্ন অস্থিরতার সম্পদের ওজন বেশি—তারপর দেখা হয় প্রতিটি সম্পদ এবং এই রেফারেন্স পোর্টফোলিওর মধ্যে কোভেরিয়েন্স ধনাত্মক না ঋণাত্মক। কোভেরিয়েন্স ঋণাত্মক হলে, বোঝায় এই সম্পদটি পোর্টফোলিওর সাথে বিপরীত দিকে ওঠানামা করার প্রবণতা রাখে, এটি শর্ট করলে পোর্টফোলিওর সামগ্রিক ঝুঁকি কমাতে সাহায্য করে, ওজন ঋণাত্মক সেট করা হয়, কন্ট্র্যাক্ট মার্কেটে এটি শর্ট ওপেন করার সাথে মিলে যায়।

এটা বলা প্রয়োজন, এটি একটি ইঞ্জিনিয়ারিং অ্যাপ্রক্সিমেশন, স্ট্যান্ডার্ড লং-শর্ট রিস্ক প্যারিটির তাত্ত্বিক সমাধান নয়—কঠোর লং-শর্ট রিস্ক প্যারিটির জন্য সম্পূর্ণ কোভেরিয়েন্স ম্যাট্রিক্সের ভিত্তিতে কনস্ট্রেইন্টেড অপটিমাইজেশন প্রয়োজন, গণনার খরচ বেশি। এই অ্যাপ্রক্সিমেশন বেশিরভাগ বাজার অবস্থায় যুক্তিসঙ্গত দিকনির্দেশ দিতে পারে, কিন্তু যখন একাধিক সম্পদ একই সাথে রেফারেন্স পোর্টফোলিওর সাথে ঋণাত্মক কোভেরিয়েন্স দেখায়, তখন একাধিক সম্পদ একসাথে শর্ট করলে পোর্টফোলিওর ঝুঁকি কমে কিনা, তা পৃথকভাবে যাচাই করতে হবে, এককথায় বলা যাবে না।

javascript
var invVols = [], sumInvVol = 0; for (var i = 0; i < n; i++) { var vol = Math.sqrt(Math.max(scaledCov[i][i], 1e-16)); invVols.push(1 / vol); sumInvVol += 1 / vol; } var eqVolWeights = []; for (var i = 0; i < n; i++) { eqVolWeights.push(invVols[i] / sumInvVol); } var covWithPortfolio = 0; for (var j = 0; j < n; j++) { covWithPortfolio += eqVolWeights[j] * scaledCov[i][j]; } var dir = covWithPortfolio < 0 ? -1 : 1; Log('[দিকনির্দেশ]', LABELS[i], 'সম-অস্থিরতা পোর্টফোলিওর সাথে কোভেরিয়েন্স:', _N(covWithPortfolio, 8), '→', dir < 0 ? '🔴 শর্ট(short)' : '🟢 লং(long)');

দিকনির্দেশ একবার নির্ধারিত হলে, এটি signs[] অ্যারেতে স্থিরভাবে সংরক্ষিত হয়, পুরো পুনরাবৃত্তি সমাধান প্রক্রিয়াতে আর পরিবর্তন হয় না। পুনরাবৃত্তি শুধুমাত্র ওজনের মাত্রা সমন্বয় করে, দিক পরিবর্তন করে না। দিক নির্ধারিত হওয়ার পর, আরও একটি বিষয় নিয়ে কাজ করতে হবে: পুরো পোর্টফোলিওতে কতটা লিভারেজ যোগ করা উচিত।


লিভারেজ যত বেশি তত ভালো নয়, বরং অস্থিরতা অনুসরণ করে

কৌশলটিতে একটি লিভারেজ সমন্বয় প্রক্রিয়া তৈরি করা আছে, যার লক্ষ্য পোর্টফোলিওর সামগ্রিক অস্থিরতাকে একটি পূর্বনির্ধারিত স্তরের কাছাকাছি নিয়ন্ত্রণ করা। একটি উদাহরণ দিলে: আপনি গাড়ি চালাচ্ছেন, লক্ষ্য গতি ঘণ্টায় ৬০ কিলোমিটার। হাইওয়েতে রাস্তার অবস্থা ভালো, আপনি একটু বেশি এক্সেলারেটর চাপতে পারেন; শহরের রাস্তায় অবস্থা জটিল, আপনি একটু কমিয়ে দেন। কৌশলটির লিভারেজ প্রক্রিয়াটি একই রকম—বাজারের সামগ্রিক অস্থিরতা কম হলে, যথাযথভাবে লিভারেজ বাড়ানো হয়, যাতে পোর্টফোলিওর ঝুঁকির স্তর লক্ষ্যে পৌঁছায়; বাজারের অস্থিরতা বেশি হলে, স্বয়ংক্রিয়ভাবে লিভারেজ কমানো হয়, এক্সপোজার সংকুচিত হয়।

কৌশলটি 1-ঘন্টার K-লাইন ব্যবহার করে, এক বছরে ঠিক 8760টি থাকে, তাই বার্ষিক সহগ সরাসরি sqrt(8760) নেওয়া হয়। যদি অন্য সময়কাল ব্যবহার করা হয়, তাহলে এই সহগটি সমন্বয় করতে হবে: 15-মিনিটের লাইনের জন্য sqrt(35040), 4-ঘন্টার লাইনের জন্য sqrt(2190), দৈনিক লাইনের জন্য sqrt(365)

javascript
function calcLeverage(w, cov) { var pv = portVol(w, cov) * Math.sqrt(8760); if (!isFinite(pv) || pv <= 0) return 1; return Math.min(TARGET_VOL / pv, MAX_LEVERAGE); }

পোর্টফোলিওর বার্ষিক অস্থিরতাকে লক্ষ্য অস্থিরতা দিয়ে ভাগ করলে, কত গুণ লিভারেজ যোগ করা উচিত তা পাওয়া যায়, এবং চরম পরিস্থিতিতে লিভারেজ নিয়ন্ত্রণের বাইরে চলে যাওয়া রোধ করতে একটি ঊর্ধ্বসীমা নির্ধারণ করা হয়। এটি সর্বোচ্চ রিটার্নের পিছনে না ছোটা, বরং ঝুঁকি বাজেট ব্যবস্থাপনা—কত ঝুঁকি নিয়ে কত রিটার্ন পাওয়া যাবে, তা আগে থেকেই ঠিক করা, বাজারের গতির সাথে ভাসমান নয়।

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

javascript
function getAdaptiveSleep(w, cov) { var av = portVol(w, cov) * Math.sqrt(8760); if (av > 0.50) return FAST_INTERVAL; // 15 মিনিট else if (av > 0.30) return MID_INTERVAL; // 30 মিনিট else return SLOW_INTERVAL; // 60 মিনিট }

কখন পজিশন অ্যাডজাস্ট করবেন

বাজার প্রতিদিন চলতে থাকে, ওজন ক্রমাগত প্রাথমিক নকশা থেকে বিচ্যুত হতে থাকে। যদি এটি উপেক্ষা করা হয়, তাহলে দীর্ঘ সময় পরে পোর্টফোলিওর প্রকৃত ঝুঁকি প্রত্যাশিত থেকে অনেক দূরে চলে যায়। কৌশলটি রিব্যালেন্সিং ট্রিগার করার জন্য দুটি শর্ত নির্ধারণ করে: এক, সময় নির্ধারিত, নির্দিষ্ট ঘন্টা অন্তর জোর করে ওজন পুনঃগণনা করা; দুই, ড্রিফট অতিরিক্ত হওয়া, যখন কোনো সম্পদের প্রকৃত ওজন এবং টার্গেট ওজনের মধ্যে বিচ্যুতি থ্রেশহোল্ড অতিক্রম করে, অথবা লং-শর্ট দিক উল্টে যায়, তখনই পজিশন অ্যাডজাস্টমেন্ট ট্রিগার হয়, পরবর্তী নির্ধারিত সময়ের জন্য অপেক্ষা করা হয় না।

আপেক্ষিক ড্রিফট গণনা করার সময়, হর হিসেবে আগের ওজনের পরম মান নেওয়া হয়। যখন কোনো সম্পদের ওজন অত্যন্ত ছোট (শূন্যের কাছাকাছি) হয়ে যায়, তখন আপেক্ষিক ড্রিফট বড় হয়ে যায়, যা ঘন ঘন রিব্যালেন্সিং ট্রিগার করতে পারে। কৌশলটি এ থেকে সুরক্ষা প্রদান করে: যখন lastWeights[i] শূন্য হয়, তখন সরাসরি ড্রিফট চেক এড়িয়ে যাওয়া হয়, শূন্য দিয়ে ভাগের কারণে ভুল ট্রিগারিং এড়ানো হয়।

javascript
if (!lastWeights) { needRebal = true; rebalReason = 'প্রথম পোর্টফোলিও নির্মাণ'; } else if ((now - lastTime) > REBALANCE_HOURS * 3600000) { needRebal = true; rebalReason = 'নির্দিষ্ট সময় রি-ব্যালেন্স(' + REBALANCE_HOURS + 'h)'; } else { for (var i = 0; i < weights.length; i++) { if ((weights[i] >= 0) !== (lastWeights[i] >= 0)) { needRebal = true; rebalReason = LABELS[i] + ' দিক বিপরীত(লং↔শর্ট)'; break; } if (lastWeights[i] !== 0 && Math.abs(weights[i] - lastWeights[i]) / Math.abs(lastWeights[i]) > DRIFT_THRESHOLD) { needRebal = true; rebalReason = LABELS[i] + ' ওজন ড্রিফট থ্রেশহোল্ড অতিক্রম করেছে'; break; } } }

রি-ব্যালেন্স শুরু হওয়ার পর, কৌশল প্রতিটি সম্পদের লক্ষ্য নামমাত্র পরিমাণ গণনা করে। ধনাত্মক সংখ্যা লং পজিশন নির্দেশ করে, ঋণাত্মক সংখ্যা শর্ট পজিশন নির্দেশ করে। তারপর বর্তমান হোল্ডিংয়ের সাথে তুলনা করে সিদ্ধান্ত নেয় বাড়ানো, কমানো বা দিক পরিবর্তন করা হবে। দিক পরিবর্তনের সময়, প্রথমে বিপরীত দিকের পজিশন বন্ধ করে দেওয়া হয়, তারপর নতুন দিক খোলা হয়, যাতে একই সাথে লং এবং শর্ট উভয় দিক ধারণ না হয়।

javascript
if (targetSide === 'long' && shortQty > 0) { exchange.CreateOrder(sym, "closesell", -1, shortQty); } if (targetSide === 'short' && longQty > 0) { exchange.CreateOrder(sym, "closebuy", -1, longQty); } if (diffQty > 0) { exchange.CreateOrder(sym, targetSide === 'long' ? "buy" : "sell", -1, diffQty); } else if (diffQty < 0) { exchange.CreateOrder(sym, targetSide === 'long' ? "closebuy" : "closesell", -1, Math.abs(diffQty)); }

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


আরও একটি জরুরি সার্কিট ব্রেকার

সাধারণ রি-ব্যালেন্স ছাড়াও, কৌশলে একটি জরুরি পজিশন কমানোর মেকানিজম রয়েছে। প্রতিটি প্রধান চক্রে, বর্তমান সমস্ত হোল্ডিং পরীক্ষা করে দেখা হয়, আগের রেকর্ড করা দামের সাথে তুলনা করে দেখা হয় প্রতিটি দিকে প্রতিকূল পরিবর্তন কত বড়। যদি লং পজিশনে বড় ড্র বা শর্ট পজিশনে বড় রাই ৫% এর বেশি হয়, তাহলে কৌশল স্বয়ংক্রিয়ভাবে অর্ধেক পজিশন কমিয়ে দেয়, প্রথমে ক্ষতি নিয়ন্ত্রণে রাখে, পরবর্তী রি-ব্যালেন্সের জন্য অপেক্ষা না করে।

javascript
if (pos.side === 'long') { drop = (last - cur) / last; } else if (pos.side === 'short') { drop = (cur - last) / last; } if (drop >= EMERGENCY_DROP) { Log('🚨 জরুরি ঝুঁকি ট্রিগার! [' + label + '][' + pos.side + '] প্রতিকূল পরিবর্তন:', _N(drop * 100, 2) + '%', 'আগের:', _N(last, 4), '→ বর্তমান দাম:', _N(cur, 4)); if (mode === 'live') emergencyReduceLive(sym, label, pos.side, EMERGENCY_REDUCE); else emergencyReducePaper(sym, label, cur, pos.side, EMERGENCY_REDUCE); }

লাইভ মোডে, এক্সচেঞ্জের ক্লোজ পজিশন API কল করা হয়। পেপার মোডে, লোকাল স্টেটে মার্জিন এবং ক্যাশ আপডেট করা হয়, হোল্ডিং অনুপাতে সংশ্লিষ্ট মার্জিন মুক্ত করা হয়, বর্তমান লাভ-ক্ষতি গণনা করা হয় এবং ট্রেড রেকর্ডে লেখা হয়।

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


রান করলে কেমন দেখায়

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

এই ১ মিনিট রিফ্রেশ মাল্টি-থ্রেডিংয়ের মাধ্যমে করা হয় না, বরং মূল চক্রের অপেক্ষার সময় একটি সাব-লুপ নেস্ট করা থাকে, যা প্রতি ১ মিনিটে জেগে নতুন দাম টেনে আনে, অমার্জিত লাভ-ক্ষতি এবং নেট ওয়ার্থ কার্ভ আপডেট করে। কৌশল পোলিং ইন্টারভাল জমা হলে সাব-লুপ থেকে বেরিয়ে পরবর্তী কৌশল গণনায় যায়। পুরো কৌশলটি সম্পূর্ণ সিঙ্গেল-থ্রেডেড, কোনো কনকারেন্সি ঝুঁকি নেই।

javascript
function sleepWithPnlRefresh(totalSleepMs, weights, leverage, covMatrix, corrMatrix) { var elapsed = 0; while (elapsed < totalSleepMs) { var step = Math.min(PNL_INTERVAL, totalSleepMs - elapsed); Sleep(step); elapsed += step; var prices = getTickers(); var equity = calcEquity(prices); var initCap = _G('pt_initCapital') || INIT_CAPITAL; _chart.add(0, [new Date().getTime(), equity]); LogProfit(equity - initCap, '&'); renderDashboard(weights, leverage, covMatrix, corrMatrix, prices, totalSleepMs, true); } }

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


পেপার ট্রেডিংয়ের ফলাফল

কৌশল পরীক্ষার সময় সামগ্রিকভাবে কিছু মুনাফা হয়েছে। হোল্ডিং পজিশন: BTC, XAU, SPY সব লং, CL ক্রুড অয়েল শর্ট। এই সময়ে ইরান-যুক্তরাষ্ট্র সম্পর্কের শিথিলতার ইঙ্গিত দেখা দিয়েছে, ভূ-রাজনৈতিক ঝুঁকি প্রিমিয়াম কমেছে, এবং ক্রুড অয়েলের দামে উল্লেখযোগ্য পতন হয়েছে; শর্ট ক্রুড অয়েল এই সময়ের প্রধান মুনাফার উৎস। এই সময়ের বাজার গতিবিধি কৌশলের জন্য অনুকূল ছিল, ভবিষ্যতেও একই হবে তার কোনো নিশ্চয়তা নেই। বাস্তবে এই কৌশলে এখনও বেশ কিছু অমীমাংসিত দিক রয়েছে, সেগুলো না বলে সৎ থাকা কঠিন হবে।

img


অমীমাংসিত দিকগুলি

এই কৌশল তৈরি করার সময়, কয়েকটি সমস্যা পুরোপুরি সমাধান করা যায়নি।

প্রথম, RWA কন্ট্রাক্টের লিকুইডিটি BTC-র তুলনায় অনেক কম। SPY, XAU, CL-র মতো পণ্যগুলো চেইনে এখনও বেশ নতুন, স্লিপেজ এবং অর্ডার বুকের গভীরতা অজানা; পেপার ট্রেডিংয়ে এই সমস্যা অনুধাবন করা যায় না, কিন্তু লাইভ ট্রেডিংয়ে বাস্তবিকভাবে ঘটবে।

দ্বিতীয়, এই কৌশলটি বিভিন্ন সম্পদের মধ্যে নির্দিষ্ট মাত্রার ডাইভার্সিফিকেশন বজায় রাখার ওপর নির্ভর করে। কিন্তু বাজারের চরম আতঙ্কের সময়, ঝুঁকিপূর্ণ সম্পদের মধ্যে পারস্পরিক সম্পর্ক প্রায়ই তীব্রভাবে বেড়ে যায়, ডাইভার্সিফিকেশনের কার্যকারিতা মারাত্মকভাবে কমে যায়, এবং ঠিক তখনই আপনার সবচেয়ে বেশি সুরক্ষার প্রয়োজন হয়।

তৃতীয়, ঐতিহ্যবাহী সম্পদের অ-ট্রেডিং সময় থাকে, যখন দাম প্রায় নড়াচড়া করে না, কিন্তু BTC ২৪/৭ ওঠানামা করে। এর ফলে কোভ্যারিয়েন্স ম্যাট্রিক্স সম্পদগুলোর মধ্যে প্রকৃত সম্পর্ককে অবমূল্যায়ন করতে পারে – মার্কিন শেয়ারবাজার বন্ধ হওয়ার পর BTC চলতে থাকে, এই সময়ের ওঠানামার জন্য SPY-র কোনো ডেটা নেই; ঐতিহ্যবাহী বাজার খোলার সময়, কৌশলের সম্পর্ক সম্পর্কে বিচার ইতিমধ্যে পিছিয়ে থাকতে পারে।

চতুর্থ, ঐতিহাসিক ডেটা সীমিত, এবং স্বল্পকালীন সময়ে কোভ্যারিয়েন্স ম্যাট্রিক্সের স্থিতিশীলতা সন্দেহজনক। EWMA ডিক্য ফ্যাক্টর, টার্গেট ভোলাটিলিটি, রি-ব্যালেন্স থ্রেশহোল্ড – এই প্যারামিটারগুলো সবই অভিজ্ঞতামূলক মান, কঠোর যাচাই না করেই ব্যবহার করা হয়েছে। শর্ট পজিশনের সিদ্ধান্তের জন্য সমান ভোলাটিলিটির রেফারেন্স পোর্টফোলিওর কোভ্যারিয়েন্স সাইন ব্যবহার করা হয়; এটি একটি ইঞ্জিনিয়ারিং অ্যাপ্রক্সিমেশন। যখন একাধিক সম্পদ একই সময়ে রেফারেন্স পোর্টফোলিওর সাথে নেতিবাচক কোভ্যারিয়েন্স দেখায়, তখন একইসঙ্গে সবগুলো শর্ট করা পোর্টফোলিওর ঝুঁকি কমায় কিনা, তা প্রতিটি ক্ষেত্রে যাচাই করতে হবে, সরাসরি প্রয়োগ করা যাবে না। ক্রিপ্টো সম্পদে ফ্যাট-টেল বৈশিষ্ট্য থাকে, প্রকৃত রিটার্ন বণ্টন স্বাভাবিক বণ্টন থেকে বিচ্যুত হয়; চরম বাজার পরিস্থিতিতে কোভ্যারিয়েন্স ম্যাট্রিক্স ঝুঁকি কমিয়ে অনুমান করতে পারে; বর্তমান ফ্রেমওয়ার্ক ব্যবহার করতে হলে এই পক্ষপাতের অনুমান মেনে নিতে হবে।

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

এই সমস্যাগুলি শুধু সিমুলেটেড ট্রেডিং চালিয়ে আবিষ্কার করা যায় না; আরও বিস্তারিত মডেলিং এবং তাত্ত্বিক বিশ্লেষণ প্রয়োজন। প্রতিটি অনুমান যাচাই করে দেখতে হবে যে এই যুক্তিটি ক্রিপ্টো মার্কেটে কতটা টিকে থাকতে পারে।


শেষ কথা

এই কৌশলটি তৈরির মূল উদ্দেশ্য সহজ: ক্রিপ্টো মার্কেট বিয়ারিশ অবস্থায়, RWA কন্ট্রাক্ট সম্পদের শ্রেণির পরিধি সম্পূর্ণ করেছে। ট্র্যাডিশনাল ফাইন্যান্সে কয়েক দশকের সঞ্চিত বিনিয়োগ তত্ত্ব রয়েছে; এই দুটি জিনিস একসাথে এসেছে, চেষ্টা করে দেখা যেতেই পারে। কোড সম্পূর্ণ, যুক্তি স্বচ্ছ, প্যারামিটারগুলি পরিবর্তনযোগ্য। তবে এটি শেষ পর্যন্ত কেবল একটি শুরু বিন্দু, প্রকৃত লাইভ ট্রেডিংয়ে টিকে থাকার মতো সম্পদ বরাদ্দ কৌশল হতে এখনও অনেক দূর। আপনার যদি ভাল ধারণা থাকে, তবে এটিকে উন্নত করতে স্বাগতম।

উপরের বিষয়বস্তু কেবল কৌশল অনুসন্ধানের প্রক্রিয়া রেকর্ড করে, কোনো ধরনের বিনিয়োগ পরামর্শ গঠন করে না। কন্ট্রাক্ট ট্রেডিংয়ে যথেষ্ট ঝুঁকি রয়েছে; সিমুলেটেড ট্রেডিংয়ের ফলাফল লাইভ ট্রেডিংয়ের ফলাফল নির্দেশ করে না। প্রকৃত অর্থ জড়িত করার আগে সংশ্লিষ্ট ঝুঁকি সম্পর্কে ভালোভাবে জানুন।

কৌশলের সোর্স কোড: RWA大类资产风险平价策略

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)