Избранное трейдера dimaz07
Settings = { Name = "GAZPROM_USD", tag = "GAZP", tag1 = "GAZP_USDRUB", line= { {Name = "line1", Color = RGB(0, 0, 255), Type = 1,Width = 1} } } vPrice=1; function Init() return 1 end function OnCalculate(index) local vOutFlag=0; local vGazp =(getCandlesByIndex(Settings.tag, 0, index-1, 1)[0].close or 1) ; local vUSDRUB=(getCandlesByIndex(Settings.tag1, 0, index-1, 1)[0].close or 1); if vGazp>0 then vOutFlag=1; else vOutFlag=0; end; if vUSDRUB>0 then vOutFlag=1; else vOutFlag=0; end; if vOutFlag > 0 then local Out = vGazp/vUSDRUB; vPrice=Out; end; return vPrice end3. В Квике создаем график с курсом доллара (USDRUB_TOM).
Очень часто, когда заходит речь о диверсификации, на лице слушателя появляется скептическая улыбка. Казалось бы, что тут можно придумать нового: все уже давным-давно известно, писано и переписано тысячами трейдеров. Если вкратце резюмировать суть большинства рассуждений на тему диверсификации, то можно выделить две основные идеи:
Не знаю как вас, а меня всегда интересовал вопрос: каким же должно быть оптимальное количество различных бумаг в портфеле? Интуитивно кажется понятным, что если все деньги поставить на одну бумагу, то риск будет очень велик, и подобная торговля уже сильно смахивает на лотерею (угадал/не угадал). С другой стороны, если купить акции около 100 различных компаний, то, помимо проблем с управлением и анализом такого большого портфеля, рассчитывать на приличную доходность тоже можно с большой натяжкой. Как же быть? Сколько бумаг покупать? Прежде чем дать свой ответ на этот вопрос, мне кажется необходимым сделать небольшую оговорку: я вполне отдаю себе отчет, что каждый раз бывает по-разному, иногда портфель, сформированный из всего 2 бумаг, обгонит портфель из 10 бумаг, а когда-то будет наоборот. Тем не менее, мне хотелось бы провести исследование на статистических данных для ответа на вопрос, какое же число бумаг будет оптимальным наиболее часто или даже точнее будет сказать так: какой интервал бумаг (от и до, например от 6 до 10, или от 10 до 15 и т.д.) обеспечит наибольшую доходность.
--переменные keyRateCB = 7.5 classCode = "TQOB" function CreateTable() t_id = AllocTable() AddColumn(t_id, 0, "Бумага", true, QTABLE_STRING_TYPE, 15) AddColumn(t_id, 1, "Цена", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 2, "Доходность, %", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 3, "Дюрация, лет", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 4, "Купон, %", true, QTABLE_DOUBLE_TYPE, 15) AddColumn(t_id, 5, "Премия к ЦБ, бп", true, QTABLE_INT_TYPE, 15) AddColumn(t_id, 6, "Погашение", true, QTABLE_STRING_TYPE, 15) t = CreateWindow(t_id) SetWindowCaption(t_id, "ОФЗ") end function string.split(str, sep) local fields = {} str:gsub(string.format("([^%s]+)", sep), function(f_c) fields[#fields + 1] = f_c end) return fields end function getParamNumber(code, param) return tonumber(getParamEx(classCode, code, param).param_value) end function formatData(prm) return string.format("%02d.%02d.%04d", prm%100, (prm%10000)/100, prm/10000) end CreateTable() arr = {} sec_list = getClassSecurities(classCode) sec_listTable = string.split(sec_list, ',') j = 0 for i = 1, #sec_listTable do secCode = sec_listTable[i] securityInfo = getSecurityInfo(classCode, secCode) short_name = securityInfo.short_name if short_name:find("ОФЗ 26") ~= nil then j = j + 1 r = {} r["short_name"] = short_name r["price"] = getParamNumber(securityInfo.code, "PREVPRICE") r["yield"] = getParamNumber(securityInfo.code, "YIELD") r["duration"] = getParamNumber(securityInfo.code, "DURATION")/365 couponvalue = getParamNumber(securityInfo.code, "COUPONVALUE") couponperiod = getParamNumber(securityInfo.code, "COUPONPERIOD") r["coupon"] = ((365/couponperiod) * couponvalue)/10 r["bonus"] = (r["yield"] - keyRateCB)*100 r["mat_date"] = getParamNumber(securityInfo.code, "MAT_DATE") table.insert(arr, j, r) end end table.sort(arr, function(a,b) return a["duration"] < b["duration"] end) for j = 1, #arr do row = InsertRow(t_id, -1) SetCell(t_id, row, 0, arr[j]["short_name"]) price = arr[j]["price"] SetCell(t_id, row, 1, string.format("%.2f", price), price) yield = arr[j]["yield"] SetCell(t_id, row, 2, string.format("%.2f", yield), yield) duration = arr[j]["duration"] SetCell(t_id, row, 3, string.format("%.2f", duration), duration) coupon = arr[j]["coupon"] SetCell(t_id, row, 4, string.format("%.2f", coupon), coupon) bonus = arr[j]["bonus"] SetCell(t_id, row, 5, string.format("%.0f", bonus), bonus) mat_date = arr[j]["mat_date"] SetCell(t_id, row, 6, formatData(mat_date), mat_date) end
Не подумайте плохого в части нормальности, речь пойдет не о психиатрии, а об известном в теории вероятностей нормальном распределении
А точнее даже не о нем самом, а об известной центральной предельной теореме (ЦПТ) применительно к ценам. Что такое центральная предельная теорема в ее классическом виде?
Пусть нам дана некоторая сумма большого числа случайных величин Х=х1+…+хN где каждое слагаемое имеет конечную и ненулевую дисперсию (как мы увидим далее в приложении к ценам это условие выполняется). Человечество давно еще с 18 века (Муавр и Лаплас) заинтересовал вопрос распределения случайной величины Х или хотя бы его более-менее точного приближения.
Не будем слишком строги в определениях всяких сходимостей и их скоростей, а сформулируем классическую ЦПТ в виде интуитивно понятного, но нестрогого термина «близости». Так вот, если xi – независимы (кто хочет может посмотреть строгое определение независимости, а для менее пытливых скажу только, что корреляция двух независимых случайных величин с конечными дисперсиями – нуль, хотя и обратное не верно), то распределение Х при достаточно больших N практически не отличается от нормального распределения со средним А и дисперсией D, где А – сумма средних x