Блог им. andrey_koltsov
В свое время у меня была задумка — посмотреть какой в реальности (включая комиссии) спред между спотом и фьючерсом и стОит ли его торговать. Так как, ни С#, ни Lua я, пока, не изучил, то пришлось писАть на Qpile…
Торговый функционал в скрипте не прописывал, поэтому его можно использовать только, как анализатор.
Кому надо – забирайте, так как я решил для себя дальше эту тему не развивать (по крайней мере пока)…
Выглядит интерфейс вот так:

Особенности:
— текущий фьючерс определяется автоматически, в день экспирации автоматически переключается на новый;
— перед использованием надо указать папку в настройках пользователя для расчетов;
— в скобках отражается средний процент за последние 500 замеров для объективности расчетов (цифру можно менять в настройках пользователя);
— также в настройках можно указать при каком проценте информация об этом запишется в файл в следующем виде:
PORTFOLIO_EX Koltsov-Spred-all-4.0;
DESCRIPTION Koltsov-Spred-all-4.0;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST FIRMID;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
'________________________________________________________________________________
'------- НАСТРОЙКИ ПОЛЬЗОВАТЕЛЯ --------
papka = "C:/Quik_Open/Info/raschet/spred_all/" 'Папка дря осуществления расчетов
procent_nado = 8 'Отсечка процента (для записи информации в файл)
procent_period = 500 'За сколько циклов засчитываем средний процент
komissiy_broker_fr= 0.057 'Брокерская комиссия (Фондовый рынок в процентах)
komissiy_broker_sr= 0.47 'Брокерская комиссия (срочный рынок в рублях)
'_______________________________________________________________________________
DELETE_ALL_ITEMS()
spred_kolichestvo = 8 'Сколько спредов анализируем (цикл программы)
'---
Classcode11 = "SPBFUT" 'Индексы
Seccode11 = "SR" 'фьючерс
Classcode21 = "TQBR" 'Индексы
Seccode21 = "SBER" 'акция
nazvanie21 = "Сбербанк"
'---
Classcode12 = "SPBFUT" 'Индексы
Seccode12 = "VB" 'фьючерс
Classcode22 = "TQBR" 'Индексы
Seccode22 = "VTBR" 'акция
nazvanie22 = "ВТБ"
'---
Classcode13 = "SPBFUT" 'Индексы
Seccode13 = "GZ" 'фьючерс
Classcode23 = "TQBR" 'Индексы
Seccode23 = "GAZP" 'акция
nazvanie23 = "Газпром"
'---
Classcode14 = "SPBFUT" 'Индексы
Seccode14 = "LK" 'фьючерс
Classcode24 = "TQBR" 'Индексы
Seccode24 = "LKOH" 'акция
nazvanie24 = "Лукойл"
'---
Classcode15 = "SPBFUT" 'Индексы
Seccode15 = "RN" 'фьючерс
Classcode25 = "TQBR" 'Индексы
Seccode25 = "ROSN" 'акция
nazvanie25 = "Роснефть"
'---
Classcode16 = "SPBFUT" 'Индексы
Seccode16 = "GM" 'фьючерс
Classcode26 = "TQBR" 'Индексы
Seccode26 = "GMKN" 'акция
nazvanie26 = "Нор.Никель"
'---
Classcode17 = "SPBFUT" 'Индексы
Seccode17 = "SN" 'фьючерс
Classcode27 = "TQBR" 'Индексы
Seccode27 = "SNGS" 'акция
nazvanie27 = "Сургутнефт"
'---
Classcode18 = "SPBFUT" 'Индексы
Seccode18 = "TN" 'фьючерс
Classcode28 = "TQBR" 'Индексы
Seccode28 = "TRNFP" 'акция
nazvanie28 = "Транснефть"
'---------
Lot = 1 'Для расчета ГО (формальность)
procent = papka&"procent.log"
'------------------
'Задаем время онлайн
Vrema = GET_INFO_PARAM ("SERVERTIME") 'определяем время
Hour0="" & (0 + substr(Vrema,0,2))
Min0 =floor (substr(Vrema,3,2))
Sec0 =floor (substr(Vrema,6,2))
if len(Sec0) == 1
Sec0= "0" & Sec0
end if
if len(Min0) == 1
Min0= "0" & Min0
end if
if len(Hour0) == 1
Hour0= "0" & Hour0
end if
Time0=Hour0 & Min0 & Sec0 'Время on-line
Time0=Time0+0
Time=Hour0 & Min0 & 0 & 0 'Время с округлением до минуты
'------------------
'Задаем дату
dats = GET_INFO_PARAM ("TRADEDATE")
Year="" & (0 + substr(dats,6,4))
Month="" & (0 + substr(dats,3,2))
if len(Month) == 1
Month= "0" & Month
end if
Day="" & (0 + substr(dats,0,2))
if len(Day) == 1
Day= "0" & Day
end if
Date = Year & Month & Day 'переводим в нужный формат
Date0= Date
Date = Date+0
'===============================================================================================================================
'===============================================================================================================================
'Начало основного цикла
for cikl from 1 to spred_kolichestvo
'===============================================================================================================================
Classcode1 = "нет"
Seccode1 = "нет"
nazvanie1 = "нет"
Classcode2 = "нет"
Seccode2 = "нет"
nazvanie2 = "нет"
shag_strike = 9999999999999
if cikl=1
Classcode1 = Classcode11
Seccode1 = Seccode11
Classcode2 = Classcode21
Seccode2 = Seccode21
nazvanie2 = nazvanie21
end if
if cikl=2
Classcode1 = Classcode12
Seccode1 = Seccode12
Classcode2 = Classcode22
Seccode2 = Seccode22
nazvanie2 = nazvanie22
end if
if cikl=3
Classcode1 = Classcode13
Seccode1 = Seccode13
Classcode2 = Classcode23
Seccode2 = Seccode23
nazvanie2 = nazvanie23
end if
if cikl=4
Classcode1 = Classcode14
Seccode1 = Seccode14
Classcode2 = Classcode24
Seccode2 = Seccode24
nazvanie2 = nazvanie24
end if
if cikl=5
Classcode1 = Classcode15
Seccode1 = Seccode15
Classcode2 = Classcode25
Seccode2 = Seccode25
nazvanie2 = nazvanie25
end if
if cikl=6
Classcode1 = Classcode16
Seccode1 = Seccode16
Classcode2 = Classcode26
Seccode2 = Seccode26
nazvanie2 = nazvanie26
end if
if cikl=7
Classcode1 = Classcode17
Seccode1 = Seccode17
Classcode2 = Classcode27
Seccode2 = Seccode27
nazvanie2 = nazvanie27
end if
if cikl=8
Classcode1 = Classcode18
Seccode1 = Seccode18
Classcode2 = Classcode28
Seccode2 = Seccode28
nazvanie2 = nazvanie28
end if
if cikl=9
Classcode1 = Classcode19
Seccode1 = Seccode19
Classcode2 = Classcode29
Seccode2 = Seccode29
nazvanie2 = nazvanie29
end if
if cikl=10
Classcode1 = Classcode110
Seccode1 = Seccode110
Classcode2 = Classcode210
Seccode2 = Seccode210
nazvanie2 = nazvanie210
end if
if cikl=11
Classcode1 = Classcode111
Seccode1 = Seccode111
Classcode2 = Classcode211
Seccode2 = Seccode211
nazvanie2 = nazvanie211
end if
if cikl=12
Classcode1 = Classcode112
Seccode1 = Seccode112
Classcode2 = Classcode212
Seccode2 = Seccode212
nazvanie2 = nazvanie212
end if
if cikl=13
Classcode1 = Classcode113
Seccode1 = Seccode113
Classcode2 = Classcode213
Seccode2 = Seccode213
nazvanie2 = nazvanie213
end if
procent_sredniy = papka & "procent_" & nazvanie2 & ".log"
'------------------
'Задаем параметры ближнего фьючерса
Mesyac = "A"
Mesyac0 = Month+0
God = 0 + substr(dats,9,1)
'Январь - F
'Февраль - G
'Март - H
'Апрель - J
'Май - K
'Июнь - M
'Июль - N
'Август - Q
'Сентябрь- U
'Октябрь - V
'Ноябрь - X
'Декабрь - Z
'------------------
for m from 1 to 4
Seccode11 = Seccode1
if Mesyac0 = 1
Mesyac = "F"
end if
if Mesyac0 = 2
Mesyac = "G"
end if
if Mesyac0 = 3
Mesyac = "H"
end if
if Mesyac0 = 4
Mesyac = "J"
end if
if Mesyac0 = 5
Mesyac = "K"
end if
if Mesyac0 = 6
Mesyac = "M"
end if
if Mesyac0 = 7
Mesyac = "N"
end if
if Mesyac0 = 8
Mesyac = "Q"
end if
if Mesyac0 = 9
Mesyac = "U"
end if
if Mesyac0 = 10
Mesyac = "V"
end if
if Mesyac0 = 11
Mesyac = "X"
end if
if Mesyac0 = 12
Mesyac = "Z"
end if
'------------------
Seccode11 = Seccode1 & Mesyac & God
nazvanie1 = Seccode1
'Получение значения количества дней до погашения из Таблицы текущих значений параметров
DAYS_TO_MAT_DATE_Seccode1 = GET_PARAM_EX (Classcode1, Seccode11, "DAYS_TO_MAT_DATE")
DAYS_TO_MAT_DATE_Seccode1 = GET_VALUE(DAYS_TO_MAT_DATE_Seccode1,"PARAM_VALUE")+0
if DAYS_TO_MAT_DATE_Seccode1<=0 and Mesyac0<12
Mesyac0 = Mesyac0+1
else
if DAYS_TO_MAT_DATE_Seccode1<=0 and Mesyac0=12 and God<9
Mesyac0 = 1
God = God +1
else
if DAYS_TO_MAT_DATE_Seccode1<=0 and Mesyac0=12 and God=9
Mesyac0 = 1
God = 0
end if
end if
end if
end for 'for m from 1 to 4
Seccode1 = Seccode1 & Mesyac & God
nazvanie1 = Seccode1
'------------------
'------------------
'Получение значения лучшей цены предложения из Таблицы текущих значений параметров
Seccode1_BUY = GET_PARAM_EX (Classcode1, Seccode1, "OFFER")
Seccode1_BUY = GET_VALUE(Seccode1_BUY,"PARAM_VALUE")+0
Seccode2_BUY = GET_PARAM_EX (Classcode2, Seccode2, "OFFER")
Seccode2_BUY = GET_VALUE(Seccode2_BUY,"PARAM_VALUE")+0
'Получение значения лучшей цены спроса из Таблицы текущих значений параметров
Seccode1_SELL = GET_PARAM_EX (Classcode1, Seccode1, "BID")
Seccode1_SELL = GET_VALUE(Seccode1_SELL,"PARAM_VALUE")+0
Seccode2_SELL = GET_PARAM_EX (Classcode2, Seccode2, "BID")
Seccode2_SELL = GET_VALUE(Seccode2_SELL,"PARAM_VALUE")+0
'Получение размера лота из Таблицы текущих значений параметров
Seccode1_LOT_SHT = GET_PARAM_EX (Classcode1, Seccode1, "LOTSIZE")
Seccode1_LOT_SHT = GET_VALUE(Seccode1_LOT_SHT,"PARAM_VALUE")+0
Seccode2_LOT_SHT = GET_PARAM_EX (Classcode2, Seccode2, "LOTSIZE")
Seccode2_LOT_SHT = GET_VALUE(Seccode2_LOT_SHT,"PARAM_VALUE")+0
'Получение значения количества дней до погашения из Таблицы текущих значений параметров
DAYS_TO_MAT_DATE_Seccode1 = GET_PARAM_EX (Classcode1, Seccode1, "DAYS_TO_MAT_DATE")
DAYS_TO_MAT_DATE_Seccode1 = GET_VALUE(DAYS_TO_MAT_DATE_Seccode1,"PARAM_VALUE")+0
'Получение значения Гарантийного обеспечения покупателя из Таблицы текущих значений параметров
GO_Seccode1 = GET_PARAM_EX (Classcode1, Seccode1, "BUYDEPO")
GO_Seccode1 = GET_VALUE(GO_Seccode1,"PARAM_VALUE")+0
'Получение Минимального шага цены из Таблицы текущих значений параметров
Seccode1_STEPPRICE = GET_PARAM_EX (Classcode1, Seccode1, "SEC_PRICE_STEP")
Seccode1_STEPPRICE = GET_VALUE(Seccode1_STEPPRICE,"PARAM_VALUE")+0
shag_cena1 = Seccode1_STEPPRICE*100
Seccode2_STEPPRICE = GET_PARAM_EX (Classcode2, Seccode2, "SEC_PRICE_STEP")
Seccode2_STEPPRICE = GET_VALUE(Seccode2_STEPPRICE,"PARAM_VALUE")+0
shag_cena2 = Seccode2_STEPPRICE*100
'----------
'Расчет спрэда в стаканах
spred1 = Seccode1_BUY - Seccode1_SELL
spred2 = Seccode2_BUY - Seccode2_SELL
'----------
'Получение Стоимости шага цены БА из Таблицы текущих значений параметров
SHAG_PRICE_RUB = 0
SHAG_PRICE_RUB = GET_PARAM_EX (Classcode1, Seccode1, "STEPPRICET")
SHAG_PRICE_RUB = GET_VALUE(SHAG_PRICE_RUB,"PARAM_VALUE")+0
'---------------
'Биржевой сбор
BaseFutFee=0.6 'Для акций 0.6
'Расчет значения Биржевого сбора за контракт СР
FutPrice = GET_PARAM_EX (Classcode1, Seccode1, "PREVSETTLEPRICE") 'Предыдущая расчетная цена из Таблицы текущих значений параметров
FutPrice = GET_VALUE(FutPrice,"PARAM_VALUE")+0
Sbor_birzhi_Seccode1 = 0
if Seccode1_STEPPRICE<>0
Sbor_birzhi_Seccode1 = APPLY_SCALE((APPLY_SCALE(FutPrice*APPLY_SCALE((SHAG_PRICE_RUB/Seccode1_STEPPRICE),5),2)*BaseFutFee*0.0001),2)+0
end if
if Sbor_birzhi_Seccode1<0.01
Sbor_birzhi_Seccode1=0.01
end if
'Расчет размера Биржевого сбора ФР
Sbor_birzhi_Seccode2 = 0
Sbor_birzhi_Seccode2 = ((Seccode2_BUY*Seccode1_LOT_SHT)/100*komissiy_broker_fr)
'Расчет общего размера Биржевого сбора
Sbor_birzhi_ALL = 0
Sbor_birzhi_ALL = Sbor_birzhi_Seccode1*2 + Sbor_birzhi_Seccode2*2 + komissiy_broker_sr*2
'---------------
'Расчет спрэда для входа и выхода из сделки
spred_on_raschet = Seccode1_SELL - (Seccode2_BUY*Seccode1_LOT_SHT) - Sbor_birzhi_ALL
spred_off_raschet = Seccode1_BUY - (Seccode2_SELL*Seccode1_LOT_SHT)
spred_raznica = 0
spred_raznica = spred_on_raschet-spred_off_raschet
spred_on_raschet_procent = 0
if Seccode2_BUY>0 and Seccode1_LOT_SHT>0 and GO_Seccode1>0 and DAYS_TO_MAT_DATE_Seccode1>0
spred_on_raschet_procent = (spred_on_raschet/((Seccode2_BUY*Seccode1_LOT_SHT)+GO_Seccode1))*100/DAYS_TO_MAT_DATE_Seccode1*365
end if
'---------------
'Расчет среднего спрэда в % за период
str = GET_FILE_LEN(procent_sredniy)+0 'Сколько строк в файле
if str<procent_period
nachalo=1
else
nachalo=str-procent_period+1
end if
a=0
procent=CREATE_MAP ()
FOR i FROM nachalo TO str
dannye = READ_LINE(procent_sredniy,i,"error")+0
a=a+1
procent=SET_VALUE(procent, "key" & a, dannye) 'Добавляем в массив предыдущие значения
END FOR
a=a+1
procent=SET_VALUE(procent, "key" & a, spred_on_raschet_procent) 'Добавляем в массив текущее значение
'---
b=0
if spred_on_raschet_procent<>0 and ((Time0>100000 and Time0<140000) or (Time0>140500 and Time0<184000))
if a<=procent_period
b=a
CLEAR_FILE(procent_sredniy)
FOR i FROM 1 TO b
s = GET_VALUE(procent,"key" & i)
WRITELN (procent_sredniy, s) 'Запись в файл из массива
END FOR
else
b=a
CLEAR_FILE(procent_sredniy)
FOR i FROM 2 TO b
s = GET_VALUE(procent,"key" & i)
WRITELN (procent_sredniy, s) 'Запись в файл из массива со смещением на 1
END FOR
end if
end if
'---
procent_za_period = 0
str = GET_FILE_LEN(procent_sredniy)+0 'Сколько строк в файле
FOR i FROM 1 TO str
dannye = READ_LINE(procent_sredniy,i,"error")+0
procent_za_period = procent_za_period + dannye
END FOR
if str>0
procent_za_period = procent_za_period/str
end if
'---
'Для визуализации
procent_za_period_vizion = APPLY_SCALE(procent_za_period,2)
spred_on_raschet_procent_vision = APPLY_SCALE(spred_on_raschet_procent,2) & " (" & procent_za_period_vizion & ") %"
'---------------
'Для визуализации BUY и SELL
Price_ON_1 = Seccode1_SELL
Price_ON_2 = Seccode2_BUY*Seccode1_LOT_SHT
Price_OFF_1 = Seccode1_BUY
Price_OFF_2 = Seccode2_SELL*Seccode1_LOT_SHT
'-----
'Расчет необходимых инвестиций
investicii = 0
GO_Seccode2= 0
investicii = ((Seccode2_BUY*Seccode1_LOT_SHT)+GO_Seccode1)*lot
GO_Seccode2= (Seccode2_BUY*Seccode1_LOT_SHT)
'-----
'Информируем, если значение достигло нужного уровня
if spred_on_raschet_procent>=procent_nado and ((Time0>100000 and Time0<140000) or (Time0>140500 and Time0<184000))
MESSAGE (nazvanie2 & "-" & spred_on_raschet_procent_vision,1)
WRITELN (procent,Date & "-" & Time0 & "-" & nazvanie2 & "-" & spred_on_raschet_procent_vision)
end if
'==============================================================================
stroka_3 = cikl*3
stroka_2 = stroka_3-1
stroka_1 = stroka_2-1
output=CREATE_MAP()
output=SET_VALUE(output,"1",cikl)
output=SET_VALUE(output,"2",nazvanie1)
output=SET_VALUE(output,"3",Seccode1_LOT_SHT)
output=SET_VALUE(output,"4",Seccode1_STEPPRICE)
output=SET_VALUE(output,"5",GO_Seccode1)
output=SET_VALUE(output,"7",DAYS_TO_MAT_DATE_Seccode1)
output=SET_VALUE(output,"9","sell:")
output=SET_VALUE(output,"10",Price_ON_1)
output=SET_VALUE(output,"11","buy:")
output=SET_VALUE(output,"12",Price_OFF_1)
output=SET_VALUE(output,"26",Sbor_birzhi_Seccode1)
ADD_ITEM(stroka_1,Output)
output=CREATE_MAP()
output=SET_VALUE(output,"1",cikl)
output=SET_VALUE(output,"2",nazvanie2)
output=SET_VALUE(output,"3",Seccode2_LOT_SHT)
output=SET_VALUE(output,"4",Seccode2_STEPPRICE)
output=SET_VALUE(output,"5",GO_Seccode2)
output=SET_VALUE(output,"9","buy:")
output=SET_VALUE(output,"10",Price_ON_2)
output=SET_VALUE(output,"11","sell:")
output=SET_VALUE(output,"12",Price_OFF_2)
output=SET_VALUE(output,"26",Sbor_birzhi_Seccode2)
ADD_ITEM(stroka_2,Output)
output=CREATE_MAP()
output=SET_VALUE(output,"2","==========")
output=SET_VALUE(output,"5",investicii)
'output=SET_VALUE(output,"6",spred_raznica)
'output=SET_VALUE(output,"8",dohod_raschet)
output=SET_VALUE(output,"9","спред:")
output=SET_VALUE(output,"10",spred_on_raschet)
output=SET_VALUE(output,"11",spred_on_raschet_procent_vision)
output=SET_VALUE(output,"26",Sbor_birzhi_ALL)
ADD_ITEM(stroka_3,Output)
'==============================================================================
'==============================================================================
SET_ROW_COLOR_EX (stroka_3, "RGB(240,240,240)", "DEFAULT_COLOR", "RGB(0,0,255)", "RGB(0,0,255)") 'легкая серая заливка и синий шрифт
'Конец основного цикла
end for
'==============================================================================
'==============================================================================
END_PROGRAM
PARAMETER 1;
PARAMETER_TITLE №;
PARAMETER_DESCRIPTION №;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER 2;
PARAMETER_TITLE Пара;
PARAMETER_DESCRIPTION Пара;
PARAMETER_TYPE STRING(32);
END
PARAMETER 3;
PARAMETER_TITLE Лот (шт);
PARAMETER_DESCRIPTION Лот (шт);
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER 4;
PARAMETER_TITLE Шаг;
PARAMETER_DESCRIPTION Шаг цены;
PARAMETER_TYPE STRING(32);
END
PARAMETER 5;
PARAMETER_TITLE ГО;
PARAMETER_DESCRIPTION ГО;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER 7;
PARAMETER_TITLE Day;
PARAMETER_DESCRIPTION End day;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER 9;
PARAMETER_TITLE -;
PARAMETER_DESCRIPTION -;
PARAMETER_TYPE STRING(32);
END
PARAMETER 10;
PARAMETER_TITLE ON;
PARAMETER_DESCRIPTION Цена;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER 11;
PARAMETER_TITLE -;
PARAMETER_DESCRIPTION -;
PARAMETER_TYPE STRING(32);
END
PARAMETER 12;
PARAMETER_TITLE OFF;
PARAMETER_DESCRIPTION Цена;
PARAMETER_TYPE NUMERIC(10,0);
END
PARAMETER 26;
PARAMETER_TITLE Сбор (руб);
PARAMETER_DESCRIPTION Биржевой сбор (руб);
PARAMETER_TYPE NUMERIC(10,2);
END
END_PORTFOLIO_EX
Если торговать «в чистом виде», то доходность маленькая получается — 7%… ОФЗ, пока, еще выгоднее. Данную стратегию надо торговать для торговли акций в short, чтобы не платить за маржинальное кредитование (сначала делаете нейтральную позицию: short фьючерс + long акции + доходность 7% годовых, а если нужен short по акции, продаете ее и получаете доходность от short фьючерса)… Но у меня все стратегии торгуют акции в long…
Может быть потом что-нибудь придумаю…
А ликвидных фьючах большая конкуренция много ботов.
Пробовал руками — результат меня не удовлетворил.
В том-то и дело, что торговать руками здесь не реально… Даже на Qpile сложно из-за минимального времени расчета скрипта в 1 сек… Хотя, можно… Доработать скрипт — когда уровень спрэда превысит расчетный, то сразу отправляются встречные заявки… Ведь, в моем скрипте отображается информация не по последней сделке, а по реальным BID и ASK… Остается только отправить заявки… Но сделать это надо ОЧЕНЬ быстро… :) А сделать это может только робот… :)
Андрей Кольцов, в Qpile расчёты только раз в 1 сек.? это такое ограничение именно Qpile?
цены берёте из стакана? для этого не нужно что б стакан был открыт?
BID и ASK берется из Текущей таблицы параметров. Стакан и график открывать не надо...
Да, только для Qpile: минимум 1 сек., «по-умолчанию» стоит 10 сек.:
Но… Внутри цикла он все делает относительно быстро (если внутренними циклами сильно не нагружать)… Просто, следующий цикл расчета начнется только через 1 секунду...
Разумеется, для HFT он не подойдет, но если торговать средне-срок или даже внутри дня, то вполне хватает…
Андрей Кольцов, в луа расчёт минимум вроде как 0,001 секунды, может и меньше можно
но от момента отправки заявки до получения результата по ней проходит около 0,3 сек
ну просто к сведению)
Хотя, если Вы не ловите резких аномалий, то можно успеть и ручками… Думаю, что 7% поймать можно… Ведь, сделать это надо всего-лишь один раз в квартал… :)
И вы прекрасно это понимаете, как и многие другие которые разбирались с арбитражом.
Согласен… Отвечал аналогично выше....
Продублирую:
«Если торговать «в чистом виде», то доходность маленькая получается — 7%… ОФЗ, пока, еще выгоднее. Данную стратегию надо торговать для торговли акций в short, чтобы не платить за маржинальное кредитование (сначала делаете нейтральную позицию: short фьючерс + long акции + доходность 7% годовых, а если нужен short по акции, продаете ее и получаете доходность от short фьючерса)…»
Совершенно верно...
А если нужен будет long по акциям, то, просто, докупаете акции еще...
Так многие торгуют… И доход 7% идет, и за маржиналку платить не надо…
Андрей Кольцов, хорошо для такого иметь единый счёт
а не легче держать офз?
и плечо стоит то больше 7%, если всё депо во фьюче и акции то следующая покупка акции это плечо, а оно дорогое, легче наверное фьючи откупить
не знаю есть ли в этом смысл, держишь пару по сберу, а тут надо газпром взять, надо всё закрывать и покупать газпром, по комисии возможно офз легче держать, особенно если пол года сидеть в не позы, экономия на комиссии
торговать «на всю котлету», да еще и только по одному инструменту крайне нежелательно с точки зрения манименеджмента...
У каждого свои стратегии… На такие случаи надо и кэш держать…
Да, доработать и желательно чтобы скрипт был написан на Си Шарп лежал на сервере в здании мос. биржи и отправлял заявки через Plaza2.
И тогда с доработанным скриптом есть все шансы получить прибыль
:)
З.Ы. В любом случае то, что вы написали очень полезно. Опыт не пропьешь)
в период выплаты дивидендов по фьючерсам будет наблюдаться бэквордация, то есть акции будут стоит дороже фьючерсов, так как в стоимости акций будет заложена дивидендная составляющая. Разумеется, если дивиденды выше безрисковой процентной ставки… После отсечки все нормализуется…
Андрей Кольцов, после отсечки в любом случаи нормализуется, правда по моему не сразу
ну получается дивы не учитываете