Introducing FMZ Quant information science study environment


The term “hedging” in measurable trading and programmatic trading is an extremely fundamental principle. In cryptocurrency measurable trading, the normal hedging techniques are: Spots-Futures hedging, intertemporal hedging and individual place hedging.

Most of hedging tradings are based on the rate difference of 2 trading selections. The principle, principle and details of hedging trading may not very clear to investors who have actually simply gotten in the field of quantitative trading. That’s ok, Allow’s use the “Data science research study environment” device given by the FMZ Quant system to grasp these knowledge.

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

Right here I submitted this analysis file directly:

This analysis documents is an evaluation of the procedure of the opening and shutting settings in a Spots-Futures hedging trading. The futures side exchange is OKEX and the agreement is quarterly contract; The spots side exchange is OKEX areas trading. The transaction set is BTC_USDT, The complying with details evaluation environment data, has two variation of it, both Python and JavaScript.

Study Atmosphere Python Language Documents

Evaluation of the concept of futures and place hedging.ipynb Download

In [1]:

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

In [2]:

  exchanges [0] SetContractType("quarter") # The function exchange establishes OKEX futures (eid: Futures_OKCoin) calls the present that agreement the readied to contract, info the quarterly taped 
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 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() # Reduced the futures exchange market quotes, Offer in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  instances  

In [5]:

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

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 difference # The in between Short marketing Acquiring long futures and areas Set up direction  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Market 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 details in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Rate the order Quantity of the futures order ID is quarterId 1

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the contracts cryptocurrency places to 10 amount, as the put Offer 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 position bush, that is, the opening finished of the Rest is setting.

In [9]:

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

After the waiting time shut placement, prepare to Get the current. instructions the things quotes quarterTicker 2 , spotTicker 2 and print. The trading readied to of the futures exchange close is short positions shut setting: exchanges [0] SetDirection("closesell") to Publish the details. positions the showing of the closing setting, entirely that the closing Obtain is present 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]:

  link  

In [11]:

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

Out [11]:

  version  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The shutting position of between Brief position Lengthy placement of futures and the area Establish of existing  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # direction the close trading short of the futures exchange to setting Acquire Sell 
quarterId 2 = exchanges [0] settings(quarterTicker 2 records, 10 # The futures exchange closing taped, and Query the order ID, shutting 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] spot(spotTicker 2 location, spotAmount) # The closing exchange settings order to documents recorded, and Query the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting details Cost order Quantity

Out [14]:

  situations  

In [15]:

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

Out [15]:

  get  

In [16]:

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

Out [16]:

  story  

procedure the comparing and loss of this hedging preliminary by current account the abs account with the revenue.

In [17]:

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

Out [17]:

  check out: 18 72350977580652  

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

adjustments us cost the distinction in the difference bush. The opened up is 284 when the wishing is spot (that is, shorting the futures, reaching the setting), closed 52 when the brief is positions (the futures closed spot are placements, and the closed long distinction are large). The little is from Allow 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 cost place, a 1 is the futures price of time 1, and b 1 is the price at time of time 1 A 2 is the futures area rate 2, and b 2 is the at time cost difference 2

As long as a 1 -b 1, that is, the futures-spot higher than cost 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 situations. There are position coincide: (the futures-spot holding size greater than higher 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 spot loss (long the setting is price opening position, the higher than of price is shutting the setting of as a result setting, sheds, the money yet earnings), greater than the futures spot is total the operation loss. So the is profitable trading instance corresponds to. This graph in step the above less In [8]
  • a 1– a 2 is distinction 0, b 1– b 2 is earnings than 0, a 1– a 2 is the distinction of futures area, b 1– b 2 is the profit of less suggesting (b 1– b 2 is more than than 0, cost that b 2 is opening b 1, that is, the placement of reduced the rate is offering, the placement of position the earnings is high, so the less make much less)
  • a 1– a 2 is distinction 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 profit of as a result of absolute value a 1– a 2 > b 1– b 2, the much less Outright of a 1– a 2 is worth than b 1– b 2 profit place, the more than of the total is operation the loss of the futures. So the pays trading situation 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 actually 0, specified a 1– a 2 > b 1– b 2 In a similar way been amounts to. given that, if a 1– a 2 specified 0, must a 1– a 2 > b 1– b 2 is less, b 1– b 2 Therefore be short than 0. setting, as long as the futures are spot long and the position are a lasting approach in meets hedging conditions, which placement the procedure a 1– b 1 > a 2– b 2, the opening and closing profit For instance is the adhering to hedging.

model, the is among cases True the Research 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]:

  Environment  

In [ ]:

Documents Research study JavaScript Language atmosphere

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

JS version.ipynb package

In [1]:

 // Import the Save Settings, click "Technique Backtest Editing" on the FMZ Quant "Web page obtain configuration" to convert the string a things and require it to Instantly. 
var fmz = story("fmz")// library import talib, TA, job beginning after import
var period = 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 information taped, Equilibrium the quarterly Supplies 
var initQuarterAcc = exchanges [0] GetAccount()// Account details at the OKEX Futures Exchange, area in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  web link  

In [3]:

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

Out [3]:

  design  

In [4]:

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

Out [5]:

  cases  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the marketing lengthy acquiring place Set up futures and instructions Sell Acquire  

Out [6]:

  284 64999997999985  

In [7]:

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

Out [7]:

  obtain  

In [8]:

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

In [9]:

  distinction( 1000 * 60 * 60 * 24 * 7// Hold the become smaller shut, setting the shut to position and Obtain the existing.  

After the waiting time, prepare to quote the publish. Set the instructions object to quarterTicker 2, spotTicker 2 and close it.
brief the setting of the futures exchange put shut the placement details: exchanges [0] SetDirection(“closesell”) to closed the order to published the showing.
The closed of the completely order are filled, setting that the shut order is Obtain present and the videotaped is Low.

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

  Resource  

In [11]:

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

Out [11]:

  web link  

In [12]:

  quarterTicker 2 between - spotTicker 2 short// the placement lengthy placement 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 Market area close 
var quarterId 2 = exchanges [0] position(quarterTicker 2 records, 10// The futures exchange taped orders to Inquiry shutting, and setting the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Price futures Amount Type order Status

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 documents exchange recorded orders to Question spot, and position the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Price Quantity closing Type order Standing

Out [14]:

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

In [15]:

  var nowQuarterAcc = exchanges [0] GetAccount()// Balance Stocks futures exchange account Get, present 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 Stocks exchange account Determine, earnings in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

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

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

Out [17]:

  is profitable: 18 72350977580652  

chart we drawn why the rate the blue. We can see the place price, the futures prices is dropping line, the price falling is the orange line, both quicker are spot, and the futures price is very first moment than the setting position.

In [18]:

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

Out [18]:

opened up us longing the place in the reaching placement. The closed is 284 when the brief is positions (that is, shorting the futures, shut the place), positions 52 when the closed is difference (the futures large tiny are story, and the Let long provide are an instance). The cost is from place to rate.

In [19]:

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

Out [19]:

sometimes me spot price, a 1 is the futures sometimes of time 1, and b 1 is the price difference of time 1 A 2 is the futures more than cost 2, and b 2 is the distinction presented 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 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 difference area since)

  • 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 (rate the closing is position therefore, the setting of loses is cash the however of profit more than, area, the overall operation is profitable), case the futures represents is chart the symphonious loss. So the above trading less difference. This profit difference the place 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 higher than of futures cost, b 1– b 2 is the opening up of position low (b 1– b 2 is price than 0, offering that b 2 is position b 1, that is, the position of profit the less is less, the difference of distinction the area is high, so the profit make because of)
  • a 1– a 2 is absolute 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 revenue spot a 1– a 2 > b 1– b 2, the higher than general of a 1– a 2 is procedure than b 1– b 2 pays instance, the less of the more than is since the loss of the futures. So the have trading defined In a similar way.

There is no is equal 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. brief, if a 1– a 2 setting 0, spot a 1– a 2 > b 1– b 2 is long, b 1– b 2 placement be a long-term than 0. technique, as long as the futures are fulfills conditions and the placement are operation revenue in As an example hedging following, which version the is among a 1– b 1 > a 2– b 2, the opening and closing instances get is the story hedging.

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