Overall Statistics |
Total Orders 22 Average Win 0.68% Average Loss -1.33% Compounding Annual Return -0.001% Drawdown 1.400% Expectancy -0.372 Start Equity 100000 End Equity 99977 Net Profit -0.023% Sharpe Ratio -4.642 Sortino Ratio -0.802 Probabilistic Sharpe Ratio 0.000% Loss Rate 58% Win Rate 42% Profit-Loss Ratio 0.51 Alpha -0.017 Beta 0.003 Annual Standard Deviation 0.004 Annual Variance 0 Information Ratio -0.524 Tracking Error 0.164 Treynor Ratio -5.804 Total Fees $14.00 Estimated Strategy Capacity $320000.00 Lowest Capacity Asset SPY XKGCMWNHHL5Y|SPY R735QTJ8XC9X Portfolio Turnover 0.03% |
# region imports from AlgorithmImports import * # endregion industry_codes = [ 'AGRICULTURAL_INPUTS', 'BUILDING_MATERIALS', 'CHEMICALS', 'SPECIALTY_CHEMICALS', 'LUMBER_AND_WOOD_PRODUCTION', 'PAPER_AND_PAPER_PRODUCTS', 'ALUMINUM', 'COPPER', 'OTHER_INDUSTRIAL_METALS_AND_MINING', 'GOLD', 'SILVER', 'OTHER_PRECIOUS_METALS_AND_MINING', 'COKING_COAL', 'STEEL', 'AUTO_AND_TRUCK_DEALERSHIPS', 'AUTO_MANUFACTURERS', 'AUTO_PARTS', 'RECREATIONAL_VEHICLES', 'FURNISHINGS', 'FIXTURES_AND_APPLIANCES', 'RESIDENTIAL_CONSTRUCTION', 'TEXTILE_MANUFACTURING', 'APPAREL_MANUFACTURING', 'FOOTWEAR_AND_ACCESSORIES', 'PACKAGING_AND_CONTAINERS', 'PERSONAL_SERVICES', 'RESTAURANTS', 'APPAREL_RETAIL', 'DEPARTMENT_STORES', 'HOME_IMPROVEMENT_RETAIL', 'LUXURY_GOODS', 'INTERNET_RETAIL', 'SPECIALTY_RETAIL', 'GAMBLING', 'LEISURE', 'LODGING', 'RESORTS_AND_CASINOS', 'TRAVEL_SERVICES', 'ASSET_MANAGEMENT', 'BANKS_DIVERSIFIED', 'BANKS_REGIONAL', 'MORTGAGE_FINANCE', 'CAPITAL_MARKETS', 'FINANCIAL_DATA_AND_STOCK_EXCHANGES', 'INSURANCE_LIFE', 'INSURANCE_PROPERTY_AND_CASUALTY', 'INSURANCE_REINSURANCE', 'INSURANCE_SPECIALTY', 'INSURANCE_BROKERS', 'INSURANCE_DIVERSIFIED', 'SHELL_COMPANIES', 'FINANCIAL_CONGLOMERATES', 'CREDIT_SERVICES', 'REAL_ESTATE_DEVELOPMENT', 'REAL_ESTATE_SERVICES', 'REAL_ESTATE_DIVERSIFIED', 'REIT_HEALTHCARE_FACILITIES', 'REIT_HOTEL_AND_MOTEL', 'REIT_INDUSTRIAL', 'REIT_OFFICE', 'REIT_RESIDENTIAL', 'REIT_RETAIL', 'REIT_MORTGAGE', 'REIT_SPECIALTY', 'REIT_DIVERSIFIED', 'BEVERAGES_BREWERS', 'BEVERAGES_WINERIES_AND_DISTILLERIES', 'BEVERAGES_NON_ALCOHOLIC', 'CONFECTIONERS', 'FARM_PRODUCTS', 'HOUSEHOLD_AND_PERSONAL_PRODUCTS', 'PACKAGED_FOODS', 'EDUCATION_AND_TRAINING_SERVICES', 'DISCOUNT_STORES', 'FOOD_DISTRIBUTION', 'GROCERY_STORES', 'TOBACCO', 'BIOTECHNOLOGY', 'DRUG_MANUFACTURERS_GENERAL', 'DRUG_MANUFACTURERS_SPECIALTY_AND_GENERIC', 'HEALTHCARE_PLANS', 'MEDICAL_CARE_FACILITIES', 'PHARMACEUTICAL_RETAILERS', 'HEALTH_INFORMATION_SERVICES', 'MEDICAL_DEVICES', 'MEDICAL_INSTRUMENTS_AND_SUPPLIES', 'DIAGNOSTICS_AND_RESEARCH', 'MEDICAL_DISTRIBUTION', 'UTILITIES_INDEPENDENT_POWER_PRODUCERS', 'UTILITIES_RENEWABLE', 'UTILITIES_REGULATED_WATER', 'UTILITIES_REGULATED_ELECTRIC', 'UTILITIES_REGULATED_GAS', 'UTILITIES_DIVERSIFIED', 'TELECOM_SERVICES', 'ADVERTISING_AGENCIES', 'PUBLISHING', 'BROADCASTING', 'ENTERTAINMENT', 'INTERNET_CONTENT_AND_INFORMATION', 'ELECTRONIC_GAMING_AND_MULTIMEDIA', 'OIL_AND_GAS_DRILLING', 'OIL_AND_GAS_E_AND_P', 'OIL_AND_GAS_INTEGRATED', 'OIL_AND_GAS_MIDSTREAM', 'OIL_AND_GAS_REFINING_AND_MARKETING', 'OIL_AND_GAS_EQUIPMENT_AND_SERVICES', 'THERMAL_COAL', 'URANIUM', 'AEROSPACE_AND_DEFENSE', 'SPECIALTY_BUSINESS_SERVICES', 'CONSULTING_SERVICES', 'RENTAL_AND_LEASING_SERVICES', 'SECURITY_AND_PROTECTION_SERVICES', 'STAFFING_AND_EMPLOYMENT_SERVICES', 'CONGLOMERATES', 'ENGINEERING_AND_CONSTRUCTION', 'INFRASTRUCTURE_OPERATIONS', 'BUILDING_PRODUCTS_AND_EQUIPMENT', 'FARM_AND_HEAVY_CONSTRUCTION_MACHINERY', 'INDUSTRIAL_DISTRIBUTION', 'BUSINESS_EQUIPMENT_AND_SUPPLIES', 'SPECIALTY_INDUSTRIAL_MACHINERY', 'METAL_FABRICATION', 'POLLUTION_AND_TREATMENT_CONTROLS', 'TOOLS_AND_ACCESSORIES', 'ELECTRICAL_EQUIPMENT_AND_PARTS', 'AIRPORTS_AND_AIR_SERVICES', 'AIRLINES', 'RAILROADS', 'MARINE_SHIPPING', 'TRUCKING', 'INTEGRATED_FREIGHT_AND_LOGISTICS', 'WASTE_MANAGEMENT', 'INFORMATION_TECHNOLOGY_SERVICES', 'SOFTWARE_APPLICATION', 'SOFTWARE_INFRASTRUCTURE', 'COMMUNICATION_EQUIPMENT', 'COMPUTER_HARDWARE', 'CONSUMER_ELECTRONICS', 'ELECTRONIC_COMPONENTS', 'ELECTRONICS_AND_COMPUTER_DISTRIBUTION', 'SCIENTIFIC_AND_TECHNICAL_INSTRUMENTS', 'SEMICONDUCTOR_EQUIPMENT_AND_MATERIALS', 'SEMICONDUCTORS', 'SOLAR' ]
# region imports from AlgorithmImports import * # endregion class UglyOrangeBadger(QCAlgorithm): def initialize(self): self.set_start_date(2008, 1, 1) self.set_cash(100_000) self._equity = self.add_equity("SPY") self._option = self.add_option(self._equity.symbol) self._option.set_filter(1, 1, 30, 90) election_dates = [datetime(2008, 11, 4), datetime(2012, 11, 6), datetime(2016, 11, 8), datetime(2020, 11, 3)] self._should_open_position = False for dt in election_dates: self.schedule.on( self.date_rules.on(dt.year, dt.month, dt.day), self.time_rules.after_market_open(self._equity.symbol, 30), self._enable_trading ) def _enable_trading(self): self._should_open_position = True def on_data(self, data): # Wait until it's election and we have the Option chain. if not self._should_open_position: return chain = data.option_chains.get(self._option.symbol, None) if not chain: return self._should_open_position = False # Open the position. straddle = OptionStrategies.short_straddle( self._option.symbol, sorted(chain, key=lambda x: abs(x.strike - chain.underlying.price))[0].strike, min([x.expiry for x in chain]) ) self.buy(straddle, 1) def on_order_event(self, order_event): # When one of the straddle legs are assigned/exercised # and we now have a position in the underlying Equity, # liquidate everything. if (order_event.status == OrderStatus.FILLED and self._equity.invested): self.liquidate()