Избранное трейдера klimvv
Обычно я не принимаю на веру все, что говорят в инвестициях и стараюсь перепроверять утверждения. На конференции прошедшей в Питере 25 июня было обсуждено много торговых идей, поэтому в этой части разберём зарубежный портфель Василия Олейника, который он формировал на текущий откат. Вася говорит что он растёт у него в 5 раз быстрее чем рынок, а вот падает со скоростью рынка. Ну ок. Меня как человека который 6 лет проработал в хедж фонде квантом и копал неэффективности на рынке (в том числе и такие) подобное заявление вызвало определённых скептицизм ибо в долгосрочное перспективе акции обладающие подобными характеристиками тяжело найти (ну грааль же). Но может быть на коротких периодах такое возможно?
Чтобы проверить все это с точки зрения статистики нужна небольшая справка из финансовой математики и в частности из модели CAPM. Данная модель связывает актив (или портфель) с рынком через линейное уравнение, в частности через коэффициент бета. Бета = 1, движемся со скоростью рынка. Бета>1 движемся быстрее рынка. Бета<1 движемся медленнее рынка. Естественно разные акции ещё и могут реагировать с разной степенью на рост/падение рынка. Для этого и создали показатели: бычью и медвежью бету. Идеальные активы — те у которых бычья бета>>1, а медвежья << 1 (но такие на долгосрочном периоде тяжело найти, ибо рынок эффективный). См. поясняющий рисунок.


В течение апреля домашние хозяйства снизили запасы наличной национальной валюты на 305,9 млрд рублей, в то время как в марте отток составил 77 млрд рублей.
Впервые с февраля 2022 года отрицательные операции были зафиксированы и с иностранной наличной валютой (-5,2 млрд рублей).
'========= Перемещение заявки
FUNC MORDER(FTRID,FON,FONQ,FONP)
NEW_GLOBAL("TRANS_PARAMS", "")
NEW_GLOBAL("TRANS_RESULT", "")
TRANS_PARAMS = ""
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "TRANS_ID",FTRID)
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACTION", "MOVE_ORDERS")
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "MODE",0)
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "CLASSCODE", "SPBFUT")
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "SECCODE", INSTRUMENT)
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "ACCOUNT", ACCOUNT)
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "FIRST_ORDER_NUMBER",FON)
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "FIRST_ORDER_NEW_QUANTITY",FONQ)
TRANS_PARAMS = SET_VALUE (TRANS_PARAMS, "FIRST_ORDER_NEW_PRICE",FONP)
TRANS_RESULT = SEND_TRANSACTION (300, TRANS_PARAMS)
RESULT=GET_VALUE(TRANS_RESULT, "DESCRIPTION")
MESSAGE (RESULT,1)
END FUNC
'========= Операция перестановки
IF MPRICE < LOW
MORDER(MTRANS_ID,MNUMBER,MBALANCE,LOW+STEP)
END IF
'======================================
'MTRANS_ID - номер заявки на бирже
'MNUMBER - номер заявки в таблицах
'MBALANCE - объем
'LOW - минимум свечи
'STEP - отступ для лимитки
'MPRICE - последняя цена
protected override void Execute() {
var d1 = (Close >> 1) - (Close >> 2);
var d2 = (Close >> 2) - (Close >> 3);
var d3 = (Close >> 3) - (Close >> 4);
var d4 = (Close >> 4) - (Close >> 5);
for (int i = 5; i < Bars.Count-2; i++) {
double A = d1[i]*d4[i] - d2[i]*d3[i];
double B = d2[i]*d2[i] - d1[i]*d3[i];
double id = A*d1[i] + B*d2[i];
int posDir = (! IsLastPositionActive) ? 0
: LastPosition.PositionType == PositionType.Long ? 1 : -1;
if (id >= 0 && posDir != 1) {
if (posDir == -1)
ExitAtClose (i, LastPosition);
BuyAtClose (i);
} else if (id < 0 && posDir != -1) {
if (posDir == 1)
ExitAtClose (i, LastPosition);
ShortAtClose (i);
}
} // for (int i
} // Execute()
даёт результаты на минутках на 68 днях от 10:00 до 18:44 для сделок без комиссии и проскальзыванияВсе это работает на коротком таймфрейме (1 min и ниже).
Любой резидент СЛ за 5 мин в Excel может проверить, что этот индикатор работает в плюс на любом активе. Более того, если ему лично претит Excel, он может проверить тот же факт в C#, Python, R, Matlab etc. В любом случае, много времени такой тест не занимает.

Далее кумулятивные эквити на минутках за 2020 год с данных мосбиржи без учета издержек.if(sys==«id»)
{
h1=cls[n-1]-cls[n-2]
h2=cls[n-2]-cls[n-3]
h3=cls[n-3]-cls[n-4]
h4=cls[n-4]-cls[n-5]
i=h1*(h1*h4-h2*h3) + h2*(h2*h2-h1*h3)
if(i>=0) inl=T
if(i<0) outl=T
}


