Overall Statistics
Total Trades
4
Average Win
0%
Average Loss
-2.34%
Compounding Annual Return
11.544%
Drawdown
7.200%
Expectancy
-1
Net Profit
2.751%
Sharpe Ratio
0.721
Probabilistic Sharpe Ratio
42.918%
Loss Rate
100%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-0.008
Beta
1.053
Annual Standard Deviation
0.12
Annual Variance
0.014
Information Ratio
-0.037
Tracking Error
0.101
Treynor Ratio
0.082
Total Fees
$2.00
Estimated Strategy Capacity
$85000.00
Lowest Capacity Asset
GOOCV VP83T1ZUHROL
# region imports
from AlgorithmImports import *
# endregion

class SmoothBlackKangaroo(QCAlgorithm):

    def Initialize(self) -> None:
        self.SetStartDate(2017, 4, 1)
        self.SetEndDate(2017, 6, 30)
        self.SetCash(100000)
        
        option = self.AddOption("GOOG", Resolution.Minute)
        self.symbol = option.Symbol
        option.SetFilter(-1, 1, timedelta(30), timedelta(60))

    def OnData(self, slice: Slice) -> None:
        if self.Portfolio.Invested: return

        # Get the OptionChain
        chain = slice.OptionChains.get(self.symbol, None)
        if not chain: return

        # Select an expiration date
        expiry = sorted(chain, key=lambda contract: contract.Expiry, reverse=True)[0].Expiry

        # Select the ATM strike price
        strikes = [contract.Strike for contract in chain if contract.Expiry == expiry]
        strike = sorted(strikes, key=lambda strike: abs(strike - chain.Underlying.Price))[0]

        option_strategy = OptionStrategies.Straddle(self.symbol, strike, expiry)
        self.Buy(option_strategy, 1)