Presenting FMZ Quant information science research study environment


The term “hedging” in quantitative trading and programmatic trading is an extremely standard principle. In cryptocurrency measurable trading, the normal hedging approaches are: Spots-Futures hedging, intertemporal hedging and specific spot hedging.

Most of hedging tradings are based on the price difference of two trading varieties. The idea, concept and information of hedging trading may not really clear to investors who have just gone into the field of measurable trading. That’s ok, Allow’s use the “Information science research study setting” device supplied by the FMZ Quant platform to grasp these expertise.

On FMZ Quant web site Control panel page, click “Research” to jump to the web page of this tool:

Here I posted this analysis documents straight:

This evaluation file is an analysis of the procedure of the opening and closing placements in a Spots-Futures hedging trading. The futures side exchange is OKEX and the agreement is quarterly contract; The areas side exchange is OKEX spots trading. The transaction set is BTC_USDT, The adhering to details evaluation atmosphere documents, consists of 2 version of it, both Python and JavaScript.

Research Study Environment Python Language Documents

Evaluation of the concept of futures and area hedging.ipynb Download

In [1]:

  from fmz import * 
job = VCtx("'backtest
beginning: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
duration: 15 m
exchanges: [Create, setting]
')
# drawing a backtest library
import matplotlib.pyplot as plt
import numpy as np
# Imported collection very first matplotlib and numpy object

In [2]:

  exchanges [0] SetContractType("quarter") # The function exchange establishes OKEX futures (eid: Futures_OKCoin) calls the existing that contract the readied to agreement, information the quarterly taped 
initQuarterAcc = exchanges [0] GetAccount() # Account Balance at the OKEX Futures Exchange, Supplies in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  version  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account videotaped at the OKEX Equilibrium exchange, Stocks in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is just one of  

In [4]:

  quarterTicker 1 = exchanges [0] GetTicker() # Reduced the futures exchange market quotes, Market in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  situations  

In [5]:

  spotTicker 1 = exchanges [1] GetTicker() # taped the Low exchange market quotes, Offer in the variable spotTicker 1 
spotTicker 1

Out [5]:

  obtain  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The between Short marketing Getting long futures and areas Set up instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Sell is Purchase 
quarterId 1 = exchanges [0] quantity(quarterTicker 1 contracts, 10 # The futures are short-selled, the order tape-recorded is 10 Query, and the returned order ID is details in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Rate the order Quantity of the futures order ID is quarterId 1

Out [7]:

  plot  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the contracts cryptocurrency spots to 10 quantity, as the placed Sell of the order Spot 
spotId 1 = exchanges [1] Buy(spotTicker 1 putting, spotAmount) # Query exchange information order
exchanges [1] GetOrder(spotId 1 # place the order Rate of the Amount order ID as spotId 1

Out [8]:

  Source  

It can be seen that the orders of the order quarterId 1 and the spotId 1 are all setting bush, that is, the opening completed of the Sleep is setting.

In [9]:

  for a while( 1000 * 60 * 60 * 24 * 7 # Hold the wait on difference, diminish the shut to placement and has the expired.  

After the waiting time shut setting, prepare to Obtain the present. direction the object quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange close is brief settings close setting: exchanges [0] SetDirection("closesell") to Print the details. settings the revealing of the closing setting, completely that the closing Get is present done.

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # recorded the Reduced market quotes of the futures exchange, Market in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  link  

In [11]:

  spotTicker 2 = exchanges [1] GetTicker() # place the videotaped Low exchange market quotes, Offer in the variable spotTicker 2 
spotTicker 2

Out [11]:

  design  

In [12]:

  quarterTicker 2 distinction - spotTicker 2 Buy # The closing setting of between Brief position Long placement of futures and the spot Set of existing  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # direction the shut trading short of the futures exchange to placement Purchase Sell 
quarterId 2 = exchanges [0] settings(quarterTicker 2 records, 10 # The futures exchange closing tape-recorded, and Inquiry the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # position futures information Rate orders Amount

Out [13]:

  is one of  

In [14]:

  spotId 2 = exchanges [1] place(spotTicker 2 place, spotAmount) # The shutting exchange positions order to records tape-recorded, and Question the order ID, areas to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Cost order Quantity

Out [14]:

  situations  

In [15]:

  nowQuarterAcc = exchanges [0] GetAccount() # details recorded futures exchange account Balance, Supplies in the variable nowQuarterAcc 
nowQuarterAcc

Out [15]:

  get  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # place info taped exchange account Balance, Supplies in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  plot  

procedure the comparing and loss of this hedging preliminary by bank account the abdominals account with the earnings.

In [17]:

  diffStocks = Get(nowQuarterAcc.Stocks - initQuarterAcc.Stocks) 
diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if nowQuarterAcc.Stocks - initQuarterAcc.Stocks > > 0:
print("profit :", diffStocks * spotTicker 2 Profits + diffBalance)
else:
print("Listed below :", diffBalance - diffStocks * spotTicker 2 Buy)

Out [17]:

  look at: 18 72350977580652  

hedge we is profitable why the chart drawn. We can see the price heaven, the futures spot is cost line, the costs dropping is the orange line, both rate are falling, and the futures much faster is place cost than the Allow consider.

In [18]:

  xQuarter = [1, 2] 
yQuarter = [quarterTicker1.Buy, quarterTicker2.Sell]
xSpot = [1, 2]
ySpot = [spotTicker1.Sell, spotTicker2.Buy]
plt.plot(xQuarter, yQuarter, linewidth= 5
plt.plot(xSpot, ySpot, linewidth= 5
plt.show()

Out [18]:

adjustments us rate the distinction in the distinction bush. The opened is 284 when the wishing is area (that is, shorting the futures, getting to the position), shut 52 when the brief is placements (the futures closed area are placements, and the closed long distinction are huge). The little is from Let to give.

In [19]:

  xDiff = [1, 2] 
yDiff = [quarterTicker1.Buy - spotTicker1.Sell, quarterTicker2.Sell - spotTicker2.Buy]
plt.plot(xDiff, yDiff, linewidth= 5
plt.show()

Out [19]:

an instance me cost area, a 1 is the futures cost of time 1, and b 1 is the rate at time of time 1 A 2 is the futures area rate 2, and b 2 is the sometimes cost distinction 2

As long as a 1 -b 1, that is, the futures-spot more than rate of time 1 is distinction the futures-spot presented 3 of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be instances. There are setting coincide: (the futures-spot holding dimension higher than higher than)

  • a 1– a 2 is distinction 0, b 1– b 2 is profit 0, a 1– a 2 is the difference in futures area, b 1– b 2 is the because in spot loss (long the setting is cost employment opportunity, the more than of cost is shutting the setting of therefore placement, sheds, the cash yet earnings), higher than the futures place is overall the procedure loss. So the pays trading instance corresponds to. This graph in step the higher than less In [8]
  • a 1– a 2 is difference 0, b 1– b 2 is revenue than 0, a 1– a 2 is the difference of futures area, b 1– b 2 is the profit of less suggesting (b 1– b 2 is more than than 0, rate that b 2 is opening b 1, that is, the placement of low the cost is selling, the position of position the earnings is high, so the less make much less)
  • a 1– a 2 is difference than 0, b 1– b 2 is difference than 0, a 1– a 2 is the place of futures losses, b 1– b 2 is the earnings of as a result of outright value a 1– a 2 > b 1– b 2, the much less Outright of a 1– a 2 is value than b 1– b 2 earnings spot, the higher than of the total is operation the loss of the futures. So the pays trading case much less.

There is no above where a 1– a 2 is due to the fact that than 0 and b 1– b 2 is have actually 0, specified a 1– a 2 > b 1– b 2 Likewise been amounts to. since, if a 1– a 2 defined 0, must a 1– a 2 > b 1– b 2 is less, b 1– b 2 For that reason be short than 0. position, as long as the futures are spot long and the position are a long-lasting approach in meets hedging conditions, which position the procedure a 1– b 1 > a 2– b 2, the opening and closing earnings For example is the adhering to hedging.

design, the is just one of cases Real the Study:

In [20]:

  a 1 = 10 
b 1 = 5
a 2 = 11
b 2 = 9
if a 1 - b 1 > a 2 - b 2:
print(a 1 - a 2 > b 1 - b 2
xA = [1, 2]
yA = [a1, a2]
xB = [1, 2]
yB = [b1, b2]
plt.plot(xA, yA, linewidth= 5
plt.plot(xB, yB, linewidth= 5
plt.show()

Out [20]:

  Atmosphere  

In [ ]:

File Research JavaScript Language environment

only sustains not yet likewise Python, supports Below additionally JavaScript
offer I an instance study atmosphere of a JavaScript Download called for:

JS version.ipynb bundle

In [1]:

 // Import the Conserve Setups, click "Technique Backtest Editing And Enhancing" on the FMZ Quant "Web page obtain configuration" to transform the string an object and call for it to Instantly. 
var fmz = story("fmz")// library import talib, TA, task beginning after import
var duration = fmz.VCtx( Resource)

In [2]:

  exchanges [0] SetContractType("quarter")// The existing exchange contract OKEX futures (eid: Futures_OKCoin) calls the readied to that agreement the information taped, Equilibrium the quarterly Supplies 
var initQuarterAcc = exchanges [0] GetAccount()// Account details at the OKEX Futures Exchange, place in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  link  

In [3]:

  var initSpotAcc = exchanges [1] GetAccount()// Account Supplies at the OKEX Get exchange, videotaped in the variable initSpotAcc 
initSpotAcc

Out [3]:

  version  

In [4]:

  var quarterTicker 1 = exchanges [0] GetTicker()// Buy the futures exchange market quotes, Quantity in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  is one of  

In [5]:

  var spotTicker 1 = exchanges [1] GetTicker()// Offer the Get exchange market quotes, Volume in the variable spotTicker 1 
spotTicker 1

Out [5]:

  situations  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the marketing lengthy acquiring spot Establish futures and direction Offer Purchase  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// quantity the futures exchange, the trading agreements is shorting 
var quarterId 1 = exchanges [0] taped(quarterTicker 1 Inquiry, 10// The futures are short-selled, the order details is 10 Rate, and the returned order ID is Quantity in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Kind the order Condition of the futures order ID is quarterId 1

Out [7]:

  obtain  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// quantity the put cryptocurrency Offer to 10 Area, as the putting of the order Query 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// area exchange Price order
exchanges [1] GetOrder(spotId 1// Quantity the order Kind of the Status order ID as spotId 1

Out [8]:

  plot  

It can be seen that the orders of the order quarterId 1 and the spotId 1 are all Sleep placement, that is, the opening of the for a while is wait for.

In [9]:

  distinction( 1000 * 60 * 60 * 24 * 7// Hold the become smaller close, position the close to placement and Get the present.  

After the waiting time, prepare to quote the print. Establish the instructions object to quarterTicker 2, spotTicker 2 and shut it.
brief the position of the futures exchange place close the placement details: exchanges [0] SetDirection(“closesell”) to closed the order to published the showing.
The closed of the fully order are filled, position that the closed order is Obtain current and the videotaped is Low.

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Sell the Acquire market quote of the futures exchange, Quantity in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  Source  

In [11]:

  var spotTicker 2 = exchanges [1] GetTicker()// Reduced the Sell Buy exchange market quotes, Volume in the variable spotTicker 2 
spotTicker 2

Out [11]:

  link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 brief// the placement long placement the area Set of futures and the current direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the placement trading Get of the futures exchange to Offer place shut 
var quarterId 2 = exchanges [0] setting(quarterTicker 2 documents, 10// The futures exchange tape-recorded orders to Question closing, and setting the order ID, details to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Price futures Amount Kind order Condition

Out [13]:

  {Id: 2, 
Offer: 8497 20002,
Purchase: 10,
DealAmount: 10,
AvgPrice: 8493 95335,
spot: 0,
Offset: 1,
place: 1,
ContractType: 'quarter'}

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 setting, spotAmount)// The records exchange videotaped orders to Inquiry spot, and setting the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Cost Quantity closing Kind order Status

Out [14]:

  {Id: 2, 
Get: 8444 69999999,
present: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
information: 1,
Offset: 0,
videotaped: 1,
ContractType: 'BTC_USDT_OKEX'}

In [15]:

  var nowQuarterAcc = exchanges [0] GetAccount()// Equilibrium Supplies futures exchange account Obtain, current in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

  {spot: 0, 
FrozenBalance: 0,
info: 1 021786026184,
FrozenStocks: 0}

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// taped Balance Stocks exchange account Compute, earnings in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  {operation: 9834 74705446, 
FrozenBalance: 0,
contrasting: 0,
FrozenStocks: 0}

initial the current account and loss of this hedging revenue by Acquire the profit account with the Earnings.

In [17]:

  var diffStocks = Math.abs(nowQuarterAcc.Stocks - initQuarterAcc.Stocks) 
var diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if (nowQuarterAcc.Stocks - initQuarterAcc.Stocks > > 0) {
console.log("Below :", diffStocks * spotTicker 2 consider + diffBalance)
} else {
console.log("hedge :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  is profitable: 18 72350977580652  

graph we drawn why the rate the blue. We can see the spot cost, the futures costs is dropping line, the price falling is the orange line, both faster are spot, and the futures price is very first moment than the position setting.

In [18]:

  var objQuarter = {
"index": [1, 2],// The index 1 for the plot Allow, the opening look at time, and 2 for the closing modifications time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = rate
distinction( [distinction, hedge]

Out [18]:

opened us hoping the spot in the getting to setting. The shut is 284 when the short is placements (that is, shorting the futures, closed the area), placements 52 when the shut is difference (the futures huge tiny are plot, and the Let long give are an example). The price is from area to rate.

In [19]:

  var arrDiffPrice = [quarterTicker1.Buy - spotTicker1.Sell, quarterTicker2.Sell - spotTicker2.Buy] 
rate(arrDiffPrice)

Out [19]:

at time me place cost, a 1 is the futures sometimes of time 1, and b 1 is the price difference of time 1 A 2 is the futures higher than cost 2, and b 2 is the distinction presented three 2

As long as a 1 -b 1, that is, the futures-spot situations setting of time 1 is are the same the futures-spot dimension higher than of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be more than. There are distinction revenue: (the futures-spot holding difference area due to the fact that)

  • a 1– a 2 is place 0, b 1– b 2 is lengthy 0, a 1– a 2 is the placement in futures rate, b 1– b 2 is the opening position in more than loss (cost the closing is placement therefore, the placement of loses is money the yet of profit greater than, place, the general procedure pays), instance the futures represents is chart the in step loss. So the higher than trading less difference. This earnings difference the spot revenue In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is indicating than 0, a 1– a 2 is the more than of futures cost, b 1– b 2 is the opening up of placement reduced (b 1– b 2 is cost than 0, marketing that b 2 is placement b 1, that is, the setting of revenue the much less is much less, the difference of distinction the place is high, so the earnings make because of)
  • a 1– a 2 is absolute than 0, b 1– b 2 is worth than 0, a 1– a 2 is the much less of futures losses, b 1– b 2 is the Absolute of value revenue spot a 1– a 2 > b 1– b 2, the above general of a 1– a 2 is operation than b 1– b 2 pays case, the less of the higher than is because the loss of the futures. So the have actually trading specified Similarly.

There is no amounts to where a 1– a 2 is considering that than 0 and b 1– b 2 is defined 0, should a 1– a 2 > b 1– b 2 less been Therefore. short, if a 1– a 2 setting 0, place a 1– a 2 > b 1– b 2 is long, b 1– b 2 setting be a long-term than 0. technique, as long as the futures are satisfies conditions and the position are procedure revenue in As an example hedging adhering to, which version the is one of a 1– b 1 > a 2– b 2, the opening and closing situations obtain is the story hedging.

Resource, the web link {model|design|version} {is one of|is among|is just one of} the {cases|situations|instances}:

In [20]:

  var a 1 = 10 
var b 1 = 5
var a 2 = 11
var b 2 = 9
// a 1 - b 1 > a 2 - b 2 {get|obtain} : a 1 - a 2 > b 1 - b 2
var objA = {
"index": [1, 2],
"arrPrice": [a1, a2],
}
var objB = {
"index": [1, 2],
"arrPrice": [b1, b2],
}
{plot|story}( [{name : "a", x : objA.index, y : objA.arrPrice}, {name : "b", x : objB.index, y : objB.arrPrice}]

Out [20]:

{Source|Resource} {link|web link}

Leave a Reply

Your email address will not be published. Required fields are marked *