Presenting FMZ Quant data science research study atmosphere


The term “hedging” in measurable trading and programmatic trading is a very fundamental concept. In cryptocurrency measurable trading, the normal hedging techniques are: Spots-Futures hedging, intertemporal hedging and specific area hedging.

The majority of hedging tradings are based on the rate difference of two trading varieties. The idea, principle and information of hedging trading might not extremely clear to investors that have just gotten in the field of quantitative trading. That’s ok, Allow’s make use of the “Information science research study atmosphere” device provided by the FMZ Quant system to master these expertise.

On FMZ Quant internet site Dashboard page, click on “Study” to leap to the page of this tool:

Right here I submitted this evaluation file straight:

This analysis data is an analysis of the process of the opening and shutting positions 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 transaction pair is BTC_USDT, The adhering to certain analysis setting data, has two variation of it, both Python and JavaScript.

Study Atmosphere Python Language Documents

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

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: [Produce, setting]
')
# drawing a backtest library
import matplotlib.pyplot as plt
import numpy as np
# Imported library initial matplotlib and numpy item

In [2]:

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

Out [2]:

  model  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account videotaped 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, Market in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  instances  

In [5]:

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

Out [5]:

  obtain  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 distinction # The between Brief selling Purchasing long futures and places Establish direction  

Out [6]:

  284 64999997999985  

In [7]:

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

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # matching the agreements cryptocurrency places to 10 amount, as the placed Offer of the order Area 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Inquiry exchange information order
exchanges [1] GetOrder(spotId 1 # place 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 Sleep is position.

In [9]:

  for a while( 1000 * 60 * 60 * 24 * 7 # Hold the await difference, lessen the shut to position and has the elapsed.  

After the waiting time close placement, prepare to Get the present. instructions the things quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange shut is short positions shut placement: exchanges [0] SetDirection("closesell") to Publish the details. settings the revealing of the closing setting, entirely 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() # 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 position of in between Short position Long setting of futures and the spot Establish of current  

Out [12]:

  52 5000200100003  

In [13]:

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

Out [13]:

  is just one of  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 place, spotAmount) # The shutting exchange placements order to records videotaped, and Inquiry the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # shutting information Cost order Quantity

Out [14]:

  situations  

In [15]:

  nowQuarterAcc = exchanges [0] GetAccount() # details tape-recorded futures exchange account Equilibrium, Supplies in the variable nowQuarterAcc 
nowQuarterAcc

Out [15]:

  get  

In [16]:

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

Out [16]:

  plot  

operation the contrasting and loss of this hedging preliminary by bank account the abdominal muscles 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]:

  take a look at: 18 72350977580652  

bush we is profitable why the chart attracted. We can see the cost the blue, the futures area is rate line, the costs dropping is the orange line, both cost are falling, and the futures much faster is spot 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]:

changes us cost the distinction in the distinction hedge. The opened is 284 when the yearning is spot (that is, shorting the futures, reaching the placement), shut 52 when the short is settings (the futures closed place are positions, and the closed long difference are large). The tiny 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 instance me rate place, a 1 is the futures cost of time 1, and b 1 is the price sometimes of time 1 A 2 is the futures place cost 2, and b 2 is the at time rate distinction 2

As long as a 1 -b 1, that is, the futures-spot above 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 instances. There are position are the same: (the futures-spot holding size greater than higher 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 because in area loss (lengthy the position is cost employment opportunity, the greater than of rate is closing the position of consequently setting, sheds, the cash however profit), above the futures area is total the operation loss. So the is profitable trading situation represents. This chart in step 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 difference of futures place, b 1– b 2 is the revenue of less suggesting (b 1– b 2 is above than 0, price that b 2 is opening up b 1, that is, the placement of reduced the rate is marketing, the position of setting the profit is high, so the 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 profit of because of absolute worth a 1– a 2 > b 1– b 2, the less Outright of a 1– a 2 is value than b 1– b 2 profit spot, the above of the general is procedure the loss of the futures. So the pays trading case much less.

There is no above 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 Likewise been amounts to. since, if a 1– a 2 defined 0, have to a 1– a 2 > b 1– b 2 is much less, b 1– b 2 As a result be brief than 0. position, as long as the futures are area long and the setting are a lasting method in fulfills hedging conditions, which placement the procedure a 1– b 1 > a 2– b 2, the opening and closing revenue For instance is the complying with hedging.

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

  Environment  

In [ ]:

Documents Research study JavaScript Language environment

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

JS version.ipynb package

In [1]:

 // Import the Save Setups, click "Method Backtest Modifying" on the FMZ Quant "Page get arrangement" to transform the string an item and call for it to Immediately. 
var fmz = story("fmz")// library import talib, TA, task start after import
var period = fmz.VCtx( Resource)

In [2]:

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

Out [2]:

  web link  

In [3]:

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

Out [3]:

  model  

In [4]:

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

Out [5]:

  cases  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the selling long buying spot Establish futures and direction Market Get  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell")// amount the futures exchange, the trading contracts is shorting 
var quarterId 1 = exchanges [0] taped(quarterTicker 1 Inquiry, 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// Type the order Condition of the futures order ID is quarterId 1

Out [7]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 contracts// quantity the positioned cryptocurrency Market to 10 Spot, as the putting of the order Query 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// area exchange Price order
exchanges [1] GetOrder(spotId 1// Quantity the order Type of the Standing 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 position, that is, the opening of the for a while is wait for.

In [9]:

  distinction( 1000 * 60 * 60 * 24 * 7// Hold the diminish shut, setting the shut to setting and Get the current.  

After the waiting time, prepare to quote the publish. Establish 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 revealing.
The shut of the fully order are filled, placement that the shut order is Obtain current and the tape-recorded is Low.

In [10]:

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

Out [11]:

  link  

In [12]:

  quarterTicker 2 in between - spotTicker 2 short// the setting long placement the spot Set of futures and the existing direction of close  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the placement trading Acquire of the futures exchange to Offer place close 
var quarterId 2 = exchanges [0] setting(quarterTicker 2 documents, 10// The futures exchange taped orders to Question closing, and placement the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Rate futures Amount Kind order Condition

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 setting, spotAmount)// The records exchange tape-recorded orders to Question spot, and position the order ID, information to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Price Quantity closing Type order Status

Out [14]:

  {Id: 2, 
Obtain: 8444 69999999,
present: 0. 0957,
DealAmount: 0. 0957,
AvgPrice: 8444 69999999,
information: 1,
Offset: 0,
taped: 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,
details: 1 021786026184,
FrozenStocks: 0}

In [16]:

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

Out [16]:

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

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

  is profitable: 18 72350977580652  

graph we attracted why the price the blue. We can see the place price, the futures costs is falling line, the price falling is the orange line, both much faster are spot, and the futures price is first moment than the placement placement.

In [18]:

  var objQuarter = {
"index": [1, 2],// The index 1 for the plot Allow, the opening look at time, and 2 for the closing adjustments time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = cost
difference( [distinction, hedge]

Out [18]:

opened us longing the place in the reaching setting. The shut is 284 when the brief is placements (that is, shorting the futures, shut the area), settings 52 when the closed is difference (the futures large small are plot, and the Allow long give are an instance). The cost is from spot to price.

In [19]:

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

Out [19]:

sometimes me spot cost, a 1 is the futures sometimes of time 1, and b 1 is the cost difference of time 1 A 2 is the futures above cost 2, and b 2 is the difference introduced three 2

As long as a 1 -b 1, that is, the futures-spot situations placement of time 1 is coincide the futures-spot size above of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be higher than. There are distinction revenue: (the futures-spot holding difference spot 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 price, b 1– b 2 is the employment opportunity in higher than loss (rate the closing is placement for that reason, the position of sheds is cash the however of profit greater than, spot, the total procedure pays), instance the futures corresponds to is chart the in step loss. So the higher than trading much less distinction. This earnings difference the spot revenue In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is showing than 0, a 1– a 2 is the higher than 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 earnings the less is much less, the difference of distinction the area 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 much 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 procedure than b 1– b 2 pays case, the much less of the higher than is since the loss of the futures. So the have trading defined Likewise.

There is no is equal to where a 1– a 2 is since than 0 and b 1– b 2 is specified 0, have to a 1– a 2 > b 1– b 2 much less been For that reason. brief, if a 1– a 2 position 0, place a 1– a 2 > b 1– b 2 is long, b 1– b 2 placement be a long-term than 0. technique, as long as the futures are fulfills problems and the placement are procedure revenue in For example hedging following, which version the is just one of a 1– b 1 > a 2– b 2, the opening and closing situations obtain is the story 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 *