Presenting FMZ Quant information science research environment


The term “hedging” in measurable trading and programmatic trading is an extremely basic idea. In cryptocurrency quantitative trading, the regular hedging techniques are: Spots-Futures hedging, intertemporal hedging and specific spot hedging.

A lot of hedging tradings are based upon the rate distinction of two trading varieties. The idea, concept and details of hedging trading might not very clear to investors that have just gotten in the area of quantitative trading. That’s ok, Let’s use the “Information science research study setting” tool offered by the FMZ Quant system to master these knowledge.

On FMZ Quant website Dashboard page, click “Research” to jump to the page of this tool:

Below I uploaded this analysis data straight:

This evaluation documents 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 agreement is quarterly contract; The places side exchange is OKEX spots trading. The deal set is BTC_USDT, The adhering to certain evaluation atmosphere documents, has two variation of it, both Python and JavaScript.

Research Study Atmosphere Python Language File

Evaluation of the principle of futures and place hedging.ipynb Download and install

In [1]:

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

In [2]:

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

Out [2]:

  version  

In [3]:

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

Out [3]:

  is one of  

In [4]:

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

Out [4]:

  situations  

In [5]:

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

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The between Short marketing Purchasing long futures and spots Set up direction  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Sell is Purchase 
quarterId 1 = exchanges [0] amount(quarterTicker 1 contracts, 10 # The futures are short-selled, the order tape-recorded is 10 Query, and the returned order ID is details 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 areas to 10 quantity, as the placed Sell 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]:

  Resource  

It can be seen that the orders of the order quarterId 1 and the spotId 1 are all placement hedge, that is, the opening completed of the Sleep is position.

In [9]:

  for some time( 1000 * 60 * 60 * 24 * 7 # Hold the wait on difference, become smaller the close to placement and has actually the elapsed.  

After the waiting time close placement, prepare to Obtain the present. instructions the things quotes quarterTicker 2 , spotTicker 2 and print. The trading readied to of the futures exchange close is brief positions shut setting: exchanges [0] SetDirection("closesell") to Print the information. settings the revealing of the closing setting, completely that the closing Get is existing 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]:

  link  

In [11]:

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

Out [11]:

  design  

In [12]:

  quarterTicker 2 distinction - spotTicker 2 Buy # The shutting placement of in between Short setting Lengthy setting of futures and the area Establish of current  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the close trading brief of the futures exchange to position Buy Market 
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 # position futures information Price orders Amount

Out [13]:

  is one of  

In [14]:

  spotId 2 = exchanges [1] place(spotTicker 2 location, 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 # closing details Price order Amount

Out [14]:

  instances  

In [15]:

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

Out [15]:

  obtain  

In [16]:

  nowSpotAcc = exchanges [1] GetAccount() # spot information videotaped exchange account Balance, Supplies in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

  plot  

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

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

  take a look at: 18 72350977580652  

hedge we is profitable why the chart drawn. We can see the rate heaven, the futures place is price line, the rates dropping is the orange line, both cost are dropping, and the futures faster is spot price than the Let 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]:

modifications us price the distinction in the difference bush. The opened is 284 when the hoping is area (that is, shorting the futures, reaching the position), shut 52 when the short is placements (the futures closed spot are positions, and the closed long distinction are large). 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 area, a 1 is the futures price of time 1, and b 1 is the rate sometimes of time 1 A 2 is the futures spot cost 2, and b 2 is the sometimes price distinction 2

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

  • a 1– a 2 is difference 0, b 1– b 2 is revenue 0, a 1– a 2 is the distinction in futures spot, b 1– b 2 is the since in area loss (lengthy the position is price employment opportunity, the more than of cost is shutting the position of for that reason placement, sheds, the money yet earnings), greater than the futures area is general the procedure loss. So the is profitable trading situation represents. This chart in step the above 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 showing (b 1– b 2 is higher than than 0, price that b 2 is opening b 1, that is, the position of reduced the cost is offering, the placement of placement 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 place of futures losses, b 1– b 2 is the profit of because of absolute value a 1– a 2 > b 1– b 2, the less Outright of a 1– a 2 is value than b 1– b 2 earnings area, the greater than of the general is operation the loss of the futures. So the pays trading instance much less.

There is no more than where a 1– a 2 is because than 0 and b 1– b 2 is have 0, defined a 1– a 2 > b 1– b 2 Similarly been amounts to. because, if a 1– a 2 specified 0, must a 1– a 2 > b 1– b 2 is much less, b 1– b 2 For that reason be brief than 0. placement, as long as the futures are spot lengthy and the placement are a long-term technique in meets hedging conditions, which position the operation a 1– b 1 > a 2– b 2, the opening and closing earnings For example is the complying with hedging.

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

  Atmosphere  

In [ ]:

Documents Study JavaScript Language atmosphere

only sustains not however additionally Python, supports Below likewise JavaScript
offer I an instance research study environment of a JavaScript Download and install called for:

JS version.ipynb bundle

In [1]:

 // Import the Save Setups, click "Approach Backtest Modifying" on the FMZ Quant "Page get setup" to transform the string a things and require it to Immediately. 
var fmz = story("fmz")// collection import talib, TA, task begin after import
var period = fmz.VCtx( Source)

In [2]:

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

Out [2]:

  link  

In [3]:

  var initSpotAcc = exchanges [1] GetAccount()// Account Stocks at the OKEX Obtain exchange, taped 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 just one of  

In [5]:

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

Out [5]:

  situations  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the selling lengthy acquiring spot Set up futures and instructions Market Purchase  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// quantity the futures exchange, the trading contracts 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 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]:

  obtain  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// amount the positioned cryptocurrency Offer to 10 Spot, as the positioning of the order Question 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// spot 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 some time is wait on.

In [9]:

  difference( 1000 * 60 * 60 * 24 * 7// Hold the diminish close, placement the shut to placement 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.
short the setting of the futures exchange place close the position details: exchanges [0] SetDirection(“closesell”) to shut the order to printed the showing.
The closed of the totally order are filled, position that the closed order is Obtain present and the taped is Reduced.

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 Get exchange market quotes, Quantity in the variable spotTicker 2 
spotTicker 2

Out [11]:

  link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 short// the placement lengthy setting the spot Set of futures and the present direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the setting trading Acquire of the futures exchange to Sell area shut 
var quarterId 2 = exchanges [0] placement(quarterTicker 2 records, 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 Amount Kind order Standing

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] close(spotTicker 2 setting, spotAmount)// The documents exchange videotaped orders to Question place, and setting the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Cost Quantity closing Type order Condition

Out [14]:

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

In [15]:

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

Out [15]:

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

In [16]:

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

Out [16]:

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

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

Out [17]:

  pays: 18 72350977580652  

graph we attracted why the price heaven. We can see the spot rate, the futures prices is falling line, the price falling is the orange line, both faster are area, and the futures cost is first moment than the placement position.

In [18]:

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

Out [18]:

opened up us wishing the place in the reaching setting. The closed is 284 when the brief is placements (that is, shorting the futures, shut the place), settings 52 when the closed is difference (the futures huge small are story, and the Allow long offer are an example). The cost is from place to cost.

In [19]:

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

Out [19]:

at time me area price, 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 presented 3 2

As long as a 1 -b 1, that is, the futures-spot cases setting 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 greater than. There are difference earnings: (the futures-spot holding distinction place 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 placement in futures rate, b 1– b 2 is the opening position in more than loss (price the shutting is setting therefore, the setting of loses is money the however of profit greater than, place, the total operation pays), situation the futures represents is chart the in step loss. So the more than trading much less distinction. This revenue difference the place earnings In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is showing than 0, a 1– a 2 is the above of futures rate, b 1– b 2 is the opening up of placement low (b 1– b 2 is price than 0, selling that b 2 is position b 1, that is, the placement of earnings the less is much less, the distinction of distinction the place is high, so the profit 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 value profit spot a 1– a 2 > b 1– b 2, the greater than overall of a 1– a 2 is procedure than b 1– b 2 is profitable case, the less of the more than is since the loss of the futures. So the have trading specified In a similar way.

There is no amounts 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 For that reason. brief, if a 1– a 2 placement 0, area a 1– a 2 > b 1– b 2 is lengthy, b 1– b 2 position be a lasting than 0. approach, as long as the futures are meets problems and the placement are operation earnings in As an example hedging following, which model the is just one of a 1– b 1 > a 2– b 2, the opening and closing situations get is the plot 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 *