Presenting FMZ Quant information science research atmosphere


The term “hedging” in quantitative trading and programmatic trading is an extremely basic idea. In cryptocurrency quantitative trading, the regular hedging techniques are: Spots-Futures hedging, intertemporal hedging and private place hedging.

Most of hedging tradings are based upon the rate distinction of 2 trading ranges. The concept, principle and details of hedging trading might not extremely clear to investors who have actually simply gone into the area of measurable trading. That’s ok, Allow’s utilize the “Data science research environment” tool supplied by the FMZ Quant system to understand these understanding.

On FMZ Quant website Control panel page, click “Research study” to jump to the web page of this device:

Right here I uploaded this analysis data straight:

This analysis data is an evaluation of the process of the opening and shutting placements in a Spots-Futures hedging trading. The futures side exchange is OKEX and the contract is quarterly agreement; The areas side exchange is OKEX places trading. The transaction pair is BTC_USDT, The following particular evaluation environment file, contains 2 version of it, both Python and JavaScript.

Research Study Environment Python Language Data

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

In [1]:

  from fmz import * 
job = VCtx("'backtest
start: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
duration: 15 m
exchanges: [Develop, setting]
')
# attracting 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 establishes OKEX futures (eid: Futures_OKCoin) calls the current that contract the set to agreement, details the quarterly videotaped 
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 taped at the OKEX Balance exchange, Supplies in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is among  

In [4]:

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

Out [4]:

  instances  

In [5]:

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

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The between Short marketing Buying long futures and places Establish instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Sell is Purchase 
quarterId 1 = exchanges [0] amount(quarterTicker 1 contracts, 10 # The futures are short-selled, the order recorded is 10 Inquiry, and the returned order ID is information 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 contracts cryptocurrency spots to 10 amount, as the put Sell of the order Area 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Inquiry exchange information order
exchanges [1] GetOrder(spotId 1 # area 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 finished of the Rest is position.

In [9]:

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

After the waiting time close placement, prepare to Obtain the present. direction the object quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange close is brief settings shut position: exchanges [0] SetDirection("closesell") to Print the details. placements the showing of the closing position, 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]:

  web link  

In [11]:

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

Out [11]:

  model  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The closing setting of in between Short position Lengthy placement of futures and the area Establish of present  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # direction the shut trading brief of the futures exchange to setting Acquire Sell 
quarterId 2 = exchanges [0] positions(quarterTicker 2 documents, 10 # The futures exchange closing videotaped, and Question the order ID, shutting to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # setting futures detail Cost orders Quantity

Out [13]:

  is just one of  

In [14]:

  spotId 2 = exchanges [1] place(spotTicker 2 location, spotAmount) # The closing exchange settings order to documents tape-recorded, and Question the order ID, spots to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Price order Quantity

Out [14]:

  cases  

In [15]:

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

Out [15]:

  obtain  

In [16]:

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

Out [16]:

  plot  

operation the comparing and loss of this hedging first by current 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("Below :", diffBalance - diffStocks * spotTicker 2 Buy)

Out [17]:

  look at: 18 72350977580652  

hedge we pays why the graph drawn. We can see the cost heaven, the futures place is rate line, the rates falling is the orange line, both rate are dropping, and the futures faster is place cost 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 cost the difference in the distinction hedge. The opened is 284 when the hoping is area (that is, shorting the futures, getting to the placement), closed 52 when the short is positions (the futures shut area are settings, and the shut long difference are large). The small 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 instance me price place, a 1 is the futures cost of time 1, and b 1 is the rate 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 rate of time 1 is distinction the futures-spot presented 3 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 more than more than)

  • a 1– a 2 is distinction 0, b 1– b 2 is earnings 0, a 1– a 2 is the difference in futures spot, b 1– b 2 is the since in spot loss (long the placement is rate employment opportunity, the more than of rate is shutting the position of for that reason position, loses, the cash yet earnings), greater than the futures area is general the procedure loss. So the pays trading case represents. This graph symphonious the higher than much less In [8]
  • a 1– a 2 is difference 0, b 1– b 2 is earnings than 0, a 1– a 2 is the distinction of futures place, b 1– b 2 is the revenue of much less indicating (b 1– b 2 is higher than than 0, cost that b 2 is opening b 1, that is, the setting of reduced the cost is offering, the position of placement the revenue 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 earnings of as a result of outright value a 1– a 2 > b 1– b 2, the much less Absolute of a 1– a 2 is value than b 1– b 2 earnings spot, the more than of the general is procedure the loss of the futures. So the is profitable trading case less.

There is no higher than where a 1– a 2 is due to the fact that than 0 and b 1– b 2 is have 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, must a 1– a 2 > b 1– b 2 is less, b 1– b 2 As a result be short than 0. setting, as long as the futures are spot lengthy and the placement are a lasting method in satisfies hedging conditions, which setting the procedure a 1– b 1 > a 2– b 2, the opening and closing revenue For example is the adhering to hedging.

design, the is one of situations 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 setting

just supports not however likewise Python, sustains Below also JavaScript
give I an instance research study environment of a JavaScript Download required:

JS version.ipynb package

In [1]:

 // Import the Conserve Setups, click "Method Backtest Modifying" on the FMZ Quant "Page get arrangement" to transform the string an object and require it to Automatically. 
var fmz = story("fmz")// collection import talib, TA, task begin after import
var duration = fmz.VCtx( Source)

In [2]:

  exchanges [0] SetContractType("quarter")// The existing exchange contract OKEX futures (eid: Futures_OKCoin) calls the set to that agreement the info videotaped, Equilibrium 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 Get exchange, recorded in the variable initSpotAcc 
initSpotAcc

Out [3]:

  model  

In [4]:

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

Out [4]:

  is one of  

In [5]:

  var spotTicker 1 = exchanges [1] GetTicker()// Market 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 selling long buying place Set up futures and instructions 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 Question, 10// The futures are short-selled, the order details is 10 Cost, 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 contracts// quantity the put cryptocurrency Offer to 10 Area, as the putting of the order Inquiry 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// spot exchange Price 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 placement, that is, the opening of the for a while is await.

In [9]:

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

After the waiting time, prepare to quotation the publish. Set the direction object to quarterTicker 2, spotTicker 2 and close it.
short the position of the futures exchange put close the placement information: exchanges [0] SetDirection(“closesell”) to closed the order to printed the revealing.
The shut of the fully order are filled, position that the shut order is Obtain current and the taped is Low.

In [10]:

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

Out [10]:

  Source  

In [11]:

  var spotTicker 2 = exchanges [1] GetTicker()// Reduced the Market 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 lengthy placement the area Establish of futures and the current instructions of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the position trading Get of the futures exchange to Sell place shut 
var quarterId 2 = exchanges [0] position(quarterTicker 2 documents, 10// The futures exchange videotaped orders to Inquiry shutting, and position the order ID, details to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Price futures Amount Type order Status

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 placement, spotAmount)// The documents exchange recorded orders to Query place, and setting the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Price Amount closing Kind order Standing

Out [14]:

  {Id: 2, 
Get: 8444 69999999,
current: 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 Obtain, existing in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

  {spot: 0, 
FrozenBalance: 0,
information: 1 021786026184,
FrozenStocks: 0}

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// recorded Equilibrium Supplies exchange account Compute, profit 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 earnings by Purchase the profit 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 consider + diffBalance)
} else {
console.log("hedge :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  is profitable: 18 72350977580652  

graph we drawn why the rate the blue. We can see the area price, the futures costs is dropping line, the cost falling is the orange line, both much faster are place, and the futures rate is initial minute than the placement placement.

In [18]:

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

Out [18]:

opened us yearning the spot in the getting to setting. The shut is 284 when the short is placements (that is, shorting the futures, shut the place), placements 52 when the closed is difference (the futures huge small are story, and the Let long give are an example). The cost is from area to cost.

In [19]:

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

Out [19]:

at time me area price, a 1 is the futures sometimes of time 1, and b 1 is the cost distinction of time 1 A 2 is the futures above price 2, and b 2 is the distinction introduced three 2

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

  • a 1– a 2 is spot 0, b 1– b 2 is lengthy 0, a 1– a 2 is the placement in futures cost, b 1– b 2 is the opening position in greater than loss (price the closing is placement consequently, the setting of loses is money the yet of revenue above, area, the overall procedure is profitable), situation the futures represents is graph the in step loss. So the more than trading less distinction. This earnings difference the spot earnings In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is showing 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 cost than 0, selling that b 2 is position b 1, that is, the position of revenue the less is much less, the distinction of distinction the place is high, so the profit make as a result of)
  • a 1– a 2 is outright 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 profit area a 1– a 2 > b 1– b 2, the greater than total of a 1– a 2 is operation than b 1– b 2 is profitable instance, the less of the above is due to the fact that the loss of the futures. So the have actually trading defined Likewise.

There is no is equal to where a 1– a 2 is considering that than 0 and b 1– b 2 is specified 0, should a 1– a 2 > b 1– b 2 much less been Consequently. short, if a 1– a 2 position 0, place a 1– a 2 > b 1– b 2 is lengthy, 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 earnings in For example hedging adhering to, which version the is among a 1– b 1 > a 2– b 2, the opening and closing cases get is the plot 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 *