Overall Statistics
Total Trades
9310
Average Win
0.21%
Average Loss
-0.08%
Compounding Annual Return
-67.640%
Drawdown
67.900%
Expectancy
-0.447
Net Profit
-67.740%
Sharpe Ratio
-5.328
Probabilistic Sharpe Ratio
0.000%
Loss Rate
85%
Win Rate
15%
Profit-Loss Ratio
2.70
Alpha
-0.587
Beta
-0.066
Annual Standard Deviation
0.112
Annual Variance
0.013
Information Ratio
-4.079
Tracking Error
0.18
Treynor Ratio
8.981
Total Fees
$0.00
namespace QuantConnect.Algorithm.CSharp
{
    public class CalibratedVentralCompensator : QCAlgorithm
    {
    	
    	public string forex = "EURUSD";

		private bool betOnUp = false;
		private RollingWindow<decimal> close;

        public override void Initialize()
        {
        	
            SetEndDate(2019, 12, 1);
            SetStartDate(2018, 12, 1);
            SetCash(200); 
            
            var eud = AddForex(forex, Resolution.Hour, Market.Oanda);
			eud.SetDataNormalizationMode(DataNormalizationMode.Raw);
			SetBrokerageModel(BrokerageName.OandaBrokerage);
			
			close = new RollingWindow<decimal>(4);
        }

        /// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here.
        /// Slice object keyed by symbol containing the stock data
        public override void OnData(Slice data)
        {
            

    		close.Add(data[forex].Close);
    		if(close.Count <= 1) return;
    		
        	var currentPrice = Securities[forex].Price;
    		var amountToBuy = Portfolio.Cash/currentPrice;
    		var upTrend = close[1] < close[0];
    		
    		Debug("Last Close : "+close[1]+", Current Close : "+close[0]+", Profit since last trade : "+Portfolio[forex].UnrealizedProfit);
    		
    		
    		if(betOnUp != upTrend){ 
    			Liquidate(forex); 
    			Debug("Liquidated position, holding "+Securities[forex].Invested);
    		}
    	
    		if(upTrend){
        		MarketOrder(forex, amountToBuy);
        		betOnUp = true;
        		Debug("Long with "+(amountToBuy)+" Units, holding "+Securities[forex].Invested);
    		}
    		else{
        		MarketOrder(forex, -amountToBuy);
        		betOnUp = false;
        		Debug("Short with "+(-amountToBuy)+" Units, holding "+Securities[forex].Invested);
    		}
        }
    }
}