سناریوهایی وجود دارند که به خاطر وجود عدم قطعیت در ورودی‌های آن‌ها می‌توانند خروجی‌های متفاوتی داشته باشند.

یک سرمایه‌گذاری مالی می‌تواند تابع عوامل زیادی باشد که همگی بر روی نتیجه نهایی سرمایه‌گذاری تاثیر می‌گذارند.

برای مثال کسی که کارخانه‌ای تولیدی را می‌خواهد تاسیس کند می‌تواند تخمینی از هزینه‌ها داشته باشد. با این حال به خاطر عدم قطعیتی که در بسیاری از عوامل مثل قیمت مواد اولیه، انرژی، حمل و نقل، نیروی انسانی، ساخت و ساز، تعمیرات، و خط تولید وجود دارد میزان برآورد هزینه می‌تواند بسیار متفاوت باشد.

اگر سناریویی برای تخمین هزینه‌ی کارخانه بر اساس عوامل ذکر شده تعریف کنیم و میزان تاثیرگذاری عوامل را به صورت تصادفی انتخاب کنیم و هزینه‌ی تاسیس کارخانه را برای تعداد دفعات زیادی با مقادیر تصادفی محاسبه کنیم شبیه‌سازی مونت کارلو انجام داده‌ایم.

برای مثال در شبیه‌سازی مونت کارلو می‌توانیم بگوییم قیمت مواد اولیه به ازای هر واحد می‌تواند بین 10,000 تومان تا 100,000 تومان تغییر کند. و قیمت انرژی بین 1 میلیون تومان تا 10 میلیون تومان برای هر ماه می‌تواند تغییر کند. برای عوامل دیگر هم بازه‌ای را تعیین می‌‌کنیم.

سپس برای برآورد هزینه‌ی نهایی مقدار این عوامل را به صورت تصادفی انتخاب می‌کنیم.

برای مثال با انتخاب تصادفی، قیمت انرژی برای هر ماه 3 میلیون تومان شده است. قیمت مواد اولیه به ازای هر واحد 60,000 تومان شده است. یا هزینه نیروی انسانی به ازای هر ساعت برای هر نفر 40,000 تومان شده است. و به همین ترتیب مقدار هزینه‌ی عوامل دیگر به طور تصادفی انتخاب شده است.

ما فقط بازه‌ها را انتخاب کرده‌ایم و عددها به صورت تصادفی از بازه‌ها انتخاب شده‌اند. با چنین مقادیری می‌توان هزینه‌ی نهایی را محاسبه کرد.

حال اگر چنین کاری را برای تعداد دفعات زیادی مثلا 1000 مرتبه یا 1,000,000 مرتبه تکرار کنیم و از خروجی برآیند بگیریم شبیه‌سازی مونت کارلو را انجام داده‌ایم.

چنین بررسی می‌تواند ایده‌ی خوبی نسبت به خروجی یک مساله با عدم قطعیت بالا مثل سرمایه‌گذاری برای تاسیس یک کارخانه را به ما بدهد و به این ترتیب می‌توانیم برآوردی از هزینه داشته باشیم.

نام شبیه‌سازی مونتِ کارلو به خاطر شبیه‌سازی‌هایی که در سال‌های 1930 تا 1940 برای محاسبه احتمال انجام شدن واکنش‌های زنجیره‌ای برای شکافت هسته‌ای و ساخت بمب اتم انجام می‌شدند گذاشته شده است. فیزیکدان‌هایی که این شبیه‌سازی‌ها را انجام می‌دادند نام آن‌ها را مونت کارلو می‌گذاشتند که بر اساس نام کازینوی مونت کارلو در کشور موناکو است.

واقع‌گرا بودن در تعریف سناریوها اهمیت بالایی دارد. در همین راستا برای اینکه شبیه‌سازی مونت کارلو رو در اکسل انجام بدیم، سناریو پرتاب سکه که به زندگی من نزدیک‌تر است به جای سناریوی تاسیس کارخانه انتخاب شده است.

فرض کنید بخواهیم نتیجه پرتاب یک سکه برای 20 مرتبه را بررسی کنیم.

ممکن است برای اولین بار 7 بار سکه به پشت و 13 بار سکه به رو بیفتد. برای بار دوم 16 بار سکه به پشت و 4 بار سکه به رو می‌افتد.

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

یعنی با استفاده از شبیه‌سازی مونت کارلو می‌تونیم برای 100 مرتبه یا 1000 مرتبه نتیجه 20 بار پرتاب سکه را مشاهده کنیم.

چطور در اکسل چنین کاری را انجام دهیم؟

در اکسل ابتدا سناریوی مورد نظر رو ایجاد می‌کنیم. سپس با استفاده از ابزار Data Table می‌توانیم نتیجه آن سناریو را به تعداد دفعات دلخواه ایجاد کنیم.

مرحله اول ایجاد سناریوی بازی پرتاب سکه برای 20 مربته

برای پرتاب یک سکه می‌توان از فرمول =if(rand()<=0.5,1,0) در یکی از خانه‌های اکسل مثل A1 استفاده کرد.

اگر جواب 1 باشد به معنای این است که سکه به رو افتاده است و اگر جواب 0 باشد به این معناست که سکه به پشت افتاده است.

اگر فرمول را در خانه‌‌های A1 تا A20 قرار دهیم، گویی 20 بار پرتاب سکه را انجام داده‌ایم.

با جمع زدن نتایج 20 خانه می‌توان متوجه شد که چند بار سکه به پشت و چند بار سکه به رو افتاده است.

اگر جمع 8 شده باشد به این معناست که 8 بار سکه به رو آمده است و 12 بار سکه به پشت افتاده است.

انجام چنین کاری در اکسل در گیف زیر نشان داده شده است. برای تکرار محاسبات از کلید F9 می‌توان استفاده کرد.

مرحله دوم تکرار سناریو به تعداد دفعات دلخواه با استفاده از Data Table

پس از اینکه سناریوی مورد نظر را ایجاد کردیم که در اینجا نتیجه 20 بار پرتاب سکه است می‌توانیم شبیه‌سازی مونت کارلو را انجام دهیم.

کافی است به تعداد باری که می‌خواهیم سناریو را انجام دهیم جدولی را ایجاد کنیم و سپس با استفاده از Data Table نتیجه شبیه‌سازی را در برابر شماره تکرار سناریو ایجاد کنیم.

برای مثال در گیف زیر برای 10 مرتبه نتیجه 20 بار سکه انداختن محاسبه شده است و میانگین آن‌ها در انتها محاسبه شده است.

با کلید F9 می‌توان همه‌ی محاسبات را از نو تکرار کرد.

پس تا اینجا تونستیم سناریوی 20 بار پرتاب سکه را برای 10 بار ایجاد کنیم.

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

چون احتمال پرتاب هر سکه 50 درصد است، انتظار ما برای 20 بار پرتاب سکه این است که 10 بار سکه‌ها به پشت و 10 بار سکه‌ها به رو بیفتند. اما چنین چیزی زمانی درست است که انجام آزمایش 20 بار پرتاب سکه به تعداد دفعات زیادی اجرا شود.

برای مثال در گیف زیر آزمایش 20 بار پرتاب سکه برای 200 بار تکرار شده است و نمودار آن کشیده شده است. می‌بینید که متوسط پرتاب سکه‌ها بعد از 200 بار تکرار آزمایش به مقدار مورد انتظار که 10 بار رو افتادن و 10 بار پشت افتادن است نزدیک می‌شود.

با استفاده از  کلید F9 می‌توان محاسبات را تکرار کرد. می‌بینید که در ابتدای کار ممکن است نتایج متفاوتی به دست بیاید ولی وقتی تعداد آزمایش‌ها زیاد می‌شود تعداد رو افتادن و پشت افتادن سکه‌ها به احتمال 50 درصد خود نزدیک می‌شوند. در اینجا به این معناست که سکه‌ها 10 بار به رو بیفتند و 10 بار به پشت بیفتند.

پینوشت:

برای یادگیری: شبیه‌سازی مونت کارلو

عکس بالای مطلب از اینجا