| Overall Statistics |
|
Total Trades 432 Average Win 2.61% Average Loss -3.28% Compounding Annual Return 33.091% Drawdown 30.100% Expectancy 0.099 Net Profit 190.110% Sharpe Ratio 0.758 Loss Rate 39% Win Rate 61% Profit-Loss Ratio 0.80 Alpha 0.258 Beta -0.084 Annual Standard Deviation 0.334 Annual Variance 0.111 Information Ratio 0.545 Tracking Error 0.352 Treynor Ratio -3.01 Total Fees $0.00 |
namespace QuantConnect.MeanReversion
{
public class MeanReversion : QCAlgorithm
{
string symbol1 = "AUDCAD";
string symbol2 = "USDCAD";
RollingWindow<decimal> Close1;
RollingWindow<decimal> Close2;
public override void Initialize()
{
SetStartDate(2014, 1, 1);
SetEndDate(DateTime.Now);
SetCash(100000);
SetBrokerageModel(BrokerageName.OandaBrokerage);
AddSecurity(SecurityType.Forex, symbol1, Resolution.Daily);
AddSecurity(SecurityType.Forex, symbol2, Resolution.Daily);
Close1 = new RollingWindow<decimal>(5);
Close2 = new RollingWindow<decimal>(5);
}
public void OnData(QuoteBars data)
{
if (!data.ContainsKey(symbol1)) return;
if (!data.ContainsKey(symbol2)) return;
var Open1 = data[symbol1].Open;
var Open2 = data[symbol2].Open;
var close1 = data[symbol1].Close;
Close1.Add(close1);
if (!Close1.IsReady) return;
var close2 = data[symbol2].Close;
Close2.Add(close2);
if (!Close2.IsReady) return;
var Return1 = Math.Log(Convert.ToDouble(Close1[0])/Convert.ToDouble(Close1[1]));
var Return2 = Math.Log(Convert.ToDouble(Close2[0])/Convert.ToDouble(Close2[1]));
var AverageReturn = (Return1+Return2)/2;
var DemeanedReturn1 = Return1-AverageReturn;
var DemeanedReturn2 = Return2-AverageReturn;
var spread = (Math.Max(DemeanedReturn1,DemeanedReturn2)-Math.Min(DemeanedReturn1,DemeanedReturn2))*1000;
if (!Portfolio[symbol1].IsLong && DemeanedReturn1<0 && spread > 4)
{
SetHoldings(symbol1, 4, false, "Long " + symbol1);
SetHoldings(symbol2, -4, false, "Short " + symbol2);
}
if (!Portfolio[symbol2].IsLong && DemeanedReturn1>0 && spread > 4)
{
SetHoldings(symbol2, 4, false, "Long " + symbol2);
SetHoldings(symbol1, -4, false, "Short " + symbol1);
}
}
}
}