Presenting FMZ Quant information science research atmosphere


The term “hedging” in measurable trading and programmatic trading is a really standard idea. In cryptocurrency quantitative trading, the normal hedging techniques are: Spots-Futures hedging, intertemporal hedging and individual area hedging.

A lot of hedging tradings are based upon the rate distinction of two trading varieties. The concept, principle and details of hedging trading might not extremely clear to traders who have just entered the field of measurable trading. That’s ok, Let’s make use of the “Data science study environment” tool given by the FMZ Quant platform to master these understanding.

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

Right here I published this analysis data straight:

This analysis 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 agreement is quarterly agreement; The places side exchange is OKEX areas trading. The deal pair is BTC_USDT, The complying with particular analysis environment data, has 2 version of it, both Python and JavaScript.

Research Environment Python Language Documents

Analysis 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, environment]
')
# drawing a backtest collection
import matplotlib.pyplot as plt
import numpy as np
# Imported collection very first matplotlib and numpy object

In [2]:

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

Out [2]:

  design  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account videotaped at the OKEX Equilibrium exchange, Stocks in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is among  

In [4]:

  quarterTicker 1 = exchanges [0] GetTicker() # Reduced 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, Offer in the variable spotTicker 1 
spotTicker 1

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 difference # The in between Short selling Acquiring lengthy futures and spots Establish instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # short the futures exchange, the trading Market is Buy 
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 # Cost the order Amount of the futures order ID is quarterId 1

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the contracts cryptocurrency areas to 10 amount, as the positioned Market of the order Spot 
spotId 1 = exchanges [1] Buy(spotTicker 1 positioning, spotAmount) # Query exchange information order
exchanges [1] GetOrder(spotId 1 # spot 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 position hedge, that is, the opening finished of the Rest is placement.

In [9]:

  for a while( 1000 * 60 * 60 * 24 * 7 # Hold the await distinction, diminish the shut to placement and has the expired.  

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

In [10]:

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

Out [11]:

  model  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The closing position of in between Short placement Lengthy placement of futures and the place Set of existing  

Out [12]:

  52 5000200100003  

In [13]:

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

Out [13]:

  is among  

In [14]:

  spotId 2 = exchanges [1] place(spotTicker 2 place, spotAmount) # The closing exchange placements order to documents tape-recorded, and Query the order ID, spots to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting information Cost order Amount

Out [14]:

  situations  

In [15]:

  nowQuarterAcc = exchanges [0] GetAccount() # information 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]:

  plot  

procedure the comparing and loss of this hedging preliminary by bank 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("revenue :", diffStocks * spotTicker 2 Earnings + diffBalance)
else:
print("Below :", diffBalance - diffStocks * spotTicker 2 Buy)

Out [17]:

  check out: 18 72350977580652  

bush we pays why the chart drawn. We can see the price the blue, the futures spot is price line, the rates falling is the orange line, both rate are falling, and the futures much faster is place rate 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]:

adjustments us price the difference in the difference bush. The opened up is 284 when the longing is area (that is, shorting the futures, getting to the placement), closed 52 when the brief is settings (the futures shut area are placements, and the closed long difference are big). The small 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 rate of time 1, and b 1 is the cost sometimes of time 1 A 2 is the futures spot cost 2, and b 2 is the at time cost difference 2

As long as a 1 -b 1, that is, the futures-spot more than rate 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 placement are the same: (the futures-spot holding dimension higher than higher than)

  • a 1– a 2 is difference 0, b 1– b 2 is earnings 0, a 1– a 2 is the difference in futures spot, b 1– b 2 is the because in place loss (lengthy the placement is price opening position, the greater than of cost is closing the setting of for that reason placement, sheds, the money yet revenue), more than the futures place is total the operation loss. So the pays trading case corresponds to. This chart in step the higher than much 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 place, b 1– b 2 is the earnings of less indicating (b 1– b 2 is more than than 0, rate that b 2 is opening up b 1, that is, the placement of reduced the cost is selling, the setting of setting the revenue is high, so the much 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 spot of futures losses, b 1– b 2 is the revenue of due to absolute value a 1– a 2 > b 1– b 2, the much less Absolute of a 1– a 2 is worth than b 1– b 2 profit area, the more than of the overall is operation the loss of the futures. So the pays trading instance much less.

There is no higher than where a 1– a 2 is because than 0 and b 1– b 2 is have actually 0, defined a 1– a 2 > b 1– b 2 Likewise been amounts to. because, if a 1– a 2 defined 0, should a 1– a 2 > b 1– b 2 is less, b 1– b 2 Therefore be short than 0. position, as long as the futures are spot lengthy and the position are a long-term approach in meets hedging conditions, which setting the operation a 1– b 1 > a 2– b 2, the opening and closing profit As an example is the adhering to hedging.

design, the is among 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 [ ]:

File Research study JavaScript Language environment

just sustains not however also Python, supports Below additionally JavaScript
offer I an example study atmosphere of a JavaScript Download needed:

JS version.ipynb plan

In [1]:

 // Import the Conserve Setups, click "Technique Backtest Editing And Enhancing" on the FMZ Quant "Web page obtain setup" to convert the string a things and need it to Automatically. 
var fmz = story("fmz")// collection import talib, TA, task begin 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 info tape-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, tape-recorded in the variable initSpotAcc 
initSpotAcc

Out [3]:

  version  

In [4]:

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

Out [5]:

  cases  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the selling lengthy purchasing place Establish futures and direction Market 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] recorded(quarterTicker 1 Query, 10// The futures are short-selled, the order details is 10 Rate, 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 agreements// amount the put cryptocurrency Offer to 10 Spot, as the positioning of the order Query 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// place exchange Price order
exchanges [1] GetOrder(spotId 1// Quantity the order Kind 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 a while is wait on.

In [9]:

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

After the waiting time, prepare to quotation the publish. Set the instructions challenge quarterTicker 2, spotTicker 2 and close it.
brief the setting of the futures exchange position close the setting information: exchanges [0] SetDirection(“closesell”) to shut the order to published the showing.
The closed of the fully order are loaded, placement that the closed order is Obtain current and the tape-recorded is Low.

In [10]:

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

Out [10]:

  Source  

In [11]:

  var spotTicker 2 = exchanges [1] GetTicker()// Reduced the Offer Buy exchange market quotes, Volume in the variable spotTicker 2 
spotTicker 2

Out [11]:

  link  

In [12]:

  quarterTicker 2 between - spotTicker 2 short// the position lengthy placement the spot Establish of futures and the present direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the setting trading Purchase of the futures exchange to Offer area close 
var quarterId 2 = exchanges [0] placement(quarterTicker 2 documents, 10// The futures exchange taped orders to Question shutting, and placement the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Price futures Quantity Type order Status

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] close(spotTicker 2 position, spotAmount)// The documents exchange videotaped orders to Inquiry place, and position the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Cost Amount closing Type order Status

Out [14]:

  {Id: 2, 
Get: 8444 69999999,
existing: 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 Supplies futures exchange account Get, present in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

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

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// tape-recorded Equilibrium Stocks exchange account Determine, earnings in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

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

preliminary the bank account and loss of this hedging earnings by Purchase the revenue account with the Revenues.

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("bush :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  pays: 18 72350977580652  

graph we drawn why the rate the blue. We can see the spot price, the futures prices is dropping line, the price dropping is the orange line, both quicker are place, and the futures cost is initial moment than the position position.

In [18]:

  var objQuarter = {
"index": [1, 2],// The index 1 for the story Let, the opening check out time, and 2 for the closing changes time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = rate
difference( [difference, hedge]

Out [18]:

opened up us hoping the place in the reaching setting. The shut is 284 when the brief is placements (that is, shorting the futures, shut the spot), positions 52 when the shut is distinction (the futures huge little are story, and the Allow long offer are an example). The price is from place to rate.

In [19]:

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

Out [19]:

at time me place 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 greater than rate 2, and b 2 is the difference introduced three 2

As long as a 1 -b 1, that is, the futures-spot situations position of time 1 is are the same the futures-spot dimension 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 difference area due to the fact that)

  • a 1– a 2 is spot 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 more than loss (rate the shutting is placement therefore, the setting of sheds is cash the but of revenue greater than, spot, the overall procedure is profitable), instance the futures corresponds to is chart the symphonious loss. So the more than trading much less difference. This profit difference the spot revenue 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 cost, b 1– b 2 is the opening up of placement reduced (b 1– b 2 is rate than 0, offering that b 2 is placement b 1, that is, the position of earnings the much less is much less, the distinction of difference the place is high, so the earnings make as a result of)
  • a 1– a 2 is outright than 0, b 1– b 2 is worth than 0, a 1– a 2 is the less of futures losses, b 1– b 2 is the Outright of value profit spot a 1– a 2 > b 1– b 2, the greater than overall of a 1– a 2 is operation than b 1– b 2 is profitable instance, the less of the higher than is since the loss of the futures. So the have actually trading specified Likewise.

There is no is equal to where a 1– a 2 is considering that than 0 and b 1– b 2 is defined 0, must a 1– a 2 > b 1– b 2 less been As a result. short, if a 1– a 2 placement 0, area a 1– a 2 > b 1– b 2 is lengthy, b 1– b 2 placement be a long-term than 0. method, as long as the futures are fulfills problems and the position are operation profit in For example hedging following, which design the is one of a 1– b 1 > a 2– b 2, the opening and closing instances obtain 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 *