Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 11.694% Drawdown 1.100% Expectancy 0 Net Profit 0% Sharpe Ratio 2.386 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.013 Beta 1.003 Annual Standard Deviation 0.043 Annual Variance 0.002 Information Ratio -3.311 Tracking Error 0.004 Treynor Ratio 0.102 Total Fees $2.31 |
namespace QuantConnect { /// <summary> /// Basic template algorithm simply initializes the date range and cash /// </summary> public class DailyIdentityAlgorithm : QCAlgorithm { private List<DailyBar> _dailyBars; /// <summary> /// Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized. /// </summary> public override void Initialize() { SetStartDate(DateTime.Now.AddMonths(-1)); //Set Start Date SetEndDate(DateTime.Now.AddDays(-1)); //Set End Date SetCash(100000); //Set Strategy Cash // Find more symbols here: http://quantconnect.com/data AddEquity("SPY", Resolution.Minute); AddEquity("AIG", Resolution.Minute); AddEquity("BAC", Resolution.Minute); AddEquity("IBM", Resolution.Minute); _dailyBars = new List<DailyBar>(); foreach (var security in Portfolio.Securities) { var symbol = security.Key; _dailyBars.Add(new DailyBar(symbol, Identity(symbol, Resolution.Daily, Field.Open), Identity(symbol, Resolution.Daily, Field.High), Identity(symbol, Resolution.Daily, Field.Low), Identity(symbol, Resolution.Daily, Field.Close))); } } /// <summary> /// OnData event is the primary entry point for your algorithm. Each new data point will be pumped in here. /// </summary> /// <param name="data">Slice object keyed by symbol containing the stock data</param> public override void OnData(Slice data) { if (!Portfolio.Invested) { SetHoldings("SPY", 1); Debug("Purchased Stock"); } Debug(Environment.NewLine + string.Join(Environment.NewLine, _dailyBars.Select(x => x.ToString()))); } } public class DailyBar { private Identity _open; private Identity _high; private Identity _low; private Identity _close; public Symbol Symbol { get; private set; } public decimal Open { get { return _open; } } public decimal High { get { return _high; } } public decimal Low { get { return _low; } } public decimal Close { get { return _close; } } public DateTime EndTime { get { return IsReady ? _close.Current.EndTime : DateTime.MinValue; } } public bool IsReady { get { return _close.IsReady; } } public DailyBar(Symbol symbol, Identity open, Identity high, Identity low, Identity close) { Symbol = symbol; _open = open; _high = high; _low = low; _close = close; } public override string ToString() { return IsReady ? string.Format("{0} {1} -> O: {2:0.00} H: {3:0.00} L: {4:0.00} C: {5:0.00}", EndTime, Symbol, Open, High, Low, Close) : Symbol.ID + " is not ready"; } } }