فهرست مطالب
این مقاله به شما یاد میدهد چطور در نمودار سود و زیان استراتژی ستون دلخواه خودتان را بسازید: ستونی که هر چه لازم دارید — گاما، سربهسر، بازده روی وجه تضمین، سهم هر لگ از ریسک — را برای تکتک موقعیتها حساب میکند و کنار بقیهٔ ستونها مینشیند.
۱ — شروع
۲ — چه چیزی در اختیار دارید
- چهار آبجکت: option ، ua ، position ، strategy
- فیلدهای position (سطر جاری)
- فیلدهای strategy (کل استراتژی)
- آرایهٔ positions — فرمولهای تجمیعی
- تفاوت با فرمولنویسی دیدهبان
۳ — مثالها
- مثالهای پایه: ارزش، وزن، تعداد
- یونانیها: گاما، تتا، وگا
- سربهسر و فاصله تا آن
- سود/زیان لحظهای و آفست
- وجه تضمین و بازده روی سرمایهٔ درگیر
- زمان: بازده ماهانه و روز معاملاتی
- مثالهای تجمیعی با positions
- خروجی رنگی و شرطی
- پیشرفته: قرارداد دیگر، تابع عمومی
۴ — تنظیم و مدیریت
۵ — ریزهکاریها
ستون محاسباتی چیست و چه دردی را دوا میکند؟
جدول موقعیتهای نمودار استراتژی ستونهای ثابتی دارد: نماد، تعداد، اعمال، قیمت، دلتا، روز، IV، وجه تضمین، آفست و خالص. اینها برای اکثر کارها کافیاند — تا روزی که به عددی نیاز پیدا کنید که آنجا نیست.
مثلاً میخواهید گامای هر لگ را ببینید. یا بدانید هر موقعیت چند درصد از کل پول درگیر استراتژی را گرفته است. یا فاصلهٔ قیمت پایه تا سربهسر همان لگ را. تا امروز راهش این بود که اعداد را کپی کنید و در اکسل حساب کنید؛ و فردا که قیمتها تکان خورد، دوباره از اول.
ستون محاسباتی دقیقاً همین را حل میکند: شما یک خط فرمول مینویسید، آپشنباز آن را برای هر سطر جدول جداگانه اجرا میکند و نتیجه را در یک ستون تازه — کنار بقیهٔ ستونها، با رنگ و تراز دلخواه شما — نشان میدهد. با هر تیک بازار هم خودش بهروز میشود.
اگر با فرمولنویسی دیدهبان آشنا هستید، ۹۰٪ راه را آمدهاید. موتور، توابع و ساختار دقیقاً همان است؛ فقط دو آبجکت تازه اضافه شده که به اطلاعات موقعیت و استراتژی دسترسی میدهند. اگر آشنا نیستید نگران نباشید — همین مقاله از صفر شروع میکند و راهنمای کامل فرمولنویسی هم همیشه یک کلیک فاصله دارد.
کجاست؟ دکمهٔ «ساخت ستون»
به صفحهٔ نمودار سود/زیان و ساخت استراتژی بروید. بالای جدول موقعیتها، در همان ردیفی که دکمههای «جدید»، «ذخیره»، «اشتراک» و هستند، دکمهٔ «ساخت ستون» را میبینید.
با کلیک روی آن پنجرهٔ «ساخت و مدیریت ستون محاسباتی» باز میشود که سه بخش دارد:
- ایجاد ستون — جایی که فرمول مینویسید و ظاهر ستون را تنظیم میکنید.
- ستونهای آماده — فرمولهای از پیش نوشتهشدهٔ آپشنباز که با یک کلیک به ستونهای شما اضافه میشوند.
- راهنما — فهرست همهٔ فیلدهایی که میتوانید در فرمول استفاده کنید، بهعلاوهٔ لینک همین مقاله و راهنمای کامل فرمولنویسی.
میانبر: روی عنوان یک ستون محاسباتی در جدول راستکلیک کنید تا همان ستون مستقیم برای ویرایش باز شود. همان ژستی که در نسخهٔ قدیمی آپشنباز بود.
اولین ستون شما در یک دقیقه
بیایید ستونی بسازیم که ارزش ریالی هر موقعیت را نشان میدهد.
- روی ساخت ستون کلیک کنید.
- در کادر نام ستون بنویسید: ارزش موقعیت
- در کادر فرمول این خط را بنویسید:
position.count * position.price * strategy.size
- روی ذخیره بزنید.
همین. ستون تازه بلافاصله در جدول ظاهر میشود — درست بعد از ستون «نماد» — و برای هر سطر عدد خودش را نشان میدهد. لازم نیست چیز دیگری روشن کنید؛ ستونِ تازهساخته خودکار به جدول اضافه میشود.
زیر کادر فرمول یک نوار وضعیت هست: تا وقتی فرمول درست باشد میگوید «فرمول بدون خطا اجرا میشود»، و اگر جایی را اشتباه بنویسید همانجا پیام خطا را نشان میدهد — قبل از اینکه ذخیره کنید.
چهار آبجکت: option ، ua ، position ، strategy
وقتی فرمول شما برای یک سطر اجرا میشود، چهار آبجکت در اختیارتان است:
| آبجکت | چه چیزی است |
|---|---|
option | اطلاعات قرارداد همین سطر: اعمال، سررسید، IV، وجه تضمین، اطلاعات معاملاتی (option.ti) و… . دقیقاً همان چیزی که در دیدهبان دارید. |
ua | نماد پایهٔ همین قرارداد: نوسان تاریخی، IV Rank، اطلاعات معاملاتی (ua.ti) و… |
position | تازه — خودِ سطر جدول: خرید یا فروش، تعداد، قیمت ورودی که شما زدهاید، وجه تضمین، آفست و… |
strategy | تازه — کل استراتژی: قیمت پایه، اندازهٔ قرارداد، نرخ بهره، خالص و آفست کل |
تفاوت مهم option و position را جدی بگیرید: option.ti.lastPrice قیمت زندهٔ بازار است، اما position.price قیمتی است که شما در جدول وارد کردهاید — یعنی قیمت ورود واقعیتان. اکثر محاسبات سود و زیان به دومی نیاز دارند.
فیلدهای position — سطر جاری
| فیلد | چیست |
|---|---|
position.namad | نماد همین سطر |
position.type | نوع سطر: call ، put یا ua (نماد پایه) |
position.buy | اگر موقعیت خرید باشد true و اگر فروش باشد false |
position.side | همان buy به شکل متنی: 'buy' یا 'sell' |
position.count | تعداد قرارداد این سطر |
position.price | قیمت ورود (پرمیوم) هر واحد — همان چیزی که در ستون «قیمت» زدهاید |
position.strike | قیمت اعمال؛ برای لگ نماد پایه صفر است |
position.daysUntilMaturity | روز تقویمی مانده تا سررسید همین لگ |
position.tradeDaysUntilMaturity | روز معاملاتی مانده تا سررسید؛ اگر زنجیره در دسترس نباشد null |
position.iv | نوسان ضمنی همین سطر بر حسب درصد (مثلاً ۳۲.۵) |
position.delta | دلتای این لگ؛ برای نماد پایه ۱ |
position.margin | مبلغ وجه تضمین این سطر |
position.block | اگر تیک وجه تضمین (بلوکه) روشن باشد true |
position.active | اگر سطر در محاسبات نمودار فعال باشد true (تیک ابتدای سطر) |
position.offsetPrice | قیمت زندهٔ ستون آفست |
position.netPrice | خالص همین سطر — همان عددی که ستون «خالص» نشان میدهد |
position.offsetPL | سود/زیان آفست این سطر: (آفست − قیمت ورود) × تعداد × اندازه، با علامت جهت |
position.size | اندازهٔ قرارداد این لگ |
position.id | شناسهٔ داخلی سطر (برای کارهای پیشرفته) |
یک تفاوت با نسخهٔ قدیمی که باید بدانید: در آپشنباز قدیمی فیلدی به نام row.iv وجود داشت که در راهنما «نوسان ضمنی» معرفی شده بود، ولی در عمل مقدار نرخ بهره را برمیگرداند. در نسخهٔ جدید این اشتباه اصلاح شده: position.iv واقعاً نوسان ضمنی همان سطر است و نرخ بهره در strategy.interestRate قرار دارد. اگر فرمول قدیمی دارید، این خط را حتماً بازبینی کنید.
فیلدهای strategy — کل استراتژی
| فیلد | چیست |
|---|---|
strategy.name | نام استراتژی |
strategy.uaNamad | نماد پایهٔ استراتژی |
strategy.uaPrice | قیمت نماد پایه در سازنده (همان کادر «سهم پایه») |
strategy.size | اندازهٔ قرارداد |
strategy.interestRate | نرخ بهرهٔ بدون ریسک بر حسب درصد |
strategy.tradingFee | وضعیت تیک «کارمزد معامله» — true یا false |
strategy.exerciseFee | حالت کارمزد اعمال: 'none' ، 'all' یا 'itm-only' |
strategy.maxDaysUntilMaturity | بیشترین روز مانده تا سررسید بین لگهای فعال — سررسید عملی استراتژی |
strategy.positionCount | تعداد سطرهای فعال |
strategy.netTotal | خالص کل استراتژی — همان عددی که پای جدول میبینید |
strategy.offsetTotal | آفست ریالی کل استراتژی |
strategy.offsetPercent | درصد آفست کل؛ اگر قابل محاسبه نباشد null |
این مقادیر برای همهٔ سطرها یکساناند؛ به همین خاطر برای «سهم من از کل» یا «درصدِ کل» عالیاند.
آرایهٔ positions — فرمولهای تجمیعی
گاهی برای محاسبهٔ یک سطر، باید بقیهٔ سطرها را هم ببینید. آرایهٔ positions دقیقاً همین است: فهرست همهٔ سطرهای جدول، که هر عضوش همان ساختار position را دارد.
تفاوت با فرمولنویسی دیدهبان
موتور یکی است، ولی دو محیط از هم جدا نگه داشته شدهاند و این عمدی است:
- ستونهایی که اینجا میسازید فقط در جدول موقعیتهای استراتژی دیده میشوند؛ در دیدهبان ظاهر نمیشوند.
- ستونهای دیدهبان هم اینجا در فهرست شما نمیآیند.
- دلیلش ساده است: در دیدهبان اصلاً «موقعیتی» وجود ندارد — آنجا
positionوstrategyبرابرnullهستند. اگر ستونها را قاطی میکردیم، فرمولی که بهposition.countاشاره دارد در دیدهبان فقط خطا نشان میداد.
در عوض توابع عمومی (همان توابع دلخواهی که خودتان در دیدهبان تعریف میکنید) بین هر دو محیط مشترکاند — یک بار بنویسید، هر دو جا استفاده کنید.
مثالهای پایه
ارزش ریالی موقعیت
سادهترین محاسبهٔ ممکن و در عین حال یکی از پرکاربردترینها: هر لگ چقدر پول است.
سهم این لگ از کل خالص استراتژی
وقتی چهار لگ دارید، این ستون فوراً میگوید کدامشان سنگینترین بخش معامله است.
جهت و تعداد به زبان آدمیزاد
ستونها فقط عدد نیستند؛ هر رشتهٔ متنی هم قابل نمایش است.
فقط برای اختیارها، نه نماد پایه
لگ نماد پایه اعمال ندارد؛ با یک شرط ساده بهجای عدد بیمعنی، خط تیره نشان دهید.
یونانیها: گاما، تتا، وگا
تابع calcBS() کل خروجی بلکشولز را میدهد: { bs, delta, gamma, vega, theta, rho, iv }. جدول استراتژی ستون دلتا دارد ولی بقیهٔ یونانیها را ندارد — اینجا اضافهشان کنید.
گامای هر لگ
گاما میگوید دلتای این لگ با حرکت پایه چقدر عوض میشود — برای فهمیدن اینکه کدام لگ پوشش شما را ناپایدار میکند.
تتای موقعیت (نه تکقرارداد)
نکتهٔ مهم: calcBS() یونانی یک قرارداد را میدهد. برای اینکه عدد به موقعیت شما مربوط شود باید در تعداد و جهت ضرب شود — فروش، تتا را برعکس میکند.
وگا با علامت درست
حساسیت این لگ به نوسان. جمع این ستون روی کل استراتژی میگوید شما خریدار نوسانید یا فروشندهٔ آن.
یونانیها با IV دلخواه شما
اگر IV سطر را دستی عوض کرده باشید (برای سناریوسازی)، این شکل از فراخوانی همان عدد شما را مبنا میگیرد.
سربهسر و فاصله تا آن
سربهسر همین لگ
سربهسر هر لگ بهتنهایی. (سربهسر کل استراتژی را خود نمودار نشان میدهد؛ این ستون برای تحلیل تکتک پاها مفید است.)
چند درصد تا سربهسر فاصله داریم؟
فرمول چندخطی هم مجاز است — فقط یادتان باشد حتماً با return مقدار نهایی را برگردانید.
وضعیت ITM / OTM
خروجی ITM ، ATM یا OTM بر اساس قیمت زندهٔ پایه.
سود/زیان لحظهای و آفست
سود/زیان آفست همین سطر
آماده و حاضر است: (قیمت آفست − قیمت ورود) × تعداد × اندازه، با علامت جهت. دربارهٔ مفهوم آفست بیشتر بخوانید.
درصد سود/زیان روی پول همین لگ
همان بازده، ولی نسبت به پولی که روی همین لگ گذاشتهاید — نه کل استراتژی.
ارزش ذاتی و ارزش زمانی
برای دیدن اینکه چقدر از پرمیوم فعلی، ارزش زمانیِ در حال آبشدن است.
وجه تضمین و بازده روی سرمایهٔ درگیر
وجه تضمین درگیر این سطر
فقط سطرهایی که تیک وجه تضمین دارند عدد نشان میدهند.
بازده روی وجه تضمین
برای استراتژیهای فروش (کاوردکال، نیکد پوت و…) این عدد واقعیترین معیار بازده است — چون سرمایهٔ درگیر شما وجه تضمین است، نه پرمیوم.
زمان: بازده ماهانه و روز معاملاتی
بازده ماهانهشده
یک سود ۴٪ در ۱۰ روز با یک سود ۴٪ در ۹۰ روز زمین تا آسمان فرق دارد. monthlyProfit هر دو را روی مبنای ۳۰ روزه قابل مقایسه میکند.
روز معاملاتی بهجای روز تقویمی
روزهایی که بازار واقعاً باز است. اگر زنجیره در دسترس نباشد (مثلاً لگ نماد پایه) خط تیره میآید.
تتای روزانه به ریال
چند ریال در روز بابت گذر زمان میپردازید یا میگیرید.
مثالهای تجمیعی با positions
سهم این لگ از دلتای کل استراتژی
کدام لگ بیشترین جهتگیری را به استراتژی تحمیل میکند.
آیا این لگ نزدیکترین سررسید است؟
در استراتژیهای تقویمی (کلندر) خیلی به کار میآید.
چند لگ روی همین اعمال داریم؟
برای پیدا کردن سریع پاهای هماعمال در ساختارهای پیچیده مثل باترفلای و کاندور.
خروجی رنگی و شرطی
خروجی فرمول میتواند HTML باشد. دو تابع کمکی کار را ساده میکنند:
سود سبز، زیان قرمز
style(value, color, bg, title, bold) یک span رنگی میسازد و میتوانید برایش tooltip هم بگذارید.
رنگ بر اساس آستانه
زیر حد پایین خاکستری، بالای حد بالا نارنجی — برای برجستهکردن لگهای پرگاما.
نشان ITM با پسزمینه
در یک نگاه معلوم میشود کدام پاها در سررسید اعمال میشوند.
پیشرفته: قرارداد دیگر، تابع عمومی
مقایسه با اعمال بعدی همان زنجیره
تابع optionSE قرارداد همگروه و همسررسید با فاصلهٔ اعمال دلخواه را میدهد — برای دیدن اینکه رولکردن به اعمال بعدی چقدر خرج دارد.
قیمت زندهٔ یک نماد دلخواه
همهٔ توابع جستجوی دیدهبان اینجا هم کار میکنند.
استفاده از تابع عمومی خودتان
اگر در فرمولنویسی دیدهبان تابع عمومی تعریف کرده باشید، همینجا هم در دسترس است — و داخل آن تابع هم به position و strategy دسترسی دارید.
ظاهر ستون: رنگ، زمینه، تراز، توضیح
در پنجرهٔ ساخت ستون، بخش تاشوی «ظاهر ستون (رنگ و تراز)» اینها را میدهد:
- رنگ متن و رنگ زمینه — با انتخابگر رنگ یا با تایپ مستقیم کد (مثل
#0ea5e9). - تراز متن — چپ (پیشفرض، مناسب اعداد)، وسط یا راست (مناسب متن فارسی).
- توضیح ستون — متنی که با نگهداشتن نشانگر روی عنوان ستون نمایش داده میشود. برای ستونهایی که فرمولشان بدیهی نیست، این را پر کنید؛ سه ماه بعد خودتان هم ممنون میشوید.
اگر رنگ را داخل فرمول با style() تعیین کنید، آن رنگ فقط روی همان مقدار اعمال میشود؛ تنظیم رنگ در این بخش کل ستون را رنگ میکند. برای جزئیات بیشتر دربارهٔ ابزارهای ویژوال، مقالهٔ تنظیمات ویژوال را ببینید.
جای ستون، خاموش/روشن و ترتیب
ستون محاسباتی دقیقاً مثل ستونهای اصلی رفتار میکند. از پاپآور بالای جدول میتوانید:
- ستون را خاموش یا روشن کنید (کلید کنارش)؛
- با گرفتن دستگیرهٔ کنار نامش، ترتیبش را عوض کنید — هر جای جدول که بخواهید.
ستونهای محاسباتی در این فهرست با نشان fx مشخص شدهاند تا از ستونهای اصلی تفکیک شوند.
چند نکتهٔ رفتاری:
- ستون تازهساخته خودکار بعد از ستون «نماد» مینشیند. جابهجایش کنید، همانجا میماند.
- چیدمان ستونها سراسری است: روی همهٔ استراتژیهای شما اعمال میشود، نه فقط استراتژی باز.
- دکمهٔ «پیشفرض» در پاپآور ستونها، ستونهای محاسباتی را از جدول برمیدارد — ولی فرمولها را پاک نمیکند. هر وقت خواستید از پنجرهٔ ساخت ستون دوباره «افزودن به جدول» بزنید.
- ستونها در موبایل هم دیده میشوند: در کارت هر موقعیت، پایین فیلدهای قابل ویرایش.
- اگر نمودار دوم را باز کرده باشید، همان ستونها آنجا هم اجرا میشوند.
- در میزکار هم باکس استراتژی همین ستونها را نشان میدهد.
ستونهای آماده
در تب «ستونهای آماده» فهرستی از فرمولهای آمادهٔ آپشنباز را میبینید. با زدن «افزودن به ستونها» یک نسخهٔ کاملاً قابل ویرایش از آن فرمول در فهرست ستونهای شما ساخته میشود و بلافاصله به جدول اضافه میگردد.
این بهترین راه برای یادگیری است: یک ستون آماده را اضافه کنید، به تب «ایجاد ستون» بروید و ببینید چطور نوشته شده — بعد دستکاریاش کنید تا دقیقاً همان چیزی شود که میخواهید. نسخهٔ شما مستقل است؛ تغییراتتان روی نسخهٔ اصلی اثری ندارد.
نکتههایی که باید بدانید
- پای جدول برای ستونهای محاسباتی خالی است. عمدی است: فرمول شما ممکن است نسبت، درصد یا متن برگرداند و جمعزدن آنها عددی میسازد که معنی ندارد. اگر جمع میخواهید، خودتان با
positions.reduce(...)بسازید. - لگ نماد پایه قرارداد ندارد. برای سطرهای
uaآبجکتoptionبا مقادیر صفر پر میشود تا فرمول خطا ندهد. بهتر است خودتان باposition.type === 'ua'شرط بگذارید. - نمادی که در تابلو نیست (مثلاً دستی تایپ شده) هم همین رفتار را دارد: فرمول اجرا میشود ولی دادههای بازار صفرند.
- محاسبه با تأخیر کوتاه انجام میشود تا با هر تیک بازار جدول نلرزد. عدد شما حداکثر چند دهم ثانیه عقبتر از تابلو است.
- فقط ستونهای روشن محاسبه میشوند. ستون خاموش هیچ هزینهای ندارد.
- ستونها با حساب کاربری شما همگامسازی میشوند — روی دستگاه دیگر هم همان ستونها را دارید.
- فرمولنویسی از امکانات اشتراک حرفهای است؛ البته بیرون از ساعت بازار برای همه باز است.
خطاها و عیبیابی
اگر فرمول موقع اجرا به مشکل بخورد، همان سلول پیام خطا را نشان میدهد — نه کل ستون. رایجترینها:
| نشانه | علت و راهحل |
|---|---|
| «return ندارد» | فرمول چندخطی نوشتهاید ولی آخرش return نگذاشتهاید. فرمول تکخطی نیازی به return ندارد، چندخطی حتماً دارد. |
| سلول خالی یا «—» | فرمول null یا رشتهٔ خالی برگردانده. معمولاً یعنی شرطی که گذاشتهاید برای این سطر برقرار نیست. |
Cannot read properties of null | روی نتیجهٔ یک جستجو (مثل optionSE) بدون بررسی، فیلد خواندهاید. اول if (!x) return '—'; بگذارید. |
| عدد خیلی بزرگ یا خیلی کوچک | احتمالاً ضرب در strategy.size را جا انداختهاید یا دوبار اعمال کردهاید. قیمتها بهازای یک واحدند، نه یک قرارداد. |
| یونانی برعکس است | جهت را در نظر نگرفتهاید؛ برای موقعیت فروش باید در -1 ضرب شود. |
سؤالهای پرتکرار
ستونی که ساختم روی همهٔ استراتژیهایم میآید یا فقط همین یکی؟
روی همه. فرمولها و چیدمان ستونها سراسریاند و به استراتژی خاصی گره نخوردهاند — مثل تنظیمات نمایش، نه مثل خود استراتژی.
اگر ستون را حذف کنم، استراتژیهایم چیزی از دست میدهند؟
نه. ستون محاسباتی فقط نمایش است و در محاسبات نمودار سود/زیان یا اعداد ذخیرهشدهٔ استراتژی نقشی ندارد.
فرمولهای قدیمیام از نسخهٔ قبلی آپشنباز منتقل میشوند؟
خیر، خودکار منتقل نمیشوند و باید دوباره ساخته شوند. اسم فیلدها هم کمی فرق کرده (row.* شده position.*) و همانطور که بالاتر گفتیم، row.iv قدیمی در واقع نرخ بهره بود.
چند ستون میتوانم بسازم؟
محدودیتی نگذاشتهایم. ولی در عمل، جدولی با بیست ستون خوانده نمیشود؛ ستونهایی را که همیشه لازم ندارید خاموش نگه دارید.
میتوانم خروجی ستون را در ذخیرهٔ استراتژی یا اشتراکگذاری ببینم؟
ستونها بخشی از تنظیمات نمایش شما هستند، نه بخشی از خود استراتژی. کسی که لینک اشتراک شما را باز میکند، ستونهای خودش را میبیند.
در لیست استراتژیهای ذخیرهشده هم میآید؟
نه؛ آن جدول ستونهای خودش را دارد. ستون محاسباتی مخصوص جدول موقعیتهای داخل سازنده است.
قدم بعدی: اگر میخواهید عمیقتر وارد فرمولنویسی شوید، راهنمای کامل فرمولنویسی فهرست تمام فیلدها و توابع را دارد و نمودار تاریخی و نمای ماتریسی هم ابزارهای مکمل همین صفحهاند.