{"id":475492,"date":"2026-04-11T10:58:00","date_gmt":"2026-04-11T10:58:00","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=475492"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=475492","title":{"rendered":"DiffQuant: \u043f\u0440\u044f\u043c\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0428\u0430\u0440\u043f\u0430 \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<blockquote>\n<p><em>\u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c proxy-\u0446\u0435\u043b\u044c \u0438\u0437 \u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e ML-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0432 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0435?<\/em><\/p>\n<\/blockquote>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/455\/277\/ba6\/455277ba6ba163f730a2a2374e924a27.png\" alt=\"Walk-forward \u043e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430 out-of-sample \u043f\u0435\u0440\u0438\u043e\u0434\u0435: Sharpe +1.73, Return +8.22% \u043f\u043e\u0441\u043b\u0435 \u0443\u0447\u0451\u0442\u0430 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u0439. \u0411\u0435\u0437 proxy-\u0446\u0435\u043b\u0438.\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/455\/277\/ba6\/455277ba6ba163f730a2a2374e924a27.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/455\/277\/ba6\/455277ba6ba163f730a2a2374e924a27.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Walk-forward \u043e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430 out-of-sample \u043f\u0435\u0440\u0438\u043e\u0434\u0435: Sharpe +1.73, Return +8.22% \u043f\u043e\u0441\u043b\u0435 \u0443\u0447\u0451\u0442\u0430 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u0439. \u0411\u0435\u0437 proxy-\u0446\u0435\u043b\u0438.<\/figcaption><\/div>\n<\/figure>\n<hr\/>\n<p>\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0438\u0441\u0442\u0435\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0445\u0435\u043c\u0435: \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0431\u0443\u0434\u0443\u0449\u0443\u044e \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u044b \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u043f\u0440\u0430\u0432\u0438\u043b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u0432 \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e. \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u0445\u0435\u043c\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041d\u043e \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430.<\/p>\n<p>\u041d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043c\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c <strong>MSE<\/strong> (mean squared error, \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443) \u0438\u043b\u0438 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044e. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e\u0442 \u043f\u043e <strong>Sharpe ratio<\/strong>, \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0435, \u043e\u0431\u043e\u0440\u043e\u0442\u043d\u044b\u043c \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c. \u042d\u0442\u0438 \u0434\u0432\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441\u043b\u0430\u0431\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0434\u0443\u043c\u0430\u0442\u044c. \u0425\u043e\u0440\u043e\u0448\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0431\u0430\u0440\u0430 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 <strong>out-of-sample<\/strong> \u0440\u0435\u0436\u0438\u043c\u0435, \u0433\u0434\u0435 \u043c\u0435\u043b\u043a\u0438\u0435 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f \u0440\u044b\u043d\u043a\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435.<\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0440\u044b\u0432 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442, \u0438 \u0442\u0435\u043c, \u043f\u043e \u0447\u0435\u043c\u0443 \u0435\u0451 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e\u0442, \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 <strong>DiffQuant<\/strong>.<\/p>\n<blockquote>\n<p><em>\u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0438\u0434\u0435\u044f: \u0432\u0435\u0441\u044c \u043f\u0443\u0442\u044c \u043e\u0442 \u0441\u044b\u0440\u044b\u0445 \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 &#8212; \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u044b\u0439 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0430\u0444. \u0412 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 <\/em><strong><em>loss.backward()<\/em><\/strong><em> \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0432\u0435\u0441\u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 proxy-\u0446\u0435\u043b\u044c, \u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0430\u043c\u0443 \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443: mark-to-market <\/em><strong><em>PnL<\/em><\/strong><em>, \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0428\u0430\u0440\u043f\u0430.<\/em><\/p>\n<\/blockquote>\n<p>\u041a\u043e\u0434 \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430 <a href=\"https:\/\/github.com\/YuriyKolesnikov\/diffquant\" rel=\"noopener noreferrer nofollow\">GitHub<\/a>. \u0414\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 <a href=\"https:\/\/huggingface.co\/datasets\/ResearchRL\/diffquant-data\" rel=\"noopener noreferrer nofollow\">HuggingFace<\/a>. \u041b\u044e\u0431\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438.<\/p>\n<hr\/>\n<h3>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h3>\n<ol>\n<li>\n<p><a href=\"#proxy-gap\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 proxy-\u0446\u0435\u043b\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#simulator\" rel=\"noopener noreferrer nofollow\">\u0414\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#policy\" rel=\"noopener noreferrer nofollow\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#hybrid-loss\" rel=\"noopener noreferrer nofollow\">\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 loss: \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0428\u0430\u0440\u043f\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#mirror-aug\" rel=\"noopener noreferrer nofollow\">Mirror augmentation: \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#experiment\" rel=\"noopener noreferrer nofollow\">\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442: \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043f\u043b\u0438\u0442\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#training-dynamics\" rel=\"noopener noreferrer nofollow\">\u0414\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#walkforward\" rel=\"noopener noreferrer nofollow\">Walk-forward \u043e\u0446\u0435\u043d\u043a\u0430: test \u0438 backtest<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#results\" rel=\"noopener noreferrer nofollow\">\u0427\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#limitations\" rel=\"noopener noreferrer nofollow\">\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#roadmap\" rel=\"noopener noreferrer nofollow\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<\/ol>\n<hr\/>\n<p><a class=\"anchor\" name=\"proxy-gap\" id=\"proxy-gap\"><\/a><\/p>\n<h3>1. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 proxy-\u0446\u0435\u043b\u0438<\/h3>\n<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u043e\u0432\u0430\u044f ML-\u0441\u0445\u0435\u043c\u0430:<\/p>\n<pre><code>\u0434\u0430\u043d\u043d\u044b\u0435 \u2192 predict(return_{t+1}) \u2192 MSE loss \u2192 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0441\u043e\u0432                    \u2193             \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u044e                    \u2193            \u0431\u044d\u043a\u0442\u0435\u0441\u0442\u0435\u0440 \u2192 Sharpe \/ PnL \/ \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0430<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 MSE. \u041d\u0430 \u043e\u0446\u0435\u043d\u043a\u0435 Sharpe. \u042d\u0442\u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u044b\u0432 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p>\n<p><strong>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 1: \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a.<\/strong> \u041c\u043e\u0434\u0435\u043b\u044c, \u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043c\u0435\u043b\u043a\u0438\u0435 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f, \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0431\u044b\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u0432\u044b\u0441\u043e\u043a\u0430\u044f accuracy \u043d\u0430 \u043c\u0430\u043b\u043e\u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\u0445 \u0447\u0430\u0441\u0442\u043e \u0432\u0435\u0434\u0451\u0442 \u043a \u0433\u0438\u043f\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0441 \u0440\u0430\u0437\u0440\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u043e\u0440\u043e\u0442\u043e\u043c.<\/p>\n<p><strong>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 2: \u043d\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438.<\/strong> MSE-\u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0438\u0442\u0441\u044f \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e \u0432\u0445\u043e\u0434\u0438\u0442\u044c. \u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438.<\/p>\n<p><strong>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 3: \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043d\u0435 \u0433\u0440\u0430\u0444\u0430.<\/strong> \u041a\u043e\u043c\u0438\u0441\u0441\u0438\u044f \u0438 \u043f\u0440\u043e\u0441\u043a\u0430\u043b\u044c\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u0442-\u0444\u0430\u043a\u0442\u0443\u043c, \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0431\u044d\u043a\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430. \u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e\u0431 \u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0438\u0445 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c.<\/p>\n<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 \u0442\u0440\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e: \u043f\u043e\u0437\u0438\u0446\u0438\u044f, \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0430.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"simulator&quot;&gt;\" id=\"simulator&quot;&gt;\"><\/a><\/p>\n<h3>2. \u0414\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440<\/h3>\n<p>\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442?<\/p>\n<p>\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 DiffQuant &#8212; \u0434\u0430.<\/p>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430 <img decoding=\"async\" class=\"formula inline\" source=\"t \\in [0, H-1]\" alt=\"t \\in [0, H-1]\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/93\/933\/933f23bbf69fbcfc835a5de2ed5e2c0b.svg\" width=\"96\" height=\"16\" data-width=\"12.884\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/93\/933\/933f23bbf69fbcfc835a5de2ed5e2c0b.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/93\/933\/933f23bbf69fbcfc835a5de2ed5e2c0b.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"r_t = \\frac{c_t - c_{t-1}}{|c_{t-1}| + \\varepsilon}\" alt=\"r_t = \\frac{c_t - c_{t-1}}{|c_{t-1}| + \\varepsilon}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b1\/b1a\/b1a6fc62f8cd44a93c8960271ab7ba3e.svg\" width=\"112\" height=\"40\" data-width=\"14.666\" data-height=\"5.018\" data-vertical-align=\"-1.943\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b1\/b1a\/b1a6fc62f8cd44a93c8960271ab7ba3e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b1\/b1a\/b1a6fc62f8cd44a93c8960271ab7ba3e.svg 781w\" loading=\"lazy\" decode=\"async\"\/><img decoding=\"async\" class=\"formula\" source=\"\\text{gross}_t = p_{t-1} \\cdot r_t\" alt=\"\\text{gross}_t = p_{t-1} \\cdot r_t\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8d\/8d7\/8d761f2971ace9362a6db5f8c5cdf390.svg\" width=\"128\" height=\"16\" data-width=\"16.083\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8d\/8d7\/8d761f2971ace9362a6db5f8c5cdf390.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/8\/8d\/8d7\/8d761f2971ace9362a6db5f8c5cdf390.svg 781w\" loading=\"lazy\" decode=\"async\"\/><img decoding=\"async\" class=\"formula\" source=\"\\text{cost}_t = \\text{smooth\\_abs}(\\Delta p_t) \\cdot (\\text{commission} + \\text{slippage})\" alt=\"\\text{cost}_t = \\text{smooth\\_abs}(\\Delta p_t) \\cdot (\\text{commission} + \\text{slippage})\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/35\/358\/35834062952b7bf1fb4a4fe9365c969c.svg\" width=\"400\" height=\"16\" data-width=\"50.253\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/35\/358\/35834062952b7bf1fb4a4fe9365c969c.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/35\/358\/35834062952b7bf1fb4a4fe9365c969c.svg 781w\" loading=\"lazy\" decode=\"async\"\/><img decoding=\"async\" class=\"formula\" source=\"\\text{pnl}_t = \\text{gross}_t - \\text{cost}_t\" alt=\"\\text{pnl}_t = \\text{gross}_t - \\text{cost}_t\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c7\/c7f\/c7f5bdd0514860201922b8e642c18123.svg\" width=\"160\" height=\"16\" data-width=\"20.063\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c7\/c7f\/c7f5bdd0514860201922b8e642c18123.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c7\/c7f\/c7f5bdd0514860201922b8e642c18123.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0412\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 PyTorch. \u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0428\u0430\u0440\u043f\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0447\u0435\u0440\u0435\u0437 PnL, \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438 \u0447\u0435\u0440\u0435\u0437 backbone \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u041d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c: \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 <img decoding=\"async\" class=\"formula inline\" source=\"|\\Delta p_t|\" alt=\"|\\Delta p_t|\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2d\/2d6\/2d6feb328374b7715c72ef6cba9d1c58.svg\" width=\"40\" height=\"16\" data-width=\"5.046\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2d\/2d6\/2d6feb328374b7715c72ef6cba9d1c58.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2d\/2d6\/2d6feb328374b7715c72ef6cba9d1c58.svg 781w\" loading=\"lazy\" decode=\"async\"\/>. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0435\u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c \u0432 \u043d\u0443\u043b\u0435 \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u0431\u043b\u0438\u0437\u0438 flat-\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0414\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"C^\\infty\" alt=\"C^\\infty\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b1\/b12\/b127bc6e2af2c66432516913828003fe.svg\" width=\"24\" height=\"16\" data-width=\"3.625\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b1\/b12\/b127bc6e2af2c66432516913828003fe.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b1\/b12\/b127bc6e2af2c66432516913828003fe.svg 781w\" loading=\"lazy\" decode=\"async\"\/>-\u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0433\u043b\u0430\u0436\u0435\u043d\u043d\u0430\u044f \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\text{smooth\\_abs}(x) = \\sqrt{x^2 + \\varepsilon}, \\quad \\varepsilon = 10^{-6}\" alt=\"\\text{smooth\\_abs}(x) = \\sqrt{x^2 + \\varepsilon}, \\quad \\varepsilon = 10^{-6}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2d\/2d7\/2d7273303f74dd5070c27bda79607900.svg\" width=\"296\" height=\"24\" data-width=\"37.904\" data-height=\"3.086\" data-vertical-align=\"-0.978\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2d\/2d7\/2d7273303f74dd5070c27bda79607900.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/2d\/2d7\/2d7273303f74dd5070c27bda79607900.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u041f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 <img decoding=\"async\" class=\"formula inline\" source=\"|x|\" alt=\"|x|\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/cf\/cf5\/cf513decf6e4ace0e25cb1c932aaa049.svg\" width=\"16\" height=\"16\" data-width=\"2.552\" data-height=\"2.26\" data-vertical-align=\"-0.564\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/cf\/cf5\/cf513decf6e4ace0e25cb1c932aaa049.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/cf\/cf5\/cf513decf6e4ace0e25cb1c932aaa049.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043e\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c. \u0412 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u0443\u043b\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0433\u043b\u0430\u0434\u043a\u043e\u0439, \u0447\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u044b\u0432\u044b \u0432 \u0441\u0443\u0431\u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0435 \u0438 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0440\u0438\u0441\u043a \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u0440\u0430\u043d\u043d\u0438\u0445 \u044d\u043f\u043e\u0445\u0430\u0445, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0431\u043b\u0438\u0437\u0438 flat-\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"policy\" id=\"policy\"><\/a><\/p>\n<h3>3. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438<\/h3>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0430\u0444 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code>raw_features[t\u2212ctx:t]        \u2502        \u25bc  per-sample z-score \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0443 (\u0431\u0435\u0437 look-ahead)normalized_window  (B, ctx, F)        \u2502        \u25bc  iTransformerEncoderbackbone_output  (B, F \u00d7 d_model)        \u2502        \u2502  extras: [prev_pos, prev_delta, t\/H, (H\u2212t)\/H]        \u25bcconcat \u2192 PolicyHead \u2192 direction_head \u00d7 gate_head        \u2502        \u25bcposition_t \u2208 (\u22121, +1)        \u2502        \u25bcDiffSimulator \u2192 HybridLoss \u2192 loss.backward()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>iTransformer: \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e \u043a\u0430\u043d\u0430\u043b\u0430\u043c, \u0430 \u043d\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/h4>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 backbone \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f <strong>iTransformer<\/strong> (Liu et al., ICLR 2024 Spotlight). \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e Transformer, \u0433\u0434\u0435 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438 \u0441\u043b\u0443\u0436\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0301\u0435 \u0448\u0430\u0433\u0438, iTransformer \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443: \u0442\u043e\u043a\u0435\u043d\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043d\u0430\u043b \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432. \u0412\u0435\u0441\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u044f\u0434 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0435\u0434\u0438\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d, \u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0434 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438.<\/p>\n<p>\u0414\u043b\u044f \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0442\u043e \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430: \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043d\u043e\u0439, \u043e\u0431\u044a\u0451\u043c\u043e\u043c \u0438 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u043e\u0441\u044f\u0442 \u043c\u0435\u0436\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0301\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u044d\u0442\u043e \u0432\u0435\u0449\u044c \u043c\u0435\u043d\u0435\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u0430\u044f.<\/p>\n<p>\u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438: <code>d_model=32<\/code>, <code>n_layers=4<\/code>, <code>n_heads=2<\/code>, <code>d_ff=64<\/code> \u0438\u0442\u043e\u0433\u043e <strong>52 354 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430<\/strong>.<\/p>\n<h4>Direction \u00d7 Gate: \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435<\/h4>\n<p>\u0412\u044b\u0445\u043e\u0434 policy head \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"p_t = \\tanh\\!\\left(\\frac{d_t}{\\tau_\\text{dir}}\\right) \\times \\sigma\\!\\left(\\frac{g_t}{\\tau_\\text{gate}}\\right)\" alt=\"p_t = \\tanh\\!\\left(\\frac{d_t}{\\tau_\\text{dir}}\\right) \\times \\sigma\\!\\left(\\frac{g_t}{\\tau_\\text{gate}}\\right)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/28\/28c\/28c5918dbda8f36d5a5b48437a8c9fa2.svg\" width=\"232\" height=\"40\" data-width=\"29.402\" data-height=\"5.5\" data-vertical-align=\"-2.185\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/28\/28c\/28c5918dbda8f36d5a5b48437a8c9fa2.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/28\/28c\/28c5918dbda8f36d5a5b48437a8c9fa2.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<ul>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"d_t\" alt=\"d_t\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9e\/9eb\/9ebe20e92a653c5eb4f8cf32d11d267a.svg\" width=\"12\" height=\"12\" data-width=\"1.942\" data-height=\"1.927\" data-vertical-align=\"-0.357\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9e\/9eb\/9ebe20e92a653c5eb4f8cf32d11d267a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/9e\/9eb\/9ebe20e92a653c5eb4f8cf32d11d267a.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u044c\u0444\u0430-\u0441\u0438\u0433\u043d\u0430\u043b, \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u043a\u0443\u0434\u0430 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c;<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"g_t\" alt=\"g_t\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/f7\/f75\/f752008a78c8519e9f8f178faf0b87ed.svg\" width=\"12\" height=\"12\" data-width=\"1.844\" data-height=\"1.464\" data-vertical-align=\"-0.464\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/f7\/f75\/f752008a78c8519e9f8f178faf0b87ed.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/f7\/f75\/f752008a78c8519e9f8f178faf0b87ed.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; gate-\u0441\u0438\u0433\u043d\u0430\u043b, \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0438\u0437\u043a\u0430, <img decoding=\"async\" class=\"formula inline\" source=\"g_t \\to 0\" alt=\"g_t \\to 0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5e\/5e5\/5e565ffc2a8eda51960cc0c3e9688351.svg\" width=\"48\" height=\"16\" data-width=\"6.495\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5e\/5e5\/5e565ffc2a8eda51960cc0c3e9688351.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/5\/5e\/5e5\/5e565ffc2a8eda51960cc0c3e9688351.svg 781w\" loading=\"lazy\" decode=\"async\"\/>, \u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044f <img decoding=\"async\" class=\"formula inline\" source=\"p_t \\to 0\" alt=\"p_t \\to 0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/4b\/4bf\/4bfc86d8d128bfc2575cb97983ce8c1a.svg\" width=\"48\" height=\"16\" data-width=\"6.554\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/4b\/4bf\/4bfc86d8d128bfc2575cb97983ce8c1a.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/4\/4b\/4bf\/4bfc86d8d128bfc2575cb97983ce8c1a.svg 781w\" loading=\"lazy\" decode=\"async\"\/> \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 action masking \u0438\u0437 RL.<\/p>\n<p><strong>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f gate-bias = \u22121.0.<\/strong> \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0432 near-flat \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043f\u0440\u0430\u0432\u0434\u044b\u0432\u0430\u0435\u0442 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044e. \u042d\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u043d\u043d\u0438\u0435 \u044d\u043f\u043e\u0445\u0438 \u0442\u0430\u043a \u043a\u0430\u043a \u0431\u0435\u0437 \u044d\u0442\u043e\u0439 \u0434\u0435\u0442\u0430\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0448\u0443\u043c\u0435.<\/p>\n<h4>\u0421\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0438\u0439 rollout \u0431\u0435\u0437 look-ahead<\/h4>\n<p>\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0448\u043b\u043e\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. \u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043e\u043a\u043d\u0443:<\/p>\n<pre><code class=\"python\">for t in range(H):    window      = full_seq[:, t : t + ctx, :]    window_norm = normalize_context(window)        # \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0448\u043b\u044b\u0435 ctx \u0431\u0430\u0440\u043e\u0432    extras      = [prev_pos, prev_delta, t\/H, (H\u2212t)\/H]    pos_t       = model(window_norm, extras)    positions_list.append(pos_t)positions = cat(positions_list)step_pnl  = simulator.simulate(closes, positions)loss      = hybrid_loss(step_pnl, positions)loss.backward()<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0423\u0442\u0435\u0447\u043a\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u043e\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u044f\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0417\u0434\u0435\u0441\u044c \u043e\u043d\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0430.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"hybrid-loss\" id=\"hybrid-loss\"><\/a><\/p>\n<h3>4. \u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 loss: \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0428\u0430\u0440\u043f\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e<\/h3>\n<p>\u041f\u0440\u044f\u043c\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0428\u0430\u0440\u043f\u0430 \u0437\u0432\u0443\u0447\u0438\u0442 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0435\u0436\u0438\u043c\u0430\u043c:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u044f<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0421\u0438\u043c\u043f\u0442\u043e\u043c<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Churning<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0440, \u0441\u044a\u0435\u0434\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044f\u043c\u0438<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Flat collapse<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u043a\u044d\u0448, Sharpe \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0435\u0447\u0435\u043d<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Long bias<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0430 \u0431\u044b\u0447\u044c\u0435\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a buy-and-hold<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Terminal exposure<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0435\u0441\u044c \u0440\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0435\u0446 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Drawdown blindness<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u044b\u0441\u043e\u043a\u0430\u044f \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u0446\u0435\u043d\u043e\u0439 \u043d\u0435\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0438<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 loss \u0430\u0434\u0440\u0435\u0441\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0447\u043b\u0435\u043d\u043e\u043c:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\mathcal{L} = \\lambda_1 \\cdot (-\\text{Sharpe}) + \\lambda_2 \\cdot \\text{turnover} + \\lambda_3 \\cdot \\text{drawdown}_{\\log} + \\lambda_4 \\cdot |p_H| + \\lambda_5 \\cdot (\\hat{f} - f^*)^2 + \\lambda_6 \\cdot |\\bar{p}|\" alt=\"\\mathcal{L} = \\lambda_1 \\cdot (-\\text{Sharpe}) + \\lambda_2 \\cdot \\text{turnover} + \\lambda_3 \\cdot \\text{drawdown}_{\\log} + \\lambda_4 \\cdot |p_H| + \\lambda_5 \\cdot (\\hat{f} - f^*)^2 + \\lambda_6 \\cdot |\\bar{p}|\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/97\/972\/972ba9db23b80575afc81576c0395290.svg\" width=\"704\" height=\"24\" data-width=\"88.803\" data-height=\"3.097\" data-vertical-align=\"-0.983\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/97\/972\/972ba9db23b80575afc81576c0395290.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/9\/97\/972\/972ba9db23b80575afc81576c0395290.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<ul>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\lambda_1 \\cdot (-\\text{Sharpe})\" alt=\"\\lambda_1 \\cdot (-\\text{Sharpe})\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a0\/a03\/a03b9b5fa1785b7e1ebd24ac5d371f1f.svg\" width=\"112\" height=\"16\" data-width=\"14.258\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a0\/a03\/a03b9b5fa1785b7e1ebd24ac5d371f1f.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/a\/a0\/a03\/a03b9b5fa1785b7e1ebd24ac5d371f1f.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u0446\u0435\u043b\u044c;<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\lambda_2 \\cdot \\text{turnover}\" alt=\"\\lambda_2 \\cdot \\text{turnover}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c5\/c55\/c5555936cc83707c8d9259c0dae0d8b9.svg\" width=\"96\" height=\"16\" data-width=\"12.441\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c5\/c55\/c5555936cc83707c8d9259c0dae0d8b9.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c5\/c55\/c5555936cc83707c8d9259c0dae0d8b9.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u043e\u0431\u043e\u0440\u043e\u0442, \u0431\u043e\u0440\u0435\u0442\u0441\u044f \u0441 churning;<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\lambda_3 \\cdot \\text{drawdown}_{\\log}\" alt=\"\\lambda_3 \\cdot \\text{drawdown}_{\\log}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/3d\/3d4\/3d4d8eeccaf96c0e97aa1cb0650c0caf.svg\" width=\"128\" height=\"16\" data-width=\"16.364\" data-height=\"2.366\" data-vertical-align=\"-0.617\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/3d\/3d4\/3d4d8eeccaf96c0e97aa1cb0650c0caf.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/3\/3d\/3d4\/3d4d8eeccaf96c0e97aa1cb0650c0caf.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u043f\u0438\u0437\u043e\u0434\u0430;<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\lambda_4 \\cdot |p_H|\" alt=\"\\lambda_4 \\cdot |p_H|\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/20\/205\/2054ff1f9cad7c7ed374545cd472bd60.svg\" width=\"56\" height=\"16\" data-width=\"7.945\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/20\/205\/2054ff1f9cad7c7ed374545cd472bd60.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/2\/20\/205\/2054ff1f9cad7c7ed374545cd472bd60.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u043a\u043e\u043d\u0446\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430;<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\lambda_5 \\cdot (\\hat{f} - f^*)^2\" alt=\"\\lambda_5 \\cdot (\\hat{f} - f^*)^2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/0c\/0ce\/0ce23411c5f0fcdb72734affbb50d3f8.svg\" width=\"104\" height=\"16\" data-width=\"13.051\" data-height=\"2.993\" data-vertical-align=\"-0.931\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/0c\/0ce\/0ce23411c5f0fcdb72734affbb50d3f8.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/0c\/0ce\/0ce23411c5f0fcdb72734affbb50d3f8.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u043c\u044f\u0433\u043a\u043e\u0435 \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0434\u043e\u043b\u0438 flat-\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u0431\u043b\u0438\u0437\u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439;<\/p>\n<\/li>\n<li>\n<p><img decoding=\"async\" class=\"formula inline\" source=\"\\lambda_6 \\cdot |\\bar{p}|\" alt=\"\\lambda_6 \\cdot |\\bar{p}|\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/00\/002\/0022a68d5ce869eaef762bd4056a149e.svg\" width=\"48\" height=\"16\" data-width=\"6.337\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/00\/002\/0022a68d5ce869eaef762bd4056a149e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/0\/00\/002\/0022a68d5ce869eaef762bd4056a149e.svg 781w\" loading=\"lazy\" decode=\"async\"\/> &#8212; \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 long\/short bias.<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"\\lambda_6\" alt=\"\\lambda_6\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b3\/b34\/b3494a78a60ee0918643f7e6e68896b5.svg\" width=\"16\" height=\"16\" data-width=\"2.307\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b3\/b34\/b3494a78a60ee0918643f7e6e68896b5.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/b\/b3\/b34\/b3494a78a60ee0918643f7e6e68896b5.svg 781w\" loading=\"lazy\" decode=\"async\"\/>: \u043e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u044b\u043c.<\/strong> \u0412 \u0440\u0430\u043d\u043d\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0448\u0442\u0440\u0430\u0444\u0430 \u043c\u043e\u0434\u0435\u043b\u044c, \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u044b\u0447\u044c\u0435\u043c BTC 2024\u20132025, \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e \u0434\u0440\u0435\u0439\u0444\u043e\u0432\u0430\u043b\u0430 \u0432 long-only \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u043d\u0435 \u0431\u0430\u0433, \u0430 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u043a \u0434\u0430\u043d\u043d\u044b\u043c. \u0428\u0442\u0440\u0430\u0444 \u0437\u0430 bias \u043d\u0435 \u0434\u0430\u0451\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u0439 \u0442\u0440\u0435\u043d\u0434 \u0437\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043a\u043e\u043d.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0430\u0434\u043a\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432 \u043b\u043e\u0433-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0434\u043b\u044f \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u043d\u0430 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u0445:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\text{drawdown}_{\\log} = \\text{mean}\\!\\left(\\text{cummax}(\\text{cumsum}(\\log(1+\\text{pnl}))) - \\text{cumsum}(\\log(1+\\text{pnl}))\\right)\" alt=\"\\text{drawdown}_{\\log} = \\text{mean}\\!\\left(\\text{cummax}(\\text{cumsum}(\\log(1+\\text{pnl}))) - \\text{cumsum}(\\log(1+\\text{pnl}))\\right)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d3\/d3d\/d3d0dddc3b708cd191ebc196a901e710.svg\" width=\"624\" height=\"16\" data-width=\"78.629\" data-height=\"2.366\" data-vertical-align=\"-0.617\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d3\/d3d\/d3d0dddc3b708cd191ebc196a901e710.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/d\/d3\/d3d\/d3d0dddc3b708cd191ebc196a901e710.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p>\u0414\u043e\u043b\u044f flat-\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u0443:<\/p>\n<p><img decoding=\"async\" class=\"formula\" source=\"\\hat{f} = \\sigma(k \\cdot (\\text{flat\\_eps} - |p|))\" alt=\"\\hat{f} = \\sigma(k \\cdot (\\text{flat\\_eps} - |p|))\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/f6\/f6e\/f6e7ee4bed65dc982a518b564623463e.svg\" width=\"192\" height=\"16\" data-width=\"24.666\" data-height=\"2.993\" data-vertical-align=\"-0.931\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/f6\/f6e\/f6e7ee4bed65dc982a518b564623463e.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/f6\/f6e\/f6e7ee4bed65dc982a518b564623463e.svg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"mirror-aug\" id=\"mirror-aug\"><\/a><\/p>\n<h3>5. Mirror augmentation: \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/h3>\n<p>\u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 (\u044f\u043d\u0432\u0430\u0440\u044c 2024 &#8212; \u043c\u0430\u0440\u0442 2025) \u0434\u043b\u044f BTC \u0432 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0435\u0440\u0435 \u0431\u044b\u0447\u0438\u0439. \u041c\u043e\u0434\u0435\u043b\u044c, \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0430 \u0442\u0430\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0440 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b: \u0440\u044b\u043d\u043e\u043a \u0447\u0430\u0449\u0435 \u0440\u0430\u0441\u0442\u0451\u0442, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 LONG.<\/p>\n<p>\u0414\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432 train loop \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 <strong>mirror augmentation<\/strong>: \u043d\u0430 \u0447\u0430\u0441\u0442\u0438 \u0431\u0430\u0442\u0447\u0435\u0439 \u0446\u0435\u043d\u043e\u0432\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0446\u0435\u043d\u044b \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e. \u0420\u0430\u0441\u0442\u0443\u0449\u0438\u0439 \u0440\u044b\u043d\u043e\u043a \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0439, \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u0412\u0430\u0436\u043d\u043e: \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438, \u0438 \u0441\u0430\u043c\u0430 \u0446\u0435\u043d\u043e\u0432\u0430\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u0432 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0415\u0441\u043b\u0438 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0446\u0435\u043d\u044b \u043f\u0440\u0438 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u0445, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b\u0439 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.<\/p>\n<p>\u0418\u0442\u043e\u0433: \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u044b\u0447\u044c\u0435\u043c train-\u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 held-out \u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0445 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 <strong>\u043d\u0435\u043d\u0443\u043b\u0435\u0432\u0443\u044e short-\u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044e<\/strong>:<\/p>\n<ul>\n<li>\n<p>Test (\u0438\u044e\u043b\u044c\u2013\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c 2025): short fraction = <strong>17.3%<\/strong><\/p>\n<\/li>\n<li>\n<p>Backtest (\u043e\u043a\u0442\u044f\u0431\u0440\u044c\u2013\u0434\u0435\u043a\u0430\u0431\u0440\u044c 2025): short fraction = <strong>20.9%<\/strong><\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445 \u0431\u0435\u0437 \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 short_fraction \u0431\u044b\u043b \u0431\u043b\u0438\u0437\u043e\u043a \u043a \u043d\u0443\u043b\u044e.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"experiment\" id=\"experiment\"><\/a><\/p>\n<h3>6. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442: \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043f\u043b\u0438\u0442\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f<\/h3>\n<h4>\u0414\u0430\u0442\u0430\u0441\u0435\u0442<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">BTCUSDT Binance Futures (USD\u24c8-M perpetual)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">1-\u043c\u0438\u043d\u0443\u0442\u043d\u044b\u0435 \u0431\u0430\u0440\u044b, close-time convention<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0435\u0440\u0438\u043e\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">2021-01-01 \u2013 2025-12-31<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"https:\/\/huggingface.co\/datasets\/ResearchRL\/diffquant-data\" rel=\"noopener noreferrer nofollow\"><code>ResearchRL\/diffquant-data<\/code><\/a><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0410\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044f \u0434\u043e 30-\u043c\u0438\u043d\u0443\u0442\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430 \u0441 <code>origin=\"epoch\"<\/code> \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435\u043c: 87 648 \u0431\u0430\u0440\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0440\u0435\u0437\u043a\u0438 \u043d\u0430 \u043d\u0435\u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0441\u043e <code>stride=24<\/code> &#8212; 3 647 sample-\u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432.<\/p>\n<h4>\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0301\u0435 \u0441\u043f\u043b\u0438\u0442\u044b<\/h4>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0421\u043f\u043b\u0438\u0442<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041f\u0435\u0440\u0438\u043e\u0434<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Train<\/p>\n<\/td>\n<td>\n<p align=\"left\">2024-01-01 \u2192 2025-03-31<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Val<\/p>\n<\/td>\n<td>\n<p align=\"left\">2025-04-01 \u2192 2025-06-30<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u0431\u043e\u0440 checkpoint \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Test<\/p>\n<\/td>\n<td>\n<p align=\"left\">2025-07-01 \u2192 2025-09-30<\/p>\n<\/td>\n<td>\n<p align=\"left\">Out-of-sample \u043e\u0446\u0435\u043d\u043a\u0430<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Backtest<\/p>\n<\/td>\n<td>\n<p align=\"left\">2025-10-01 \u2192 2025-12-31<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f hold-out \u043e\u0446\u0435\u043d\u043a\u0430<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e 15 \u043c\u0435\u0441\u044f\u0446\u0430\u043c\u0438 (\u044f\u043d\u0432\u0430\u0440\u044c 2024 &#8212; \u043c\u0430\u0440\u0442 2025), \u0430 \u043d\u0435 \u0432\u0441\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u044f\u0434\u043e\u043c \u0441 2021 \u0433\u043e\u0434\u0430. \u0426\u0435\u043b\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u0435\u0440\u0436\u0430\u0442\u044c train-\u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u043e \u043a evaluation-\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043c \u0438 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c distribution shift. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 ablation.<\/p>\n<h4>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430<\/h4>\n<pre><code class=\"python\">cfg.backbone.type         = \"itransformer\"   # d_model=32, n_layers=4cfg.data.preset           = \"ohlcv\"          # 6 \u043a\u0430\u043d\u0430\u043b\u043e\u0432: OHLCV + rolling_volcfg.data.timeframe_min    = 30               # 30-\u043c\u0438\u043d\u0443\u0442\u043d\u044b\u0435 \u0431\u0430\u0440\u044bcfg.data.ctx_len          = 96               # \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442: 96 \u0431\u0430\u0440\u043e\u0432 = 48 \u0447\u0430\u0441\u043e\u0432cfg.data.horizon_len      = 24               # \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442: 24 \u0431\u0430\u0440\u0430 = 12 \u0447\u0430\u0441\u043e\u0432cfg.training.epochs       = 30cfg.training.lr           = 1e-3cfg.training.batch_size   = 64cfg.training.mirror_aug   = Truecfg.sim.commission        = 0.0004           # 0.04% \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044fcfg.sim.slippage          = 0.0003           # 0.03% slippage<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><strong>\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0438 \u043d\u0435\u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u044d\u043f\u0438\u0437\u043e\u0434\u044b?<\/strong> 910 train-\u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432 \u044d\u0442\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043c\u0430\u043b\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430. \u041f\u0440\u0438 <code>stride=horizon_len=24<\/code> \u043a\u0430\u0436\u0434\u044b\u0439 sample \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 12-\u0447\u0430\u0441\u043e\u0432\u043e\u0435 \u0440\u044b\u043d\u043e\u0447\u043d\u043e\u0435 \u043e\u043a\u043d\u043e, \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044f\u0441\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438. \u041c\u043e\u0434\u0435\u043b\u044c \u0441 52K \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u043d\u0430 910 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u044d\u043f\u0438\u0437\u043e\u0434\u0430\u0445 capacity-constrained \u0431\u044b\u043b\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d\u0430 \u0445\u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u043f\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u0430 \u043a \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044e \u0448\u0443\u043c\u043d\u043e\u0439 \u0440\u044b\u043d\u043e\u0447\u043d\u043e\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"training-dynamics\" id=\"training-dynamics\"><\/a><\/p>\n<h3>7. \u0414\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>\u041e\u0434\u043d\u0430 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430 \u044d\u0442\u043e \u043d\u0435 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0435\u0442\u0440\u0438\u043a\u0438, \u0430 \u0442\u043e, \u043a\u0430\u043a \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u043a \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \u0440\u0435\u0436\u0438\u043c\u0443.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u042d\u043f\u043e\u0445\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">Val Sharpe<\/p>\n<\/th>\n<th>\n<p align=\"left\">Val Return<\/p>\n<\/th>\n<th>\n<p align=\"left\">Flat%<\/p>\n<\/th>\n<th>\n<p align=\"left\">Turnover\/bar<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22126.49<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u221214.1%<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.6%<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.0335<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">4<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22122.45<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22122.8%<\/p>\n<\/td>\n<td>\n<p align=\"left\">14.3%<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.0003<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">8<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22120.64<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22120.4%<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>77.5%<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">0.0003<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">10<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22120.72<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22121.1%<\/p>\n<\/td>\n<td>\n<p align=\"left\">56.8%<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.0019<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">12<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>+0.46<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">+0.9%<\/p>\n<\/td>\n<td>\n<p align=\"left\">17.7%<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.0035<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">20<\/p>\n<\/td>\n<td>\n<p align=\"left\">+1.21<\/p>\n<\/td>\n<td>\n<p align=\"left\">+5.2%<\/p>\n<\/td>\n<td>\n<p align=\"left\">15.4%<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.0101<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">30<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>+1.25<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">+5.8%<\/p>\n<\/td>\n<td>\n<p align=\"left\">13.2%<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.0135<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/3eb\/f28\/442\/3ebf284425dd4c76c5307970ada9eab1.png\" alt=\"Train Loss\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/3eb\/f28\/442\/3ebf284425dd4c76c5307970ada9eab1.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/3eb\/f28\/442\/3ebf284425dd4c76c5307970ada9eab1.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Train Loss<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441. 1. Train Loss \u043f\u043e \u044d\u043f\u043e\u0445\u0430\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043c\u043e\u043d\u043e\u0442\u043e\u043d\u043d\u043e\u0435 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0441 0.1503 \u0434\u043e \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 (loss \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u2212Sharpe, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 loss \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c\u0443 Sharpe).<\/em> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/037\/e21\/065\/037e210657a66917822f196df8c38a3a.png\" alt=\"Validation Sharpe\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/037\/e21\/065\/037e210657a66917822f196df8c38a3a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/037\/e21\/065\/037e210657a66917822f196df8c38a3a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Validation Sharpe<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441. 2. Validation Sharpe (ann.) \u043f\u043e \u044d\u043f\u043e\u0445\u0430\u043c. \u041b\u0443\u0447\u0448\u0438\u0439 checkpoint \u0431\u044b\u0434 \u043d\u0430 30 \u044d\u043f\u043e\u0445\u0435, val Sharpe = +1.254. \u041c\u043e\u0434\u0435\u043b\u044c \u0435\u0449\u0451 \u043d\u0435 \u0441\u043e\u0448\u043b\u0430\u0441\u044c \u043a \u043a\u043e\u043d\u0446\u0443 run\u2019\u0430.<\/em> <\/p>\n<p>\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 <strong>\u0434\u0432\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0444\u0430\u0437\u044b<\/strong>, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0439\u0442\u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0440\u0435\u0436\u0438\u043c:<\/p>\n<p><strong>\u0424\u0430\u0437\u0430 1 (\u044d\u043f. 2): \u0433\u0438\u043f\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c.<\/strong> \u041c\u043e\u0434\u0435\u043b\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0430\u043a\u0442\u0438\u0432\u043d\u0430: turnover\/bar = 0.0335, flat = 1.6%. \u041f\u043e\u0440\u0442\u0444\u0435\u043b\u044c \u0442\u043e\u0440\u0433\u0443\u0435\u0442 \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0440, \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u0438 \u0441\u044a\u0435\u0434\u0430\u044e\u0442 \u0432\u0435\u0441\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. Val Sharpe = \u22126.49.<\/p>\n<p><strong>\u0424\u0430\u0437\u0430 2 (\u044d\u043f. 8): flat collapse.<\/strong> \u041d\u0430\u0439\u0434\u044f, \u0447\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u044f \u0443\u0431\u044b\u0442\u043e\u0447\u043d\u0430, \u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u0443\u044e \u043a\u0440\u0430\u0439\u043d\u043e\u0441\u0442\u044c: flat fraction = 77.5%, turnover \u2248 0. \u042d\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439, \u043d\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c.<\/p>\n<p><strong>\u0424\u0430\u0437\u0430 3 (\u044d\u043f. 12+): \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441.<\/strong> Flat_target-\u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0435 \u0434\u0430\u0451\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u044d\u0448\u0435. Val Sharpe \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u043e\u043d\u0443 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0440\u0430\u0441\u0442\u0438.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/d0c\/481\/15b\/d0c48115bc61aa38ec28346d7ebfc4f8.png\" alt=\"Validation Flat Fraction\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/d0c\/481\/15b\/d0c48115bc61aa38ec28346d7ebfc4f8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/d0c\/481\/15b\/d0c48115bc61aa38ec28346d7ebfc4f8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Validation Flat Fraction<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441. 3. \u0414\u043e\u043b\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432 flat (\u043a\u044d\u0448) \u043f\u043e \u044d\u043f\u043e\u0445\u0430\u043c. \u0425\u043e\u0440\u043e\u0448\u043e \u0432\u0438\u0434\u0435\u043d \u043f\u0443\u0442\u044c \u0447\u0435\u0440\u0435\u0437 flat collapse (\u043f\u0438\u043a 77.5% \u043d\u0430 \u044d\u043f. 8) \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442 \u043a \u0440\u0430\u0431\u043e\u0447\u0435\u043c\u0443 \u0440\u0435\u0436\u0438\u043c\u0443 (13.2% \u043a \u044d\u043f. 30).<\/em> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/c38\/f0f\/2c7\/c38f0f2c783a7e9ffda5b41e6fa7ed6b.png\" alt=\"Validation Max Drawdown\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/c38\/f0f\/2c7\/c38f0f2c783a7e9ffda5b41e6fa7ed6b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/c38\/f0f\/2c7\/c38f0f2c783a7e9ffda5b41e6fa7ed6b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Validation Max Drawdown<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441. 4. Validation Max Drawdown \u043f\u043e \u044d\u043f\u043e\u0445\u0430\u043c. \u041f\u043e \u043c\u0435\u0440\u0435 \u0440\u043e\u0441\u0442\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 Sharpe \u0440\u0430\u0441\u0442\u0451\u0442, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043d\u0438\u043c \u0443\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u0440\u0430\u0441\u0442\u0451\u0442 \u0438 \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0430 (\u0434\u043e ~7% \u043a \u043a\u043e\u043d\u0446\u0443 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f).<\/em> <\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/de2\/39e\/76f\/de239e76f464833f218120949aad78ce.png\" alt=\"Validation Turnover\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/de2\/39e\/76f\/de239e76f464833f218120949aad78ce.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/de2\/39e\/76f\/de239e76f464833f218120949aad78ce.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Validation Turnover<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441. 5. Turnover\/bar \u043f\u043e \u044d\u043f\u043e\u0445\u0430\u043c. \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043a\u0430\u0447\u043a\u0430 (0.0335 \u043d\u0430 \u044d\u043f. 2) \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 0.01-0.014 \u044d\u0442\u043e \u0442\u043e\u0440\u0433\u043e\u0432\u043e \u0440\u0430\u0437\u0443\u043c\u043d\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c.<\/em> <\/p>\n<p>\u0412\u0430\u0436\u043d\u043e\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435: <strong>\u043b\u0443\u0447\u0448\u0438\u0439 checkpoint \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u044d\u043f\u043e\u0445\u0435 (30)<\/strong>, \u0438 val Sharpe \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b \u0440\u0430\u0441\u0442\u0438 \u043a \u043a\u043e\u043d\u0446\u0443 run\u2019\u0430. \u042d\u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u0443\u0435\u0442\u0441\u044f \u0441 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u043e\u0439 \u043e \u043d\u0435\u0434\u043e\u0441\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u044d\u043f\u043e\u0445, \u043d\u043e \u044d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0430\u0431\u043b\u044f\u0446\u0438\u0438 \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"walkforward\" id=\"walkforward\"><\/a><\/p>\n<h3>8. Walk-forward \u043e\u0446\u0435\u043d\u043a\u0430: test \u0438 backtest<\/h3>\n<p>\u041a\u0430\u043a training validation, \u0442\u0430\u043a \u0438 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 <strong>\u0435\u0434\u0438\u043d\u044b\u0439 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u044b\u0439 walk-forward \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b<\/strong>, \u0442\u043e\u0442 \u0436\u0435, \u0447\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u0431\u044b \u043f\u0440\u0438 live-\u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0435:<\/p>\n<pre><code class=\"python\">for t in range(ctx_len, N):    window   = features[t \u2212 ctx : t]       # \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0448\u043b\u044b\u0435 \u0431\u0430\u0440\u044b    position = model(normalize(window))     # \u043e\u0434\u0438\u043d forward pass    pnl_t    = prev_pos \u00d7 ret_t \u2212 commission \u00d7 |\u0394pos|    # \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u0430\u0440 \u0431\u0435\u0437 \u0441\u0431\u0440\u043e\u0441\u0430<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 evaluation-\u043b\u043e\u0433\u0438\u043a\u0438. \u041d\u0435\u0442 \u044d\u043f\u0438\u0437\u043e\u0434\u043d\u044b\u0445 \u0441\u0431\u0440\u043e\u0441\u043e\u0432. \u041e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435 <code>WalkForwardEvaluator<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u043f\u0440\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 (\u043a\u0430\u0436\u0434\u044b\u0435 <code>val_freq<\/code> \u044d\u043f\u043e\u0445), \u0438 \u043f\u0440\u0438 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0435.<\/p>\n<hr\/>\n<h4>Test: \u0438\u044e\u043b\u044c\u2013\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c 2025 (out-of-sample, 3 \u043c\u0435\u0441\u044f\u0446\u0430)<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/455\/277\/ba6\/455277ba6ba163f730a2a2374e924a27.png\" alt=\"Test Equity Curve\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/455\/277\/ba6\/455277ba6ba163f730a2a2374e924a27.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/455\/277\/ba6\/455277ba6ba163f730a2a2374e924a27.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Test Equity Curve<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441. 6. Walk-forward \u043e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430 test-\u043f\u0435\u0440\u0438\u043e\u0434\u0435 (\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043a\u043d\u043e: 2025-07-02 \u2192 2025-09-29): \u043a\u0440\u0438\u0432\u0430\u044f \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0430 (white line), daily PnL (bar chart), underwater equity, \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 Long\/Short \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430 gate-\u0441\u0438\u0433\u043d\u0430\u043b\u0430. Sharpe=+1.73, Return=+8.22%, MaxDD=6.10%.<\/em> <\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u0435\u0442\u0440\u0438\u043a\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Sharpe (ann.)<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>+1.735<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Sortino (ann.)<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>+2.173<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Calmar<\/p>\n<\/td>\n<td>\n<p align=\"left\">1.346<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Total Return<\/p>\n<\/td>\n<td>\n<p align=\"left\">+8.22%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Max Drawdown<\/p>\n<\/td>\n<td>\n<p align=\"left\">6.10%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Commission paid<\/p>\n<\/td>\n<td>\n<p align=\"left\">2.50%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Rebalances<\/p>\n<\/td>\n<td>\n<p align=\"left\">79<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Long \/ Short \/ Flat<\/p>\n<\/td>\n<td>\n<p align=\"left\">66.9% \/ 17.3% \/ 15.8%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Mean |position|<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Direction accuracy<\/p>\n<\/td>\n<td>\n<p align=\"left\">50.65%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Correct avg ret<\/p>\n<\/td>\n<td>\n<p align=\"left\">+0.0656%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Incorrect avg ret<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22120.0613%<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/ae5\/e68\/846\/ae5e68846927019f8d8255af024528cf.png\" alt=\"Test Position Analysis\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/ae5\/e68\/846\/ae5e68846927019f8d8255af024528cf.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/ae5\/e68\/846\/ae5e68846927019f8d8255af024528cf.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Test Position Analysis<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441. 7. \u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u043d\u0430 test-\u043f\u0435\u0440\u0438\u043e\u0434\u0435: \u0433\u0438\u0441\u0442\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u0435\u0441\u043e\u0432 (Long\/Short\/Flat), CDF (cumulative distribution function) |position| \u0441 exit threshold=0.05 \u0438 \u043a\u0440\u0443\u0433\u043e\u0432\u0430\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f. Mean gate=0.125 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439, \u0430 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043b\u043d\u044b\u043c \u0440\u044b\u0447\u0430\u0433\u043e\u043c.<\/em> <\/p>\n<hr\/>\n<h4>Backtest: \u043e\u043a\u0442\u044f\u0431\u0440\u044c\u2013\u0434\u0435\u043a\u0430\u0431\u0440\u044c 2025 (\u0444\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0439 hold-out)<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/2dc\/4ea\/c5c\/2dc4eac5ce1e7f20292a0a1c39f850d5.png\" alt=\"Backtest Equity Curve\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/2dc\/4ea\/c5c\/2dc4eac5ce1e7f20292a0a1c39f850d5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/2dc\/4ea\/c5c\/2dc4eac5ce1e7f20292a0a1c39f850d5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Backtest Equity Curve<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441. 8. Walk-forward \u043e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430 backtest-\u043f\u0435\u0440\u0438\u043e\u0434\u0435 (\u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u043a\u043d\u043e: 2025-10-02 \u2192 2025-12-30). Sharpe=+1.15, Return=+6.91%, MaxDD=7.91%. \u0417\u0430\u043c\u0435\u0442\u0435\u043d \u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u043d\u043e\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 \u0441 \u043e\u0442\u043a\u0430\u0442\u043e\u043c \u0434\u043e \u22123%, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u043b\u0430 \u043a\u0432\u0430\u0440\u0442\u0430\u043b \u0432 \u043f\u043b\u044e\u0441\u0435.<\/em> <\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041c\u0435\u0442\u0440\u0438\u043a\u0430<\/p>\n<\/th>\n<th>\n<p align=\"left\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Sharpe (ann.)<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>+1.152<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Sortino (ann.)<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>+1.250<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Calmar<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.874<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Total Return<\/p>\n<\/td>\n<td>\n<p align=\"left\">+6.91%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Max Drawdown<\/p>\n<\/td>\n<td>\n<p align=\"left\">7.91%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Commission paid<\/p>\n<\/td>\n<td>\n<p align=\"left\">2.60%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Rebalances<\/p>\n<\/td>\n<td>\n<p align=\"left\">76<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Long \/ Short \/ Flat<\/p>\n<\/td>\n<td>\n<p align=\"left\">53.3% \/ 20.9% \/ 25.8%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Mean |position|<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.357<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Direction accuracy<\/p>\n<\/td>\n<td>\n<p align=\"left\">50.56%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Correct avg ret<\/p>\n<\/td>\n<td>\n<p align=\"left\">+0.0753%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Incorrect avg ret<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22120.0708%<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/61f\/479\/d05\/61f479d05c44d76c71b03407d3439127.png\" alt=\"Backtest Position Analysis\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/\/post_images\/61f\/479\/d05\/61f479d05c44d76c71b03407d3439127.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/\/post_images\/61f\/479\/d05\/61f479d05c44d76c71b03407d3439127.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Backtest Position Analysis<\/figcaption><\/div>\n<\/figure>\n<p><em>\u0420\u0438\u0441. 9. \u0410\u043d\u0430\u043b\u0438\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u043d\u0430 backtest-\u043f\u0435\u0440\u0438\u043e\u0434\u0435. Mean gate=0.123. Flat fraction \u0432\u044b\u0440\u043e\u0441 \u0434\u043e 25.8% &#8212; \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u0430\u043b\u0430 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u0435\u0435 \u0432 \u043c\u0435\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u0440\u044b\u043d\u043e\u0447\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435, \u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u043b\u0430 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u0443\u044e short-\u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044e (20.9%).<\/em> <\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"results\" id=\"results\"><\/a><\/p>\n<h3>9. \u0427\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b<\/h3>\n<h4>9.1 \u041e\u0431\u0430 held-out \u043f\u0435\u0440\u0438\u043e\u0434\u0430: \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435<\/h4>\n<p>\u041f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u043e\u0441\u0442: \u0438 test (+1.73), \u0438 backtest (+1.15) \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 Sharpe \u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u0443\u0447\u0451\u0442\u0430 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u0439 (2.50% \u0438 2.60% \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e).<\/p>\n<p>\u041e\u0434\u0438\u043d \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 out-of-sample \u043a\u0432\u0430\u0440\u0442\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u044c\u044e. \u0414\u0432\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0435\u043f\u0435\u0440\u0435\u0441\u0435\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u044d\u0442\u043e \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b. \u041d\u0435 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438, \u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439.<\/p>\n<h4>9.2 Direction accuracy \u2248 50% \u0438 \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u0430\u0431\u043e\u0441\u0442\u044c<\/h4>\n<p>Direction accuracy \u043d\u0430 test 50.65%, \u043d\u0430 backtest 50.56%. \u041d\u0430\u0438\u0432\u043d\u043e \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u201c\u043f\u043e\u0447\u0442\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435\u201d. \u041d\u043e \u0442\u043e\u0447\u043d\u0435\u0435 \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430.<\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0447\u0438\u0441\u043b\u0430:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">Test<\/p>\n<\/th>\n<th>\n<p align=\"left\">Backtest<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Correct avg ret<\/p>\n<\/td>\n<td>\n<p align=\"left\">+0.0656%<\/p>\n<\/td>\n<td>\n<p align=\"left\">+0.0753%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Incorrect avg ret<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22120.0613%<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u22120.0708%<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">+0.0043%<\/p>\n<\/td>\n<td>\n<p align=\"left\">+0.0045%<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0431\u0430\u0440. \u041e\u043d\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439: \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 expected return \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u0435\u0442 expected cost, \u0438 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432 \u043a\u044d\u0448\u0435 \u0438\u043b\u0438 \u0431\u0435\u0440\u0451\u0442 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f. Gate-\u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0441\u0434\u0435\u043b\u043a\u0438 \u0441 \u043d\u0438\u0437\u043a\u043e\u0439 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c\u044e, \u0443\u043b\u0443\u0447\u0448\u0430\u044f signal-to-noise ratio \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439.<\/p>\n<h4>9.3 \u041e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0435<\/h4>\n<p>\u041c\u0435\u0436\u0434\u0443 test \u0438 backtest \u043f\u0440\u043e\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0434\u0432\u0438\u0433 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\u0441\u0442\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c<\/p>\n<\/th>\n<th>\n<p align=\"left\">Test<\/p>\n<\/th>\n<th>\n<p align=\"left\">Backtest<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Flat fraction<\/p>\n<\/td>\n<td>\n<p align=\"left\">15.8%<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>25.8%<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Mean |position|<\/p>\n<\/td>\n<td>\n<p align=\"left\">0.445<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>0.357<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Active days<\/p>\n<\/td>\n<td>\n<p align=\"left\">92.2%<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>84.4%<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u043c \u0440\u0435\u0436\u0438\u043c\u043e\u043c (\u043d\u043e\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0439 \u043e\u0442\u043a\u0430\u0442 \u0432\u0438\u0434\u0435\u043d \u043d\u0430 equity curve). \u0412\u0430\u0436\u043d\u043e: \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u043d\u0435 \u043a\u043e\u043c\u043f\u0435\u043d\u0441\u0438\u0440\u0443\u0435\u0442 \u0443\u0445\u0443\u0434\u0448\u0435\u043d\u0438\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0440\u0438\u0441\u043a\u0430. \u041d\u0430\u043e\u0431\u043e\u0440\u043e\u0442 gate-\u0441\u0438\u0433\u043d\u0430\u043b \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445.<\/p>\n<h4>9.4 Asymmetric learning \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h4>\n<p>\u041d\u0430 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0435 (\u0431\u044b\u0447\u0438\u0439 BTC 2024\u20132025) \u043c\u043e\u0434\u0435\u043b\u044c \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u044b\u0443\u0447\u0438\u043b\u0430 \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435: short-\u0444\u0440\u0430\u043a\u0446\u0438\u044f 17-21% \u0432 \u043e\u0431\u0430 evaluation-\u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430. \u0411\u0435\u0437 mirror augmentation \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445 short_fraction \u0441\u0442\u0440\u0435\u043c\u0438\u043b\u0441\u044f \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u043a \u043d\u0443\u043b\u044e.<\/p>\n<h4>9.5 Gate \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0438\u0437\u043a\u0438\u043c \u043f\u043e \u0432\u0441\u0435\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438<\/h4>\n<p>Mean gate \u2248 0.12-0.13 \u043d\u0430 \u043e\u0431\u043e\u0438\u0445 \u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0445. \u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043f\u043e\u043b\u043d\u043e\u0439 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439. CDF |position| \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0439 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u044b\u0435. \u042d\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u043d\u0441\u0435\u0440\u0432\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043f\u0440\u043e\u0444\u0438\u043b\u044e \u0440\u0438\u0441\u043a\u0430, \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 lambda_bias \u0438 flat_target \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"limitations\" id=\"limitations\"><\/a><\/p>\n<h3>10. \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/h3>\n<p>\u0427\u0435\u0441\u0442\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u0432\u0430\u0436\u043d\u0435\u0435, \u0447\u0435\u043c \u0437\u0430\u043c\u0430\u043b\u0447\u0438\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p><strong>\u041e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442.<\/strong> \u0412\u0441\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 BTCUSDT. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u044b \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u043a\u0430 \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<p><strong>\u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u0437\u0434\u0435\u0440\u0436\u0435\u043a.<\/strong> Commission \u0438 slippage \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e. \u0414\u043b\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u0439, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u044b\u043d\u043a\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u044b\u0439 market impact (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>market_impact_eta<\/code> \u0432 SimulatorConfig \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d.<\/p>\n<p><strong>\u0427\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c.<\/strong> \u0412\u0435\u0441\u0430 loss-\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0434\u043b\u0438\u043d\u0430 train-\u043e\u043a\u043d\u0430, \u0441\u043e\u0441\u0442\u0430\u0432 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e. \u042d\u0442\u043e \u043d\u0435 plug-and-play \u0440\u0435\u0446\u0435\u043f\u0442, \u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430, \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438.<\/p>\n<p><strong>\u041c\u0430\u043b\u0430\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0431\u0430\u0437\u0430.<\/strong> \u0414\u0432\u0430 \u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430, \u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u0438\u0439 \u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>\u041d\u0435\u0442 live execution layer.<\/strong> \u041f\u0440\u043e\u0435\u043a\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c, \u043d\u0435 production-ready \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0431\u0440\u043e\u043a\u0435\u0440\u0441\u043a\u043e\u043c\u0443 API \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e scope.<\/p>\n<hr\/>\n<p><a class=\"anchor\" name=\"roadmap\" id=\"roadmap\"><\/a><\/p>\n<h3>11. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435<\/h3>\n<p>DiffQuant \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u043e\u0438\u043b\u0441\u044f \u043a\u0430\u043a <strong>\u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u044f<\/strong>, \u0430 \u043d\u0435 \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u0443\u0434\u0430\u0447\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442. \u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043a\u043e\u0434\u0430:<\/p>\n<pre><code>diffquant\/\u251c\u2500\u2500 configs\/           # MasterConfig - \u0435\u0434\u0438\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0432\u0441\u0435\u0445 \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432\u251c\u2500\u2500 data\/              # \u041a\u044d\u0448\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d MD5-\u0445\u0435\u0448\u0435\u043c, \u0430\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044f, \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438, \u0441\u043f\u043b\u0438\u0442\u044b\u251c\u2500\u2500 model\/             # backbone\/ (iTransformer, LSTM), policy_head, policy_network\u251c\u2500\u2500 simulator\/         # DiffSimulator + loss-\u0444\u0443\u043d\u043a\u0446\u0438\u0438\u251c\u2500\u2500 training\/          # DiffTrainer - episode rollout + walk-forward val\u251c\u2500\u2500 evaluation\/        # \u0415\u0434\u0438\u043d\u044b\u0439 WalkForwardEvaluator (\u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430)\u251c\u2500\u2500 sanity\/            # Gradient flow checks + trend bias checks\u251c\u2500\u2500 optimize.py        # Optuna: \u043f\u043e\u0438\u0441\u043a \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432\u251c\u2500\u2500 optimize_thresholds.py  # Optuna: \u043e\u0442\u0431\u043e\u0440 \u043f\u043e\u0440\u043e\u0433\u043e\u0432 \u043d\u0430 val\u2514\u2500\u2500 compare.py         # \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0441\u0435\u0445 \u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 sanity-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430:<\/p>\n<pre><code class=\"bash\">python sanity_check.py --config configs\/experiments\/itransformer_hybrid.py# PASS  gradient_flow    all params receive gradient# PASS  long_bias        mean_position=+0.19  expected_sign=+# PASS  short_bias       mean_position=-0.16  expected_sign=-# ALL PASSED<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f<\/h4>\n<p><strong>\u041c\u0443\u043b\u044c\u0442\u0438\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044c.<\/strong> \u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0434\u043d\u0443 \u043f\u043e\u0437\u0438\u0446\u0438\u044e. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u0442 cross-asset attention \u0438 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044c\u043d\u043e\u0433\u043e Sharpe \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043a\u043e\u0440\u0440\u0435\u043b\u044f\u0446\u0438\u0439. \u0414\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u043e\u0431\u043e\u0431\u0449\u0430\u0435\u0442\u0441\u044f \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e: <img decoding=\"async\" class=\"formula inline\" source=\"\\text{gross}_t = \\sum_i w_{i,t-1} \\cdot r_{i,t}\" alt=\"\\text{gross}_t = \\sum_i w_{i,t-1} \\cdot r_{i,t}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/ff\/ff4\/ff4582f52c91fef498d3828a11135745.svg\" width=\"176\" height=\"32\" data-width=\"22.202\" data-height=\"4.847\" data-vertical-align=\"-1.858\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/ff\/ff4\/ff4582f52c91fef498d3828a11135745.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/f\/ff\/ff4\/ff4582f52c91fef498d3828a11135745.svg 781w\" loading=\"lazy\" decode=\"async\"\/>.<\/p>\n<p><strong>\u0411\u043e\u043b\u0435\u0435 \u0431\u043e\u0433\u0430\u0442\u044b\u0435 objective-\u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/strong> \u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 loss \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0435\u043d\u0438\u0435. \u041f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b Calmar-\u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0446\u0435\u043b\u0438, conditional drawdown penalties \u0438 \u0440\u0435\u0436\u0438\u043c\u043d\u043e-\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0435 \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u0435 <img decoding=\"async\" class=\"formula inline\" source=\"\\lambda\" alt=\"\\lambda\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c6\/c6a\/c6a6eb61fd9c6c913da73b3642ca147d.svg\" width=\"12\" height=\"16\" data-width=\"1.319\" data-height=\"2.262\" data-vertical-align=\"-0.566\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c6\/c6a\/c6a6eb61fd9c6c913da73b3642ca147d.svg 780w,&#10;       https:\/\/habrastorage.org\/getpro\/habr\/formulas\/c\/c6\/c6a\/c6a6eb61fd9c6c913da73b3642ca147d.svg 781w\" loading=\"lazy\" decode=\"async\"\/>-\u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p><strong>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 backbones.<\/strong> LSTM-\u044d\u043d\u043a\u043e\u0434\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d, \u043d\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e benchmark \u043f\u0440\u043e\u0442\u0438\u0432 iTransformer \u0432 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0435\u0449\u0451 \u043d\u0435\u0442. \u0417\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b PatchTST, Mamba \u0438 \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b attention.<\/p>\n<p><strong>Online data pipeline.<\/strong> Scheduled \u0441\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 (Binance WebSocket \u2192 feature pipeline \u2192 model inference) \u0434\u043b\u044f paper trading \u0438 live \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430.<\/p>\n<hr\/>\n<h3>\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442<\/h3>\n<pre><code class=\"bash\">git clone https:\/\/github.com\/YuriyKolesnikov\/diffquantcd diffquantpip install -r requirements.txt# \u0414\u0430\u043d\u043d\u044b\u0435 (1-min BTCUSDT 2021\u20132025)huggingface-cli download ResearchRL\/diffquant-data \\    --local-dir data_source\/ --repo-type dataset# Sanity checkspython sanity_check.py --config configs\/experiments\/itransformer_hybrid.py# \u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435python train.py --config configs\/experiments\/itransformer_hybrid.py --device cuda# \u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 (test + backtest)python evaluate.py --config configs\/experiments\/itransformer_hybrid.py# \u041f\u043e\u0438\u0441\u043a \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432python optimize.py --config configs\/experiments\/itransformer_hybrid.py --trials 100# \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432python compare.py<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<hr\/>\n<h3>\u0421\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b<\/h3>\n<p><strong>Buehler et al. (2019). Deep Hedging.<\/strong> <em>Quantitative Finance.<\/em> \u0424\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u043e\u043b\u0438\u0442\u0438\u043a \u0447\u0435\u0440\u0435\u0437 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u0443\u044e \u0446\u0435\u043b\u044c. DiffQuant \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u0443 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0443 \u043e\u0442 \u0445\u0435\u0434\u0436\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0435\u0440\u0438\u0432\u0430\u0442\u0438\u0432\u043e\u0432 \u043a \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0430\u043b\u044c\u0444\u0430-\u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438.<\/p>\n<p><strong>Liu et al. (2024). iTransformer.<\/strong> <em>ICLR 2024 Spotlight.<\/em> Backbone \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430. \u0420\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u043a\u0430\u043d\u0430\u043b \u043a\u0430\u043a \u0442\u043e\u043a\u0435\u043d, \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044f \u043c\u0435\u0436\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p><strong>Moody &amp; Saffell (2001). Learning to Trade via Direct Reinforcement.<\/strong> <em>IEEE TNN.<\/em> \u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 PnL \u043a\u0430\u043a \u0446\u0435\u043b\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0434\u043e \u044d\u043f\u043e\u0445\u0438 deep learning. DiffQuant \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434 \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 end-to-end \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d.<\/p>\n<p><strong>Khubiev et al. (2026). Finance-Grounded Optimization For Algorithmic Trading.<\/strong> <em>arXiv:2509.04541.<\/em> \u0411\u043b\u0438\u0436\u0430\u0439\u0448\u0430\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430: \u0432\u0432\u043e\u0434\u0438\u0442 Sharpe, PnL \u0438 MaxDD \u043a\u0430\u043a loss-\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u0435\u0439. DiffQuant \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u0441\u0430\u043c\u0443 \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f.<\/p>\n<hr\/>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>DiffQuant \u044d\u0442\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u044b\u0432 \u0438 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043e\u0442 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0446\u0435\u043d \u043a \u043f\u0440\u044f\u043c\u043e\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043a\u0432\u0430\u043d\u0442\u043e\u0432\u043e\u0439 ML-\u043c\u043e\u0434\u0435\u043b\u044c.<\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u0441\u0445\u0435\u043c\u044b \u00ab\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c, \u043f\u043e\u0442\u043e\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0440\u0433\u0443\u0435\u043c\u00bb \u2192 \u0435\u0434\u0438\u043d\u044b\u0439 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0433\u0440\u0430\u0444: \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438 \u2192 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u2192 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u2192 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u2192 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442.<\/p>\n<p>\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439:<\/p>\n<ul>\n<li>\n<p>End-to-end \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c PyTorch;<\/p>\n<\/li>\n<li>\n<p>\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 loss \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043f\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u0439: \u0433\u0438\u043f\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0438 flat collapse;<\/p>\n<\/li>\n<li>\n<p>\u0421\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 long\/short \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f mirror augmentation \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u044b\u0447\u044c\u0435\u043c train-\u0440\u0435\u0436\u0438\u043c\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0414\u0432\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 held-out \u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u0434\u0430\u043b\u0438 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u043e\u0441\u043b\u0435 \u0443\u0447\u0451\u0442\u0430 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u0439 \u0438 \u043f\u0440\u043e\u0441\u043a\u0430\u043b\u044c\u0437\u044b\u0432\u0430\u043d\u0438\u0439.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u043d\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043e \u0433\u043e\u0442\u043e\u0432\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u042d\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0430\u043c \u043f\u043e\u0434\u0445\u043e\u0434 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u0433\u043e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>\u0418\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u0430: \u043d\u0435 \u043a\u0430\u043a \u00ab\u0433\u043e\u0442\u043e\u0432\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0430\u00bb, \u0430 \u043a\u0430\u043a \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u0430\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0447\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043a\u043e\u0433\u0434\u0430 trading objective \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u044c \u0441\u0430\u043c\u043e\u0433\u043e \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430.<\/p>\n<h3>P.S. &#8212; \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0434\u043e\u0447\u0438\u0442\u0430\u043b \u0434\u043e \u043a\u043e\u043d\u0446\u0430<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043e\u0436\u0438\u0434\u0430\u043b\u0438 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0437\u0434\u0435\u0441\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438 \u0441\u0440\u0430\u0437\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0442\u043e \u0432\u0430\u0436\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u0443\u0442\u043e\u0447\u043d\u0438\u0442\u044c: \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0435 \u043e\u0431 \u044d\u0442\u043e\u043c.<\/p>\n<p>DiffQuant \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0441\u0430\u043c\u043e\u0439 \u0440\u0430\u043d\u043d\u0435\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0434\u0443\u043a\u0442. \u042d\u0442\u043e \u043d\u0435 \u0441\u0438\u0433\u043d\u0430\u043b. \u042d\u0442\u043e \u043d\u0435 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0440\u043e\u0431\u043e\u0442. \u042d\u0442\u043e <strong>\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430<\/strong> \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b: \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u0435\u0441\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c proxy-\u0446\u0435\u043b\u044c \u0438\u0437 \u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e ML-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443 \u043f\u0440\u044f\u043c\u043e \u0432\u043d\u0443\u0442\u0440\u044c \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0430.<\/p>\n<p>\u042f \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u044d\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u0447\u0438\u0442\u0430\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0440\u0435\u0448\u0451\u043d\u043d\u043e\u0439, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 <strong>\u043d\u0435 \u0440\u0435\u0448\u0435\u043d\u0430<\/strong>. \u0414\u0432\u0430 \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 held-out \u043a\u0432\u0430\u0440\u0442\u0430\u043b\u0430 \u044d\u0442\u043e \u0441\u0438\u0433\u043d\u0430\u043b, \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0449\u0438\u0439 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f, \u043d\u043e \u043d\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u0438\u0439. \u041c\u043e\u0434\u0435\u043b\u044c \u043e\u0431\u0443\u0447\u0435\u043d\u0430 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435, \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043e\u043a\u043d\u0435, \u0441 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u0433\u0438\u043f\u0435\u0440\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041e\u043d\u0430 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0430 \u043a \u043d\u0438\u043c. \u041e\u043d\u0430 \u043d\u0435 \u043e\u0431\u043e\u0431\u0449\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u043a\u0442\u0438\u0432\u044b. \u0421\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u043e\u0432 \u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043a\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u0412\u0441\u0451 \u044d\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u201c\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u201d \u0438 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u0430\u0436\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438, \u0430 \u043d\u0435 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c?<\/p>\n<p>\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u043b\u0443\u0447\u0448\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u0445 \u0432\u0438\u0434\u0438\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442 \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u044d\u0442\u043e \u0446\u0435\u043d\u043d\u043e. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u0441\u043b\u0430\u0431\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0438\u043b\u0438 \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438, \u044d\u0442\u043e \u0435\u0449\u0451 \u0446\u0435\u043d\u043d\u0435\u0435. \u0415\u0441\u043b\u0438 \u0432\u044b \u0432\u0437\u044f\u043b\u0438 \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0441\u0432\u043e\u0439 backbone \u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043b\u0438 loss, \u0438 \u044d\u0442\u043e \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e \u043b\u0443\u0447\u0448\u0435, \u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u043e\u0447\u0443 \u043e\u0431 \u044d\u0442\u043e\u043c \u0437\u043d\u0430\u0442\u044c.<\/p>\n<p>\u041a\u043e\u0434 \u043e\u0442\u043a\u0440\u044b\u0442. \u0414\u0430\u043d\u043d\u044b\u0435 \u043e\u0442\u043a\u0440\u044b\u0442\u044b. \u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c.<\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u043a \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e, \u0430 \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0431\u044b\u043b\u0438.<\/p>\n<hr\/>\n<p><strong>GitHub:<\/strong> <a href=\"https:\/\/github.com\/YuriyKolesnikov\/diffquant\" rel=\"noopener noreferrer nofollow\">github.com\/YuriyKolesnikov\/diffquant<\/a><br \/> <strong>Dataset:<\/strong> <a href=\"https:\/\/huggingface.co\/datasets\/ResearchRL\/diffquant-data\" rel=\"noopener noreferrer nofollow\">huggingface.co\/datasets\/ResearchRL\/diffquant-data<\/a><\/p>\n<pre><code>@software{Kolesnikov2026diffquant,  author  = {Kolesnikov, Yuriy},  title   = {{DiffQuant}: End-to-End Differentiable Trading Pipeline},  year    = {2026},  url     = {https:\/\/github.com\/YuriyKolesnikov\/diffquant},  version = {0.1.0}}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1022254\/\">https:\/\/habr.com\/ru\/articles\/1022254\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0427\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u0443\u0431\u0440\u0430\u0442\u044c proxy-\u0446\u0435\u043b\u044c \u0438\u0437 \u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u043e\u0432\u043e\u0433\u043e ML-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u0430\u0436\u043d\u043e \u0432 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0435?Walk-forward \u043e\u0446\u0435\u043d\u043a\u0430 \u043d\u0430 out-of-sample \u043f\u0435\u0440\u0438\u043e\u0434\u0435: Sharpe +1.73, Return +8.22% \u043f\u043e\u0441\u043b\u0435 \u0443\u0447\u0451\u0442\u0430 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u0439. \u0411\u0435\u0437 proxy-\u0446\u0435\u043b\u0438.\u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0441\u0438\u0441\u0442\u0435\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0438 \u0442\u043e\u0439 \u0436\u0435 \u0441\u0445\u0435\u043c\u0435: \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0431\u0443\u0434\u0443\u0449\u0443\u044e \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u044b \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u043f\u0440\u0430\u0432\u0438\u043b \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u0432 \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e. \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0441\u0445\u0435\u043c\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f.\u041d\u043e \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430.\u041d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 \u043c\u044b \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u043c MSE (mean squared error, \u0441\u0440\u0435\u0434\u043d\u0435\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u0447\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443) \u0438\u043b\u0438 \u043a\u0440\u043e\u0441\u0441-\u044d\u043d\u0442\u0440\u043e\u043f\u0438\u044e. \u0412 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043b\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e\u0442 \u043f\u043e Sharpe ratio, \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0435, \u043e\u0431\u043e\u0440\u043e\u0442\u043d\u044b\u043c \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0430\u043c. \u042d\u0442\u0438 \u0434\u0432\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441\u043b\u0430\u0431\u0435\u0435, \u0447\u0435\u043c \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0434\u0443\u043c\u0430\u0442\u044c. \u0425\u043e\u0440\u043e\u0448\u0430\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0431\u0430\u0440\u0430 \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 out-of-sample \u0440\u0435\u0436\u0438\u043c\u0435, \u0433\u0434\u0435 \u043c\u0435\u043b\u043a\u0438\u0435 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f \u0440\u044b\u043d\u043a\u0430 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435.\u0418\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0440\u044b\u0432 \u043c\u0435\u0436\u0434\u0443 \u0442\u0435\u043c, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u0443\u0435\u0442, \u0438 \u0442\u0435\u043c, \u043f\u043e \u0447\u0435\u043c\u0443 \u0435\u0451 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e\u0442, \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 DiffQuant.\u041a\u043b\u044e\u0447\u0435\u0432\u0430\u044f \u0438\u0434\u0435\u044f: \u0432\u0435\u0441\u044c \u043f\u0443\u0442\u044c \u043e\u0442 \u0441\u044b\u0440\u044b\u0445 \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u043e \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u043e\u0439 \u043c\u0435\u0442\u0440\u0438\u043a\u0438 &#8212; \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u044b\u0439 \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0430\u0444. \u0412 \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 loss.backward() \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0432\u0435\u0441\u0430 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 proxy-\u0446\u0435\u043b\u044c, \u0430 \u0447\u0435\u0440\u0435\u0437 \u0441\u0430\u043c\u0443 \u0442\u043e\u0440\u0433\u043e\u0432\u0443\u044e \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443: mark-to-market PnL, \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442 \u0428\u0430\u0440\u043f\u0430.\u041a\u043e\u0434 \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430 GitHub. \u0414\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 HuggingFace. \u041b\u044e\u0431\u043e\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u0437 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438.\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 proxy-\u0446\u0435\u043b\u0438\u0414\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 loss: \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0428\u0430\u0440\u043f\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043eMirror augmentation: \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442: \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043f\u043b\u0438\u0442\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0414\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044fWalk-forward \u043e\u0446\u0435\u043d\u043a\u0430: test \u0438 backtest\u0427\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f1. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 proxy-\u0446\u0435\u043b\u0438\u041a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u043e\u0432\u0430\u044f ML-\u0441\u0445\u0435\u043c\u0430:\u0434\u0430\u043d\u043d\u044b\u0435 \u2192 predict(return_{t+1}) \u2192 MSE loss \u2192 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0435\u0441\u043e\u0432                    \u2193             \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u044e                    \u2193            \u0431\u044d\u043a\u0442\u0435\u0441\u0442\u0435\u0440 \u2192 Sharpe \/ PnL \/ \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0430\u041d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438 MSE. \u041d\u0430 \u043e\u0446\u0435\u043d\u043a\u0435 Sharpe. \u042d\u0442\u043e\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0440\u0430\u0437\u0440\u044b\u0432 \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 1: \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043e\u0448\u0438\u0431\u043e\u043a. \u041c\u043e\u0434\u0435\u043b\u044c, \u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043c\u0435\u043b\u043a\u0438\u0435 \u043a\u043e\u043b\u0435\u0431\u0430\u043d\u0438\u044f, \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u0431\u044b\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u0437\u0438\u0446\u0438\u0439. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u0432\u044b\u0441\u043e\u043a\u0430\u044f accuracy \u043d\u0430 \u043c\u0430\u043b\u043e\u0430\u043c\u043f\u043b\u0438\u0442\u0443\u0434\u043d\u044b\u0445 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f\u0445 \u0447\u0430\u0441\u0442\u043e \u0432\u0435\u0434\u0451\u0442 \u043a \u0433\u0438\u043f\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0441 \u0440\u0430\u0437\u0440\u0443\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043e\u0431\u043e\u0440\u043e\u0442\u043e\u043c.\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 2: \u043d\u0435\u0442 \u0441\u0438\u0433\u043d\u0430\u043b\u0430 \u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438. MSE-\u043c\u043e\u0434\u0435\u043b\u044c \u0443\u0447\u0438\u0442\u0441\u044f \u0443\u0433\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043d\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u043e \u0432\u0445\u043e\u0434\u0438\u0442\u044c. \u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0438.\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 3: \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u043d\u0435 \u0433\u0440\u0430\u0444\u0430. \u041a\u043e\u043c\u0438\u0441\u0441\u0438\u044f \u0438 \u043f\u0440\u043e\u0441\u043a\u0430\u043b\u044c\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0441\u0442-\u0444\u0430\u043a\u0442\u0443\u043c, \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0431\u044d\u043a\u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0430. \u041c\u043e\u0434\u0435\u043b\u044c \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e\u0431 \u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0438\u0445 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c.\u0414\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0440\u0435\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 \u0442\u0440\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e: \u043f\u043e\u0437\u0438\u0446\u0438\u044f, \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u043c\u0435\u0442\u0440\u0438\u043a\u0430 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0433\u0440\u0430\u0444\u0430.2. \u0414\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441: \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u0440\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u0430\u043a \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442?\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 DiffQuant &#8212; \u0434\u0430.\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430  \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442:\u0412\u0441\u0435 \u0447\u0435\u0442\u044b\u0440\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0442\u0435\u043d\u0437\u043e\u0440\u043d\u044b\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 PyTorch. \u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u043e\u0442 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430 \u0428\u0430\u0440\u043f\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0447\u0435\u0440\u0435\u0437 PnL, \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0438 \u0447\u0435\u0440\u0435\u0437 backbone \u043c\u043e\u0434\u0435\u043b\u0438.\u041d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c: \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438\u0437\u0434\u0435\u0440\u0436\u043a\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 . \u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c \u043d\u0435\u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c \u0432 \u043d\u0443\u043b\u0435 \u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043c, \u0433\u0434\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u0431\u043b\u0438\u0437\u0438 flat-\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f. \u0414\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f -\u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0441\u0433\u043b\u0430\u0436\u0435\u043d\u043d\u0430\u044f \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0430\u0446\u0438\u044f:\u041f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445  \u043e\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c \u043c\u043e\u0434\u0443\u043b\u0435\u043c. \u0412 \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u043d\u0443\u043b\u044f \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0433\u043b\u0430\u0434\u043a\u043e\u0439, \u0447\u0442\u043e \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u044b\u0432\u044b \u0432 \u0441\u0443\u0431\u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u0435 \u0438 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0440\u0438\u0441\u043a \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u0440\u0430\u043d\u043d\u0438\u0445 \u044d\u043f\u043e\u0445\u0430\u0445, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0447\u0430\u0441\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u0431\u043b\u0438\u0437\u0438 flat-\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f.3. \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438\u041f\u043e\u043b\u043d\u044b\u0439 \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0440\u0430\u0444 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:raw_features[t\u2212ctx:t]        \u2502        \u25bc  per-sample z-score \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0443 (\u0431\u0435\u0437 look-ahead)normalized_window  (B, ctx, F)        \u2502        \u25bc  iTransformerEncoderbackbone_output  (B, F \u00d7 d_model)        \u2502        \u2502  extras: [prev_pos, prev_delta, t\/H, (H\u2212t)\/H]        \u25bcconcat \u2192 PolicyHead \u2192 direction_head \u00d7 gate_head        \u2502        \u25bcposition_t \u2208 (\u22121, +1)        \u2502        \u25bcDiffSimulator \u2192 HybridLoss \u2192 loss.backward()iTransformer: \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e \u043a\u0430\u043d\u0430\u043b\u0430\u043c, \u0430 \u043d\u0435 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 backbone \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f iTransformer (Liu et al., ICLR 2024 Spotlight). \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e Transformer, \u0433\u0434\u0435 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438 \u0441\u043b\u0443\u0436\u0430\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0301\u0435 \u0448\u0430\u0433\u0438, iTransformer \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443: \u0442\u043e\u043a\u0435\u043d\u043e\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043d\u0430\u043b \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u043e\u0432. \u0412\u0435\u0441\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u044f\u0434 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u0430\u043d\u0430\u043b\u0430 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0435\u0434\u0438\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d, \u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u0434 \u043a\u0430\u043d\u0430\u043b\u0430\u043c\u0438.\u0414\u043b\u044f \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u0442\u043e \u043e\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430: \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0446\u0435\u043d\u043e\u0439, \u043e\u0431\u044a\u0451\u043c\u043e\u043c \u0438 \u0432\u043e\u043b\u0430\u0442\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u043e\u0441\u044f\u0442 \u043c\u0435\u0436\u043a\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0301\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u044d\u0442\u043e \u0432\u0435\u0449\u044c \u043c\u0435\u043d\u0435\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u0430\u044f.\u0412 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438: d_model=32, n_layers=4, n_heads=2, d_ff=64 \u0438\u0442\u043e\u0433\u043e 52 354 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430.Direction \u00d7 Gate: \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u0438 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435\u0412\u044b\u0445\u043e\u0434 policy head \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432: &#8212; \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0430\u043b\u044c\u0444\u0430-\u0441\u0438\u0433\u043d\u0430\u043b, \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u043a\u0443\u0434\u0430 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c; &#8212; gate-\u0441\u0438\u0433\u043d\u0430\u043b, \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435.\u041a\u043e\u0433\u0434\u0430 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0438\u0437\u043a\u0430, , \u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044f  \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 action masking \u0438\u0437 RL.\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f gate-bias = \u22121.0. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0432 near-flat \u0440\u0435\u0436\u0438\u043c\u0435. \u041f\u043e\u0437\u0438\u0446\u0438\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0439 \u0441\u0438\u0433\u043d\u0430\u043b \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043f\u0440\u0430\u0432\u0434\u044b\u0432\u0430\u0435\u0442 \u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044e. \u042d\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u043d\u043d\u0438\u0435 \u044d\u043f\u043e\u0445\u0438 \u0442\u0430\u043a \u043a\u0430\u043a \u0431\u0435\u0437 \u044d\u0442\u043e\u0439 \u0434\u0435\u0442\u0430\u043b\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043e\u0431\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0448\u0443\u043c\u0435.\u0421\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0438\u0439 rollout \u0431\u0435\u0437 look-ahead\u041d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0438\u0434\u0438\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0448\u043b\u043e\u0435 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043e\u043a\u043d\u043e. \u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0448\u0430\u0433\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043e\u043a\u043d\u0443:for t in range(H):    window      = full_seq[:, t : t + ctx, :]    window_norm = normalize_context(window)        # \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0448\u043b\u044b\u0435 ctx \u0431\u0430\u0440\u043e\u0432    extras      = [prev_pos, prev_delta, t\/H, (H\u2212t)\/H]    pos_t       = model(window_norm, extras)    positions_list.append(pos_t)positions = cat(positions_list)step_pnl  = simulator.simulate(closes, positions)loss      = hybrid_loss(step_pnl, positions)loss.backward()\u0423\u0442\u0435\u0447\u043a\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u0442\u0440\u0435\u0439\u0434\u0438\u043d\u0433\u043e\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445 \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u044f\u0447\u0435\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u0432 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0417\u0434\u0435\u0441\u044c \u043e\u043d\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0430.4. \u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 loss: \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0428\u0430\u0440\u043f\u0430 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u041f\u0440\u044f\u043c\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0428\u0430\u0440\u043f\u0430 \u0437\u0432\u0443\u0447\u0438\u0442 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u043e, \u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u0435\u0436\u0438\u043c\u0430\u043c:\u041f\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u044f\u0421\u0438\u043c\u043f\u0442\u043e\u043cChurning\u041c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0430\u0440, \u0441\u044a\u0435\u0434\u0430\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043a\u043e\u043c\u0438\u0441\u0441\u0438\u044f\u043c\u0438Flat collapse\u041c\u043e\u0434\u0435\u043b\u044c \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u043a\u044d\u0448, Sharpe \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0435\u0447\u0435\u043dLong bias\u041d\u0430 \u0431\u044b\u0447\u044c\u0435\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a buy-and-holdTerminal exposure\u0412\u0435\u0441\u044c \u0440\u0438\u0441\u043a \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0435\u0446 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430Drawdown blindness\u0412\u044b\u0441\u043e\u043a\u0430\u044f \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0434\u043e\u0445\u043e\u0434\u043d\u043e\u0441\u0442\u044c \u0446\u0435\u043d\u043e\u0439 \u043d\u0435\u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0438\u0413\u0438\u0431\u0440\u0438\u0434\u043d\u044b\u0439 loss \u0430\u0434\u0440\u0435\u0441\u0443\u0435\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u044d\u0442\u0438\u0445 \u043f\u0430\u0442\u043e\u043b\u043e\u0433\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0447\u043b\u0435\u043d\u043e\u043c: &#8212; \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0442\u043e\u0440\u0433\u043e\u0432\u0430\u044f \u0446\u0435\u043b\u044c; &#8212; \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u043e\u0431\u043e\u0440\u043e\u0442, \u0431\u043e\u0440\u0435\u0442\u0441\u044f \u0441 churning; &#8212; \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043f\u0440\u043e\u0441\u0430\u0434\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u043f\u0438\u0437\u043e\u0434\u0430; &#8212; \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u043a\u043e\u043d\u0446\u0435 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430; &#8212; \u043c\u044f\u0433\u043a\u043e\u0435 \u0443\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0434\u043e\u043b\u0438 flat-\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0432\u0431\u043b\u0438\u0437\u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439; &#8212; \u0448\u0442\u0440\u0430\u0444 \u0437\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 long\/short bias.\u041e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0435 : \u043e\u043d \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u044b\u043c. \u0412 \u0440\u0430\u043d\u043d\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0448\u0442\u0440\u0430\u0444\u0430 \u043c\u043e\u0434\u0435\u043b\u044c, \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u044b\u0447\u044c\u0435\u043c BTC 2024\u20132025, \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e \u0434\u0440\u0435\u0439\u0444\u043e\u0432\u0430\u043b\u0430 \u0432 long-only \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u042d\u0442\u043e \u043d\u0435 \u0431\u0430\u0433, \u0430 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u0430\u044f \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f \u043a \u0434\u0430\u043d\u043d\u044b\u043c. \u0428\u0442\u0440\u0430\u0444 \u0437\u0430 bias \u043d\u0435 \u0434\u0430\u0451\u0442 \u043c\u043e\u0434\u0435\u043b\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u044c \u0440\u044b\u043d\u043e\u0447\u043d\u044b\u0439 \u0442\u0440\u0435\u043d\u0434 \u0437\u0430 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043a\u043e\u043d.\u041f\u0440\u043e\u0441\u0430\u0434\u043a\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432 \u043b\u043e\u0433-\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u0434\u043b\u044f \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0439 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u043d\u0430 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u0445:\u0414\u043e\u043b\u044f flat-\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0430\u043f\u043f\u0440\u043e\u043a\u0441\u0438\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0438\u0444\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0440\u0443\u0435\u043c\u043e \u0447\u0435\u0440\u0435\u0437 \u0441\u0438\u0433\u043c\u043e\u0438\u0434\u0443:5. Mirror augmentation: \u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u043e\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0430\u0441\u0438\u043c\u043c\u0435\u0442\u0440\u0438\u0447\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0438\u043e\u0434 (\u044f\u043d\u0432\u0430\u0440\u044c 2024 &#8212; \u043c\u0430\u0440\u0442 2025) \u0434\u043b\u044f BTC \u0432 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0435\u0440\u0435 \u0431\u044b\u0447\u0438\u0439. \u041c\u043e\u0434\u0435\u043b\u044c, \u043e\u0431\u0443\u0447\u0435\u043d\u043d\u0430\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0430 \u0442\u0430\u043a\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445, \u0431\u0435\u0437 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0440 \u043d\u0435\u0438\u0437\u0431\u0435\u0436\u043d\u043e \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044d\u0432\u0440\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b: \u0440\u044b\u043d\u043e\u043a \u0447\u0430\u0449\u0435 \u0440\u0430\u0441\u0442\u0451\u0442, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 LONG.\u0414\u043b\u044f \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0432 train loop \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 mirror augmentation: \u043d\u0430 \u0447\u0430\u0441\u0442\u0438 \u0431\u0430\u0442\u0447\u0435\u0439 \u0446\u0435\u043d\u043e\u0432\u044b\u0435 \u043a\u0430\u043d\u0430\u043b\u044b \u0438 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0446\u0435\u043d\u044b \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0437\u0435\u0440\u043a\u0430\u043b\u044c\u043d\u043e. \u0420\u0430\u0441\u0442\u0443\u0449\u0438\u0439 \u0440\u044b\u043d\u043e\u043a \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0439, \u0438 \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u0412\u0430\u0436\u043d\u043e: \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0438, \u0438 \u0441\u0430\u043c\u0430 \u0446\u0435\u043d\u043e\u0432\u0430\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u0432 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0415\u0441\u043b\u0438 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0446\u0435\u043d\u044b \u043f\u0440\u0438 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0437\u043d\u0430\u043a\u0430\u0445, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0432\u044b\u0439 \u0433\u0440\u0430\u0434\u0438\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435.\u0418\u0442\u043e\u0433: \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0431\u044b\u0447\u044c\u0435\u043c train-\u0440\u0435\u0436\u0438\u043c\u0435 \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430 held-out \u043f\u0435\u0440\u0438\u043e\u0434\u0430\u0445 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043d\u0435\u043d\u0443\u043b\u0435\u0432\u0443\u044e short-\u044d\u043a\u0441\u043f\u043e\u0437\u0438\u0446\u0438\u044e:Test (\u0438\u044e\u043b\u044c\u2013\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c 2025): short fraction = 17.3%Backtest (\u043e\u043a\u0442\u044f\u0431\u0440\u044c\u2013\u0434\u0435\u043a\u0430\u0431\u0440\u044c 2025): short fraction = 20.9%\u0412\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445 \u0431\u0435\u0437 \u0430\u0443\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 short_fraction \u0431\u044b\u043b \u0431\u043b\u0438\u0437\u043e\u043a \u043a \u043d\u0443\u043b\u044e.6. \u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442: \u0434\u0430\u043d\u043d\u044b\u0435, \u0441\u043f\u043b\u0438\u0442\u044b, \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0414\u0430\u0442\u0430\u0441\u0435\u0442\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442BTCUSDT Binance Futures (USD\u24c8-M perpetual)\u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u04351-\u043c\u0438\u043d\u0443\u0442\u043d\u044b\u0435 \u0431\u0430\u0440\u044b, close-time convention\u041f\u0435\u0440\u0438\u043e\u04342021-01-01 \u2013 2025-12-31\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043aResearchRL\/diffquant-data\u0410\u0433\u0440\u0435\u0433\u0430\u0446\u0438\u044f \u0434\u043e 30-\u043c\u0438\u043d\u0443\u0442\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0444\u0440\u0435\u0439\u043c\u0430 \u0441 origin=&#187;epoch&#187; \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435\u043c: 87 648 \u0431\u0430\u0440\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0440\u0435\u0437\u043a\u0438 \u043d\u0430 \u043d\u0435\u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0441\u043e stride=24 &#8212; 3 647 sample-\u044d\u043f\u0438\u0437\u043e\u0434\u043e\u0432.\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0301\u0435 \u0441\u043f\u043b\u0438\u0442\u044b\u0421\u043f\u043b\u0438\u0442\u041f\u0435\u0440\u0438\u043e\u0434\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435Train2024-01-01 \u2192 2025-03-31\u0413\u0440\u0430\u0434\u0438\u0435\u043d\u0442\u043d\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044fVal2025-04-01 \u2192 2025-06-30\u041e\u0442\u0431\u043e\u0440 checkpoint \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044fTest2025-07-01 \u2192 2025-09-30Out-of-sample \u043e\u0446\u0435\u043d\u043a\u0430Backtest2025-10-01 \u2192 2025-12-31\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0430\u044f hold-out \u043e\u0446\u0435\u043d\u043a\u0430\u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0435\u0435 \u043e\u043a\u043d\u043e \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e 15 \u043c\u0435\u0441\u044f\u0446\u0430\u043c\u0438 (\u044f\u043d\u0432\u0430\u0440\u044c 2024 &#8212; \u043c\u0430\u0440\u0442 2025), \u0430 \u043d\u0435 \u0432\u0441\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0440\u044f\u0434\u043e\u043c \u0441 2021 \u0433\u043e\u0434\u0430. \u0426\u0435\u043b\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u0435\u0440\u0436\u0430\u0442\u044c train-\u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043b\u0438\u0437\u043a\u043e \u043a evaluation-\u043f\u0435\u0440\u0438\u043e\u0434\u0430\u043c \u0438 \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c distribution shift. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0439 ablation.\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430cfg.backbone.type         = &#171;itransformer&#187;   # d_model=32, n_layers=4cfg.data.preset           = &#171;ohlcv&#187;          # 6 \u043a\u0430\u043d\u0430\u043b\u043e\u0432: OHLCV +&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-475492","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/475492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=475492"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/475492\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=475492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=475492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=475492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}