Блог им. Buybuy

Простой способ отличить закономерность от подгонки

Добрый день, коллеги!

Хочу поделиться с теми из вас, кому это интересно, простой, но полезной фичей.

Не секрет, что все алготрейдеры в том или ином виде используют подгонку для получения рабочих стратегий.
Кто-то делает это в лоб и надеется, что полученный методом curve-fitting алгоритм будет работать в будущем.
Кто-то дополнительно делает WTF WFT тесты и отбраковывает плохих кандидатов.
Кто-то просто использует моделирование для подбора оптимальных параметров системы.
Во всяком случае мне неизвестна ни одна алгоритмическая ТС вообще без параметров.

Ниже я расскажу, как отличить пруху от собственной гениальности потенциально проявившую себя закономерность от простого результата подгонки

1. Тестируем алго в достаточно большом окне (лично я использую 500000+ баров)
2. Тестируем алго в окне вдвое большего размера (1000000+ баров)

Если результат вырос в 2 раза (примерно) — возможно, наша ТС эксплуатирует некую стабильную закономерность
Если в 1.5 раза (примерно, точнее в sqrt(2)) — скорее всего, это тупо результат подгонки
Если вырос еще меньше — в мусор и побыстрее

Ну и (я не выделял этого отдельно) в моих алго, работающих на минутных барах, результаты ТС на достаточно длинных участках одинакового размера примерно одинаковы.

Все просто

С уважением
★6
109 комментариев
Количество баров то тут о чем? Число сделок должен быть критерий, а не число баров.
avatar
Большой Брат, whom how

Как говорят в МГИМО © Анекдот

С уважением
avatar
Мальчик buybuy, Один тестит ТС со средним временем позиции 10 баров, а другой 100 на одной и той же выборке… есть разница в длине верифицируемой истории ТС?
avatar
Большой Брат, понятия не имею, если честно

Но лично я не запускаю в продакш ТС, не оттестированную на 1.5 млн. баров

С уважением
avatar
Eugene Logunov, неоднократно — это что?

С одним и тем же массивом данных, но смещенным?

С уважением
avatar
Сергей Сергаев, у меня системы реверсивные

Ну т.е. вход — он же выход

С уважением
avatar
Мальчик buybuy, тогда просто настраиваешь лонг и те же параметры используешь для шорта… если в шорте профит то все ок...

вообще все проблемы переоптимизации не решаются а легко и просто обходятся…
avatar
ves2010, вообще не понял, если честно

Разжевать можете?

С уважением
avatar
Мальчик buybuy, отключаешь шорт… делаешь настройки лонг онли и включаешь шорт обратно...
т.е ты делаешь тест как бы на перевернутых данных.... 

либо просто отзеркаль данные начало-конец и верх-низ и тестируй…
avatar
ves2010, так

1. У меня системы реверсивные — т.е. шорт всегда меняется на лонг и наоборот
2. Я пробовал реверс актива (замена EURUSD на USDEUR, ну или BTCUSD на USDBTC) — результаты идентичны

Что я делаю не так?

С уважением
avatar
Мальчик buybuy, настроки делай только в лонг… без реверса… а потом включаешь шорт… и смотришь резалт...
т.е для шорта у тя как раз и будут случайные данные 
avatar
пусть длинный участок это 500к баров — ДУ
1. на ДУ подбираем параметры
2. на другом ДУ проверяем результат, пусть будет P1
3. на третьем ДУ перепроверяем результат, пусть будет P2
Есть закономерность, если P1 == P2

avatar
Daniil Lazarev, именно

Но то, что я предложил, еще проще

И да — если доха выросла в 3 и более раз — это тоже плохо, просто означает удачную подгонку на 2-й половине длинного интервала.

С уважением
avatar
Мальчик buybuy, возможно, но кмк мой вариант (по крайней мере я так делаю) надежнее.

avatar
Сергей Сергаев, это правда

Но я написал в заголовке «простой способ».

В реале да — иногда рынки меняются. Но это происходит нечасто.
На росс. фонде 24.02.22 — реальный перелом микроструктуры цены.
На крипте 2 перелома — в середине 21 и в январе 23.
На форексе с 2015 (после всем попавшим известной истории с USDCHF) лично мной и моими алго ни одного перелома не диагностировано.

Я не умею это лечить. Но мои алго подстраиваются под новую реальность рынка за 6 мес. примерно. Главное, чтобы за эти 6 мес. не успели много слить. На крипте слива вообще не было, росс. рынок я не торгую.

С уважением
avatar
Eugene Logunov, тогда я не понял Ваш аргумент

Прошу разжевать, если нетрудно

С уважением
avatar
Мальчик buybuy, Думаю, имеется в виду, что если ты взял стратегию, проделал это, потом поменял что-то в стратегии — снова проделал, ещё поменял — снова продела и такой — о, на этом варианте работает, значит вариант хороший. Тож подгонка).
avatar
Replikant_mih, да все подгонка

Но (для достаточно длинных интервалов) то, что сейчас описали Вы, лично я подгонкой не считаю.

С уважением
avatar
Подтверждаю методологическую правильность данного подхода в тестировании алгоритмов. По сути, это простейший клон WFT.

Напоминаю, что WFT — самый надежный способ лишить иллюзий инфантильного мужчину, мечтающего разбогатеть игрой на бирже. 

Любой пост про WFT вызывает крики боли и волны ненависти на смартлабе.
avatar
$100, 
Напоминаю, что WFT — самый надежный способ лишить иллюзий инфантильного мужчину, мечтающего разбогатеть игрой на бирже. 

… и внушить ему новые иллюзии )))
avatar
Jame Bonds, WFT чистой воды подгонка.
avatar
Мальчик buybuy,

ну не везде можно таким способом подтверждать. Результат работы стратегии = функция от поведения временного ряда (по крайней мере для трендовых стратегий без шорта это точно так!). Соответственно, если на «аут оф сэмпл» ряд имеет отличную результативность чем на «ин сэмпл» то это ничего страшного, так как надо смотреть на «альфу» к инструменту/рынку. Стабильность альфы — главный критерий. 
А то что написано в топике справедливо, но лишь для реверсных стратегий на небольших колебаниях (как правило распределение сделок для таких стратегий скошено вправо и имеет высокий Шарп (как минимум на тестах).

С уважением!
avatar
Whalerman, Вы правы

Поэтому написал «простой способ»
И «по моему мнению»

С уважением
avatar
Мальчик buybuy, 

по сути прав выше $100 это экспресс WFT. Для пущей проверки робастности параметром стратегии можно сгенерировать временной ряд, перемешав данные в случайном порядке типа бутстрапинга и прогнать на этих данных стратегию n раз, если результат будет отличаться от тестов на исходном ряде — сразу вопрос к такой стратегии.

С уважением!
avatar
Whalerman, зачем мешать в реальный временной ряд случайные данные ?
нам же нужно найти параметры для поиска паттерна/паттернов, а так вы просто сводите на нет всю работу
avatar
Daniil Lazarev, 

это дополнительная проверка системы, этим способом можно легко исключить эффект подгонки параметров под временной ряд. К тому же если немного раскрыть вопрос, то методов «перемешивания» может быть много это не обязательно перемешивание каждой точки, перемешивать можно кусками, например взять данные за 18 лет и перемешивать в случайном порядке отрезки равные году, кварталу и т.п. (в таком случае паттерны останутся на месте в большинстве случаев) плюс можно сделать перемешивание с повторениями и без таких — вариантов вагон! Ограничение только фантазия и уровень подготовки.

С уважением!
avatar
Whalerman, идея понятна,

но мой взляд, ошибочна в алгоритмах поиска паттернов
в том же время, я убежден, что любой индикатор — это формализация алгорима поиска паттерна, поэтому...

ну вообщем дело ваше
avatar
Whalerman, нельзя такое делать… надо пользовать только реальные данные… там фишка в том, что эти данные имеют особую стату внутри дня… которой нет в синтетических данных
avatar

Интересно, а вообще много людей проверяют стратегии на рядах 500к+ ?

Что — то мне подсказывает, что — нет. 

avatar
Daniil Lazarev, ну у меня для продакшна и 500 тыс. мало

Реально тестирую на 1.5 млн.

Просто я деньги на этом зарабатываю и неплохие.
Так что считать закономерностью то, что проявило себя на 10000 или даже на 50000 баров, лично мне ссыкотно.
Но, как говорится, каждый сам платит за свои развлечения.

С уважением
avatar
Мальчик buybuy, разумеется,

я тестирую на 1млн, дальше не иду тк за 2 года рынок точно меняется

Опрос бы провести, было бы любопытно…
avatar
Daniil Lazarev, 

это только на кастомных системах возможно, уважаемый Мальчик buybuy это проделывает на matlab, я на R запускал максимум 2,3 млн — очень тормозит… пробовал скормить это TsLab  = завис сразу!

С уважением!
avatar
Whalerman, ну так некастомные и не зарабатывает поэтому…
avatar
Whalerman, в TSLab тестер неправильный

К примеру — он умудряется открывать лимитку по цене Open (шутка не для всех)
Да, с переходом на Матлаб 4 года назад темпы моих исследований и сроки разработки новых систем изменились на порядок.
Правда, нужно уметь писать векторизованный код.

С уважением
avatar
Мальчик buybuy, 

про тестер в TsLab: подходит для начального уровня и это с лихвой покрывает потребности 95% юзеров (мои личные ощущения). Сам уже лет 7 как ничего не тестирую в лабе, только свой код на R. Векторные вычисления — без них никуда.

С уважением!
avatar
 Ну, если разместить этот метод на шкале координат где по одной оси будет топорность (считай, много хорошего отсечешь заодно), и эффективность (работает ли вообще эта метода для заявленных целей (для защиты от переподгонки)), то я бы оценил место этого метода в этом пространстве как: очень топорно, но в целом может работать).
avatar
Replikant_mih, хм

Я вроде написал «простой метод»
Сложные публиковать не хочу и не буду
Могу предложить в тему анекдот про 2-х HR-ров
Хотите?

С уважением
avatar
Мальчик buybuy, Я ж без претензий)), просто лейбл наклеил).
avatar
Значит ЧВК «Вагнер» всё-таки берут Артёмовск, взаимодействие ЧВК с ВКС и регулярными ВС более чем чёткое, снабжение и логистика терпимые — и это всё за РУБЛИ, товарищи! Инфляция всего 3%, рекордно низкая безработица — даже Сечину нашли работу:))
Значит Путин-то молодец! Значит НАТО сосёт вместе со своим рипером! Значит война скоро закончится очередной победой российского оружия!
Значит добрая половина дельфийских оракулов смартлаба — панические пи#####лы!))
avatar
bozon, бро!

Да х@й с ним, с этим Артемовском
В WWW2 бои за такие мелкие Артемовски даже дикторы не озвучивали
Правильнее заранее понять, что будет завтра и как жить дальше

Я считаю (IMHO), что понял это одним из первых, поэтому расстроился
Но с НГ перестал расстраиваться и стал жить на позитивной ноте
Т.к. мне понятно, что п@здец уже наступает, и я не в силах что-то изменить

С уважением
avatar
Мальчик buybuy, вот и я про то же — каждый должен заниматься своими делами и не мешать другим делать их дела.
avatar
bozon, ну прости, бро

Это были эмоции
Больше их не будет
Ну я надеюсь так

С уважением
avatar
Мальчик buybuy, почему у меня эмоции появляются только против хохлов? Может я неправильный какой-то в понимании смартлаба?
avatar
bozon, почему?

Если это из-за телевизора — тогда точно к доктору
Если это личное — то вполне нормально
В конце года исполнится 10 лет, как я воюю с большой чеченской семьей. Давно бы победил, но их, сцуко, много и плодятся они как тараканы...

С уважением
avatar
Мальчик buybuy, да, я получаю информацию из трансляций по федеральным каналам России. У Вас проблемы по этому поводу?
Из этих источников я вчера узнал, что вулкан Шевелуч выбросил в атмосферу гигантский объём вулканического перпла, видимый с орбиты. Может быть это тот самый украинский вулкан мести, что мстит Путину за угнетение Мальчика byu-byu на смартлабе?) Может быть теперь Мальчик byu-byu больше не будет byu-byu, а станет sell-sell (но только не на moex)?))
Что из этого всего является фактом?
avatar
bozon, дело не в информации, а в манипуляции сознанием

Кириенко и Ко отстроили грандиозную систему пропаганды. А лучшая пропаганда — та, которая немного похожа на правду.

Лично я получаю информацию из российских и украинских телеграм-каналов (минимум цензуры), потом складываю и делю пополам.
Ну и вообще, про происхождению я ученый, так что априори неплохо умею работать с источниками.

Сам я ТВ не смотрю, но супруга включает регулярно. Заявляю — если бы я не знал, что происходит на самом деле, буквально через неделю начал бы ненавидеть хохлов лютой ненавистью.

Но в реале это не так. И мои товарищи, воюющие в зоне СВО, это подтверждают. Главное — всегда оставаться человеком. Ну, или пытаться.

С уважением
avatar
Мальчик buybuy, короче, Ваши товарищи-хохлы своё дело знают. С бубном танцы были?))
avatar
bozon, ???

С уважением
avatar
Мальчик buybuy, ну хохляцкие тг-каналы — это прям истина в последней инстанции:))
avatar
bozon, нет

Но я их патриотческую хню не читаю
Только документальные недалеко от ЛБС
В наших телегах тоже патриотической хни хватает
Но есть разумные и взвешенные каналы

А истина — она, как всегда, примерно посередине

С уважением
avatar
Виктор Громов, это да)))

Но на бесконечно большой выборке я всегда выигрываю...
А как дожить до финального результата пока не знаю...

С уважением
avatar
Любой тест на истории — подгонка под определенный промежуток истории.
А хорошая ТС или алго не нуждается в тестировании на прошлом.
avatar
22022022, хмммм

А почему она тогда может называться хорошей ТС?
Просто потому, что Вы так решили?

С уважением

P.S. За 29 лет исследований разнообразных рынков мне удалось найти определенное количество стабильно работающих закономерностей. И почти все из них «дикие» (на пальцах не объяснишь)
avatar
Мальчик buybuy, потому что эксплуатирует не какие то фантастические закономерности (совпадения) веру в грааль, а задержки, закрытую информацию, правила биржи итп.
avatar
22022022, не верю © Станиславский

Закрытая инфа — это Грааль, ессно
Латенси и биржевые правила меняются регулярно
Все это чисто IMHO, конечно

С уважением
avatar
Если результат вырос в 2 раза (примерно) — возможно, наша ТС эксплуатирует некую стабильную закономерностьЕсли в 1.5 раза (примерно, точнее в sqrt(2)) — скорее всего, это тупо результат подгонкиЕсли вырорс еще меньше — в мусор и побыстрее

Вообще это неверно. Если мы тестируем на ОС ровно один раз — то результат на ОС — это и есть реалистичная оценка перформанса системы, R = (результат на ОС) / (результат на бэктесте) — некая оценка стабильности системы, 1 — R — «доля оверфита», скажем так.
Если тестируете на ОС больше одного раза — то там уже более сложная математика пошла, зависящая от того, что конкретно делаете.
avatar
MadQuant, сорри — а ОС — это что это?

С уважением
avatar
Мальчик buybuy, ОС — это OS == OoS == Out-of-Sample, новые данные, которые подвезли (для окна в два раза большего размера)
avatar
MadQuant, тогда я так не считаю

Как по мне — результат на двойном окне меньше примерно 1.5 (и ниже) — переподгонка на первой половине окна
Результат примерно 3 (и выше) — переподгонка на 2-й половине окна
Результат около 2 — заявка на найденную закономерность
Потом, конечно, все это нужно проверять и перепроверять

И да, я исхожу из аксиомы, что доходность ТС на достаточно длинном окне фиксированной длины примерно одинакова (у меня так получается). Если это условие не выполнено — пост можно не читать.

С уважением
avatar
Мальчик buybuy, то, что вы говорите — вообще не соотносится ни с какой теорией машинного обучения и здравой логикой. Перформанс модели на новых данных — это чистый несмещенный перформанс, если он положительный — значит он положительный. Если он в два раза больше, чем на данных обучения — значит, это случайно. Если он такой же — отлично, если в 2 раза хуже но положительный — значит, он в 2 раза хуже и положительный.
доходность ТС на достаточно длинном окне фиксированной длины примерно одинакова (у меня так получается). Если это условие не выполнено — пост можно не читать.
Пост можно тогда и не писать, это вообще что-то очень частное, мало имеющее отношения к реальности, и ни на что не обобщаемое.
avatar
MadQuant, ну у меня

Все ТС так работают на окне 500000+ баров
И вообще — пост не про машинное обучение, а про ручной поиск закономерностей
Которые потом следует формализовать (если получится)

С уважением
avatar
Мальчик buybuy, ну у вас в рассуждениях оверфит начинается с фразы
я исхожу из аксиомы, что доходность ТС на достаточно длинном окне фиксированной длины примерно одинакова (у меня так получается)
Вы уже сделали подгонку произвольной величины, дальше какое там соотношение перформанса на первой/второй части истории — не так важно. В реальной торговле это все будет либо как-то работать, либо как-то не работать, чисто наудачу.
avatar
MadQuant, ну у меня последние 3 года это метода как-то работает

Причем очень и очень успешно

Тут нужно сделать еще одну важную поправку (я не писал про нее явно, думал, будет понятно из количества баров) — я работаю только на мелких ТФ.

Для работающих на дневках топик также можно не читать

С уважением
avatar
История — это логическая ловушка.
avatar
Тестируем алго в достаточно большом окне (лично я использую 500000+ баров)
2. Тестируем алго в окне вдвое большего размера (1000000+ баров)

Если результат вырос в 2 раза (примерно) — возможно, наша ТС эксплуатирует некую стабильную закономерность
1. Разрабатываем на истории 1 минута 3 месяца.
2. Проверяем на истории от 3-х до 9 месяцев.
Если результат примерно одинаков, то потенциально все ОК.
avatar
3Qu, это не отменяет совпадения
avatar
3Qu, да, да )))

Такой подход стоил мне 2+ битка 4 года назад )))
С тех пор я поумнел
Ну или мне так кажется...

С уважением
avatar
Мальчик buybuy, 
С тех пор я поумнел
Ну или мне так кажется...
Так кажется.
avatar
3Qu, разумно, бро

Ждем твоего запуска на Бинанс

С уважением
avatar
Мальчик buybuy, наверное, напрасно. Все становится все страньше и страньше.
Пока переключился с похожей системой на Si. Вроде, по тестам все ничего, но как-то маловато будет. Если удастся нарулить поболе, то мож и на реал пойдет. Пока неинтересно.
avatar
3Qu, а зачем ты в Бинанс уперся то, бро

У Бинанса единственный плюс — это конская (пока) ликвидность
Но с твоими сотнями тестовых долларов есть гораздо более хорошие, стабильные и программно-удобные варианты

1. BitMEX
2. Deribit
3. OKX

С уважением
avatar
Мальчик buybuy, так, и на Бинансе комиссии окупаются.
Я ж писал — проблемы с вводом/выводом не решены, а как их решать ХЗ.
avatar
3Qu, так, бро

1. На Бинансе САМЫЕ высокие комиссии в отрасли (ну, кроме Coinbase)
2. Ввод я тебе решу за 5 мин
3. С выводом тоже могу помочь

С уважением
avatar
Мальчик buybuy, 
2. Ввод я тебе решу за 5 мин
3. С выводом тоже могу помочь
Тоже уже писал — и че, мне каждый раз за вводом/выводом за Мальчиком бегать? ))
Несерьезно как-то.)
avatar
3Qu, ты не понял, бро

1. Ввод тебе нужен раз, ну м.б. 2
2. По выводу дам комфортный кейс (ну только если ты лям грина выводить не собрался) — я в нем вообще не нужен

С уважением
avatar
Мальчик buybuy, уж, коли я комп врубил, глянь, что на Si поучается.

Тест — 3 месяца, ТФ — 1 минута, 1 фьючерс.
Чистыми где-то 3200 р будет.
Полное г..., пустые хлопоты в казенном доме.)
avatar
3Qu, красивая эквити

И просадки небольшие

А кто мешает увеличить плечо?

С уважением
avatar
Мальчик buybuy, 
А кто мешает увеличить плечо?
???
Как ты собираешься уменьшить ГО? Это фьючерсы МОЕХ, однако.
Красиво то красиво, только толку с нее ноль.)
avatar
3Qu, элементарно, бро

Если система работает стабильно, плечо м.б. оплачено кредитными деньгами
Мультипликатор, епть)

С уважением
avatar
Мальчик buybuy, денег у нас и своих хватает, у нас ума не хватает.©
ГО — 13000 р. 3000 р в квартал с фьючерса (13000 р) — слезы. Сколько бы этих фьючерсов не было.
Ну, 10-15 фьючерсов я куплю без ухудшения системы. Дальше это масштабировать не получится. 10 тыщ/месяц — несерьезно.
В общем, как ни умножай, толку не будет.
avatar
3Qu, 5000/300 сделок =16 пунктов на сделку… чет мало...

16 /70000=0.02% всего  средняя...

avatar
ves2010, график немного устарел, Сейчас 21п/сделка, но все равно это ни о чем. Надо хотя бы 40-50 п.
С валютными парами никогда не получалось договориться. Отродясь ничего путного не получалось.)
avatar
3Qu, ваще не вариант… т.к у тя будет одна фаза рынка дляной 3 мес… например безоткатный рост… или боковик…
avatar
ves2010, как раз это это никак не влияет. Но все равно не вариант.)
avatar

Какой должна быть деградация на out of sample — вопрос интересный.
Однако ожидал от автора злобного матана, а тут какая-то интуитивщина, с квадратным корнем. «Так и я могу!» © Промокашка

2. Тестируем алго в окне вдвое большего размера

Имеется ввиду полная переоптимизация под новое окно?
Кирилл Гудков, да

С уважением

P.S. Злобного матана у меня нет. Функан и алгебра.
avatar

А чего бы корень из двух это фигня? По-моему это норм ваще.
И чего так всех тянет в Oos тесты?!
У вас там, наверное, свои какие-то ценности, в этих алготрейдингах.

avatar
Kot_Begemot, элементарно, бро

Под корень из 2-х курве фиттингом вытягивается все...
Даже случайное блуждание...

С уважением

P.S. Никого не тянет в тесты. Но, пока у ТС остается хотя бы 1 настраиваемый параметр, тесты необходимы
avatar

Мальчик buybuy, в целом, мы можем сказать, что нормальная, не оверфитнутая модель обладает плохим IS, и требовать от нее не худшего OOS. Вроде бы в условиях избыточных данных (относительно требований валидации модели) логично. С оговорками, конечно, но — логично. 

Одна проблема — где взять столько данных 

Возможно можно использовать это как критерий переоптимизации — если мы имеем статистически качественный OoS при многократно более качественном IS, так, что заданный критерий не выполняется, то система слишком сложна и нуждается в редуцировании. Опять с оговорками, но можем.

avatar

Мальчик buybuy, я боюсь, что СБ может данный критерий и в 5000 утянуть. Если совершенно не смотреть на IS тест и брать что попало )

То есть такое дело… требующее массы оговорок.

avatar
Eugene Logunov, возможно

У Вас есть пример стабильно работающей системы без параметров?
У меня за много лет работы главное достижение — 1.5 параметра
(целое число со знаком)

С уважением

P.S. Правда, я не использую никаких гипотез относительно формирования ценового ряда — исключительно феноменологический подход
avatar
Тестируется один и тот же алгоритм с одинаковыми параметрами в обоих случаях? Или происходит перетренировка и подбор новых параметров?
avatar
bettor, один и тот же

С уважением
avatar
это же обычный OOS
avatar
robomakerr, нет

В OOS отсутствует условие аддитивности при объединении интервалов

С уважением
avatar
Мальчик buybuy, общепринятое условие — «на OOS не хуже чем на IS»
avatar
По мне так лучший вариант, это считать альфу и бету на истории, потом на OOS. Если они сильно расходятся думать, и смотреть график эквити. Рынок в среднем со временем уничтожает неэффективности, в результате доходность многих стратегий падает. Тут скорее надо оценивать потенциальный профит и риски.
Да, еще бывает полезно проверить, не заглядывает ли стратегия в будущее, перемешав случайно приращения, таким образом получив случайное блуждание.
avatar
vlad1024, неплохая идея

Но она базируется на тезисе, что тренды есть
Лично я считаю, что трендов нет

С уважением
avatar
Мальчик buybuy, на эквити должны быть тренды, так как это следствие стабильного положительного мат.ожидания сделок.
Если мат. ожидание не стабильно, это лишний повод задуматься.
avatar
Случайное перемешивание приращений — ИМХО — тест номер 1.
Причем сравнивать надо не эквити, а количество сделок. Если оно кардинально не уменьшается, значит Ваша система не может отличить рынок от случайного блуждания. А это не лечится.
avatar
Дык а если рынок разный в разных окнах?
avatar
500 тысяч баров на дневках… это с какого года до н.э. надо тестировать? Автор идиот? А он тестирует 1,5 миллиона баров. Понятно.что автор тестирует минутки. Но ты хоть говори об этом в посте.))
avatar

теги блога Мальчик buybuy

....все тэги



UPDONW
Новый дизайн