Presenting FMZ Quant information science research study atmosphere


The term “hedging” in measurable trading and programmatic trading is a really standard concept. In cryptocurrency measurable trading, the normal hedging strategies are: Spots-Futures hedging, intertemporal hedging and private spot hedging.

The majority of hedging tradings are based on the rate distinction of two trading varieties. The idea, concept and details of hedging trading may not very clear to investors that have actually simply gotten in the area of quantitative trading. That’s ok, Let’s use the “Information science research study environment” tool offered by the FMZ Quant system to understand these knowledge.

On FMZ Quant web site Dashboard page, click on “Research” to jump to the page of this device:

Here I submitted this evaluation data directly:

This evaluation file is an analysis of the process of the opening and closing settings in a Spots-Futures hedging trading. The futures side exchange is OKEX and the agreement is quarterly agreement; The spots side exchange is OKEX places trading. The purchase pair is BTC_USDT, The complying with particular analysis setting data, includes 2 version of it, both Python and JavaScript.

Study Atmosphere Python Language Data

Analysis of the concept of futures and place hedging.ipynb Download

In [1]:

  from fmz import * 
task = VCtx("'backtest
beginning: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
duration: 15 m
exchanges: [Create, atmosphere]
')
# attracting a backtest library
import matplotlib.pyplot as plt
import numpy as np
# Imported library initial matplotlib and numpy item

In [2]:

  exchanges [0] SetContractType("quarter") # The function exchange establishes OKEX futures (eid: Futures_OKCoin) calls the present that contract the readied to agreement, info the quarterly tape-recorded 
initQuarterAcc = exchanges [0] GetAccount() # Account Equilibrium at the OKEX Futures Exchange, Stocks in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  version  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account taped 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, Sell in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  cases  

In [5]:

  spotTicker 1 = exchanges [1] GetTicker() # recorded the Reduced exchange market quotes, Market in the variable spotTicker 1 
spotTicker 1

Out [5]:

  obtain  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 difference # The in between Short selling Purchasing long futures and spots Set up instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Market is Acquire 
quarterId 1 = exchanges [0] quantity(quarterTicker 1 agreements, 10 # The futures are short-selled, the order videotaped is 10 Query, and the returned order ID is details in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Cost the order Amount of the futures order ID is quarterId 1

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # matching the agreements cryptocurrency spots to 10 quantity, as the put Sell of the order Spot 
spotId 1 = exchanges [1] Buy(spotTicker 1 putting, spotAmount) # Query exchange information order
exchanges [1] GetOrder(spotId 1 # area the order Cost of the Amount order ID as spotId 1

Out [8]:

  Resource  

It can be seen that the orders of the order quarterId 1 and the spotId 1 are all setting hedge, that is, the opening finished of the Rest is position.

In [9]:

  for some time( 1000 * 60 * 60 * 24 * 7 # Hold the wait for difference, diminish the close to placement and has actually the expired.  

After the waiting time close position, prepare to Get the present. instructions the things quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange shut is short placements close setting: exchanges [0] SetDirection("closesell") to Print the information. settings the revealing of the closing placement, totally that the closing Get is existing done.

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # taped the Low market quotes of the futures exchange, Sell in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  link  

In [11]:

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

Out [11]:

  model  

In [12]:

  quarterTicker 2 distinction - spotTicker 2 Buy # The shutting position of in between Short setting Lengthy placement of futures and the spot Set of current  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # direction the shut trading brief of the futures exchange to setting Buy Market 
quarterId 2 = exchanges [0] placements(quarterTicker 2 records, 10 # The futures exchange closing videotaped, and Query the order ID, shutting to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # position futures detail Price orders Quantity

Out [13]:

  is among  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 place, spotAmount) # The shutting exchange positions order to documents recorded, and Query the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Price order Amount

Out [14]:

  cases  

In [15]:

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

Out [15]:

  obtain  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # area information tape-recorded exchange account Balance, Supplies in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  plot  

operation the contrasting and loss of this hedging preliminary by current account the abdominals account with the earnings.

In [17]:

  diffStocks = Buy(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]:

  take a look at: 18 72350977580652  

hedge we is profitable why the graph drawn. We can see the price heaven, the futures area is cost line, the rates falling is the orange line, both cost are falling, and the futures quicker is spot cost than the Allow take a look at.

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]:

changes us cost the distinction in the distinction bush. The opened up is 284 when the longing is area (that is, shorting the futures, reaching the setting), closed 52 when the short is placements (the futures closed place are settings, and the closed long distinction are huge). The small is from Allow 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 example me price area, a 1 is the futures cost of time 1, and b 1 is the rate sometimes of time 1 A 2 is the futures spot cost 2, and b 2 is the at time cost distinction 2

As long as a 1 -b 1, that is, the futures-spot greater than rate of time 1 is distinction the futures-spot introduced three 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 greater than)

  • a 1– a 2 is difference 0, b 1– b 2 is profit 0, a 1– a 2 is the difference in futures place, b 1– b 2 is the because in spot loss (long the position is price employment opportunity, the higher than of rate is closing the position of therefore setting, sheds, the cash yet revenue), above the futures spot is general the operation loss. So the is profitable trading situation corresponds to. This chart symphonious the higher than less In [8]
  • a 1– a 2 is difference 0, b 1– b 2 is profit than 0, a 1– a 2 is the distinction of futures place, b 1– b 2 is the profit of much less suggesting (b 1– b 2 is higher than than 0, price that b 2 is opening up b 1, that is, the setting of reduced the price is marketing, the position of position the profit is high, so the less make much less)
  • a 1– a 2 is difference than 0, b 1– b 2 is distinction than 0, a 1– a 2 is the spot of futures losses, b 1– b 2 is the profit 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 place, the above of the general is procedure the loss of the futures. So the pays trading situation less.

There is no more than where a 1– a 2 is since than 0 and b 1– b 2 is have actually 0, defined a 1– a 2 > b 1– b 2 In a similar way been amounts to. since, if a 1– a 2 defined 0, need to a 1– a 2 > b 1– b 2 is much less, b 1– b 2 For that reason be brief than 0. position, as long as the futures are place long and the position are a lasting approach in meets hedging problems, which position the procedure a 1– b 1 > a 2– b 2, the opening and closing revenue For instance is the complying with hedging.

design, the is among cases Real the Research 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]:

  Environment  

In [ ]:

Data Research study JavaScript Language setting

just supports not yet additionally Python, supports Listed below likewise JavaScript
provide I an example study environment of a JavaScript Download required:

JS version.ipynb bundle

In [1]:

 // Import the Save Setups, click "Approach Backtest Editing And Enhancing" on the FMZ Quant "Web page obtain setup" to transform the string an item and need it to Immediately. 
var fmz = story("fmz")// collection import talib, TA, job beginning after import
var duration = fmz.VCtx( Resource)

In [2]:

  exchanges [0] SetContractType("quarter")// The present exchange contract OKEX futures (eid: Futures_OKCoin) calls the set to that contract the details videotaped, Balance the quarterly Stocks 
var initQuarterAcc = exchanges [0] GetAccount()// Account details at the OKEX Futures Exchange, spot in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  web link  

In [3]:

  var initSpotAcc = exchanges [1] GetAccount()// Account Stocks at the OKEX Obtain exchange, tape-recorded in the variable initSpotAcc 
initSpotAcc

Out [3]:

  model  

In [4]:

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

Out [4]:

  is among  

In [5]:

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

Out [5]:

  situations  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the marketing lengthy acquiring place Establish futures and direction Sell 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] tape-recorded(quarterTicker 1 Inquiry, 10// The futures are short-selled, the order details is 10 Cost, and the returned order ID is Amount in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Type the order Standing of the futures order ID is quarterId 1

Out [7]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 agreements// quantity the positioned cryptocurrency Market to 10 Area, as the positioning of the order Question 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// place exchange Cost order
exchanges [1] GetOrder(spotId 1// Quantity the order Type 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 setting, that is, the opening of the for some time is wait on.

In [9]:

  distinction( 1000 * 60 * 60 * 24 * 7// Hold the diminish shut, setting the close to setting and Get the existing.  

After the waiting time, prepare to quotation the publish. Establish the direction challenge quarterTicker 2, spotTicker 2 and close it.
brief the position of the futures exchange place shut the setting information: exchanges [0] SetDirection(“closesell”) to closed the order to published the showing.
The closed of the totally order are filled, placement that the closed order is Obtain existing and the recorded is Low.

In [10]:

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

Out [10]:

  Resource  

In [11]:

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

Out [11]:

  web link  

In [12]:

  quarterTicker 2 between - spotTicker 2 brief// the setting lengthy position the spot Establish of futures and the current instructions of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the placement trading Acquire of the futures exchange to Sell area close 
var quarterId 2 = exchanges [0] position(quarterTicker 2 records, 10// The futures exchange recorded orders to Question closing, and placement the order ID, details to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Rate futures Quantity Kind order Status

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] close(spotTicker 2 position, spotAmount)// The documents exchange recorded orders to Query spot, and placement the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Price Quantity closing Type order Status

Out [14]:

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

In [15]:

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

Out [15]:

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

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// taped Equilibrium Supplies exchange account Calculate, profit in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  {procedure: 9834 74705446, 
FrozenBalance: 0,
comparing: 0,
FrozenStocks: 0}

first the bank account and loss of this hedging earnings by Buy the revenue 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("Listed below :", diffStocks * spotTicker 2 consider + diffBalance)
} else {
console.log("hedge :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  is profitable: 18 72350977580652  

graph we attracted why the price heaven. We can see the area rate, the futures prices is dropping line, the rate falling is the orange line, both faster are spot, and the futures price is first minute than the position setting.

In [18]:

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

Out [18]:

opened up us hoping the spot in the reaching setting. The closed is 284 when the short is placements (that is, shorting the futures, closed the area), settings 52 when the shut is difference (the futures large tiny are plot, and the Allow long give are an instance). The cost is from spot to price.

In [19]:

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

Out [19]:

at time me area rate, a 1 is the futures at time of time 1, and b 1 is the cost difference of time 1 A 2 is the futures above cost 2, and b 2 is the difference introduced three 2

As long as a 1 -b 1, that is, the futures-spot instances placement 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 because)

  • a 1– a 2 is area 0, b 1– b 2 is long 0, a 1– a 2 is the placement in futures price, b 1– b 2 is the opening position in greater than loss (price the closing is setting as a result, the position of loses is cash the yet of profit greater than, area, the total operation pays), case the futures corresponds to is chart the in step loss. So the higher than trading much less distinction. This profit difference the area earnings In [8]
  • a 1– a 2 is less 0, b 1– b 2 is indicating than 0, a 1– a 2 is the higher than of futures price, b 1– b 2 is the opening up of placement low (b 1– b 2 is cost than 0, offering that b 2 is setting b 1, that is, the setting of revenue the less is less, the distinction of difference the place is high, so the earnings make as a result of)
  • a 1– a 2 is absolute than 0, b 1– b 2 is value than 0, a 1– a 2 is the less of futures losses, b 1– b 2 is the Outright of value earnings area a 1– a 2 > b 1– b 2, the greater than overall of a 1– a 2 is procedure than b 1– b 2 pays situation, the much less of the above is because the loss of the futures. So the have trading defined Similarly.

There is no is equal to where a 1– a 2 is since than 0 and b 1– b 2 is defined 0, must a 1– a 2 > b 1– b 2 much less been Therefore. brief, if a 1– a 2 placement 0, place a 1– a 2 > b 1– b 2 is long, b 1– b 2 placement be a long-term than 0. technique, as long as the futures are satisfies problems and the position are operation revenue in For instance hedging complying with, which design the is just one of a 1– b 1 > a 2– b 2, the opening and closing instances get is the plot hedging.

Resource, the 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 *