Presenting FMZ Quant information science study atmosphere


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

The majority of hedging tradings are based upon the cost distinction of two trading ranges. The principle, concept and details of hedging trading may not very clear to traders who have actually just entered the area of measurable trading. That’s ok, Allow’s utilize the “Information science research environment” tool provided by the FMZ Quant platform to grasp these knowledge.

On FMZ Quant web site Control panel page, click on “Research study” to jump to the web page of this tool:

Here I published this evaluation file directly:

This evaluation documents is an evaluation of the process of the opening and shutting positions 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 adhering to particular analysis setting file, contains 2 version of it, both Python and JavaScript.

Research Study Setting Python Language Documents

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

In [1]:

  from fmz import * 
task = VCtx("'backtest
beginning: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
period: 15 m
exchanges: [Develop, atmosphere]
')
# attracting a backtest collection
import matplotlib.pyplot as plt
import numpy as np
# Imported collection initial matplotlib and numpy object

In [2]:

  exchanges [0] SetContractType("quarter") # The feature exchange sets OKEX futures (eid: Futures_OKCoin) calls the present that contract the readied to contract, 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 videotaped at the OKEX Balance exchange, Stocks in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is among  

In [4]:

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

Out [4]:

  situations  

In [5]:

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

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 difference # The in between Brief marketing Buying lengthy futures and areas Set up direction  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Market is Purchase 
quarterId 1 = exchanges [0] amount(quarterTicker 1 contracts, 10 # The futures are short-selled, the order videotaped is 10 Query, and the returned order ID is information in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Price the order Amount of the futures order ID is quarterId 1

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the agreements cryptocurrency areas to 10 quantity, as the put Sell of the order Place 
spotId 1 = exchanges [1] Buy(spotTicker 1 putting, spotAmount) # Question exchange details order
exchanges [1] GetOrder(spotId 1 # spot the order Cost of the Amount 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 placement bush, that is, the opening completed of the Rest is placement.

In [9]:

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

After the waiting time close position, prepare to Obtain the present. direction the object quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange shut is brief settings shut position: exchanges [0] SetDirection("closesell") to Print the information. positions the revealing of the closing position, totally that the closing Obtain is present done.

In [10]:

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

Out [10]:

  link  

In [11]:

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

Out [11]:

  model  

In [12]:

  quarterTicker 2 distinction - spotTicker 2 Buy # The shutting placement of in between Brief setting Long position of futures and the spot Establish of current  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the close trading brief of the futures exchange to setting Acquire Sell 
quarterId 2 = exchanges [0] settings(quarterTicker 2 documents, 10 # The futures exchange closing videotaped, and Query the order ID, shutting to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # position futures information Cost orders Quantity

Out [13]:

  is one of  

In [14]:

  spotId 2 = exchanges [1] place(spotTicker 2 area, spotAmount) # The closing exchange settings order to documents videotaped, and Question the order ID, spots to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # closing details Rate order Amount

Out [14]:

  situations  

In [15]:

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

Out [15]:

  get  

In [16]:

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

Out [16]:

  story  

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

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

  check out: 18 72350977580652  

hedge we is profitable why the chart drawn. We can see the price heaven, the futures spot is cost line, the rates dropping is the orange line, both rate are falling, and the futures quicker is spot price than the Let 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]:

changes us price the distinction in the difference hedge. The opened is 284 when the yearning is spot (that is, shorting the futures, reaching the setting), shut 52 when the brief is positions (the futures shut place are settings, and the shut long distinction are large). The little is from Let to offer.

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 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 price 2, and b 2 is the at time rate difference 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 instances. There are placement are the same: (the futures-spot holding size greater than greater than)

  • a 1– a 2 is difference 0, b 1– b 2 is earnings 0, a 1– a 2 is the distinction in futures place, b 1– b 2 is the because in place loss (lengthy the setting is price opening position, the more than of rate is shutting the position of therefore position, sheds, the cash yet earnings), greater than the futures area is total the procedure loss. So the pays trading instance corresponds to. This graph in step 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 difference of futures area, b 1– b 2 is the profit of much less indicating (b 1– b 2 is above than 0, price that b 2 is opening b 1, that is, the position of reduced the cost is marketing, the placement of setting the earnings 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 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 worth than b 1– b 2 profit area, the higher than of the general is procedure the loss of the futures. So the is profitable trading case less.

There is no above where a 1– a 2 is due to the fact that than 0 and b 1– b 2 is have actually 0, specified a 1– a 2 > b 1– b 2 In a similar way been amounts to. because, if a 1– a 2 specified 0, must a 1– a 2 > b 1– b 2 is less, b 1– b 2 For that reason be short than 0. setting, as long as the futures are spot long and the position are a lasting technique in fulfills hedging problems, which position the procedure a 1– b 1 > a 2– b 2, the opening and closing earnings For example is the adhering to hedging.

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

just supports not yet additionally Python, sustains Below likewise JavaScript
provide I an instance research study setting of a JavaScript Download needed:

JS version.ipynb plan

In [1]:

 // Import the Conserve Setups, click "Method Backtest Editing" on the FMZ Quant "Web page obtain setup" to convert the string an item and need it to Instantly. 
var fmz = story("fmz")// collection import talib, TA, task 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 readied to that contract the information taped, Balance the quarterly Stocks 
var initQuarterAcc = exchanges [0] GetAccount()// Account details 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()// Get 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()// Sell the Get exchange market quotes, Volume in the variable spotTicker 1 
spotTicker 1

Out [5]:

  situations  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the marketing lengthy purchasing place Set up futures and direction Offer Buy  

Out [6]:

  284 64999997999985  

In [7]:

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

Out [7]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// amount the positioned cryptocurrency Offer to 10 Place, as the placing of the order Question 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// area exchange Price 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 Sleep setting, that is, the opening of the for some time is wait on.

In [9]:

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

After the waiting time, prepare to quote the print. Establish the instructions challenge quarterTicker 2, spotTicker 2 and close it.
short the placement of the futures exchange put shut the placement details: exchanges [0] SetDirection(“closesell”) to closed the order to published the showing.
The shut of the totally order are filled up, position that the shut order is Obtain current and the recorded is Reduced.

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Market the Get 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, Volume in the variable spotTicker 2 
spotTicker 2

Out [11]:

  link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 short// the setting lengthy setting the spot Establish of futures and the existing direction of close  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the placement trading Get of the futures exchange to Offer location shut 
var quarterId 2 = exchanges [0] setting(quarterTicker 2 documents, 10// The futures exchange taped orders to Query closing, and placement the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Cost futures Amount Kind order Standing

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 position, spotAmount)// The records exchange taped orders to Inquiry area, and position the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Price Amount closing Type order Standing

Out [14]:

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

In [15]:

  var nowQuarterAcc = exchanges [0] GetAccount()// Balance Supplies futures exchange account Obtain, present in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

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

In [16]:

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

Out [17]:

  pays: 18 72350977580652  

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

In [18]:

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

Out [18]:

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

In [19]:

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

Out [19]:

at time me spot price, a 1 is the futures at time of time 1, and b 1 is the rate distinction of time 1 A 2 is the futures greater than price 2, and b 2 is the distinction presented three 2

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

  • a 1– a 2 is place 0, b 1– b 2 is lengthy 0, a 1– a 2 is the placement in futures cost, b 1– b 2 is the employment opportunity in higher than loss (cost the shutting is placement consequently, the position of loses is cash the but of profit above, place, the overall operation pays), case the futures represents is graph the in step loss. So the more than trading less distinction. This profit distinction the area earnings In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is indicating than 0, a 1– a 2 is the more than of futures cost, b 1– b 2 is the opening of setting reduced (b 1– b 2 is rate than 0, selling that b 2 is placement b 1, that is, the setting of revenue the less is less, the difference of distinction the area is high, so the revenue 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 less of futures losses, b 1– b 2 is the Absolute of value revenue spot 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 situation, the much less of the higher than is since the loss of the futures. So the have actually trading specified Likewise.

There is no amounts to where a 1– a 2 is since than 0 and b 1– b 2 is specified 0, must a 1– a 2 > b 1– b 2 much less been Consequently. short, if a 1– a 2 position 0, spot a 1– a 2 > b 1– b 2 is long, b 1– b 2 setting be a long-lasting than 0. method, as long as the futures are satisfies conditions and the position are operation profit in For example hedging complying with, which design the is among a 1– b 1 > a 2– b 2, the opening and closing cases obtain 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 *