ঝুঁকি এবং রিটার্ন পরিমাপ - মার্কোভিটজ তত্ত্বের একটি ভূমিকা

লেখক:লিডিয়া, তৈরিঃ ২০২৩-১১-১৩ ১১ঃ০৫ঃ৫৪, আপডেটঃ ২০২৪-০১-০১ ১২ঃ২৩ঃ২৯

img

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

আধুনিক পোর্টফোলিও তত্ত্ব (এমপিটি), ১৯৫২ সালে হ্যারি মার্কোভিটস দ্বারা প্রস্তাবিত, পোর্টফোলিও নির্বাচনের জন্য একটি গাণিতিক কাঠামো। এটি ঝুঁকি নিয়ন্ত্রণের সময় ঝুঁকিপূর্ণ সম্পদের বিভিন্ন সংমিশ্রণ বেছে নিয়ে প্রত্যাশিত রিটার্ন সর্বাধিক করার লক্ষ্য রাখে। মূল ধারণাটি হ'ল সম্পদের দাম একে অপরের সাথে সম্পূর্ণরূপে সিঙ্ক্রোনাইজ হয় না (যেমন, সম্পদের মধ্যে অসম্পূর্ণ সম্পর্ক রয়েছে), এবং বৈচিত্র্যময় সম্পদ বরাদ্দের মাধ্যমে সামগ্রিক বিনিয়োগ ঝুঁকি হ্রাস করা যেতে পারে।

মার্কোভিটজ তত্ত্বের মূল ধারণা

  1. প্রত্যাশিত রিটার্ন হার: এটি হল রিটার্ন যা বিনিয়োগকারীরা হোল্ডিং সম্পদ বা বিনিয়োগের পোর্টফোলিও থেকে প্রত্যাশা করে, সাধারণত ঐতিহাসিক রিটার্ন ডেটা ভিত্তিতে পূর্বাভাস দেওয়া হয়।

img

কোথায়,imgহ'ল পোর্টফোলিওর প্রত্যাশিত রিটার্ন,imgহ'ল পোর্টফোলিওর i-ম সম্পদটির ওজন,imgi-তম সম্পদের প্রত্যাশিত আয়।

  1. ঝুঁকি (অস্থিরতা বা স্ট্যান্ডার্ড ডিভিয়েশন): বিনিয়োগের রিটার্নের অনিশ্চয়তা বা বিনিয়োগের অস্থিরতা পরিমাপ করতে ব্যবহৃত হয়।

img

কোথায়,imgপোর্টফোলিওর মোট ঝুঁকিকে প্রতিনিধিত্ব করে,imgহ'ল সম্পদ i এবং সম্পদ j এর সহবিবর্তনীয়তা, যা এই দুটি সম্পদের মধ্যে মূল্য পরিবর্তনের সম্পর্ককে পরিমাপ করে।

  1. সহবিবর্তনীয়তা: দুটি সম্পদের দামের পরিবর্তনের মধ্যে পারস্পরিক সম্পর্ক পরিমাপ করে।

img

কোথায়,imgহ'ল সম্পদ i এবং সম্পদ j এর সম্পর্কিত কোয়ালিটি,imgএবংimgহ'ল যথাক্রমে সম্পদ i এবং সম্পদ j এর স্ট্যান্ডার্ড ডিভিয়েশন।

  1. কার্যকর সীমান্ত: ঝুঁকি-ফলোআপ সমন্বয় ব্যবস্থায়, কার্যকর সীমানা হল বিনিয়োগের পোর্টফোলিওগুলির সেট যা একটি নির্দিষ্ট ঝুঁকি স্তরে সর্বোচ্চ প্রত্যাশিত রিটার্ন প্রদান করতে পারে।

img

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

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

সিমুলেশন পদ্ধতি ব্যবহার করে সর্বোত্তম সংমিশ্রণ সন্ধানের জন্য পাইথন কোড উদাহরণ

মার্কোভিটজ অপ্টিমাল পোর্টফোলিও গণনা একটি বহু-পদক্ষেপ প্রক্রিয়া, যা বেশ কয়েকটি মূল পদক্ষেপ জড়িত, যেমন ডেটা প্রস্তুতি, পোর্টফোলিও সিমুলেশন এবং সূচক গণনা। দয়া করে পড়ুনঃhttps://plotly.com/python/v3/ipython-notebooks/markowitz-portfolio-optimization/

  1. বাজারের তথ্য সংগ্রহ:

এর মধ্য দিয়েget_dataএটি রিটার্ন এবং ঝুঁকিগুলি গণনা করার জন্য প্রয়োজনীয় তথ্য, যা বিনিয়োগের পোর্টফোলিও তৈরি এবং শার্প অনুপাত গণনা করতে ব্যবহৃত হয়।

  1. রিটার্ন রেট এবং ঝুঁকি গণনা করুন:

দ্যcalculate_returns_riskএই ফাংশনটি প্রতিটি ডিজিটাল মুদ্রার জন্য বার্ষিক রিটার্ন এবং বার্ষিক ঝুঁকি (স্ট্যান্ডার্ড ডিভিয়েশন) গণনা করতে ব্যবহৃত হয়। এটি একটি সর্বোত্তম পোর্টফোলিওতে ব্যবহারের জন্য প্রতিটি সম্পদের ঐতিহাসিক কর্মক্ষমতা পরিমাপ করার জন্য করা হয়।

  1. মার্কোভিটস অপ্টিমাল পোর্টফোলিও গণনা করুন:

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

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

import numpy as np
import pandas as pd
import requests
import matplotlib.pyplot as plt

# Obtain market data
def get_data(symbols):
    data = []
    for symbol in symbols:
        url = 'https://api.binance.com/api/v3/klines?symbol=%s&interval=%s&limit=1000'%(symbol,'1d')
        res = requests.get(url)
        data.append([float(line[4]) for line in res.json()])
    return data

def calculate_returns_risk(data):
    returns = []
    risks = []

    for d in data:
        daily_returns = np.diff(d) / d[:-1]
        annualized_return = np.mean(daily_returns) * 365
        annualized_volatility = np.std(daily_returns) * np.sqrt(365)

        returns.append(annualized_return)
        risks.append(annualized_volatility)

    return np.array(returns), np.array(risks)

# Calculate Markowitz Optimal Portfolio
def calculate_optimal_portfolio(returns, risks):
    n_assets = len(returns)
    num_portfolios = 3000

    results = np.zeros((4, num_portfolios), dtype=object) 


    for i in range(num_portfolios):
        weights = np.random.random(n_assets)
        weights /= np.sum(weights)

        portfolio_return = np.sum(returns * weights)
        portfolio_risk = np.sqrt(np.dot(weights.T, np.dot(np.cov(returns, rowvar=False), weights)))

        results[0, i] = portfolio_return
        results[1, i] = portfolio_risk
        results[2, i] = portfolio_return / portfolio_risk
        results[3, i] = list(weights) # Convert weights to a list

    return results

symbols = ['BTCUSDT','ETHUSDT', 'BNBUSDT','LINKUSDT','BCHUSDT','LTCUSDT']
data = get_data(symbols)

returns, risks = calculate_returns_risk(data)
optimal_portfolios = calculate_optimal_portfolio(returns, risks)

max_sharpe_idx = np.argmax(optimal_portfolios[2])
optimal_return = optimal_portfolios[0, max_sharpe_idx]
optimal_risk = optimal_portfolios[1, max_sharpe_idx]
optimal_weights = optimal_portfolios[3, max_sharpe_idx]

# Output results
print("Optimal combination:")
for i in range(len(symbols)):
    print(f"{symbols[i]} Weight: {optimal_weights[i]:.4f}")

print(f"Expected return rate: {optimal_return:.4f}")
print(f"Expected risk (standard deviation): {optimal_risk:.4f}")
print(f"Sharpe ratio: {optimal_return / optimal_risk:.4f}")

# Visualized investment portfolio
plt.figure(figsize=(10, 5))
plt.scatter(optimal_portfolios[1], optimal_portfolios[0], c=optimal_portfolios[2], marker='o', s=3)
plt.title('portfolio')
plt.xlabel('std')
plt.ylabel('return')
plt.colorbar(label='sharp')
plt.show()

চূড়ান্ত আউটপুট ফলাফলঃ সর্বোত্তম সংমিশ্রণঃ বিটিসি ইউএসডিটি এর ওজনঃ ০.০৭২১ ETHUSDT এর ওজনঃ 0.2704 বিএনবি ইউএসডিটি এর ওজনঃ ০.৩৬৪৬ LINKUSDT এর ওজনঃ 0.1892 BCHUSDT এর ওজনঃ 0.0829 LTCUSDT এর ওজনঃ 0.0209 প্রত্যাশিত রিটার্ন রেটঃ 0.4195 প্রত্যাশিত ঝুঁকি (স্ট্যান্ডার্ড ডিভিয়েশন): 0.1219 শার্প অনুপাতঃ ৩.৪৪০৩

img


আরো