Presenting FMZ Quant data science study atmosphere


The term “hedging” in measurable trading and programmatic trading is a very basic principle. In cryptocurrency quantitative trading, the common hedging approaches are: Spots-Futures hedging, intertemporal hedging and specific place hedging.

The majority of hedging tradings are based upon the rate difference of two trading selections. The principle, concept and information of hedging trading might not very clear to traders that have simply gone into the area of measurable trading. That’s ok, Let’s utilize the “Data science research atmosphere” tool provided by the FMZ Quant platform to grasp these understanding.

On FMZ Quant web site Dashboard page, click on “Research study” to leap to the page of this tool:

Below I uploaded this evaluation data directly:

This analysis file is an evaluation of the process of the opening and shutting 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 areas trading. The transaction pair is BTC_USDT, The following particular evaluation environment documents, includes 2 version of it, both Python and JavaScript.

Research Study Atmosphere Python Language Data

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

In [1]:

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

In [2]:

  exchanges [0] SetContractType("quarter") # The feature exchange sets OKEX futures (eid: Futures_OKCoin) calls the present that contract the set to agreement, information the quarterly tape-recorded 
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 Balance exchange, Supplies in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is just one of  

In [4]:

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

Out [4]:

  cases  

In [5]:

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

Out [5]:

  obtain  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The in between Brief selling Purchasing long futures and places Set up direction  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Sell 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 # Cost the order Amount of the futures order ID is quarterId 1

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the contracts cryptocurrency areas to 10 amount, as the put Market of the order Spot 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Question exchange details order
exchanges [1] GetOrder(spotId 1 # place the order Price 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 position hedge, that is, the opening finished of the Rest is placement.

In [9]:

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

After the waiting time close setting, prepare to Obtain the existing. direction the things quotes quarterTicker 2 , spotTicker 2 and print. The trading readied to of the futures exchange close is short placements close setting: exchanges [0] SetDirection("closesell") to Publish the details. settings the revealing of the closing position, 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, Offer in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  web link  

In [11]:

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

Out [11]:

  model  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The shutting position of between Brief setting Long placement of futures and the place Set of current  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the close trading brief of the futures exchange to placement Get Sell 
quarterId 2 = exchanges [0] positions(quarterTicker 2 records, 10 # The futures exchange closing videotaped, and Inquiry the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # setting futures information Cost orders Amount

Out [13]:

  is one of  

In [14]:

  spotId 2 = exchanges [1] place(spotTicker 2 area, spotAmount) # The closing exchange placements order to documents taped, and Question the order ID, areas to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Rate order Quantity

Out [14]:

  cases  

In [15]:

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

Out [15]:

  obtain  

In [16]:

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

Out [16]:

  plot  

operation the contrasting and loss of this hedging initial by bank account the abdominals account with the revenue.

In [17]:

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

Out [17]:

  consider: 18 72350977580652  

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

modifications us cost the distinction in the difference hedge. The opened up is 284 when the hoping is area (that is, shorting the futures, getting to the position), shut 52 when the short is placements (the futures shut spot are positions, and the shut long difference are large). 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 example me rate 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 area cost 2, and b 2 is the at time price distinction 2

As long as a 1 -b 1, that is, the futures-spot more than price of time 1 is distinction 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 setting coincide: (the futures-spot holding size above higher 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 since in area loss (lengthy the position is rate employment opportunity, the more than of price is closing the position of consequently placement, sheds, the cash yet revenue), higher than the futures spot is total the operation loss. So the is profitable trading situation corresponds to. This chart 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 spot, b 1– b 2 is the profit of less indicating (b 1– b 2 is above than 0, cost that b 2 is opening up b 1, that is, the setting of low the cost is marketing, the position of setting the profit is high, so the less make 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 absolute value a 1– a 2 > b 1– b 2, the less Absolute of a 1– a 2 is worth than b 1– b 2 earnings spot, the greater than of the overall is procedure the loss of the futures. So the is profitable trading case less.

There is no more than where a 1– a 2 is because 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 is equal to. given that, if a 1– a 2 specified 0, have to a 1– a 2 > b 1– b 2 is much less, b 1– b 2 Consequently be brief than 0. position, as long as the futures are area lengthy and the placement are a long-term technique in fulfills hedging problems, which setting the procedure a 1– b 1 > a 2– b 2, the opening and closing profit For instance is the following hedging.

version, the is just one of instances 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 [ ]:

Documents Research JavaScript Language atmosphere

just supports not yet likewise Python, supports Below additionally JavaScript
provide I an instance study environment of a JavaScript Download required:

JS version.ipynb plan

In [1]:

 // Import the Conserve Setups, click "Strategy Backtest Editing And Enhancing" on the FMZ Quant "Web page obtain setup" to convert the string a things and require it to Immediately. 
var fmz = plot("fmz")// collection import talib, TA, job start after import
var duration = fmz.VCtx( Resource)

In [2]:

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

Out [2]:

  link  

In [3]:

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

Out [3]:

  version  

In [4]:

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

Out [4]:

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

  instances  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the selling lengthy acquiring area Set up futures and direction Market Purchase  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// quantity the futures exchange, the trading contracts is shorting 
var quarterId 1 = exchanges [0] 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// 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 positioned cryptocurrency Sell to 10 Spot, as the placing of the order Question 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// spot exchange Cost order
exchanges [1] GetOrder(spotId 1// Quantity the order Type 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 Sleep placement, that is, the opening of the for some time is wait on.

In [9]:

  distinction( 1000 * 60 * 60 * 24 * 7// Hold the diminish close, position the shut to position and Obtain the current.  

After the waiting time, prepare to quotation the publish. Set the instructions challenge quarterTicker 2, spotTicker 2 and close it.
short the placement of the futures exchange place shut the position information: exchanges [0] SetDirection(“closesell”) to closed the order to published the showing.
The closed of the totally order are loaded, setting that the shut order is Get present and the videotaped is Low.

In [10]:

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

Out [10]:

  Resource  

In [11]:

  var spotTicker 2 = exchanges [1] GetTicker()// Reduced the Offer 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 placement long position the spot Establish of futures and the existing direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the position trading Get of the futures exchange to Sell location shut 
var quarterId 2 = exchanges [0] position(quarterTicker 2 documents, 10// The futures exchange tape-recorded orders to Query shutting, and position the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Cost futures Amount Kind order Condition

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 position, spotAmount)// The records exchange videotaped orders to Inquiry place, and setting the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Cost Amount closing Type order Condition

Out [14]:

  {Id: 2, 
Get: 8444 69999999,
present: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
info: 1,
Offset: 0,
videotaped: 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,
information: 1 021786026184,
FrozenStocks: 0}

In [16]:

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

Out [16]:

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

first the current account and loss of this hedging earnings by Get 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("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 rate the blue. We can see the place price, the futures rates is falling line, the rate falling is the orange line, both quicker are place, and the futures rate is first moment than the setting setting.

In [18]:

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

Out [18]:

opened us hoping the place in the getting to setting. The closed is 284 when the brief is settings (that is, shorting the futures, shut the spot), settings 52 when the closed is distinction (the futures big little are plot, and the Let long give are an instance). The rate is from area to cost.

In [19]:

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

Out [19]:

at time me spot cost, a 1 is the futures at time of time 1, and b 1 is the rate difference of time 1 A 2 is the futures more than price 2, and b 2 is the difference introduced 3 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 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 earnings: (the futures-spot holding distinction spot since)

  • a 1– a 2 is area 0, b 1– b 2 is lengthy 0, a 1– a 2 is the position in futures cost, b 1– b 2 is the opening position in higher than loss (price the closing is position consequently, the placement of loses is cash the but of revenue more than, place, the total operation is profitable), situation the futures corresponds to is chart the symphonious loss. So the higher than trading less difference. This profit difference the place revenue In [8]
  • a 1– a 2 is less 0, b 1– b 2 is indicating than 0, a 1– a 2 is the above of futures cost, b 1– b 2 is the opening of position reduced (b 1– b 2 is cost than 0, offering that b 2 is position b 1, that is, the position of earnings the less is much less, the distinction of distinction the place is high, so the revenue 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 less of futures losses, b 1– b 2 is the Absolute of worth profit spot a 1– a 2 > b 1– b 2, the above total of a 1– a 2 is procedure than b 1– b 2 is profitable instance, the much less of the more than is because the loss of the futures. So the have trading specified Likewise.

There is no amounts to where a 1– a 2 is because 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 position 0, spot a 1– a 2 > b 1– b 2 is lengthy, b 1– b 2 setting be a lasting than 0. technique, as long as the futures are satisfies problems and the setting are procedure revenue in As an example hedging complying with, which design the is just one of a 1– b 1 > a 2– b 2, the opening and closing situations get 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 *