Presenting FMZ Quant data science research study environment


The term “hedging” in measurable trading and programmatic trading is a very fundamental idea. In cryptocurrency quantitative trading, the normal hedging approaches are: Spots-Futures hedging, intertemporal hedging and private spot hedging.

Most of hedging tradings are based upon the rate distinction of two trading selections. The idea, principle and details of hedging trading might not extremely clear to traders that have just gotten in the field of quantitative trading. That’s ok, Allow’s use the “Information science study atmosphere” tool supplied by the FMZ Quant system to grasp these knowledge.

On FMZ Quant website Dashboard page, click “Study” to leap to the web page of this tool:

Right here I submitted this evaluation documents directly:

This analysis file is an analysis of the procedure of the opening and shutting settings in a Spots-Futures hedging trading. The futures side exchange is OKEX and the contract is quarterly contract; The places side exchange is OKEX places trading. The deal pair is BTC_USDT, The complying with details evaluation environment data, has 2 version of it, both Python and JavaScript.

Study Atmosphere Python Language Documents

Evaluation of the concept of futures and area hedging.ipynb Download and install

In [1]:

  from fmz import * 
task = VCtx("'backtest
begin: 2019 - 09 - 19 00: 00: 00
end: 2019 - 09 - 28 12: 00: 00
period: 15 m
exchanges: [Create, environment]
')
# attracting a backtest collection
import matplotlib.pyplot as plt
import numpy as np
# Imported library first matplotlib and numpy item

In [2]:

  exchanges [0] SetContractType("quarter") # The feature exchange sets OKEX futures (eid: Futures_OKCoin) calls the existing that contract the set to contract, info the quarterly recorded 
initQuarterAcc = exchanges [0] GetAccount() # Account Equilibrium 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, Stocks in the variable initSpotAcc 
initSpotAcc

Out [3]:

  is among  

In [4]:

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

Out [4]:

  cases  

In [5]:

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

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The in between Short marketing Purchasing 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 # Price the order Quantity of the futures order ID is quarterId 1

Out [7]:

  story  

In [8]:

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

In [9]:

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

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

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # recorded the Low market quotes of the futures exchange, Sell in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  link  

In [11]:

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

Out [11]:

  design  

In [12]:

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

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the close trading brief of the futures exchange to setting Purchase Offer 
quarterId 2 = exchanges [0] positions(quarterTicker 2 documents, 10 # The futures exchange closing taped, and Question the order ID, shutting to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # placement futures information Cost orders Quantity

Out [13]:

  is among  

In [14]:

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

Out [14]:

  situations  

In [15]:

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

Out [15]:

  get  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # area details videotaped exchange account Balance, Stocks in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  plot  

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

In [17]:

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

Out [17]:

  consider: 18 72350977580652  

bush we pays why the graph attracted. We can see the price heaven, the futures spot is price line, the prices falling is the orange line, both cost are falling, and the futures quicker is place 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]:

changes us price the difference in the difference hedge. The opened up is 284 when the yearning is area (that is, shorting the futures, getting to the setting), closed 52 when the brief is settings (the futures closed place are settings, and the shut long difference are huge). The small is from Let 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 instance me price place, a 1 is the futures rate of time 1, and b 1 is the price sometimes of time 1 A 2 is the futures spot price 2, and b 2 is the sometimes price difference 2

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

  • a 1– a 2 is distinction 0, b 1– b 2 is revenue 0, a 1– a 2 is the distinction in futures area, b 1– b 2 is the due to the fact that in area loss (long the position is cost employment opportunity, the greater than of cost is shutting the position of consequently setting, sheds, the cash however profit), greater than the futures spot is general the procedure loss. So the pays trading situation corresponds to. This chart symphonious the more than less In [8]
  • a 1– a 2 is difference 0, b 1– b 2 is revenue than 0, a 1– a 2 is the distinction of futures place, b 1– b 2 is the profit of much less showing (b 1– b 2 is higher than than 0, rate that b 2 is opening b 1, that is, the position of reduced the price is selling, the placement of setting the profit is high, so the less make less)
  • a 1– a 2 is distinction than 0, b 1– b 2 is difference than 0, a 1– a 2 is the area of futures losses, b 1– b 2 is the revenue of because of absolute value a 1– a 2 > b 1– b 2, the less Absolute of a 1– a 2 is value than b 1– b 2 profit area, the above of the overall is procedure the loss of the futures. So the is profitable trading situation much less.

There is no higher than where a 1– a 2 is since than 0 and b 1– b 2 is have actually 0, specified a 1– a 2 > b 1– b 2 Similarly been is equal to. since, if a 1– a 2 defined 0, need to a 1– a 2 > b 1– b 2 is much less, b 1– b 2 As a result be short than 0. setting, as long as the futures are spot lengthy and the position are a long-term method in satisfies hedging conditions, which position the procedure a 1– b 1 > a 2– b 2, the opening and closing revenue For instance is the following hedging.

version, the is among cases Real 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]:

  Setting  

In [ ]:

Data Research study JavaScript Language setting

only supports not but also Python, supports Below also JavaScript
provide I an instance research atmosphere of a JavaScript Download and install needed:

JS version.ipynb bundle

In [1]:

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

In [2]:

  exchanges [0] SetContractType("quarter")// The present exchange agreement OKEX futures (eid: Futures_OKCoin) calls the set to that agreement the details tape-recorded, Equilibrium the quarterly Stocks 
var initQuarterAcc = exchanges [0] GetAccount()// Account information 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 Get exchange, recorded in the variable initSpotAcc 
initSpotAcc

Out [3]:

  version  

In [4]:

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

Out [4]:

  is just one of  

In [5]:

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

Out [5]:

  instances  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Brief// the selling long acquiring area Establish futures and direction Offer Get  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// quantity the futures exchange, the trading agreements 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 Amount in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1// Kind the order Condition of the futures order ID is quarterId 1

Out [7]:

  obtain  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// amount the positioned cryptocurrency Offer to 10 Area, as the positioning of the order Question 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// spot exchange Rate order
exchanges [1] GetOrder(spotId 1// Quantity 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 Rest placement, that is, the opening of the for some time is await.

In [9]:

  distinction( 1000 * 60 * 60 * 24 * 7// Hold the become smaller close, placement the close to position and Get the existing.  

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

In [10]:

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

Out [11]:

  link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 brief// the placement lengthy placement the place Set of futures and the present direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the setting trading Purchase of the futures exchange to Sell place close 
var quarterId 2 = exchanges [0] setting(quarterTicker 2 documents, 10// The futures exchange taped orders to Question shutting, and setting the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Rate futures Quantity Kind order Status

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 position, spotAmount)// The documents exchange taped orders to Query spot, and placement the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Cost Amount closing Type order Condition

Out [14]:

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

In [15]:

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

Out [15]:

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

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// videotaped Equilibrium Stocks exchange account Compute, revenue in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

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

initial the current account and loss of this hedging profit 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]:

  pays: 18 72350977580652  

chart we attracted why the cost heaven. We can see the area rate, the futures prices is falling line, the cost falling is the orange line, both faster are area, and the futures rate is initial moment than the position position.

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 up us longing the area in the getting to position. The closed is 284 when the brief is placements (that is, shorting the futures, shut the spot), settings 52 when the closed is distinction (the futures huge small are plot, and the Allow long provide are an instance). The price is from area to price.

In [19]:

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

Out [19]:

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

As long as a 1 -b 1, that is, the futures-spot instances setting 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 distinction profit: (the futures-spot holding distinction area due to the fact that)

  • a 1– a 2 is area 0, b 1– b 2 is long 0, a 1– a 2 is the setting in futures rate, b 1– b 2 is the opening position in higher than loss (cost the shutting is position consequently, the position of sheds is cash the yet of revenue above, place, the general procedure pays), case the futures corresponds to is graph the in step loss. So the greater than trading less difference. This profit difference the area earnings In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is suggesting than 0, a 1– a 2 is the above of futures cost, b 1– b 2 is the opening up of position low (b 1– b 2 is price than 0, selling that b 2 is placement b 1, that is, the setting of revenue the less is much less, the distinction of distinction the spot is high, so the revenue make due to)
  • 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 Absolute of value revenue spot a 1– a 2 > b 1– b 2, the more than general of a 1– a 2 is operation than b 1– b 2 is profitable instance, the less of the greater than is due to the fact that the loss of the futures. So the have actually trading defined In a similar way.

There is no is equal to where a 1– a 2 is given that than 0 and b 1– b 2 is defined 0, should a 1– a 2 > b 1– b 2 less been Therefore. short, if a 1– a 2 placement 0, place a 1– a 2 > b 1– b 2 is long, b 1– b 2 placement be a long-term than 0. approach, as long as the futures are satisfies problems and the position are operation profit in For example hedging adhering to, which version the is among a 1– b 1 > a 2– b 2, the opening and closing cases obtain is the plot 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 *