Тест стратегии из поста http://smart-lab.ru/blog/343965.php
Формализовал стратегию так, как я ее понял.
1. Входа на следующий день, после обновления исторического хая. Тут есть неточности — историю брал с 2005 года. Не факт, что all time high был на этом промежутке.
2. Предыдущее обновление хая было больше 90 дней назад и менее чем 200 дней назад.
3. Примерно 500 ликвидных бумаг с NYSE/NASDAQ/AMEX. Без учета делистинга, без учета комиссий, без учета платы за плечо. Вроде бы без дивидендов (не уверен), дейли дата взята с Google Finance.
4. Стоп в примере — 3%. Тейк — 90%. Можно взять больше стоп, результаты не критично меняются.
5. Вход фиксированным BP на позицию. (взял 1000 на позу)
Код Multicharts.Net
using System; using System.Drawing; using System.Linq; using PowerLanguage.Function; using ATCenterProxy.interop; namespace PowerLanguage.Strategy { public class _INTEST_by_high_daily : SignalObject { public _INTEST_by_high_daily(object _ctx):base(_ctx){} private IOrderMarket buy_order; private IOrderMarket sell_order; double previous_high; double previous_high_low_range; double all_time_high; protected override void Create() { // create variable objects, function objects, order objects etc. buy_order = OrderCreator.MarketNextBar(new SOrderParameters(Contracts.Default, EOrderAction.Buy)); sell_order = OrderCreator.MarketNextBar(new SOrderParameters(Contracts.Default, EOrderAction.Sell)); } protected override void StartCalc() { all_time_high =0; } protected override void CalcBar() { // strategy logic if (Bars.High[0]>previous_high && previous_high_low_range<previous_high && previous_high == all_time_high) { buy_order.Send(); } if (StrategyInfo.MarketPosition>0 && Bars.Close[0]>StrategyInfo.AvgEntryPrice*1.9) sell_order.Send(); previous_high = Bars.High.Highest(200); previous_high_low_range = Bars.High.Highest(90); if (Bars.High[0]> all_time_high) all_time_high = Bars.High[0]; } } }
История: Кальмар (Calmar сокращенно от Калифорнийский коэффициент управления счетом или “California Managed Account Ratio”, который впервые появился в 1991году в журнале Фьючерсы (Futures Magazine) благодаря Терри Янгу (Terry W.Young), также иногда его называли коэффициентом просадки).
Основа расчета: Коэффициент Кальмара рассчитывается как среднегодовая доходность, рассчитанная за последние 36 месяцев, деленная на максимальную просадку за тот же период. Расчет происходит на ежемесячной основе. Коэффициент Кальмар это скорректированная на риск оценка доходности, так как он оценивает доходность на единицу риска, где под риском мы понимаем максимальную просадку. Коэффициент Кальмара — это слегка модифицированная версия коэффициента Стерлинга (среднегодовая доходность за последние 36 месяцев, деленная на максимальную просадку за тот же период). Разница между ними заключается в том, что коэффициент Кальмара считается на ежемесячной основе, а коэффициент Стерлинга по годам.
Перевод (http://bettersystemtrader.com/sharpe-ratio-right-answer-wrong-question/)
Многие используют коэффициент Шарпа, но до конца не понимают в чем прелесть данного показателя.
Для начала давайте выясним, что коэффициент Шарпа делает хорошо:
Мы все знаем, что в создании портфеля стратегий очень важно правильное распределение активов. Трудность состоит в том, чтобы найти единую метрику оценки разных стратегий, скорректированную на размер риска. Это то, что делает коэффициент Шарпа. С помощью него мы получаем единую меру для измерения риска различных классов активов: облигаций, акций, фьючерсов, сырья и т.д.
Человеческому мозгу трудно связать неопределенность с риском. Риск активирует миндалевидное тело (амигдала), а та активирует рефлекс бей-беги. В данном случае Шарп можно использовать как хорошую оценку неопределенности, он является отношением результативности стратегии к неопределенности.