floorvolstrip
Strip floorlet volatilities from flat floor volatilities
Syntax
Description
[
strips floorlet volatilities from the flat floor volatilities by using the bootstrapping
method. The function interpolates the cap volatilities on each floorlet payment date before
stripping the floorlet volatilities.FloorletVols
,FloorletPaymentDates
,FloorStrikes
]
= floorvolstrip(ZeroCurve
,FloorSettle
,FloorMaturity
,FloorVolatility
)
[
specifies options using one or more name-value pair arguments in addition to the input
arguments in the previous syntax.FloorletVols
,FloorletPaymentDates
,FloorStrikes
]
= floorvolstrip(___,Name,Value
)
Examples
Stripping Floorlet Volatilities from At-The-Money (ATM) Floors
Compute the zero curve for discounting and projecting forward rates.
ValuationDate = datetime(2015,8,10);
ZeroRates = [0.12 0.24 0.40 0.73 1.09 1.62]/100;
CurveDates = datemnth(ValuationDate, [0.25 0.5 1 2 3 5]*12);
ZeroCurve = IRDataCurve('Zero',ValuationDate,CurveDates,ZeroRates)
ZeroCurve = Type: Zero Settle: 736186 (10-Aug-2015) Compounding: 2 Basis: 0 (actual/actual) InterpMethod: linear Dates: [6x1 double] Data: [6x1 double]
Define the ATM floor volatility data.
FloorSettle = datetime(2015,8,12); FloorMaturity = [datetime(2016,8,12) ; datetime(2017,8,14) ; datetime(2018,8,13) ; datetime(2019,8,12) ; datetime(2020,8,12)]; FloorVolatility = [0.31;0.39;0.43;0.42;0.40];
Strip floorlet volatilities from ATM floors.
[FloorletVols, FloorletPaymentDates, ATMFloorStrikes] = floorvolstrip(ZeroCurve,...
FloorSettle, FloorMaturity, FloorVolatility);
PaymentDates = cellstr(datestr(FloorletPaymentDates));
format;
table(PaymentDates, FloorletVols, ATMFloorStrikes)
ans=9×3 table
PaymentDates FloorletVols ATMFloorStrikes
_______________ ____________ _______________
{'12-Aug-2016'} 0.31 0.0056551
{'13-Feb-2017'} 0.3646 0.0073508
{'14-Aug-2017'} 0.41948 0.0090028
{'12-Feb-2018'} 0.43152 0.010827
{'13-Aug-2018'} 0.46351 0.012617
{'12-Feb-2019'} 0.40407 0.013862
{'12-Aug-2019'} 0.39863 0.015105
{'12-Feb-2020'} 0.3674 0.016369
{'12-Aug-2020'} 0.35371 0.01762
Stripping Floorlet Volatilities from Floors with the Same Strikes
Compute the zero curve for discounting and projecting forward rates.
ValuationDate = datetime(2015,6,10);
ZeroRates = [0.02 0.10 0.28 0.75 1.15 1.80]/100;
CurveDates = datemnth(ValuationDate, [0.25 0.5 1 2 3 5]*12);
ZeroCurve = IRDataCurve('Zero',ValuationDate,CurveDates,ZeroRates)
ZeroCurve = Type: Zero Settle: 736125 (10-Jun-2015) Compounding: 2 Basis: 0 (actual/actual) InterpMethod: linear Dates: [6x1 double] Data: [6x1 double]
Define the floor volatility data.
FloorSettle = datetime(2015,6,12); FloorMaturity = [datetime(2016,6,13) ; datetime(2017,6,12) ; datetime(2018,6,12) ; datetime(2019,6,12) ;datetime(2020,6,12)]; FloorVolatility = [0.41;0.43;0.43;0.41;0.38]; FloorStrike = 0.015;
Strip floorlet volatilities from floors with the same strike.
[FloorletVols, FloorletPaymentDates, FloorStrikes] = floorvolstrip(ZeroCurve, ... FloorSettle, FloorMaturity, FloorVolatility, 'Strike', FloorStrike); PaymentDates = cellstr(datestr(FloorletPaymentDates)); format; table(PaymentDates, FloorletVols, FloorStrikes)
ans=9×3 table
PaymentDates FloorletVols FloorStrikes
_______________ ____________ ____________
{'13-Jun-2016'} 0.41 0.015
{'12-Dec-2016'} 0.42 0.015
{'12-Jun-2017'} 0.43433 0.015
{'12-Dec-2017'} 0.43001 0.015
{'12-Jun-2018'} 0.43 0.015
{'12-Dec-2018'} 0.39173 0.015
{'12-Jun-2019'} 0.37244 0.015
{'12-Dec-2019'} 0.32056 0.015
{'12-Jun-2020'} 0.28308 0.015
Stripping Floorlet Volatilities Using Manually Specified Floorlet Dates
Compute the zero curve for discounting and projecting forward rates.
ValuationDate = datetime(2015,5,19);
ZeroRates = [0.02 0.07 0.23 0.63 1.01 1.60]/100;
CurveDates = datemnth(ValuationDate, [0.25 0.5 1 2 3 5]*12);
ZeroCurve = IRDataCurve('Zero',ValuationDate,CurveDates,ZeroRates)
ZeroCurve = Type: Zero Settle: 736103 (19-May-2015) Compounding: 2 Basis: 0 (actual/actual) InterpMethod: linear Dates: [6x1 double] Data: [6x1 double]
Define the floor volatility data.
FloorSettle = datetime(2015,5,19); FloorMaturity = [datetime(2016,5,19) ; datetime(2017,5,19) ; datetime(2018,5,21) ; datetime(2019,5,20) ; datetime(2020,5,19)]; FloorVolatility = [0.39;0.42;0.43;0.42;0.40]; FloorStrike = 0.010;
Specify the quarterly and semiannual dates.
FloorletDates = [cfdates(FloorSettle, datetime(2016,5,19), 4)... cfdates(datetime(2016,5,19),datetime(2020,5,19), 2)]'; FloorletDates(~isbusday(FloorletDates)) = ... busdate(FloorletDates(~isbusday(FloorletDates)), 'modifiedfollow');
Strip floorlet volatilities using specified FloorletDates
.
[FloorletVols, FloorletPaymentDates, FloorStrikes] = floorvolstrip(ZeroCurve, ... FloorSettle, FloorMaturity, FloorVolatility, 'Strike', FloorStrike, ... 'FloorletDates', FloorletDates); PaymentDates = cellstr(datestr(FloorletPaymentDates)); format; table(PaymentDates, FloorletVols, FloorStrikes)
ans=11×3 table
PaymentDates FloorletVols FloorStrikes
_______________ ____________ ____________
{'19-Nov-2015'} 0.39 0.01
{'19-Feb-2016'} 0.39 0.01
{'19-May-2016'} 0.39 0.01
{'21-Nov-2016'} 0.4058 0.01
{'19-May-2017'} 0.4307 0.01
{'20-Nov-2017'} 0.43317 0.01
{'21-May-2018'} 0.44309 0.01
{'19-Nov-2018'} 0.40831 0.01
{'20-May-2019'} 0.39831 0.01
{'19-Nov-2019'} 0.3524 0.01
{'19-May-2020'} 0.32765 0.01
Stripping Floorlet Volatilities from Floors Using the Shifted Black Model
Compute the zero curve for discounting and projecting forward rates.
ValuationDate = datetime(2016,5,3);
ZeroRates = [-0.31 -0.21 -0.15 -0.10 0.009 0.19]/100;
CurveDates = datemnth(ValuationDate, [0.25 0.5 1 2 3 5]*12);
ZeroCurve = IRDataCurve('Zero',ValuationDate,CurveDates,ZeroRates)
ZeroCurve = Type: Zero Settle: 736453 (03-May-2016) Compounding: 2 Basis: 0 (actual/actual) InterpMethod: linear Dates: [6x1 double] Data: [6x1 double]
Define the floor volatility (Shifted Black) data.
FloorSettle = datetime(2016,5,3); FloorMaturity = [datetime(2017,5,3) ; datetime(2018,5,3) ; datetime(2019,5,3) ; datetime(2020,5,4) ; datetime(2021,5,3)]; FloorVolatility = [0.42;0.45;0.43;0.40;0.36]; % Shifted Black volatilities Shift = 0.01; % 1 percent shift. FloorStrike = -0.001; % -0.1 percent strike.
Strip floorlet volatilities from floors using the Shifted Black Model.
[FloorletVols, FloorletPaymentDates, FloorStrikes] = floorvolstrip(ZeroCurve, ... FloorSettle,FloorMaturity,FloorVolatility,'Strike',FloorStrike,'Shift',Shift); PaymentDates = string(datestr(FloorletPaymentDates)); format; table(PaymentDates,FloorletVols,FloorStrikes)
ans=9×3 table
PaymentDates FloorletVols FloorStrikes
_____________ ____________ ____________
"03-May-2017" 0.42 -0.001
"03-Nov-2017" 0.44575 -0.001
"03-May-2018" 0.47092 -0.001
"05-Nov-2018" 0.41911 -0.001
"03-May-2019" 0.40197 -0.001
"04-Nov-2019" 0.36262 -0.001
"04-May-2020" 0.33615 -0.001
"03-Nov-2020" 0.27453 -0.001
"03-May-2021" 0.23045 -0.001
Stripping Floorlet Volatilities from Floors Using Normal Model
Compute the zero curve for discounting and projecting forward rates.
ValuationDate = datetime(2018,5,1);
ZeroRates = [-0.31 -0.27 -0.18 -0.05 0.015 0.22]/100;
CurveDates = datemnth(ValuationDate, [0.25 0.5 1 2 3 5]*12);
ZeroCurve = IRDataCurve('Zero',ValuationDate,CurveDates,ZeroRates)
ZeroCurve = Type: Zero Settle: 737181 (01-May-2018) Compounding: 2 Basis: 0 (actual/actual) InterpMethod: linear Dates: [6x1 double] Data: [6x1 double]
Define the normal floor volatility data.
FloorSettle = datetime(2018,5,1); FloorMaturity = [datetime(2019,5,1) ; datetime(2020,5,1) ; datetime(2021,5,3) ; datetime(2022,5,2) ; datetime(2023,5,1)]; FloorVolatility = [0.0065;0.0067;0.0064;0.0058;0.0055]; % Normal volatilities FloorStrike = -0.005; % -0.5 percent strike.
Strip floorlet volatilities from floors using the Normal (Bachelier) model.
[FloorletVols, FloorletPaymentDates, FloorStrikes] = floorvolstrip(ZeroCurve, ... FloorSettle,FloorMaturity,FloorVolatility,'Strike',FloorStrike,'Model','normal'); PaymentDates = string(datestr(FloorletPaymentDates)); format; table(PaymentDates,FloorletVols,FloorStrikes)
ans=9×3 table
PaymentDates FloorletVols FloorStrikes
_____________ ____________ ____________
"01-May-2019" 0.0065 -0.005
"01-Nov-2019" 0.0066644 -0.005
"01-May-2020" 0.0068354 -0.005
"02-Nov-2020" 0.006266 -0.005
"03-May-2021" 0.0060101 -0.005
"01-Nov-2021" 0.004942 -0.005
"02-May-2022" 0.0042668 -0.005
"01-Nov-2022" 0.0047986 -0.005
"01-May-2023" 0.0044738 -0.005
Input Arguments
ZeroCurve
— Zero rate curve
ratecurve
object | RateSpec
object | IRDataCurve
object
Zero rate curve, specified using a ratecurve
, RateSpec
,
or IRDataCurve
object containing the zero rate curve for discounting
according to its day count convention. If you do not specify the optional argument
ProjectionCurve
, the function uses ZeroCurve
to compute the underlying forward rates as well. The observation date of the
ZeroCurve
specifies the valuation date. For more information, see
the following:
To create an
ratecurve
object, seeratecurve
.To create a
RateSpec
, seeintenvset
.To create an
IRDataCurve
object, seeIRDataCurve
.
Data Types: struct
FloorSettle
— Common floor settle date
datetime scalar | string scalar | date character vector
Common floor settle date, specified as a scalar datetime, string, or date character
vector. The FloorSettle
date cannot be earlier than the
ZeroCurve
valuation date.
To support existing code, floorvolstrip
also
accepts serial date numbers as inputs, but they are not recommended.
FloorMaturity
— Floor maturity dates
datetime array | string array | date character vector
Floor maturity dates, specified as an NFloor
-by-1
vector
using a datetime array, string array, or date character vectors.
To support existing code, floorvolstrip
also
accepts serial date numbers as inputs, but they are not recommended.
FloorVolatility
— Flat floor volatilities
vector of positive decimals
Flat floor volatilities, specified as an NFloor
-by-1
vector of positive decimals.
Data Types: double
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: [FloorletVols,FloorletPaymentDates,FloorStrikes]
= floorvolstrip(ZeroCurve,FloorSettle,FloorMaturity,FloorVolatility,'Strike',.2)
Strike
— Floor strike rate
if not specified, all floors are at-the-money and the function computes the ATM strike for each floor maturing on each floorlet payment date (default) | scalar decimal | vector
Floor strike rate, specified as the comma-separated pair consisting of
'Strike'
and a scalar decimal value or an
NFloorletVols
-by-1
vector. Use
Strike
as a scalar to specify a single strike that applies
equally to all floors. Or, specify an
NCapletVols
-by-1
vector of strikes for the
floors.
Data Types: double
FloorletDates
— Floorlet reset and payment dates
If not specified, the default is to automatically generate periodic floorlet dates (default) | datetime array | string array | date character vector
Floorlet reset and payment dates, specified as the comma-separated pair consisting of
'FloorletDates'
and an
NFloorletDates
-by-1
vector using a datetime
array, string array, or date character vectors.
To support existing code, floorvolstrip
also
accepts serial date numbers as inputs, but they are not recommended.
Use FloorletDates
to manually specify all floorlet reset and payment
dates. For example, some date intervals may be quarterly while others may be
semiannual. All dates must be later than FloorSettle
and cannot
be later than the last FloorMaturity
date. Dates are adjusted
according to the BusDayConvention
and Holidays
inputs.
If FloorletDates
is not specified, the default is to automatically
generate periodic floorlet dates after FloorSettle
based on the
last FloorMaturity
date as the reference date, using the
following optional inputs: Reset
,
EndMonthRule
, BusDayConvention
, and
Holidays
.
Reset
— Frequency of periodic payments per year within a floor
2
(default) | positive scalar integer with values 1
,2
, 3
, 4
, 6
, or
12
Frequency of periodic payments per year within a floor, specified as the comma-separated pair
consisting of 'Reset'
and a positive scalar integer with values
1
,2
, 3
,
4
, 6
, or 12
.
Note
If you specify FloorletDates
, the function ignores the
input for Reset
.
Data Types: double
EndMonthRule
— End-of-month rule flag for generating floorlet dates
1
(in effect) (default) | scalar nonnegative integer [0,1]
End-of-month rule flag for generating floorlet dates, specified as the comma-separated pair
consisting of 'EndMonthRule'
and a nonnegative integer
[0
, 1
].
0
= Ignore rule, meaning that a payment date is always the same numerical day of the month.1
= Set rule on, meaning that a payment date is always the last actual day of the month.
Data Types: logical
BusinessDayConvention
— Business day conventions
'modifiedfollow'
(default) | character vector with values 'actual'
, 'follow'
, 'modifiedfollow'
,
'previous'
, 'modifiedprevious'
Business day conventions, specified as the comma-separated pair consisting of
'BusinessDayConvention'
and a character vector. Use this argument
to specify how the function treats non-business days, which are days on which
businesses are not open (such as weekends and statutory holidays).
'actual'
— Non-business days are effectively ignored. Cash flows that fall on non-business days are assumed to be distributed on the actual date.'follow'
— Cash flows that fall on a non-business day are assumed to be distributed on the following business day.'modifiedfollow'
— Cash flows that fall on a non-business day are assumed to be distributed on the following business day. However, if the following business day is in a different month, the previous business day is adopted instead.'previous'
— Cash flows that fall on a non-business day are assumed to be distributed on the previous business day.'modifiedprevious'
— Cash flows that fall on a non-business day are assumed to be distributed on the previous business day. However, if the previous business day is in a different month, the following business day is adopted instead.
Data Types: char
Holidays
— Holidays used in computing business days
if not specified, the default is to use holidays.m
(default) | vector of MATLAB® dates
Holidays used in computing business days, specified as the comma-separated pair
consisting of 'Holidays'
and
NHolidays
-by-1
vector of MATLAB dates.
Data Types: datetime
ProjectionCurve
— Rate curve for computing underlying forward rates
if not specified, the default is to use the ZeroCurve
input for computing the underlying forward rates (default) | RateSpec
object | IRDatCurve
object
Rate curve for computing underlying forward rates, specified as the comma-separated pair
consisting of 'ProjectionCurve'
and a RateSpec
object or IRDatCurve
object. For more information on creating a
RateSpec
, see intenvset
. For more information on
creating an IRDataCurve
object, see IRDataCurve
.
Data Types: struct
MaturityInterpMethod
— Method for interpolating floor volatilities on each floorlet maturity date before stripping floorlet volatilities
'linear'
(default) | character vector with values: 'linear'
,
'nearest'
, 'next'
,
'previous'
, 'spline'
,
'pchip'
Method for interpolating the floor volatilities on each floorlet maturity date
before stripping the floorlet volatilities, specified as the comma-separated pair
consisting of 'MaturityInterpMethod'
and a character vector with
values: 'linear'
, 'nearest'
,
'next'
, 'previous'
,
'spline'
, or 'pchip'
.
'linear'
— Linear interpolation. The interpolated value at a query point is based on linear interpolation of the values at neighboring grid points in each respective dimension. This is the default interpolation method.'nearest'
— Nearest neighbor interpolation. The interpolated value at a query point is the value at the nearest sample grid point.'next'
— Next neighbor interpolation. The interpolated value at a query point is the value at the next sample grid point.'previous'
— Previous neighbor interpolation. The interpolated value at a query point is the value at the previous sample grid point.'spline'
— Spline interpolation using not-a-knot end conditions. The interpolated value at a query point is based on a cubic interpolation of the values at neighboring grid points in each respective dimension.'pchip'
— Shape-preserving piecewise cubic interpolation. The interpolated value at a query point is based on a shape-preserving piecewise cubic interpolation of the values at neighboring grid points.
For more information on interpolation methods, see interp1
.
Note
The function uses constant extrapolation to calculate volatilities falling outside the range of user-supplied data.
Data Types: char
Limit
— Upper bound of implied volatility search interval
10
(or 1000% per annum) (default) | positive scalar decimal
Upper bound of implied volatility search interval, specified as the comma-separated pair
consisting of 'Limit'
and a positive scalar decimal.
Data Types: double
Tolerance
— Implied volatility search termination tolerance
1e-5
(default) | positive scalar
Implied volatility search termination tolerance, specified as the comma-separated pair
consisting of 'Tolerance'
and a positive scalar.
Data Types: double
OmitFirstFloorlet
— Flag to omit the first floorlet payment in the floors
true
always omit the first floorlet (default) | logical
Flag to omit the first floorlet payment in the floors, specified as the
comma-separated pair consisting of 'OmitFirstFloorlet'
and a scalar
logical.
If the floors are spot-starting, the first floorlet payment is omitted. If the
floors are forward-starting, the first floorlet payment is included. Regardless of the
status of the floors, if you set this logical to false
, then the
function includes the first floorlet payment.
In general, “spot lag” is the delay between the fixing date and the effective date for LIBOR-like indices. "Spot lag" determines whether a floor is spot-starting or forward-starting (Corb, 2012). Floors are considered to be spot-starting if they settle within “spot lag” business days after the valuation date. Those that settle later are considered to be forward-starting. The first floorlet is omitted if floors are spot-starting, while it is included if they are forward-starting (Tuckman, 2012).
Data Types: logical
Shift
— Shift in decimals for shifted SABR model
0
(no shift) (default) | positive scalar decimal
Shift in decimals for the shifted SABR model (to be used with the Shifted Black model),
specified as the comma-separated pair consisting of 'Shift'
and a
positive scalar decimal value. Set this parameter to a positive shift in decimals to
add a positive shift to the forward rate and strike, which effectively sets a negative
lower bound for the forward rate and strike. For example, a Shift
value of 0.01 is equal to a 1% shift.
Data Types: double
Model
— Model used for implied volatility
'lognormal'
(default) | character vector with value of 'lognormal'
or 'normal'
| string scalar with value of "lognormal"
or "normal"
Model used for the implied volatility calculation, specified as the
comma-separated pair consisting of 'Model'
and a scalar character
vector or string scalar with one of the following values:
'lognormal'
- Implied Black (no shift) or Shifted Black volatility.'normal'
- Implied Normal (Bachelier) volatility. If you specify'normal'
,Shift
must be zero.
The floorvolstrip
function supports three volatility
types.
'Model' Value | 'Shift' Value | Volatility Type |
---|---|---|
'lognormal' | Shift = 0 | Black |
'lognormal' | Shift > 0 | Shifted Black |
'normal' | Shift = 0 | Normal (Bachelier) |
Data Types: char
| string
Output Arguments
FloorletVols
— Stripped floorlet volatilities
vector of decimals
Stripped floorlet volatilities, returned as a
NFloorletVols
-by-1
vector of decimals.
Note
floorvolstrip
can output NaN
s for some
caplet volatilities. You might encounter this output if no volatility matches the
caplet price implied by the user-supplied cap data.
FloorletPaymentDates
— Payment dates
vector of date numbers
Payment dates (in date numbers), returned as an
NFloorletVols
-by-1
vector of date numbers
corresponding to FloorletVols
.
FloorStrikes
— Floor strikes
vector of decimals
Floor strikes, returned as a NFloorletVols
-by-1
vector
of strikes in decimals for floors maturing on the corresponding
FloorletPaymentDates
.
Limitations
When bootstrapping the floorlet volatilities from ATM floors, the function reuses the floorlet
volatilities stripped from the shorter maturity floors in the longer maturity floors without
adjusting for the difference in strike. floorvolstrip
follows the
simplified approach described in Gatarek, 2006.
More About
Floor
A floor is a contract that includes a guarantee setting the minimum interest rate to be received by the holder, based on an otherwise floating interest rate.
The payoff for a floor is:
At-The-Money
A cap or floor is at-the-money (ATM) if its strike is equal to the forward swap rate.
The forward swap rate is the fixed rate of a swap that makes the present value of the floating leg equal to that of the fixed leg. In comparison, a caplet or floorlet is ATM if its strike is equal to the forward rate (not the forward swap rate). In general (except over a single period), the forward rate is not equal to the forward swap rate. So, to be precise, the individual caplets in an ATM cap have slightly different moneyness and are only approximately ATM (Alexander, 2003).
In addition, the swap rate changes with swap maturity. Similarly, the ATM cap strike also changes with cap maturity, so the ATM cap strikes are computed for each cap maturity before stripping the caplet volatilities. As a result, when stripping the caplet volatilities from the ATM caps with increasing maturities, the ATM strikes of consecutive caps are different.
References
[1] Alexander, C. "Common Correlation and Calibrating the Lognormal Forward Rate Model." Wilmott Magazine, 2003.
[2] Corb, H. Interest Rate Swaps and Other Derivatives. Columbia Business School Publishing, 2012.
[3] Gatarek, D., P. Bachert, and R. Maksymiuk. The LIBOR Market Model in Practice. Chichester, UK: Wiley, 2006.
[4] Tuckman, B., and Serrat, A. Fixed Income Securities: Tools for Today’s Markets. Hoboken, NJ: Wiley, 2012.
Version History
Introduced in R2016aR2024b: Support for ratecurve
object for ZeroCurve
argument
The ZeroCurve
input argument supports a ratecurve
object.
R2022b: Serial date numbers not recommended
Although floorvolstrip
supports serial date numbers,
datetime
values are recommended instead. The
datetime
data type provides flexible date and time
formats, storage out to nanosecond precision, and properties to account for time
zones and daylight saving time.
To convert serial date numbers or text to datetime
values, use the datetime
function. For example:
t = datetime(738427.656845093,"ConvertFrom","datenum"); y = year(t)
y = 2021
There are no plans to remove support for serial date number inputs.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)