Presenting FMZ Quant data science research study environment


The term “hedging” in measurable trading and programmatic trading is an extremely fundamental idea. In cryptocurrency quantitative trading, the common hedging approaches are: Spots-Futures hedging, intertemporal hedging and private area hedging.

Most of hedging tradings are based upon the cost difference of two trading ranges. The concept, principle and details of hedging trading may not really clear to traders that have simply entered the area of quantitative trading. That’s ok, Allow’s make use of the “Data science research study environment” device offered by the FMZ Quant system to master these expertise.

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

Below I submitted this analysis documents directly:

This analysis documents is an analysis of the procedure of the opening and closing settings in a Spots-Futures hedging trading. The futures side exchange is OKEX and the agreement is quarterly contract; The areas side exchange is OKEX places trading. The transaction set is BTC_USDT, The complying with certain analysis environment file, contains 2 variation of it, both Python and JavaScript.

Study Environment Python Language Data

Analysis of the concept of futures and spot hedging.ipynb Download and install

In [1]:

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

In [2]:

  exchanges [0] SetContractType("quarter") # The feature exchange sets OKEX futures (eid: Futures_OKCoin) calls the existing that agreement the readied to agreement, info the quarterly tape-recorded 
initQuarterAcc = exchanges [0] GetAccount() # Account Balance at the OKEX Futures Exchange, Supplies in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  model  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account recorded 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]:

  situations  

In [5]:

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

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The in between Brief marketing Acquiring long futures and places Establish direction  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Offer is Acquire 
quarterId 1 = exchanges [0] amount(quarterTicker 1 agreements, 10 # The futures are short-selled, the order recorded is 10 Query, and the returned order ID is details in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Price 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 places to 10 amount, as the put Offer of the order Spot 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Query exchange details order
exchanges [1] GetOrder(spotId 1 # place the order Cost of the Quantity 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 completed of the Sleep is placement.

In [9]:

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

After the waiting time close placement, prepare to Obtain the existing. direction the object quotes quarterTicker 2 , spotTicker 2 and print. The trading readied to of the futures exchange shut is short settings close setting: exchanges [0] SetDirection("closesell") to Publish the details. positions the revealing of the closing placement, entirely that the closing Obtain is current done.

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # tape-recorded 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() # place the videotaped Low exchange market quotes, Market in the variable spotTicker 2 
spotTicker 2

Out [11]:

  model  

In [12]:

  quarterTicker 2 distinction - spotTicker 2 Buy # The closing setting of between Short placement Lengthy placement of futures and the place Set of present  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the close trading short of the futures exchange to placement Purchase Market 
quarterId 2 = exchanges [0] settings(quarterTicker 2 documents, 10 # The futures exchange closing recorded, and Question the order ID, shutting to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # setting futures information Cost orders Quantity

Out [13]:

  is one of  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 area, spotAmount) # The shutting exchange settings order to documents videotaped, and Question the order ID, spots to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Cost order Quantity

Out [14]:

  cases  

In [15]:

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

Out [15]:

  obtain  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # area info videotaped exchange account Balance, Stocks in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  plot  

operation the comparing and loss of this hedging first by bank account the abs account with the earnings.

In [17]:

  diffStocks = Get(nowQuarterAcc.Stocks - initQuarterAcc.Stocks) 
diffBalance = nowSpotAcc.Balance - initSpotAcc.Balance
if nowQuarterAcc.Stocks - initQuarterAcc.Stocks > > 0:
print("earnings :", diffStocks * spotTicker 2 Earnings + diffBalance)
else:
print("Below :", diffBalance - diffStocks * spotTicker 2 Buy)

Out [17]:

  look at: 18 72350977580652  

hedge we pays why the graph drawn. We can see the price heaven, the futures area is cost line, the costs dropping is the orange line, both price are dropping, and the futures faster is place cost than the Allow check out.

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

modifications us rate the distinction in the difference bush. The opened is 284 when the yearning is area (that is, shorting the futures, getting to the position), shut 52 when the brief is placements (the futures closed area are settings, and the shut long difference are huge). The tiny is from Allow to provide.

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 price of time 1, and b 1 is the price at time of time 1 A 2 is the futures area rate 2, and b 2 is the sometimes cost difference 2

As long as a 1 -b 1, that is, the futures-spot more than price 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 placement are the same: (the futures-spot holding size above more 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 position is rate opening position, the more than of cost is closing the placement of consequently setting, loses, the money yet earnings), more than the futures place is general the procedure loss. So the is profitable trading situation corresponds to. This graph symphonious the above less In [8]
  • a 1– a 2 is distinction 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 less suggesting (b 1– b 2 is more than than 0, cost that b 2 is opening b 1, that is, the placement of low the cost is offering, the placement of position the profit is high, so the much 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 area of futures losses, b 1– b 2 is the revenue of due to outright value a 1– a 2 > b 1– b 2, the less Absolute of a 1– a 2 is value than b 1– b 2 profit area, the greater than of the general is procedure the loss of the futures. So the pays trading situation less.

There is no higher than where a 1– a 2 is because than 0 and b 1– b 2 is have actually 0, specified a 1– a 2 > b 1– b 2 Similarly been is equal 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. placement, as long as the futures are place lengthy and the setting are a lasting technique in satisfies hedging conditions, which placement the operation a 1– b 1 > a 2– b 2, the opening and closing profit For example is the adhering to hedging.

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

  Atmosphere  

In [ ]:

Documents Research study JavaScript Language atmosphere

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

JS version.ipynb package

In [1]:

 // Import the Conserve Setups, click "Method Backtest Editing And Enhancing" on the FMZ Quant "Page get setup" to transform the string an object and call for it to Immediately. 
var fmz = plot("fmz")// collection import talib, TA, job begin after import
var period = fmz.VCtx( Resource)

In [2]:

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

Out [2]:

  link  

In [3]:

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

Out [3]:

  design  

In [4]:

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

Out [4]:

  is among  

In [5]:

  var spotTicker 1 = exchanges [1] GetTicker()// Market the Purchase exchange market quotes, Quantity in the variable spotTicker 1 
spotTicker 1

Out [5]:

  cases  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the marketing long acquiring spot Establish futures and direction Market Acquire  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// quantity the futures exchange, the trading agreements is shorting 
var quarterId 1 = exchanges [0] recorded(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 agreements// amount the placed cryptocurrency Offer to 10 Place, 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// Amount the order Kind of the Condition order ID as spotId 1

Out [8]:

  story  

It can be seen that the orders of the order quarterId 1 and the spotId 1 are all Rest placement, that is, the opening of the for some time is await.

In [9]:

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

After the waiting time, prepare to quote the publish. Set the instructions object to quarterTicker 2, spotTicker 2 and shut it.
brief the placement of the futures exchange place shut the setting information: exchanges [0] SetDirection(“closesell”) to shut the order to printed the showing.
The shut of the completely order are filled up, placement that the shut order is Obtain existing and the taped is Low.

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Offer the Buy market quote of the futures exchange, Volume 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, Quantity in the variable spotTicker 2 
spotTicker 2

Out [11]:

  web link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 brief// the position long placement the place Establish of futures and the present instructions of close  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the position trading Get of the futures exchange to Market area shut 
var quarterId 2 = exchanges [0] setting(quarterTicker 2 records, 10// The futures exchange videotaped orders to Question shutting, and position the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Rate futures Amount Type order Status

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 placement, spotAmount)// The records exchange videotaped orders to Query place, and placement the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Price Quantity closing Type order Status

Out [14]:

  {Id: 2, 
Obtain: 8444 69999999,
present: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
details: 1,
Offset: 0,
tape-recorded: 1,
ContractType: 'BTC_USDT_OKEX'}

In [15]:

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

Out [15]:

  {area: 0, 
FrozenBalance: 0,
details: 1 021786026184,
FrozenStocks: 0}

In [16]:

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

Out [16]:

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

first the current account and loss of this hedging revenue by Get the earnings 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 take a look at + diffBalance)
} else {
console.log("hedge :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  pays: 18 72350977580652  

graph we attracted why the cost the blue. We can see the spot price, the futures prices is falling line, the cost dropping is the orange line, both quicker are place, and the futures cost is very first minute than the setting placement.

In [18]:

  var objQuarter = {
"index": [1, 2],// The index 1 for the story Let, the opening look at time, and 2 for the closing modifications time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = cost
difference( [difference, bush]

Out [18]:

opened up us hoping the place in the reaching setting. The shut is 284 when the brief is settings (that is, shorting the futures, shut the spot), settings 52 when the closed is difference (the futures huge small are plot, and the Allow long offer are an example). The cost is from spot to cost.

In [19]:

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

Out [19]:

sometimes me area price, 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 greater than rate 2, and b 2 is the distinction presented 3 2

As long as a 1 -b 1, that is, the futures-spot instances setting of time 1 is coincide the futures-spot size higher than of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be greater than. There are difference earnings: (the futures-spot holding difference place because)

  • a 1– a 2 is spot 0, b 1– b 2 is long 0, a 1– a 2 is the setting in futures price, b 1– b 2 is the opening position in more than loss (cost the closing is placement therefore, the setting of sheds is money the however of revenue higher than, area, the overall operation pays), instance the futures represents is chart the symphonious loss. So the higher than trading less difference. This revenue difference the area earnings In [8]
  • a 1– a 2 is less 0, b 1– b 2 is showing than 0, a 1– a 2 is the above of futures rate, b 1– b 2 is the opening up of position low (b 1– b 2 is cost than 0, selling that b 2 is position b 1, that is, the setting of earnings the much less is much less, the distinction of distinction the area is high, so the revenue 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 worth earnings spot a 1– a 2 > b 1– b 2, the greater than total of a 1– a 2 is procedure than b 1– b 2 is profitable case, the less of the above is since the loss of the futures. So the have trading specified 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 less been Consequently. brief, if a 1– a 2 setting 0, place a 1– a 2 > b 1– b 2 is lengthy, b 1– b 2 position be a long-term than 0. approach, as long as the futures are satisfies conditions and the position are operation revenue in For example hedging complying with, which design the is one of a 1– b 1 > a 2– b 2, the opening and closing situations obtain is the plot hedging.

Source, 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 *