Избранное трейдера sam

I. Сокращение запасов коммерческих нефти в США — единственный постоянный маркер будущего падения цены на нефть.
1985
В ноябре 1985 нефть стоила 29 долларов за баррель, в июне 1986 (на пике снижения) – всего 10.
Запасы нефти в США начали падать во второй половине июля и достигли минимума в середине ноября, снизившись за 22 недели на 12%.
1998
Нефть начала падать в ноябре 1997 года ($22 за баррель) и закончила в декабре 1998 ($10 за баррель).
Запасы нефти начали падать с начала июня и второй пик снижения пришелся на середину октября (первый – на середину сентября). Таким образом, запасы сократились почти на 8% за 20 недель.
2003
Нефть начала падать в первой декаде марта ($35 за баррель) и завершила падение в конце апреля ($23 за баррель).
Запасы нефть начали падать в конце апреля 2002 и падали до начала марта 2003, сократившись почти за год на 17%.
2008
Нефть начала падать в середине июля ($147 за баррель) и закончила в декабре ($34).
Запасы начали падать в первой декаде мая и достигли минимума в середине сентября, снизившись за 14 недель почти на 11%.
Стратегия парного трейдинга очень популярна на рынке. Она основана на чистой статистике, что делает ее привлекательной для алгоритмической торговли. Общий смысл сводится к нескольким шагам: найти пару, проверить ее поведение, определить границы входа в позицию и направление (лонг/шорт).
Пары ищут с помощью корреляции, но корреляция в чистом виде может сослужить плохую службу. Спред пар должен быть стационарным и обладать коинтегрированностью. Весь представленный код на Python.
В статье рассмотрены:

1. Если проблему можно решить, то не стоит о ней беспокоиться, если её решить нельзя, то беспокоиться о ней бесполезно.
2. Подумав — решайся, а решившись — не думай.
3. Не задерживай уходящего, не прогоняй пришедшего.
4. Быстро — это медленно, но без перерывов.
5. Лучше быть врагом хорошего человека, чем другом плохого.
6. Без обыкновенных людей не бывает великих.
7. Кто сильно желает подняться наверх, тот придумает лестницу.
8. Муж с женой должны быть подобны руке и глазам: когда руке больно — глаза плачут, а когда глаза плачут — руки вытирают слёзы.
9. Солнце не знает правых. Солнце не знает неправых. Солнце светит без цели кого-то согреть. Нашедший себя подобен солнцу.
10. Море потому велико, что и мелкими речками не брезгует.
11. И далёкий путь начинается с близкого.
12. Кто пьет, тот не знает о вреде вина; кто не пьет, тот не знает о его пользе.
Добыча нефти: 955 тыс. барр./день.
Население: 48 млн. чел.
Процентная ставка: 7%
Инфляция: 5.18%
Безработица: 10.5%
Средняя зарплата: 500$
Внешний долг: 116 млрд.$
Экспорт ~ 40 млрд.$
Импорт~ 50 млрд.$
Основа экспорта (>50%) — нефть, уголь, топливо.
Структура экспорта (2015):

М2/ЗВР:

Лениво бродив по западному интернету, нашел интересную стратегию, которая своими корнями уходит к некоему Larry Connors. Стратегия построена на простом RSI с периодом 2.
Суть ее в следующем:
покупаем индексный ETF, когда значение меньше 15 на закрытии дня (да, это можно сделать без проблем и проскальзываний на всех ликвидных ETF) и продаем, когда клоуз текущего дня выше хая предыдущего (можете придумать свои выходы, стратегия не очень-то чувствительна к выходам).
В общем MR в чистом виде. И в принципе это должно работать на большинстве ETF развитых рынков.
Тестил на Multicharts.Net, код ниже.
using System;
using System.Drawing;
using System.Linq;
using PowerLanguage.Function;
using ATCenterProxy.interop;
namespace PowerLanguage.Strategy {
public class rsi_2_spy : SignalObject {
public rsi_2_spy(object _ctx):base(_ctx){}
private IOrderMarket buy_order;
private IOrderMarket sell_order;
private RSI m_RSI;
private VariableSeries<Double> m_myrsi;
private ISeries<double> Price { get; set; }
protected override void Create() {
// create variable objects, function objects, order objects etc.
buy_order = OrderCreator.MarketThisBar(new SOrderParameters(Contracts.Default, EOrderAction.Buy));
sell_order = OrderCreator.MarketThisBar(new SOrderParameters(Contracts.Default, EOrderAction.Sell));
m_RSI = new RSI(this);
m_myrsi = new VariableSeries<Double>(this);
}
protected override void StartCalc() {
// assign inputs
Price = Bars.Close;
m_RSI.price = Price;
m_RSI.length = 2;
}
protected override void CalcBar(){
// strategy logic
m_myrsi.Value = m_RSI[0];
if (Bars.Close[0]>Bars.High[1]){
sell_order.Send();
return;
}
if (m_RSI[0]<15){
buy_order.Send();
}
}
}
}

