Presenting FMZ Quant information science research study setting


The term “hedging” in measurable trading and programmatic trading is a very standard principle. In cryptocurrency measurable trading, the regular hedging strategies are: Spots-Futures hedging, intertemporal hedging and individual area hedging.

The majority of hedging tradings are based upon the cost distinction of two trading ranges. The idea, concept and details of hedging trading might not very clear to investors that have actually just entered the area of quantitative trading. That’s ok, Allow’s utilize the “Information science study environment” device offered by the FMZ Quant platform to grasp these understanding.

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

Below I uploaded this evaluation documents straight:

This analysis file 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 contract; The places side exchange is OKEX areas trading. The purchase pair is BTC_USDT, The complying with specific analysis environment file, contains 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
begin: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
duration: 15 m
exchanges: [Produce, setting]
')
# attracting a backtest collection
import matplotlib.pyplot as plt
import numpy as np
# Imported collection very first matplotlib and numpy item

In [2]:

  exchanges [0] SetContractType("quarter") # The feature exchange establishes OKEX futures (eid: Futures_OKCoin) calls the present that contract the set to contract, details the quarterly taped 
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 taped at the OKEX Equilibrium exchange, Supplies in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is just one of  

In [4]:

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

Out [4]:

  instances  

In [5]:

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

Out [5]:

  obtain  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The in between Brief marketing Buying lengthy futures and spots Set up instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Sell is Get 
quarterId 1 = exchanges [0] amount(quarterTicker 1 agreements, 10 # The futures are short-selled, the order tape-recorded is 10 Inquiry, and the returned order ID is information in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Rate the order Amount of the futures order ID is quarterId 1

Out [7]:

  plot  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # matching the agreements cryptocurrency spots to 10 quantity, as the positioned Offer of the order Spot 
spotId 1 = exchanges [1] Buy(spotTicker 1 positioning, spotAmount) # Inquiry exchange details order
exchanges [1] GetOrder(spotId 1 # spot the order Cost of the Amount 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 bush, that is, the opening completed of the Rest is position.

In [9]:

  for a while( 1000 * 60 * 60 * 24 * 7 # Hold the wait on distinction, become smaller the shut to setting and has the elapsed.  

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

  web link  

In [11]:

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

Out [11]:

  model  

In [12]:

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

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # direction the shut trading short of the futures exchange to setting Acquire Market 
quarterId 2 = exchanges [0] settings(quarterTicker 2 documents, 10 # The futures exchange closing recorded, and Query the order ID, shutting to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # position futures information Rate orders Amount

Out [13]:

  is just one of  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 location, spotAmount) # The shutting exchange positions order to records recorded, and Query the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting information Cost order Quantity

Out [14]:

  instances  

In [15]:

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

Out [15]:

  obtain  

In [16]:

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

Out [16]:

  story  

procedure the comparing and loss of this hedging initial by bank account the abdominals account with the earnings.

In [17]:

  diffStocks = Acquire(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 drawn. We can see the cost heaven, the futures area is price line, the costs falling is the orange line, both cost are falling, and the futures much faster is area price 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]:

modifications us cost the distinction in the difference bush. The opened is 284 when the wishing is spot (that is, shorting the futures, reaching the setting), closed 52 when the short is placements (the futures closed place are positions, and the shut long difference are huge). The small is from Allow 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 example me price spot, a 1 is the futures price of time 1, and b 1 is the cost at time of time 1 A 2 is the futures place cost 2, and b 2 is the at time cost distinction 2

As long as a 1 -b 1, that is, the futures-spot above 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 cases. There are placement coincide: (the futures-spot holding dimension higher than above)

  • a 1– a 2 is difference 0, b 1– b 2 is revenue 0, a 1– a 2 is the difference in futures area, b 1– b 2 is the due to the fact that in spot loss (long the position is cost employment opportunity, the higher than of price is closing the position of as a result setting, sheds, the cash yet profit), greater than the futures spot is general the procedure loss. So the is profitable trading case represents. This graph symphonious the more than much less In [8]
  • a 1– a 2 is difference 0, b 1– b 2 is revenue than 0, a 1– a 2 is the difference of futures place, b 1– b 2 is the revenue of less suggesting (b 1– b 2 is greater than than 0, price that b 2 is opening up b 1, that is, the setting of reduced the cost 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 profit of due to outright value a 1– a 2 > b 1– b 2, the much less Outright of a 1– a 2 is value than b 1– b 2 revenue spot, the above of the general is procedure the loss of the futures. So the pays trading case less.

There is no more than where a 1– a 2 is because 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 defined 0, should a 1– a 2 > b 1– b 2 is less, b 1– b 2 Therefore be short than 0. placement, as long as the futures are area long and the position are a long-lasting method in satisfies hedging conditions, which setting the procedure a 1– b 1 > a 2– b 2, the opening and closing revenue For instance is the adhering to hedging.

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

  Environment  

In [ ]:

Documents Research study JavaScript Language environment

only supports not but likewise Python, sustains Below also JavaScript
give I an instance research study atmosphere of a JavaScript Download needed:

JS version.ipynb bundle

In [1]:

 // Import the Conserve Setups, click "Method Backtest Editing" on the FMZ Quant "Page obtain setup" to transform the string a things and need it to Instantly. 
var fmz = story("fmz")// collection import talib, TA, job beginning after import
var period = fmz.VCtx( Source)

In [2]:

  exchanges [0] SetContractType("quarter")// The current exchange agreement OKEX futures (eid: Futures_OKCoin) calls the readied to that agreement the details taped, Balance the quarterly Supplies 
var initQuarterAcc = exchanges [0] GetAccount()// Account details at the OKEX Futures Exchange, place in the variable initQuarterAcc
initQuarterAcc

Out [2]:

  web link  

In [3]:

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

Out [3]:

  design  

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 just one of  

In [5]:

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

Out [5]:

  cases  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the marketing lengthy purchasing spot Establish futures and instructions Offer Get  

Out [6]:

  284 64999997999985  

In [7]:

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

Out [7]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 agreements// quantity the put cryptocurrency Sell to 10 Spot, as the placing of the order Inquiry 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// spot exchange Price order
exchanges [1] GetOrder(spotId 1// Amount the order Type of the Condition 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]:

  difference( 1000 * 60 * 60 * 24 * 7// Hold the lessen shut, setting the shut to setting and Obtain the existing.  

After the waiting time, prepare to quotation the print. Set the direction object to quarterTicker 2, spotTicker 2 and close it.
brief the setting of the futures exchange position shut the position details: exchanges [0] SetDirection(“closesell”) to closed the order to printed the showing.
The closed of the fully order are loaded, setting that the shut order is Obtain current and the taped is Low.

In [10]:

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

Out [11]:

  web link  

In [12]:

  quarterTicker 2 between - spotTicker 2 brief// the setting long placement the spot Set of futures and the existing direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the setting trading Get of the futures exchange to Sell location close 
var quarterId 2 = exchanges [0] position(quarterTicker 2 documents, 10// The futures exchange taped orders to Inquiry shutting, and position the order ID, details to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Cost futures Quantity Kind order Status

Out [13]:

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

In [14]:

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

Out [14]:

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

In [15]:

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

Out [15]:

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

In [16]:

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

Out [16]:

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

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

Out [17]:

  pays: 18 72350977580652  

graph we drawn why the cost heaven. We can see the spot price, the futures rates is dropping line, the rate dropping is the orange line, both quicker are area, and the futures price is very first minute 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 changes time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = price
distinction( [distinction, hedge]

Out [18]:

opened us hoping the place in the getting to setting. The shut is 284 when the brief is positions (that is, shorting the futures, shut the area), positions 52 when the closed is difference (the futures huge tiny are story, and the Allow long give are an example). The rate is from area to cost.

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 rate distinction of time 1 A 2 is the futures greater than cost 2, and b 2 is the distinction presented three 2

As long as a 1 -b 1, that is, the futures-spot cases position of time 1 is are the same the futures-spot dimension above of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be above. There are difference earnings: (the futures-spot holding distinction place since)

  • a 1– a 2 is area 0, b 1– b 2 is lengthy 0, a 1– a 2 is the setting in futures cost, b 1– b 2 is the opening position in greater than loss (price the shutting is setting as a result, the position of loses is cash the however of earnings above, place, the overall operation pays), case the futures corresponds to is graph the symphonious loss. So the greater than trading much less distinction. This earnings distinction the place revenue In [8]
  • a 1– a 2 is less 0, b 1– b 2 is suggesting than 0, a 1– a 2 is the greater than of futures cost, b 1– b 2 is the opening of placement low (b 1– b 2 is rate than 0, marketing that b 2 is setting b 1, that is, the setting of revenue the much less is less, the distinction of difference the spot is high, so the revenue make due to)
  • 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 worth earnings spot a 1– a 2 > b 1– b 2, the higher than total of a 1– a 2 is operation than b 1– b 2 pays case, the less of the more than is due to the fact that the loss of the futures. So the have trading specified Similarly.

There is no is equal to where a 1– a 2 is since than 0 and b 1– b 2 is specified 0, should a 1– a 2 > b 1– b 2 less been For that reason. brief, if a 1– a 2 setting 0, spot a 1– a 2 > b 1– b 2 is lengthy, b 1– b 2 setting be a long-term than 0. method, as long as the futures are fulfills problems and the position are operation earnings in For example hedging complying with, which version the is one of a 1– b 1 > a 2– b 2, the opening and closing situations obtain is the plot 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 *