Overall Statistics
Total Trades
93
Average Win
0%
Average Loss
0%
Compounding Annual Return
6.605%
Drawdown
56.500%
Expectancy
0
Net Profit
333.517%
Sharpe Ratio
0.359
Probabilistic Sharpe Ratio
0.009%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
1.027
Annual Standard Deviation
0.167
Annual Variance
0.028
Information Ratio
0.33
Tracking Error
0.005
Treynor Ratio
0.058
Total Fees
$95.40
Estimated Strategy Capacity
$630000000.00
Lowest Capacity Asset
SPY R735QTJ8XC9X
#region imports
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Linq;
    using System.Globalization;
    using System.Drawing;
    using QuantConnect;
    using QuantConnect.Algorithm.Framework;
    using QuantConnect.Algorithm.Framework.Selection;
    using QuantConnect.Algorithm.Framework.Alphas;
    using QuantConnect.Algorithm.Framework.Portfolio;
    using QuantConnect.Algorithm.Framework.Execution;
    using QuantConnect.Algorithm.Framework.Risk;
    using QuantConnect.Parameters;
    using QuantConnect.Benchmarks;
    using QuantConnect.Brokerages;
    using QuantConnect.Util;
    using QuantConnect.Interfaces;
    using QuantConnect.Algorithm;
    using QuantConnect.Indicators;
    using QuantConnect.Data;
    using QuantConnect.Data.Consolidators;
    using QuantConnect.Data.Custom;
    using QuantConnect.DataSource;
    using QuantConnect.Data.Fundamental;
    using QuantConnect.Data.Market;
    using QuantConnect.Data.UniverseSelection;
    using QuantConnect.Notifications;
    using QuantConnect.Orders;
    using QuantConnect.Orders.Fees;
    using QuantConnect.Orders.Fills;
    using QuantConnect.Orders.Slippage;
    using QuantConnect.Scheduling;
    using QuantConnect.Securities;
    using QuantConnect.Securities.Equity;
    using QuantConnect.Securities.Future;
    using QuantConnect.Securities.Option;
    using QuantConnect.Securities.Forex;
    using QuantConnect.Securities.Crypto;   
    using QuantConnect.Securities.Interfaces;
    using QuantConnect.Storage;
    using QuantConnect.Data.Custom.AlphaStreams;
    using QCAlgorithmFramework = QuantConnect.Algorithm.QCAlgorithm;
    using QCAlgorithmFrameworkBridge = QuantConnect.Algorithm.QCAlgorithm;
#endregion
namespace QuantConnect.Algorithm.CSharp
{
    public class PensiveYellowWolf : QCAlgorithm
    {
        string sym = "SPY";
        DateTime anchorDate = new DateTime(2000,1,1);
        decimal StartingAum = 100000;
        decimal Dividends =0;
        public override void Initialize()
        {
            SetStartDate(anchorDate);  
            SetEndDate(2022, 11, 30);          
            SetCash(StartingAum);      
            SetBenchmark("SPY");
            anchorDate = anchorDate.AddYears(1);

            var equity = AddEquity(sym, Resolution.Daily);          
            equity.SetDataNormalizationMode(DataNormalizationMode.SplitAdjusted);
            
            
        }
        public void OnData(Dividends div)
        {
            if(div.ContainsKey(sym))
            {         
                var t = div[sym];
                Debug($"{t.EndTime} {t.DataType}  {t.Distribution} {t.Value}");
                Dividends = t.Distribution;
                            
            }
            
        }

      
      
        public void OnData(TradeBars data)
        {
            //reinvest dividends
            if(Dividends>0){
                
                var receivedAmount = Dividends * Portfolio[sym].Quantity;
                var shares = Math.Ceiling(receivedAmount/ data[sym].Close);
                Dividends = 0;
                MarketOrder(sym,shares);
            }
      
            if(!Portfolio[sym].Invested)
            {
                SetHoldings(sym,1);
            }         
           
        }

    }
}