#
# Copyright 2012 Quantopian, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

TRADING_DAYS_IN_YEAR = 250
TRADING_HOURS_IN_DAY = 6.5
MINUTES_IN_HOUR = 60


# NOTE: It may be worth revisiting how the keys for this dictionary are
# specified, for instance making them ContinuousFuture objects instead of
# static strings.
FUTURE_EXCHANGE_FEES_BY_SYMBOL = {
    "AD": 1.60,  # AUD
    "AI": 0.96,  # Bloomberg Commodity Index
    "BD": 1.50,  # Big Dow
    "BO": 1.95,  # Soybean Oil
    "BP": 1.60,  # GBP
    "CD": 1.60,  # CAD
    "CL": 1.50,  # Crude Oil
    "CM": 1.03,  # Corn e-mini
    "CN": 1.95,  # Corn
    "DJ": 1.50,  # Dow Jones
    "EC": 1.60,  # Euro FX
    "ED": 1.25,  # Eurodollar
    "EE": 1.50,  # Euro FX e-mini
    "EI": 1.50,  # MSCI Emerging Markets mini
    "EL": 1.50,  # Eurodollar NYSE LIFFE
    "ER": 0.65,  # Russell2000 e-mini
    "ES": 1.18,  # SP500 e-mini
    "ET": 1.50,  # Ethanol
    "EU": 1.50,  # Eurodollar e-micro
    "FC": 2.03,  # Feeder Cattle
    "FF": 0.96,  # 3-Day Federal Funds
    "FI": 0.56,  # Deliverable Interest Rate Swap 5y
    "FS": 1.50,  # Interest Rate Swap 5y
    "FV": 0.65,  # US 5y
    "GC": 1.50,  # Gold
    "HG": 1.50,  # Copper
    "HO": 1.50,  # Heating Oil
    "HU": 1.50,  # Unleaded Gasoline
    "JE": 0.16,  # JPY e-mini
    "JY": 1.60,  # JPY
    "LB": 2.03,  # Lumber
    "LC": 2.03,  # Live Cattle
    "LH": 2.03,  # Lean Hogs
    "MB": 1.50,  # Municipal Bonds
    "MD": 1.50,  # SP400 Midcap
    "ME": 1.60,  # MXN
    "MG": 1.50,  # MSCI EAFE mini
    "MI": 1.18,  # SP400 Midcap e-mini
    "MS": 1.03,  # Soybean e-mini
    "MW": 1.03,  # Wheat e-mini
    "ND": 1.50,  # Nasdaq100
    "NG": 1.50,  # Natural Gas
    "NK": 2.15,  # Nikkei225
    "NQ": 1.18,  # Nasdaq100 e-mini
    "NZ": 1.60,  # NZD
    "OA": 1.95,  # Oats
    "PA": 1.50,  # Palladium
    "PB": 1.50,  # Pork Bellies
    "PL": 1.50,  # Platinum
    "QG": 0.50,  # Natural Gas e-mini
    "QM": 1.20,  # Crude Oil e-mini
    "RM": 1.50,  # Russell1000 e-mini
    "RR": 1.95,  # Rough Rice
    "SB": 2.10,  # Sugar
    "SF": 1.60,  # CHF
    "SM": 1.95,  # Soybean Meal
    "SP": 2.40,  # SP500
    "SV": 1.50,  # Silver
    "SY": 1.95,  # Soybean
    "TB": 1.50,  # Treasury Bills
    "TN": 0.56,  # Deliverable Interest Rate Swap 10y
    "TS": 1.50,  # Interest Rate Swap 10y
    "TU": 1.50,  # US 2y
    "TY": 0.75,  # US 10y
    "UB": 0.85,  # Ultra Tbond
    "US": 0.80,  # US 30y
    "VX": 1.50,  # VIX
    "WC": 1.95,  # Wheat
    "XB": 1.50,  # RBOB Gasoline
    "XG": 0.75,  # Gold e-mini
    "YM": 1.50,  # Dow Jones e-mini
    "YS": 0.75,  # Silver e-mini
}

# See `ziplime.finance.slippage.VolatilityVolumeShare` for more information on
# how these constants are used.
DEFAULT_ETA = 0.049018143225019836
ROOT_SYMBOL_TO_ETA = {
    "AD": DEFAULT_ETA,  # AUD
    "AI": DEFAULT_ETA,  # Bloomberg Commodity Index
    "BD": 0.050346811117733474,  # Big Dow
    "BO": 0.054930995070046298,  # Soybean Oil
    "BP": 0.047841544238716338,  # GBP
    "CD": 0.051124420640250717,  # CAD
    "CL": 0.04852544628414196,  # Crude Oil
    "CM": 0.052683478163348625,  # Corn e-mini
    "CN": 0.053499718390037809,  # Corn
    "DJ": 0.02313009072076987,  # Dow Jones
    "EC": 0.04885131067661861,  # Euro FX
    "ED": 0.094184297090245755,  # Eurodollar
    "EE": 0.048713151357687556,  # Euro FX e-mini
    "EI": 0.031712708439692663,  # MSCI Emerging Markets mini
    "EL": 0.044207422018209361,  # Eurodollar NYSE LIFFE
    "ER": 0.045930567737711307,  # Russell2000 e-mini
    "ES": 0.047304418321993502,  # SP500 e-mini
    "ET": DEFAULT_ETA,  # Ethanol
    "EU": 0.049750396084029064,  # Eurodollar e-micro
    "FC": 0.058728734202178494,  # Feeder Cattle
    "FF": 0.048970591527624042,  # 3-Day Federal Funds
    "FI": 0.033477176738170772,  # Deliverable Interest Rate Swap 5y
    "FS": 0.034557788010453824,  # Interest Rate Swap 5y
    "FV": 0.046544427716056963,  # US 5y
    "GC": 0.048933313546125207,  # Gold
    "HG": 0.052238417524987799,  # Copper
    "HO": 0.045061318412156062,  # Heating Oil
    "HU": 0.017154313062463938,  # Unleaded Gasoline
    "JE": 0.013948949613401812,  # JPY e-mini
    "JY": DEFAULT_ETA,  # JPY
    "LB": 0.06146586386903994,  # Lumber
    "LC": 0.055853801862858619,  # Live Cattle
    "LH": 0.057557004630219781,  # Lean Hogs
    "MB": DEFAULT_ETA,  # Municipal Bonds
    "MD": DEFAULT_ETA,  # SP400 Midcap
    "ME": 0.030383767727818548,  # MXN
    "MG": 0.029579261656151684,  # MSCI EAFE mini
    "MI": 0.041026288873007355,  # SP400 Midcap e-mini
    "MS": DEFAULT_ETA,  # Soybean e-mini
    "MW": 0.052579919663880245,  # Wheat e-mini
    "ND": DEFAULT_ETA,  # Nasdaq100
    "NG": 0.047897809233755716,  # Natural Gas
    "NK": 0.044555435054791433,  # Nikkei225
    "NQ": 0.044772425085977945,  # Nasdaq100 e-mini
    "NZ": 0.049170418073872041,  # NZD
    "OA": 0.056973267232775522,  # Oats
    "PA": DEFAULT_ETA,  # Palladium
    "PB": DEFAULT_ETA,  # Pork Bellies
    "PL": 0.054579379665647493,  # Platinum
    "QG": DEFAULT_ETA,  # Natural Gas e-mini
    "QM": DEFAULT_ETA,  # Crude Oil e-mini
    "RM": 0.037425041244579654,  # Russell1000 e-mini
    "RR": DEFAULT_ETA,  # Rough Rice
    "SB": 0.057388160345668134,  # Sugar
    "SF": 0.047784825569615726,  # CHF
    "SM": 0.048552860559844223,  # Soybean Meal
    "SP": DEFAULT_ETA,  # SP500
    "SV": 0.052691435039931109,  # Silver
    "SY": 0.052041703657281613,  # Soybean
    "TB": DEFAULT_ETA,  # Treasury Bills
    "TN": 0.033363465365262503,  # Deliverable Interest Rate Swap 10y
    "TS": 0.032908878455069152,  # Interest Rate Swap 10y
    "TU": 0.063867646063840794,  # US 2y
    "TY": 0.050586988554700826,  # US 10y
    "UB": DEFAULT_ETA,  # Ultra Tbond
    "US": 0.047984179873590722,  # US 30y
    "VX": DEFAULT_ETA,  # VIX
    "WC": 0.052636542119329242,  # Wheat
    "XB": 0.044444916388854484,  # RBOB Gasoline
    "XG": DEFAULT_ETA,  # Gold e-mini
    "YM": DEFAULT_ETA,  # Dow Jones e-mini
    "YS": DEFAULT_ETA,  # Silver e-mini
}
