Presenting FMZ Quant information science study environment


The term “hedging” in measurable trading and programmatic trading is a really basic principle. In cryptocurrency quantitative trading, the typical hedging methods are: Spots-Futures hedging, intertemporal hedging and private spot hedging.

A lot of hedging tradings are based upon the rate difference of 2 trading varieties. The idea, principle and details of hedging trading may not extremely clear to traders who have actually simply entered the field of quantitative trading. That’s ok, Allow’s use the “Data science study setting” tool given by the FMZ Quant platform to master these understanding.

On FMZ Quant website Control panel web page, click on “Study” to jump to the page of this device:

Here I uploaded this analysis file directly:

This analysis data is an evaluation of the procedure of the opening and closing settings in a Spots-Futures hedging trading. The futures side exchange is OKEX and the contract is quarterly contract; The areas side exchange is OKEX places trading. The purchase pair is BTC_USDT, The adhering to details analysis atmosphere data, includes two version of it, both Python and JavaScript.

Study Setting Python Language File

Evaluation of the principle of futures and area hedging.ipynb Download

In [1]:

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

In [2]:

  exchanges [0] SetContractType("quarter") # The feature exchange establishes OKEX futures (eid: Futures_OKCoin) calls the existing that contract the readied to contract, information the quarterly recorded 
initQuarterAcc = exchanges [0] GetAccount() # Account Balance at the OKEX Futures Exchange, Stocks 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 just 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]:

  situations  

In [5]:

  spotTicker 1 = exchanges [1] GetTicker() # videotaped the Low 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 Brief selling Acquiring lengthy futures and areas Set up instructions  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Offer is Purchase 
quarterId 1 = exchanges [0] quantity(quarterTicker 1 agreements, 10 # The futures are short-selled, the order recorded is 10 Question, and the returned order ID is information in the variable quarterId 1
exchanges [0] GetOrder(quarterId 1 # Price the order Amount of the futures order ID is quarterId 1

Out [7]:

  plot  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the contracts cryptocurrency spots to 10 amount, as the put Offer of the order Place 
spotId 1 = exchanges [1] Buy(spotTicker 1 positioning, spotAmount) # Inquiry exchange information 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 setting bush, that is, the opening finished of the Sleep is setting.

In [9]:

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

After the waiting time close setting, 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 settings shut position: exchanges [0] SetDirection("closesell") to Print the information. placements the revealing of the closing position, totally that the closing Get is existing 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]:

  web link  

In [11]:

  spotTicker 2 = exchanges [1] GetTicker() # place the recorded Low exchange market quotes, Market 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 position Long placement of futures and the place Set of existing  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the shut trading brief of the futures exchange to setting Get Market 
quarterId 2 = exchanges [0] positions(quarterTicker 2 records, 10 # The futures exchange closing recorded, and Inquiry the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # setting futures detail Price orders Amount

Out [13]:

  is just one of  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 area, spotAmount) # The closing exchange positions order to records videotaped, and Query the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # closing details Rate order Quantity

Out [14]:

  instances  

In [15]:

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

Out [15]:

  obtain  

In [16]:

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

Out [16]:

  plot  

procedure the contrasting and loss of this hedging initial by current account the abs account with the profit.

In [17]:

  diffStocks = Purchase(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]:

  check out: 18 72350977580652  

bush we is profitable why the chart drawn. We can see the cost heaven, the futures area is price line, the rates falling is the orange line, both cost are falling, and the futures quicker is area cost 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]:

adjustments us cost the distinction in the distinction bush. The opened is 284 when the wishing is spot (that is, shorting the futures, getting to the setting), shut 52 when the brief is placements (the futures closed place are settings, and the closed long difference are huge). The tiny 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 example me rate place, 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 spot price 2, and b 2 is the at time price difference 2

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

  • a 1– a 2 is distinction 0, b 1– b 2 is earnings 0, a 1– a 2 is the distinction in futures spot, b 1– b 2 is the because in spot loss (long the placement is rate opening position, the higher than of cost is shutting the setting of as a result setting, sheds, the money however earnings), above the futures spot is total the procedure loss. So the pays trading case corresponds to. This graph symphonious the higher 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 area, b 1– b 2 is the profit of much less indicating (b 1– b 2 is greater than than 0, rate that b 2 is opening b 1, that is, the setting of low the cost is selling, the position of placement the revenue is high, so the much less make 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 revenue of because of absolute value a 1– a 2 > b 1– b 2, the much less Absolute of a 1– a 2 is value than b 1– b 2 earnings area, the greater than of the overall is operation the loss of the futures. So the is profitable trading situation less.

There is no more 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 Similarly been amounts to. considering that, if a 1– a 2 defined 0, need to 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 spot lengthy and the placement are a lasting technique in fulfills hedging problems, which placement the procedure a 1– b 1 > a 2– b 2, the opening and closing profit As an example is the complying with hedging.

model, the is just one of instances 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 [ ]:

Data Research JavaScript Language environment

just supports not but likewise Python, supports Listed below additionally JavaScript
offer I an example research study environment of a JavaScript Download and install required:

JS version.ipynb package

In [1]:

 // Import the Conserve Settings, click "Technique Backtest Modifying" on the FMZ Quant "Page get configuration" to transform the string an object and call for it to Automatically. 
var fmz = plot("fmz")// collection import talib, TA, task beginning after import
var period = fmz.VCtx( Resource)

In [2]:

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

Out [2]:

  web link  

In [3]:

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

Out [3]:

  model  

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

In [5]:

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

Out [5]:

  situations  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the selling lengthy acquiring area Set up futures and instructions Sell 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] recorded(quarterTicker 1 Question, 10// The futures are short-selled, the order information is 10 Rate, 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 agreements// quantity the placed cryptocurrency Market to 10 Area, as the placing of the order Question 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// area exchange Price order
exchanges [1] GetOrder(spotId 1// Quantity the order Kind of the Status 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 await.

In [9]:

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

After the waiting time, prepare to quotation the publish. Establish the instructions challenge quarterTicker 2, spotTicker 2 and shut it.
short the position of the futures exchange place shut the placement information: exchanges [0] SetDirection(“closesell”) to closed the order to published the showing.
The closed of the completely order are filled, position that the closed order is Get current and the recorded is Reduced.

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Sell the Buy market quote of the futures exchange, Quantity in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  Source  

In [11]:

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

Out [11]:

  web link  

In [12]:

  quarterTicker 2 between - spotTicker 2 short// the setting long position the area Set of futures and the current direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// short the setting trading Purchase of the futures exchange to Market place shut 
var quarterId 2 = exchanges [0] setting(quarterTicker 2 documents, 10// The futures exchange videotaped orders to Inquiry shutting, and placement the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Price futures Quantity Type order Standing

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 placement, spotAmount)// The records exchange recorded orders to Question place, and setting the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Rate Amount closing Kind order Status

Out [14]:

  {Id: 2, 
Get: 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 Supplies futures exchange account Obtain, current in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

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

In [16]:

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

Out [16]:

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

first the current account and loss of this hedging earnings by Get the profit 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("Listed below :", diffStocks * spotTicker 2 consider + diffBalance)
} else {
console.log("bush :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  is profitable: 18 72350977580652  

chart we drawn why the cost the blue. We can see the area price, the futures costs is falling line, the rate falling is the orange line, both quicker are spot, and the futures rate is first minute than the setting 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 adjustments time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = rate
difference( [difference, hedge]

Out [18]:

opened us longing the place in the reaching position. The closed is 284 when the short is settings (that is, shorting the futures, closed the place), settings 52 when the closed is difference (the futures huge little are plot, and the Allow long give are an example). The rate is from place to cost.

In [19]:

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

Out [19]:

sometimes me place 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 more 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 position of time 1 is coincide the futures-spot dimension more than of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be more than. There are distinction revenue: (the futures-spot holding difference spot due to the fact that)

  • a 1– a 2 is place 0, b 1– b 2 is long 0, a 1– a 2 is the position in futures cost, b 1– b 2 is the employment opportunity in more than loss (rate the closing is setting for that reason, the placement of sheds is cash the however of revenue higher than, place, the general procedure pays), instance the futures corresponds to is chart the in step loss. So the above trading less distinction. This revenue distinction the spot profit In [8]
  • a 1– a 2 is less 0, b 1– b 2 is showing than 0, a 1– a 2 is the above of futures price, b 1– b 2 is the opening of placement reduced (b 1– b 2 is price than 0, marketing that b 2 is setting b 1, that is, the placement of revenue the less is much less, the distinction of difference the spot is high, so the revenue make as a result of)
  • a 1– a 2 is outright than 0, b 1– b 2 is value than 0, a 1– a 2 is the much less of futures losses, b 1– b 2 is the Absolute of value earnings place a 1– a 2 > b 1– b 2, the above total of a 1– a 2 is operation than b 1– b 2 is profitable case, the much less of the higher than is because the loss of the futures. So the have trading specified Likewise.

There is no amounts to where a 1– a 2 is considering that than 0 and b 1– b 2 is specified 0, have to a 1– a 2 > b 1– b 2 much less been As a result. short, if a 1– a 2 setting 0, area a 1– a 2 > b 1– b 2 is long, b 1– b 2 setting be a long-term than 0. technique, as long as the futures are meets problems and the setting are operation revenue in For instance hedging following, which model the is among a 1– b 1 > a 2– b 2, the opening and closing cases obtain 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 *