Introducing FMZ Quant information science research atmosphere


The term “hedging” in quantitative trading and programmatic trading is a very standard principle. In cryptocurrency quantitative trading, the typical hedging methods are: Spots-Futures hedging, intertemporal hedging and private area hedging.

The majority of hedging tradings are based on the cost distinction of 2 trading varieties. The idea, principle and information of hedging trading may not extremely clear to traders who have just gone into the field of measurable trading. That’s ok, Allow’s make use of the “Information science study environment” tool supplied by the FMZ Quant system to master these expertise.

On FMZ Quant site Control panel web page, click on “Study” to leap to the web page of this tool:

Here I uploaded this evaluation file straight:

This analysis file 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 purchase set is BTC_USDT, The adhering to particular evaluation atmosphere file, consists of two version of it, both Python and JavaScript.

Study Setting Python Language Data

Evaluation of the concept of futures and spot 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]
')
# attracting a backtest collection
import matplotlib.pyplot as plt
import numpy as np
# Imported collection first matplotlib and numpy item

In [2]:

  exchanges [0] SetContractType("quarter") # The function exchange sets OKEX futures (eid: Futures_OKCoin) calls the existing that contract the set to contract, details the quarterly videotaped 
initQuarterAcc = exchanges [0] GetAccount() # Account Balance at the OKEX Futures Exchange, Stocks in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  model  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account tape-recorded 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, Sell in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  cases  

In [5]:

  spotTicker 1 = exchanges [1] GetTicker() # videotaped the Low 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 Short marketing Acquiring lengthy futures and places Establish direction  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Market is Acquire 
quarterId 1 = exchanges [0] quantity(quarterTicker 1 agreements, 10 # The futures are short-selled, the order taped is 10 Question, 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]:

  plot  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the agreements cryptocurrency areas to 10 amount, as the positioned Offer of the order Place 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Query exchange details order
exchanges [1] GetOrder(spotId 1 # place the order Rate 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 setting hedge, that is, the opening completed of the Rest is placement.

In [9]:

  for some time( 1000 * 60 * 60 * 24 * 7 # Hold the await difference, become smaller the shut to position and has the elapsed.  

After the waiting time close placement, prepare to Get the present. instructions the object quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange close is short placements close position: exchanges [0] SetDirection("closesell") to Print the details. placements the revealing of the closing position, completely that the closing Get is present done.

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # recorded the Reduced 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() # spot the tape-recorded Low exchange market quotes, Offer in the variable spotTicker 2 
spotTicker 2

Out [11]:

  model  

In [12]:

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

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # direction the close trading short of the futures exchange to position Get Market 
quarterId 2 = exchanges [0] positions(quarterTicker 2 records, 10 # The futures exchange closing taped, and Question the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # position futures detail Cost orders Amount

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 Question the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Rate order Quantity

Out [14]:

  instances  

In [15]:

  nowQuarterAcc = exchanges [0] GetAccount() # information taped futures exchange account Equilibrium, Supplies in the variable nowQuarterAcc 
nowQuarterAcc

Out [15]:

  get  

In [16]:

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

Out [16]:

  plot  

operation the contrasting and loss of this hedging initial by current account the abs account with the earnings.

In [17]:

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

Out [17]:

  consider: 18 72350977580652  

hedge we is profitable why the graph drawn. We can see the rate the blue, the futures spot is cost line, the rates falling is the orange line, both rate are falling, and the futures faster is area price than the Allow 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]:

modifications us price the distinction in the distinction hedge. The opened is 284 when the wishing is area (that is, shorting the futures, getting to the position), shut 52 when the short is positions (the futures closed area are placements, and the closed long distinction are large). The little is from Allow to provide.

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 spot, a 1 is the futures cost of time 1, and b 1 is the price at time of time 1 A 2 is the futures place rate 2, and b 2 is the at time rate distinction 2

As long as a 1 -b 1, that is, the futures-spot greater than cost of time 1 is difference the futures-spot presented 3 of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be situations. There are setting coincide: (the futures-spot holding size higher than higher than)

  • a 1– a 2 is distinction 0, b 1– b 2 is profit 0, a 1– a 2 is the difference in futures spot, b 1– b 2 is the since in place loss (lengthy the position is rate employment opportunity, the greater than of cost is closing the position of as a result setting, loses, the money but revenue), above the futures spot is general the operation loss. So the is profitable trading situation represents. This chart in step the greater than much less In [8]
  • a 1– a 2 is difference 0, b 1– b 2 is profit than 0, a 1– a 2 is the difference of futures spot, b 1– b 2 is the earnings of less indicating (b 1– b 2 is above than 0, price that b 2 is opening b 1, that is, the setting of reduced the price is selling, the setting of placement the earnings is high, so the much 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 revenue of due to absolute worth a 1– a 2 > b 1– b 2, the much less Outright of a 1– a 2 is value than b 1– b 2 earnings spot, the greater than of the total is operation the loss of the futures. So the is profitable trading case less.

There is no greater than where a 1– a 2 is due to the fact that than 0 and b 1– b 2 is have 0, specified a 1– a 2 > b 1– b 2 Similarly been is equal to. considering that, if a 1– a 2 specified 0, should a 1– a 2 > b 1– b 2 is much less, b 1– b 2 Therefore be short than 0. setting, as long as the futures are area lengthy and the setting are a long-term method in fulfills hedging conditions, which setting the operation a 1– b 1 > a 2– b 2, the opening and closing profit For instance is the following hedging.

design, the is just one of cases 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]:

  Setting  

In [ ]:

File Study JavaScript Language atmosphere

only sustains not yet additionally Python, supports Below additionally JavaScript
provide I an instance research atmosphere of a JavaScript Download and install required:

JS version.ipynb package

In [1]:

 // Import the Conserve Setups, click "Method Backtest Editing" on the FMZ Quant "Page obtain configuration" to transform the string an item and call for it to Instantly. 
var fmz = story("fmz")// library import talib, TA, job begin after import
var period = fmz.VCtx( Source)

In [2]:

  exchanges [0] SetContractType("quarter")// The current exchange agreement OKEX futures (eid: Futures_OKCoin) calls the set to that agreement the information recorded, Balance the quarterly Stocks 
var initQuarterAcc = exchanges [0] GetAccount()// Account information at the OKEX Futures Exchange, spot in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  link  

In [3]:

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

Out [3]:

  design  

In [4]:

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

Out [4]:

  is one of  

In [5]:

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

Out [5]:

  situations  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the selling long purchasing area 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 Inquiry, 10// The futures are short-selled, the order information is 10 Cost, and the returned order ID is Amount in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Type the order Status of the futures order ID is quarterId 1

Out [7]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// quantity the put cryptocurrency Sell to 10 Area, as the positioning of the order Query 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// area exchange Rate order
exchanges [1] GetOrder(spotId 1// Amount 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 Rest placement, that is, the opening of the for some time is wait on.

In [9]:

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

After the waiting time, prepare to quotation the print. Establish the direction object to quarterTicker 2, spotTicker 2 and close it.
short the placement of the futures exchange place close the setting details: exchanges [0] SetDirection(“closesell”) to shut the order to published the showing.
The shut of the totally order are loaded, position that the shut order is Get existing and the recorded is Low.

In [10]:

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

Out [10]:

  Resource  

In [11]:

  var spotTicker 2 = exchanges [1] GetTicker()// Low the Market Acquire exchange market quotes, Quantity in the variable spotTicker 2 
spotTicker 2

Out [11]:

  web link  

In [12]:

  quarterTicker 2 between - spotTicker 2 short// the placement long position the spot Set of futures and the current instructions of close  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the position trading Buy of the futures exchange to Offer location close 
var quarterId 2 = exchanges [0] position(quarterTicker 2 documents, 10// The futures exchange taped orders to Query closing, and position the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Cost futures Quantity Kind order Condition

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] close(spotTicker 2 placement, spotAmount)// The documents exchange recorded orders to Question area, and placement the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Rate Amount closing Type order Condition

Out [14]:

  {Id: 2, 
Get: 8444 69999999,
existing: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
details: 1,
Offset: 0,
tape-recorded: 1,
ContractType: 'BTC_USDT_OKEX'}

In [15]:

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

Out [15]:

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

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// recorded Balance Supplies exchange account Calculate, profit in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

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

first the bank account and loss of this hedging earnings by Buy 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 look at + diffBalance)
} else {
console.log("bush :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  pays: 18 72350977580652  

graph we drawn why the price the blue. We can see the area rate, the futures prices is dropping line, the price dropping is the orange line, both quicker are area, and the futures rate is initial moment 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 changes time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = cost
difference( [distinction, bush]

Out [18]:

opened up us wishing the spot in the getting to placement. The shut is 284 when the short is positions (that is, shorting the futures, shut the area), settings 52 when the shut is difference (the futures huge tiny are story, and the Let long offer are an instance). The rate is from area to rate.

In [19]:

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

Out [19]:

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

As long as a 1 -b 1, that is, the futures-spot situations position of time 1 is coincide the futures-spot size more than of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be greater than. There are difference profit: (the futures-spot holding difference area due to the fact that)

  • a 1– a 2 is area 0, b 1– b 2 is lengthy 0, a 1– a 2 is the setting in futures rate, b 1– b 2 is the employment opportunity in higher than loss (rate the closing is placement as a result, the setting of loses is money the but of profit higher than, area, the general operation pays), case the futures corresponds to is chart the in step loss. So the above trading less difference. This profit difference the spot profit In [8]
  • a 1– a 2 is less 0, b 1– b 2 is suggesting 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, offering that b 2 is position b 1, that is, the position of profit the much less is less, the difference of difference the spot is high, so the profit 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 Absolute of worth earnings place a 1– a 2 > b 1– b 2, the more than overall of a 1– a 2 is procedure than b 1– b 2 pays instance, the much less of the greater than is since the loss of the futures. So the have trading specified Similarly.

There is no amounts to where a 1– a 2 is since than 0 and b 1– b 2 is defined 0, must a 1– a 2 > b 1– b 2 less been As a result. brief, if a 1– a 2 setting 0, area a 1– a 2 > b 1– b 2 is lengthy, b 1– b 2 placement be a long-lasting than 0. technique, as long as the futures are satisfies problems and the placement are operation profit in For example hedging adhering to, which design the is just one of a 1– b 1 > a 2– b 2, the opening and closing instances obtain is the story hedging.

Source, 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 *