Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
NaN
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
NaN
Tracking Error
NaN
Treynor Ratio
NaN
Total Fees
$0.00
namespace QuantConnect 
{   
    /*
    *   QuantConnect University: Full Basic Template:
    *
    *   The underlying QCAlgorithm class is full of helper methods which enable you to use QuantConnect.
    *   We have explained some of these here, but the full algorithm can be found at:
    *   https://github.com/QuantConnect/QCAlgorithm/blob/master/QuantConnect.Algorithm/QCAlgorithm.cs
    */
    public class BasicTemplateAlgorithm : QCAlgorithm
    {
        private string symbol = "IBB";
        private IndicatorBase<IndicatorDataPoint> _volatility;
        
        //Initialize the data and resolution you require for your strategy:
        public override void Initialize() 
        {
			
            //Start and End Date range for the backtest:
            SetStartDate(2010, 3, 31);         
            SetEndDate(DateTime.Now.Date.AddDays(-1));
            
            //Cash allocation
            SetCash(25000);
            
            //Add as many securities as you like. All the data will be passed into the event handler:
            AddSecurity(SecurityType.Equity, symbol, Resolution.Daily);
            
            var logr = new LogReturn(1);
            RegisterIndicator(symbol, logr, ResolveConsolidator(symbol, Resolution.Daily));
            // normalize logr to a display percent 0->100
            _volatility = new StandardDeviation("4Month Vol LOGR", 84).Of(logr.Times(100m));
            
            // normalize it to a numeric percent
            var rocp = ROCP(symbol, 1);
            var rocpvol = new StandardDeviation("4Month Vol ROCP", 84).Of(rocp);
            PlotIndicator("volatility", _volatility, rocpvol);
            
            PlotIndicator("returns", rocp, logr);
        }

        //Data Event Handler: New data arrives here. "TradeBars" type is a dictionary of strings so you can access it by symbol.
        public void OnData(TradeBars data) 
        {
            
        }
    }
    
    public class LogReturn : WindowIndicator<IndicatorDataPoint>
    {
        public LogReturn(string name, int period)
            : base(name, period)
        {
        }

        public LogReturn(int period)
            : base("LOGR" + period, period)
        {
        }

        protected override decimal ComputeNextValue(IReadOnlyWindow<IndicatorDataPoint> window, IndicatorDataPoint input)
        {
            decimal valuef = input;

            decimal value0 = !window.IsReady 
                ? window[window.Count - 1] 
                : window.MostRecentlyRemoved;

            return (decimal) Math.Log((double) (valuef/value0));
        }
    }
}