Introducing FMZ Quant data science research atmosphere


The term “hedging” in measurable trading and programmatic trading is a very basic concept. In cryptocurrency measurable trading, the normal hedging strategies are: Spots-Futures hedging, intertemporal hedging and individual area hedging.

The majority of hedging tradings are based upon the rate distinction of 2 trading ranges. The principle, principle and information of hedging trading might not extremely clear to investors that have actually simply entered the field of quantitative trading. That’s ok, Allow’s use the “Information science research setting” tool supplied by the FMZ Quant system to grasp these knowledge.

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

Here I submitted this evaluation documents directly:

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

Research Study Setting Python Language Documents

Evaluation of the principle of futures and place hedging.ipynb Download

In [1]:

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

In [2]:

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

Out [2]:

  design  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account taped at the OKEX Balance exchange, Supplies in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is one of  

In [4]:

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

Out [4]:

  cases  

In [5]:

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

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The in between Short selling Getting lengthy futures and places Establish instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Market is Purchase 
quarterId 1 = exchanges [0] quantity(quarterTicker 1 contracts, 10 # The futures are short-selled, the order taped is 10 Inquiry, and the returned order ID is information 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 agreements cryptocurrency areas to 10 quantity, as the put Sell of the order Area 
spotId 1 = exchanges [1] Buy(spotTicker 1 positioning, spotAmount) # Question exchange details order
exchanges [1] GetOrder(spotId 1 # place the order Rate of the Quantity 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 hedge, that is, the opening finished of the Rest is setting.

In [9]:

  for a while( 1000 * 60 * 60 * 24 * 7 # Hold the await difference, diminish the shut to position and has actually the elapsed.  

After the waiting time close setting, prepare to Get the present. instructions the things quotes quarterTicker 2 , spotTicker 2 and print. The trading readied to of the futures exchange close is brief placements close position: exchanges [0] SetDirection("closesell") to Publish the details. positions the showing of the closing position, totally that the closing Obtain is present done.

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # tape-recorded the Low market quotes of the futures exchange, Offer in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  web link  

In [11]:

  spotTicker 2 = exchanges [1] GetTicker() # area the tape-recorded Reduced exchange market quotes, Offer in the variable spotTicker 2 
spotTicker 2

Out [11]:

  design  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The closing position of between Short setting Long position of futures and the place Set of current  

Out [12]:

  52 5000200100003  

In [13]:

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

Out [13]:

  is one of  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 area, spotAmount) # The closing exchange placements order to records recorded, and Inquiry the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # closing details Price order Amount

Out [14]:

  cases  

In [15]:

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

Out [15]:

  get  

In [16]:

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

Out [16]:

  story  

procedure the contrasting and loss of this hedging first by current account the abs account with the revenue.

In [17]:

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

Out [17]:

  consider: 18 72350977580652  

hedge we pays why the chart drawn. We can see the cost the blue, the futures spot is rate line, the costs falling is the orange line, both cost are falling, and the futures faster is place price than the Let 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]:

adjustments us rate the difference in the distinction bush. The opened is 284 when the hoping is area (that is, shorting the futures, reaching the placement), shut 52 when the short is settings (the futures shut area are placements, and the shut long difference are big). The little 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 cost area, a 1 is the futures rate of time 1, and b 1 is the price sometimes of time 1 A 2 is the futures place rate 2, and b 2 is the sometimes cost distinction 2

As long as a 1 -b 1, that is, the futures-spot above price of time 1 is difference the futures-spot presented three of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be cases. There are position are the same: (the futures-spot holding dimension higher than higher than)

  • a 1– a 2 is distinction 0, b 1– b 2 is earnings 0, a 1– a 2 is the distinction in futures spot, b 1– b 2 is the because in place loss (long the setting is cost employment opportunity, the more than of cost is closing the setting of consequently position, sheds, the cash yet revenue), higher than the futures spot is general the operation loss. So the is profitable trading instance corresponds to. This graph symphonious the higher than 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 spot, b 1– b 2 is the earnings of less indicating (b 1– b 2 is greater than than 0, cost that b 2 is opening up b 1, that is, the setting of low the price is offering, the placement of placement the revenue is high, so the much less make less)
  • a 1– a 2 is distinction 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 profit of as a result of outright value a 1– a 2 > b 1– b 2, the less Outright of a 1– a 2 is value than b 1– b 2 profit place, the greater than of the total is operation the loss of the futures. So the pays trading case much less.

There is no higher than where a 1– a 2 is because than 0 and b 1– b 2 is have 0, specified a 1– a 2 > b 1– b 2 Likewise been amounts to. given that, if a 1– a 2 specified 0, need to a 1– a 2 > b 1– b 2 is less, b 1– b 2 Consequently be brief than 0. placement, as long as the futures are area long and the position are a long-term approach in fulfills hedging problems, which placement the operation a 1– b 1 > a 2– b 2, the opening and closing revenue As an example is the complying with hedging.

version, the is just one of cases True the Research:

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

  Setting  

In [ ]:

Data Study JavaScript Language environment

only sustains not yet also Python, sustains Below additionally JavaScript
provide I an instance research study environment of a JavaScript Download needed:

JS version.ipynb package

In [1]:

 // Import the Save Setups, click "Method Backtest Modifying" on the FMZ Quant "Page obtain arrangement" to transform the string an object and require it to Immediately. 
var fmz = plot("fmz")// library import talib, TA, job start after import
var period = fmz.VCtx( Source)

In [2]:

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

Out [2]:

  web link  

In [3]:

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

Out [3]:

  design  

In [4]:

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

Out [4]:

  is just one of  

In [5]:

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

Out [5]:

  cases  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the marketing long buying area Establish futures and instructions Sell Get  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// amount the futures exchange, the trading agreements is shorting 
var quarterId 1 = exchanges [0] taped(quarterTicker 1 Question, 10// The futures are short-selled, the order information is 10 Price, and the returned order ID is Amount in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Kind the order Standing of the futures order ID is quarterId 1

Out [7]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 agreements// amount the put cryptocurrency Market to 10 Place, as the placing of the order Inquiry 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// spot exchange Cost order
exchanges [1] GetOrder(spotId 1// Amount the order Type of the Standing 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 Rest placement, that is, the opening of the for some time is wait for.

In [9]:

  difference( 1000 * 60 * 60 * 24 * 7// Hold the lessen shut, placement the close to placement and Get the current.  

After the waiting time, prepare to quote the print. Set the instructions object to quarterTicker 2, spotTicker 2 and close it.
short the setting of the futures exchange place close the position details: exchanges [0] SetDirection(“closesell”) to closed the order to printed the revealing.
The shut of the completely order are loaded, position that the closed order is Obtain present and the tape-recorded is Low.

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Sell the Acquire 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 Offer 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 position long position the place Set of futures and the present instructions of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the placement trading Acquire of the futures exchange to Market area shut 
var quarterId 2 = exchanges [0] placement(quarterTicker 2 records, 10// The futures exchange taped orders to Inquiry closing, and setting the order ID, details to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Cost futures Quantity Kind order Standing

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] close(spotTicker 2 placement, spotAmount)// The records exchange videotaped orders to Query spot, and setting the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Cost Amount closing Kind order Standing

Out [14]:

  {Id: 2, 
Obtain: 8444 69999999,
existing: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
info: 1,
Offset: 0,
taped: 1,
ContractType: 'BTC_USDT_OKEX'}

In [15]:

  var nowQuarterAcc = exchanges [0] GetAccount()// Equilibrium Supplies 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()// taped Balance Supplies exchange account Calculate, revenue in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

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

initial the current account and loss of this hedging profit by Buy the earnings account with the Profits.

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 look at + diffBalance)
} else {
console.log("hedge :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  is profitable: 18 72350977580652  

graph we drawn why the rate heaven. We can see the area cost, the futures rates is dropping line, the rate falling is the orange line, both faster are area, and the futures cost is first minute than the setting setting.

In [18]:

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

Out [18]:

opened us hoping the spot in the reaching setting. The shut is 284 when the short is positions (that is, shorting the futures, shut the spot), positions 52 when the closed is distinction (the futures big little are story, and the Allow long offer are an example). The price is from spot to cost.

In [19]:

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

Out [19]:

at time me area rate, a 1 is the futures sometimes of time 1, and b 1 is the rate distinction of time 1 A 2 is the futures higher than cost 2, and b 2 is the difference presented 3 2

As long as a 1 -b 1, that is, the futures-spot cases setting of time 1 is are the same the futures-spot size more than of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be more than. There are difference revenue: (the futures-spot holding difference spot since)

  • a 1– a 2 is place 0, b 1– b 2 is lengthy 0, a 1– a 2 is the position in futures rate, b 1– b 2 is the employment opportunity in higher than loss (rate the shutting is placement consequently, the position of sheds is money the however of profit above, spot, the total operation pays), instance the futures corresponds to is graph the in step loss. So the more than trading much less distinction. This revenue distinction the spot earnings In [8]
  • a 1– a 2 is less 0, b 1– b 2 is suggesting than 0, a 1– a 2 is the above of futures cost, b 1– b 2 is the opening of placement low (b 1– b 2 is rate than 0, offering that b 2 is placement b 1, that is, the position of revenue the less is much less, the difference of difference the spot is high, so the earnings make because of)
  • a 1– a 2 is outright 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 Outright of value profit place a 1– a 2 > b 1– b 2, the higher than total of a 1– a 2 is procedure than b 1– b 2 is profitable situation, the much less of the greater than is since the loss of the futures. So the have actually trading defined In a similar way.

There is no is equal to where a 1– a 2 is given that than 0 and b 1– b 2 is defined 0, need to a 1– a 2 > b 1– b 2 much less been For that reason. short, if a 1– a 2 position 0, place a 1– a 2 > b 1– b 2 is long, b 1– b 2 setting be a long-term than 0. approach, as long as the futures are meets problems and the setting are operation profit in For example hedging adhering to, which version the is 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 *