| Overall Statistics |
|
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% Sharpe Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio -2.251 Tracking Error 0.062 Treynor Ratio 0 Total Fees $0.00 |
namespace QuantConnect.Algorithm.CSharp
{
public class VerticalResistanceThrustAssembly : QCAlgorithm
{
private Symbol spySymbol;
public override void Initialize()
{
SetStartDate(2016, 12, 7); //Set Start Date
SetEndDate(2017,1,21);
SetCash(1000000); //Set Strategy Cash
var spy = AddEquity("SPY", Resolution.Minute);
var symbols = new [] {QuantConnect.Symbol.Create("SPY", SecurityType.Equity, Market.USA)};
SetUniverseSelection(new ManualUniverseSelectionModel(symbols));
spy.SetDataNormalizationMode(DataNormalizationMode.Raw);
spySymbol = spy.Symbol;
var option = AddOption("SPY");
option.SetFilter(-5, 5, TimeSpan.Zero, TimeSpan.FromDays(10));
SetBenchmark(spy.Symbol);
}
/// 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)
{
if (!Portfolio.Invested)
{
OptionChain chain;
if (data.OptionChains.TryGetValue("SPY", out chain))
{
// find the second call strike under market price expiring today
var contract = (
from optionContract in chain.OrderByDescending(x => x.Strike)
where optionContract.Right == OptionRight.Put
where optionContract.Strike < chain.Underlying.Price
select optionContract
).FirstOrDefault();
if (contract != null)
{
SetHoldings(contract.Symbol, -1);
}
}
}
}
}
}