آربیتراژ صندوق‌های طلا

الگوریتمی که سرمایه را میان صندوق‌های طلای بورس تهران جابه‌جا می‌کند، در مسیر یک سبد طلای خودکار که می‌خواهد بیش از نگه‌داشتن طلا به دست آورد.

در حال آزمون
  • Python
  • صندوق‌های طلا
  • بورس تهران
  • ارزش نسبی
  • دفتر سفارش
  • شبیه‌ساز اجرا
  • داده ۳۶ صندوق طلا

    دفتر سفارش و معاملات آن‌ها در ۹۹۵ روز معاملاتی، از ژوئیه ۲۰۲۲ تا سپتامبر ۲۰۲۶.

  • شبیه‌سازی ۶۰٬۹۵۷ معامله

    معامله‌ی شبیه‌سازی‌شده در سناریوی پایه، در ۳۹۵ روز معاملاتی و ۲۱ صندوق.

  • آزمون ۸۲ شبیه‌سازی کامل

    برای سنجیدن قاعده روی دوره‌ها، سطح‌های کارمزد و فرض‌های گوناگون، پیش از گزارش آن.

  • فناوری ۱ زبان
    Pythonداده، شبیه‌ساز و الگوریتم

معرفی

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

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

این پروژه دفتر سفارش و معاملات ۳۶ صندوق طلا را از ژوئیه ۲۰۲۲ تا سپتامبر ۲۰۲۶، یعنی ۹۹۵ روز معاملاتی، همراه با ارزش خالص دارایی اعلام‌شده‌ی هر صندوق در اختیار دارد. روی این داده شبیه‌سازی ساختیم که بورس را ثانیه به ثانیه بازپخش می‌کند، و یک قاعده‌ی جابه‌جایی را روی ۲۱ صندوق، از ژانویه ۲۰۲۵ تا سپتامبر ۲۰۲۶ و در چهار سطح کارمزد کارگزاری آزمودیم. در آن شبیه‌سازی، سبد در ۱۹ ماه از ۲۱ ماه جلوتر از نگه‌داشتن ساده‌ی پرمعامله‌ترین صندوق طلا تمام شد. مقصد ما یک سبد طلای خودکار است که در هر لحظه کاملاً در طلاست و می‌خواهد در پایان طلای بیشتری از آغاز داشته باشد.

گزارش شبیه‌ساز

گزارش زیر همان آزمون را در چهار سناریو نشان می‌دهد. تنها چیزی که میان آن‌ها فرق می‌کند کارمزد کارگزاری است: بدون تخفیف، و با ۲۵، ۳۵ و ۴۵ درصد تخفیف. قاعده در هر چهار سناریو یکی است. می‌توانید گزارش را دانلود کنید و مستقل از ما بخوانید و بسنجید.

  • طلا ۲۱ صندوق طلای بورس تهران
    • ژانویه ۲۰۲۵ تا سپتامبر ۲۰۲۶بازه‌ی آزمون
    • ۳۹۵روز معاملاتی
    • ۶۰٬۹۵۷معامله‌ی شبیه‌سازی‌شده در سناریوی پایه
    • ۴ سناریو۴ سطح کارمزد

    یک فایل HTML مستقل، ۴٫۹ مگابایت، به پنج زبان

این نتیجه‌ی شبیه‌سازی روی دفتر سفارش ضبط‌شده‌ی بازار است، نه معامله‌ی واقعی، و تضمینی برای آینده نیست. در این شبیه‌سازی معامله‌گران رقیب مدل نشده‌اند.

رویکرد

ما هرگز نمی‌پرسیم طلا بالا می‌رود یا پایین؛ فقط می‌پرسیم همین حالا کدام صندوق ارزان‌ترین راهِ نگه‌داشتن آن است. کار در سه مرحله پیش می‌رود:

  1. از قیمت و ارزش خالص دارایی به یک معیار برای همه‌ی صندوق‌ها

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

  2. از معیار به جابه‌جایی‌ای که هزینه‌اش را درمی‌آورد

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

  3. از تصمیم به سفارش پرشده

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

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

این پروژه درون TSETMC آغاز شد و از همان ضبط‌های بازار استفاده می‌کند. پروژه‌ای جداست چون پرسش، شبیه‌ساز و مقصدش از آنِ خودش است.

آنچه برجسته است

  • با طلا سنجیده می‌شود، نه با تومان.

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

  • همیشه کاملاً در طلا.

    سبد هرگز به انتظار روز بهتر در پول نقد نمی‌نشیند و هرگز علیه طلا شرط نمی‌بندد. در پایان هر روز صندوق طلا در دست دارد. در هیچ‌یک از شبیه‌سازی‌های قاعده‌ی نهایی، پول قرضی به شب نرسید؛ شبیه‌ساز این را در پایان هر روز بررسی می‌کند و اگر رخ دهد ثبتش می‌کند.

  • شبیه‌سازی که حساب را درست نگه می‌دارد.

    بک‌تست معمولی فرض می‌کند هر سفارش با قیمت تابلو پر می‌شود. شبیه‌ساز ما دفتر سفارش ضبط‌شده را ثانیه به ثانیه بازپخش می‌کند، سفارش‌های ما را در صف می‌نشاند و آن‌ها را فقط با حجمی پر می‌کند که واقعاً آن‌جا بود. سناریوی پایه ۶۰٬۹۵۷ معامله‌ی شبیه‌سازی‌شده در ۳۹۵ روز معاملاتی دارد. الگوریتم بازار را با تأخیر می‌بیند و سفارش‌هایش با تأخیر می‌رسند.

  • کارمزد از سطر اول در حساب است.

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

  • آزموده در جایی که می‌توانست شکست بخورد.

    قاعده‌ای که روی یک دوره کار می‌کند شاید فقط خوش‌شانس بوده باشد. منطق قاعده را روی قیمت‌های ۲۰۲۲ تا ۲۰۲۴ بررسی کردیم، دوره‌ای که هیچ شبیه‌سازی‌ای از آن استفاده نکرده بود، و دو نیمه‌ی دوره‌ی آزمون را جدا خواندیم، چون بورس میان آن دو یک محدودیت معاملاتی را عوض کرد. روی نسخه‌ی پیشین قاعده، صندوق انتخاب‌شده را در همان لحظه‌ها با صندوقی تصادفی هم جایگزین کردیم و آن نسخه زیان داد. در مجموع ۸۲ شبیه‌سازیِ کل‌دوره پشت نتیجه‌ی گزارش‌شده است.

  • نتیجه‌ای که بدون ما هم می‌شود خواند.

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

مسیر پیش رو

  1. انجام‌شده

    ضبط‌های بازار، شبیه‌ساز اجرا و قاعده‌ی جابه‌جایی ساخته شده‌اند، و قاعده در شبیه‌سازی روی ۲۱ صندوق و چهار سطح کارمزد آزموده شده است.

  2. امروز

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

  3. پس از آن

    اجرای آن روی بازار زنده به‌صورت کاغذی، مقایسه‌ی هر روز با بازپخش همان روز در شبیه‌ساز، و سپس یک دوره‌ی آزمایشی کوچک برای سنجیدن پرشدن واقعی سفارش‌ها در برابر شبیه‌سازی.

  4. گام پایانی

    مدیریت خودکار سرمایه در قالب یک سبد طلا، به‌عنوان محصولی در کنار صندوق مدیریت پول.

فناوری

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