فرض کنید قانونی برای خرید پس از تقاطع دو میانگین متحرک نوشتهاید. اگر آن را روی قیمتهای گذشته اجرا کنید، چند معامله سودآور دیده میشود. آیا این نتیجه برای ارزیابی قانون کافی است؟ پاسخ به زمان صدور سیگنال، کیفیت داده و هزینه اجرای معامله بستگی دارد. بک تست با ChatGPT زمانی مفید است که از آن برای روشن کردن این جزئیات، نوشتن منطق آزمون و بررسی محاسبات کمک بگیرید.
در این مقاله چه میخوانیم؟
ChatGPT میتواند فایلهای داده را بررسی کند و برای بعضی کارهای تحلیلی کد پایتون بنویسد و اجرا کند. با این حال، توضیحی که در گفتوگو تولید میشود بهتنهایی نتیجه یک آزمون تاریخی نیست. تا وقتی داده مشخص، کد قابل بررسی و خروجی اجرای همان کد را در اختیار ندارید، عددی را بهعنوان عملکرد استراتژی گزارش نکنید.

اول قانون معامله را قابل اجرا بنویسید
جملهای مانند «وقتی روند خوب بود بخر» برای بک تست کافی نیست؛ دو نفر ممکن است از یک نمودار برداشت متفاوتی داشته باشند. قانون باید دارایی، بازه زمانی، نوع داده، شرط ورود، شرط خروج و اندازه موقعیت را تعیین کند. همچنین باید معلوم باشد در صورت نبود داده، توقف معامله یا باز بودن یک موقعیت چه اتفاقی میافتد.
برای یک تمرین، میتوان قانونی فرضی تعریف کرد: روی کندلهای روزانه، اگر میانگین بستهشدن سه روز گذشته از میانگین پنج روز گذشته عبور رو به بالا داشت، سیگنال خرید صادر شود. خروج با تقاطع معکوس رخ دهد و در هر لحظه حداکثر یک موقعیت باز باشد. هر دو میانگین فقط پس از بستهشدن کندل محاسبه شوند و سفارش در قیمت بازشدن کندل بعدی شبیهسازی شود. این قانون هنوز به تعریف تکلیف دادههای ناقص و هزینهها نیاز دارد، ولی ابهام «روند خوب» را برطرف میکند.
بازهها و شرط خروج را پیش از دیدن نتیجه آزمون ثبت کنید. اگر پس از مشاهده معاملات زیانده، طول میانگین یا تاریخ شروع را تغییر دهید، دادهای که قرار بود عملکرد قانون را بسنجد در انتخاب خود قانون هم دخالت کرده است.
داده تاریخی را پیش از بارگذاری بررسی کنید
فایل مناسب میتواند برای هر کندل، زمان، قیمت بازشدن، بیشترین و کمترین قیمت، قیمت بستهشدن و حجم را داشته باشد. منبع داده، بازار، جفتارز، دوره زمانی و منطقه زمانی را کنار فایل ثبت کنید. قیمت یک جفتارز در دو بازار الزاماً داده یکسانی برای شبیهسازی سفارش نیست؛ بنابراین از داده همان بازاری استفاده کنید که فرض اجرای معامله به آن مربوط است.
پیش از درخواست محاسبه، تعداد ردیفها، فاصلههای زمانی، ردیفهای تکراری، کندلهای گمشده و ترتیب تاریخها را بررسی کنید. دادهای که زمان آن جابهجا شده یا چند کندلش حذف شده است، ممکن است تقاطع میانگینها را در روز دیگری نشان دهد. فایل خام را نگه دارید و هر اصلاحی را جداگانه ثبت کنید تا بعداً بتوانید نتیجه را بازسازی کنید.
اگر داده در قالب تصویر یا جدول اسکنشده باشد، استخراج دقیق اعداد ممکن است خطا داشته باشد. برای آزمونی که به قیمت هر کندل وابسته است، فایل ساختیافته مانند CSV مناسبتر است. در تحلیل داده ChatGPT نیز باید روش انتخابشده و کد تولیدی را بازبینی کنید.

از ChatGPT چه بخواهیم؟
پس از آمادهکردن فایل، درخواست را به ورودیها و قواعد مشخص محدود کنید. برای نمونه بنویسید: «این فایل CSV شامل کندلهای روزانه است. ابتدا نام ستونها، بازه زمانی، دادههای گمشده و ردیفهای تکراری را گزارش کن. سپس قانون تقاطع میانگین سه و پنج کندل بستهشده را پیاده کن. سیگنال را در پایان کندل و اجرای سفارش را در کندل بعد در نظر بگیر. فرضهای کارمزد و لغزش قیمت را جداگانه نشان بده. کد، تعداد معاملات و جدول هر ورود و خروج را ارائه کن.»
این متن یک الگوی درخواست است و اجرای آن در این مقاله گزارش نشده است. اگر ابزار در حساب شما امکان تحلیل فایل را ارائه کند، فایل را بارگذاری کنید و خروجی کد و جدول معاملات را بخواهید. دسترسی به قابلیتها به حساب و تنظیمات آن وابسته است. اگر تحلیل کدنویسی در دسترس نبود، میتوانید از ChatGPT برای تدوین منطق و بازبینی کد کمک بگیرید و اجرای آزمون را در محیطی که در اختیار دارید انجام دهید.
در پاسخ، از مدل بخواهید هر تصمیم مبهم را بهصورت فرض مشخص بنویسد. سپس خودتان تأیید کنید که فرضها با روش معامله موردنظر سازگارند. تغییر کوچک در زمان اجرا یا نحوه برخورد با داده ناقص میتواند فهرست معاملات را عوض کند.


یک مثال آموزشی فرضی از اثر هزینهها
مثال آموزشی فرضی: فرض کنید معاملهای با قیمت مبنای خرید ۱۰۰ و قیمت مبنای فروش ۱۰۱ واحد پولی ثبت شده است. بازده خام این معامله، پیش از هزینهها، یک درصد است. حال برای هر سمت معامله کارمزد ۰٫۱ درصد و لغزش نامساعد ۰٫۰۵ درصد فرض کنید. جمع ساده این هزینهها برای ورود و خروج حدود ۰٫۳ درصد ارزش معامله است؛ بنابراین بازده خالص تقریبی به ۰٫۷ درصد میرسد.
این اعداد قیمت واقعی، نرخ کارمزد یک پلتفرم یا خروجی اجرای بک تست نیستند. محاسبه تقریبی هم جایگزین ثبت دقیق قیمت پرشدن سفارش و کارمزد هر سمت نمیشود. برای نتیجه دقیقتر، قیمت خرید را با لغزش ورود افزایش دهید، قیمت فروش را با لغزش خروج کاهش دهید و کارمزد هر سفارش را از ارزش همان سفارش حساب کنید. سپس سود یا زیان را بر سرمایه بهکاررفته تقسیم کنید.
همین مثال نشان میدهد چرا یک استراتژی با معاملات کمسود به فرض هزینه حساس است. در آزمون اصلی، چند سناریو با هزینههای متفاوت اجرا کنید و تعداد معاملاتی را که پس از هزینه سودآور میمانند ببینید. این بخش از مدیریت ریسک است: اندازه موقعیت، هزینه اجرا و زیان احتمالی باید با هم سنجیده شوند.

داده آموزش و آزمون را از هم جدا کنید
اگر طول میانگینها را با داده سالهای قدیمی انتخاب میکنید، یک دوره بعدی را برای ارزیابی کنار بگذارید و تا زمان تثبیت قانون به آن دست نزنید. دوره اول محل طراحی و تنظیم است؛ دوره دوم نشان میدهد همان قانون روی دادهای که در انتخاب آن دخالت نداشته چه رفتاری داشته است. در دادههای زمانی، ترتیب دورهها را حفظ کنید تا اطلاعات آینده وارد تصمیم گذشته نشود.
آزمودن دهها ترکیب و انتخاب بهترین نتیجه، خطر بیشبرازش را بالا میبرد. حتی اگر کد بدون خطا اجرا شود، ممکن است پارامتر انتخابشده فقط با نوسانهای همان دوره جور درآمده باشد. نتیجه دوره آزمون را کنار نتیجه دوره طراحی بگذارید و اختلاف تعداد معاملات، بازده و افت سرمایه را بررسی کنید. اگر پس از دیدن دوره آزمون دوباره قانون را تغییر دادید، آن دوره دیگر آزمون دستنخورده نیست و برای ارزیابی مستقل به داده جدید نیاز دارید.
روش دیگری برای بررسی پایداری، حرکت مرحلهای در زمان است: قانون را روی یک بخش قدیمی تنظیم کنید، روی بخش بعدی بسنجید و این فرایند را با پنجرههای زمانی بعدی تکرار کنید. این کار هم اجرای واقعی معامله را بازسازی کامل نمیکند، اما وابستگی نتیجه به یک برش خاص از تاریخ را آشکارتر میسازد.

نشت اطلاعات را در زمان سیگنال پیدا کنید
خطای رایج این است که سیگنال با قیمت بستهشدن امروز محاسبه شود و سفارش نیز با همان قیمت بستهشدن پرشده فرض شود، در حالی که تصمیم تنها پس از معلومشدن آن قیمت گرفته شده است. در تمرین میانگینها، اجرای سفارش در کندل بعد این مشکل مشخص را برطرف میکند. برای هر سطر جدول معاملات بپرسید: «در لحظه ارسال سفارش، کدام کندلها واقعاً کامل شده بودند؟»
نشت اطلاعات فقط به قیمت مربوط نیست. استفاده از فهرست امروز داراییها برای آزمون سالهای گذشته، حذف داراییهایی که بعداً از بازار خارج شدهاند، یا ساخت شاخصی با دادههای آینده میتواند تصویر عملکرد را تغییر دهد. زمان در دسترس قرار گرفتن هر ورودی باید با زمان تصمیم معامله سازگار باشد.
از ChatGPT بخواهید سطرهای نخست محاسبه میانگین، زمان اولین سیگنال و زمان اجرای سفارش متناظر را نشان دهد. چند مورد را دستی با فایل خام مقایسه کنید. این بازبینی از پذیرش جدول زیبا اما ناسازگار با ترتیب زمانی جلوگیری میکند.

خروجی را چگونه بخوانیم؟
یک عدد بازده، تصویر کاملی از آزمون نمیدهد. تعداد معاملات، سود و زیان پس از هزینه، بزرگترین افت سرمایه، مدت بازماندن موقعیتها و سهم چند معامله بزرگ در نتیجه را کنار هم ببینید. اگر بیشتر بازده از یک معامله آمده باشد، نتیجه به همان رویداد حساس است. تعداد کم معاملات نیز قضاوت درباره پایداری روش را دشوار میکند.
جدول هر معامله باید زمان سیگنال، زمان اجرا، قیمت فرضی پرشدن، مقدار کارمزد، سود یا زیان و مانده سرمایه پس از معامله را نشان دهد. چند معامله را از ابتدا تا انتها دوباره حساب کنید و جمع آنها را با نتیجه نهایی تطبیق دهید. برای ارزیابی دقت تحلیل، روش محاسبه و خطاهای آن را جدا از جذابیت عدد نهایی بررسی کنید.
پس از پایان آزمون، بررسی عملکرد معاملات به یک پرسش مشخص پاسخ میدهد: آیا نتیجه دورههای مختلف و سناریوهای مختلف هزینه، رفتاری مشابه دارد یا فقط در یک تنظیم خاص خوب دیده میشود؟ نتیجه تاریخی حتی پس از این بررسی نیز تضمینی برای دوره بعد نیست.

خطاهای رایج در گفتوگو و محاسبه
گاهی مدل بدون اجرای کد، جدولی از بازده یا نرخ موفقیت مینویسد. تا زمانی که داده ورودی، کد و خروجی قابل بازبینی وجود ندارد، چنین جدولی را نتیجه بک تست ندانید. همچنین ممکن است کد تولیدی، سفارش را در همان کندلی اجرا کند که شرط سیگنال از بستهشدن آن به دست آمده است. زمانهای جدول معاملات را با تعریف قانون تطبیق دهید.
خطای دیگر، کمگرفتن هزینههاست. کارمزد ممکن است در هر دو سمت معامله اعمال شود و قیمت اجرا با قیمت دیدهشده روی کندل فرق کند. سفارش محدود هم صرفاً بهدلیل لمسشدن یک قیمت روی نمودار، لزوماً کامل اجرا نمیشود. فرض پرشدن سفارش را صریح بنویسید و اگر داده لازم برای مدلکردن آن ندارید، این محدودیت را همراه نتیجه نگه دارید.
در آموزش ترید با هوش مصنوعی، جای ChatGPT کمک به تدوین و بازبینی روش است. صفحه هوش مصنوعی وانفینکس نیز میتواند مسیر آشنایی با موضوع باشد؛ وجود این پیوند به معنی اجرای همین بک تست در آن صفحه نیست.

جمعبندی
برای بک تست با ChatGPT، از قانونی شروع کنید که زمان سیگنال و اجرای سفارش در آن روشن باشد. داده تاریخی را بررسی کنید، کد و معاملات را بازبینی کنید، کارمزد و لغزش قیمت را وارد محاسبه کنید و دورهای دستنخورده برای آزمون نگه دارید. هر بار که نتیجه غیرعادی خوب بود، نخست ترتیب زمانی دادهها و فرضهای اجرا را بررسی کنید.
مثال عددی این راهنما فقط اثر هزینه را نشان میدهد و عملکرد هیچ استراتژی را اندازهگیری نمیکند. نتیجه قابل اتکا زمانی شکل میگیرد که آزمون واقعاً روی داده مشخص اجرا شده باشد، محاسبات آن قابل تکرار باشد و محدودیتهایش همراه نتیجه گزارش شوند.


