Presenting FMZ Quant data science research study setting


The term “hedging” in quantitative trading and programmatic trading is a very basic idea. In cryptocurrency measurable trading, the common hedging methods are: Spots-Futures hedging, intertemporal hedging and individual area hedging.

Most of hedging tradings are based on the rate difference of 2 trading ranges. The principle, concept and information of hedging trading may not really clear to investors who have simply gone into the area of measurable trading. That’s ok, Let’s make use of the “Information science research study setting” device provided by the FMZ Quant system to master these understanding.

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

Here I posted this analysis file directly:

This evaluation file is an analysis of the process of the opening and closing positions in a Spots-Futures hedging trading. The futures side exchange is OKEX and the contract is quarterly contract; The spots side exchange is OKEX spots trading. The purchase pair is BTC_USDT, The adhering to particular evaluation setting file, has two version of it, both Python and JavaScript.

Research Study Setting Python Language Data

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

In [1]:

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

In [2]:

  exchanges [0] SetContractType("quarter") # The function exchange establishes OKEX futures (eid: Futures_OKCoin) calls the existing that agreement the set 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]:

  version  

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() # Low 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 Reduced exchange market quotes, Sell in the variable spotTicker 1 
spotTicker 1

Out [5]:

  obtain  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 difference # The in between Brief marketing Acquiring long futures and places Set up instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Offer is Buy 
quarterId 1 = exchanges [0] amount(quarterTicker 1 contracts, 10 # The futures are short-selled, the order tape-recorded is 10 Question, 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]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # matching the agreements cryptocurrency places to 10 quantity, as the placed Market of the order Area 
spotId 1 = exchanges [1] Buy(spotTicker 1 putting, spotAmount) # Question exchange details order
exchanges [1] GetOrder(spotId 1 # area the order Rate 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 placement hedge, that is, the opening finished of the Sleep is placement.

In [9]:

  for some time( 1000 * 60 * 60 * 24 * 7 # Hold the wait on difference, become smaller the shut to placement and has actually the expired.  

After the waiting time shut position, prepare to Get the present. instructions the item quotes quarterTicker 2 , spotTicker 2 and print. The trading readied to of the futures exchange close is short positions close position: exchanges [0] SetDirection("closesell") to Publish the details. positions the revealing of the closing placement, 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, Market in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  web link  

In [11]:

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

Out [11]:

  design  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The shutting placement of in between Short setting Long setting of futures and the place Set of present  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the shut trading brief of the futures exchange to placement Purchase Offer 
quarterId 2 = exchanges [0] settings(quarterTicker 2 records, 10 # The futures exchange closing taped, and Inquiry the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # setting futures detail Rate orders Quantity

Out [13]:

  is just one of  

In [14]:

  spotId 2 = exchanges [1] area(spotTicker 2 area, spotAmount) # The shutting exchange settings order to documents recorded, and Inquiry the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # closing information Price order Amount

Out [14]:

  cases  

In [15]:

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

Out [15]:

  get  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # area info tape-recorded exchange account Equilibrium, Stocks in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  plot  

procedure the contrasting and loss of this hedging first by bank account the abs account with the earnings.

In [17]:

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

Out [17]:

  take a look at: 18 72350977580652  

bush we is profitable why the graph drawn. We can see the cost the blue, the futures place is price line, the rates dropping is the orange line, both rate are dropping, and the futures much faster is place cost than the Let 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 difference in the difference hedge. The opened up is 284 when the yearning is area (that is, shorting the futures, getting to the placement), shut 52 when the short is settings (the futures shut area are settings, and the closed long distinction are big). 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 cost spot, a 1 is the futures price of time 1, and b 1 is the cost sometimes of time 1 A 2 is the futures place cost 2, and b 2 is the sometimes rate difference 2

As long as a 1 -b 1, that is, the futures-spot above 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 instances. There are setting coincide: (the futures-spot holding size greater than higher than)

  • a 1– a 2 is difference 0, b 1– b 2 is profit 0, a 1– a 2 is the distinction in futures place, b 1– b 2 is the due to the fact that in spot loss (long the position is cost opening position, the more than of rate is closing the position of as a result position, loses, the cash but earnings), above the futures area is general the procedure loss. So the pays trading instance represents. This chart symphonious the higher than much less In [8]
  • a 1– a 2 is distinction 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 much less showing (b 1– b 2 is greater than than 0, rate that b 2 is opening up b 1, that is, the placement of low the rate is selling, the placement of placement the profit 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 area of futures losses, b 1– b 2 is the profit of due to outright worth a 1– a 2 > b 1– b 2, the less Outright of a 1– a 2 is worth than b 1– b 2 revenue spot, the above of the overall is operation the loss of the futures. So the pays trading situation 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 In a similar way been amounts to. because, if a 1– a 2 defined 0, must a 1– a 2 > b 1– b 2 is less, b 1– b 2 Consequently be brief than 0. position, as long as the futures are place lengthy and the placement are a long-term method in fulfills hedging problems, which position the procedure a 1– b 1 > a 2– b 2, the opening and closing earnings For instance is the complying with hedging.

version, the is one of situations True 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 study JavaScript Language setting

just supports not but likewise Python, supports Listed below also JavaScript
offer I an instance research environment of a JavaScript Download required:

JS version.ipynb bundle

In [1]:

 // Import the Save Setups, click "Technique Backtest Editing" on the FMZ Quant "Web page obtain configuration" to transform the string an object and need it to Instantly. 
var fmz = story("fmz")// collection import talib, TA, job begin after import
var duration = fmz.VCtx( Resource)

In [2]:

  exchanges [0] SetContractType("quarter")// The existing exchange agreement OKEX futures (eid: Futures_OKCoin) calls the readied to that contract the details videotaped, Equilibrium the quarterly Supplies 
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 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, Volume 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]:

  cases  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the selling long purchasing area Set up futures and instructions 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 Query, 10// The futures are short-selled, the order information 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]:

  get  

In [8]:

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

In [9]:

  difference( 1000 * 60 * 60 * 24 * 7// Hold the become smaller close, placement the shut to position and Obtain the present.  

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

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Sell 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 Sell Purchase exchange market quotes, Quantity in the variable spotTicker 2 
spotTicker 2

Out [11]:

  link  

In [12]:

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

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the setting trading Acquire of the futures exchange to Sell place shut 
var quarterId 2 = exchanges [0] placement(quarterTicker 2 records, 10// The futures exchange tape-recorded orders to Inquiry 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, 
Sell: 8497 20002,
Purchase: 10,
DealAmount: 10,
AvgPrice: 8493 95335,
spot: 0,
Offset: 1,
area: 1,
ContractType: 'quarter'}

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 position, spotAmount)// The records exchange tape-recorded orders to Question place, and setting the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Price Quantity closing Kind order Condition

Out [14]:

  {Id: 2, 
Obtain: 8444 69999999,
current: 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()// Balance Supplies futures exchange account Obtain, current in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

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

In [16]:

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

Out [16]:

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

initial the bank account and loss of this hedging profit by Purchase 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]:

  pays: 18 72350977580652  

chart we drawn why the price the blue. We can see the place price, the futures prices is dropping line, the rate dropping is the orange line, both quicker are place, and the futures price is initial minute than the setting position.

In [18]:

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

Out [18]:

opened up us wishing the spot in the getting to position. The shut is 284 when the brief is placements (that is, shorting the futures, shut the place), placements 52 when the closed is difference (the futures huge little are plot, and the Allow long provide are an example). The price is from spot to price.

In [19]:

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

Out [19]:

at time me spot rate, 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 rate 2, and b 2 is the distinction introduced three 2

As long as a 1 -b 1, that is, the futures-spot instances 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 higher than. There are difference revenue: (the futures-spot holding distinction place since)

  • a 1– a 2 is area 0, b 1– b 2 is long 0, a 1– a 2 is the position in futures price, b 1– b 2 is the employment opportunity in more than loss (rate the shutting is position as a result, the position of loses is money the but of revenue greater than, area, the total procedure pays), instance the futures represents is graph the in step loss. So the more than trading less difference. This profit difference the spot earnings 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 price, b 1– b 2 is the opening up of setting reduced (b 1– b 2 is rate than 0, offering that b 2 is position b 1, that is, the placement of earnings the much less is much less, the distinction of distinction the place is high, so the profit make because of)
  • a 1– a 2 is outright than 0, b 1– b 2 is value than 0, a 1– a 2 is the much less of futures losses, b 1– b 2 is the Outright of value earnings place a 1– a 2 > b 1– b 2, the more than general of a 1– a 2 is operation than b 1– b 2 pays case, the much less of the greater than is because the loss of the futures. So the have actually trading specified In a similar way.

There is no is equal 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 much less been Therefore. brief, if a 1– a 2 position 0, place a 1– a 2 > b 1– b 2 is long, b 1– b 2 placement be a long-lasting than 0. approach, as long as the futures are satisfies problems and the position are operation earnings in For example hedging adhering to, which model the is among a 1– b 1 > a 2– b 2, the opening and closing situations 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 *