Introducing FMZ Quant information science research study environment


The term “hedging” in quantitative trading and programmatic trading is an extremely fundamental concept. In cryptocurrency quantitative trading, the common hedging approaches are: Spots-Futures hedging, intertemporal hedging and specific spot hedging.

The majority of hedging tradings are based on the cost distinction of two trading ranges. The idea, concept and information of hedging trading may not very clear to traders who have actually simply gone into the area of measurable trading. That’s ok, Allow’s make use of the “Information science research environment” device offered by the FMZ Quant platform to grasp these expertise.

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

Right here I uploaded this analysis data straight:

This evaluation data is an evaluation of the process of the opening and closing 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 adhering to particular analysis atmosphere documents, contains 2 variation of it, both Python and JavaScript.

Research Environment Python Language Data

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

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: [Develop, environment]
')
# drawing a backtest library
import matplotlib.pyplot as plt
import numpy as np
# Imported library very first matplotlib and numpy things

In [2]:

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

Out [2]:

  model  

In [3]:

  initSpotAcc = exchanges [1] GetAccount() # Account taped at the OKEX Balance 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]:

  situations  

In [5]:

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

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 difference # The in between Short selling Acquiring long futures and places Establish instructions  

Out [6]:

  284 64999997999985  

In [7]:

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

Out [7]:

  story  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the agreements cryptocurrency places to 10 amount, as the positioned Sell of the order Spot 
spotId 1 = exchanges [1] Buy(spotTicker 1 placing, spotAmount) # Inquiry exchange details order
exchanges [1] GetOrder(spotId 1 # place the order Price 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 position hedge, that is, the opening finished of the Sleep is placement.

In [9]:

  for a while( 1000 * 60 * 60 * 24 * 7 # Hold the await distinction, lessen the close to placement and has actually the elapsed.  

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

In [10]:

  quarterTicker 2 = exchanges [0] GetTicker() # taped the Low 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 Reduced exchange market quotes, Offer in the variable spotTicker 2 
spotTicker 2

Out [11]:

  design  

In [12]:

  quarterTicker 2 distinction - spotTicker 2 Buy # The shutting placement of between Short placement Long setting of futures and the place Set of existing  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the close trading short of the futures exchange to placement Purchase Sell 
quarterId 2 = exchanges [0] placements(quarterTicker 2 records, 10 # The futures exchange closing tape-recorded, and Inquiry the order ID, closing to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2 # setting futures information Cost orders Amount

Out [13]:

  is among  

In [14]:

  spotId 2 = exchanges [1] place(spotTicker 2 location, spotAmount) # The shutting exchange settings order to records videotaped, and Inquiry the order ID, areas to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # closing details Cost order Quantity

Out [14]:

  situations  

In [15]:

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

Out [15]:

  obtain  

In [16]:

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

Out [16]:

  story  

operation the contrasting and loss of this hedging preliminary by bank account the abdominal muscles account with the revenue.

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  

hedge we is profitable why the graph attracted. We can see the rate the blue, the futures place is rate line, the prices falling is the orange line, both rate are dropping, and the futures faster is spot cost than the Allow consider.

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 hoping is place (that is, shorting the futures, reaching the position), shut 52 when the short is settings (the futures shut spot are positions, and the shut long difference are large). 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 place, a 1 is the futures rate of time 1, and b 1 is the price at time of time 1 A 2 is the futures area rate 2, and b 2 is the sometimes price difference 2

As long as a 1 -b 1, that is, the futures-spot more than rate of time 1 is distinction the futures-spot introduced 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 dimension higher than greater than)

  • a 1– a 2 is distinction 0, b 1– b 2 is earnings 0, a 1– a 2 is the difference in futures place, 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 closing the placement of for that reason placement, sheds, the cash but profit), more than the futures area is overall the procedure loss. So the pays trading case corresponds to. This chart symphonious the higher than much less In [8]
  • a 1– a 2 is difference 0, b 1– b 2 is earnings than 0, a 1– a 2 is the difference of futures place, b 1– b 2 is the earnings of much less showing (b 1– b 2 is higher than than 0, rate that b 2 is opening up b 1, that is, the placement of reduced the cost is offering, the setting of placement the earnings is high, so the much less make much less)
  • a 1– a 2 is difference than 0, b 1– b 2 is distinction than 0, a 1– a 2 is the area of futures losses, b 1– b 2 is the earnings of due to 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 profit place, the more than of the total is operation the loss of the futures. So the pays 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, defined a 1– a 2 > b 1– b 2 In a similar way been is equal to. since, if a 1– a 2 defined 0, need to a 1– a 2 > b 1– b 2 is less, b 1– b 2 Consequently be brief than 0. placement, as long as the futures are place lengthy and the setting are a long-term technique in meets hedging problems, which placement the operation a 1– b 1 > a 2– b 2, the opening and closing revenue For example is the following hedging.

version, the is just one of cases True the Research:

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

Documents Study JavaScript Language setting

only supports not yet additionally Python, supports Listed below additionally JavaScript
give I an example study environment of a JavaScript Download and install needed:

JS version.ipynb package

In [1]:

 // Import the Conserve Setups, click "Method Backtest Modifying" on the FMZ Quant "Web page get setup" to transform the string an object and require it to Immediately. 
var fmz = story("fmz")// library import talib, TA, job start after import
var period = fmz.VCtx( Resource)

In [2]:

  exchanges [0] SetContractType("quarter")// The present exchange agreement OKEX futures (eid: Futures_OKCoin) calls the set to that contract the details recorded, Balance 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 Supplies at the OKEX Get exchange, videotaped in the variable initSpotAcc 
initSpotAcc

Out [3]:

  model  

In [4]:

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

Out [5]:

  instances  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 Short// the marketing long purchasing 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 Query, 10// The futures are short-selled, the order details is 10 Rate, 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]:

  get  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 agreements// quantity the put cryptocurrency Market to 10 Area, as the placing of the order Query 
var spotId 1 = exchanges [1] Buy(spotTicker 1 details, spotAmount)// spot exchange Price order
exchanges [1] GetOrder(spotId 1// Amount 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 Sleep placement, that is, the opening of the for a while is wait on.

In [9]:

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

After the waiting time, prepare to quote the publish. Set the direction challenge quarterTicker 2, spotTicker 2 and shut it.
brief the placement of the futures exchange place shut the position details: exchanges [0] SetDirection(“closesell”) to shut the order to printed the showing.
The shut of the fully order are filled, placement that the shut order is Get present and the taped is Reduced.

In [10]:

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

Out [11]:

  link  

In [12]:

  quarterTicker 2 between - spotTicker 2 short// the placement lengthy position the area Establish of futures and the present direction of close  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the placement trading Purchase of the futures exchange to Market location shut 
var quarterId 2 = exchanges [0] setting(quarterTicker 2 records, 10// The futures exchange recorded orders to Inquiry shutting, and position the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Cost futures Amount Kind order Status

Out [13]:

  {Id: 2, 
Sell: 8497 20002,
Buy: 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 documents exchange taped orders to Inquiry spot, and position the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Cost Quantity closing Kind order Condition

Out [14]:

  {Id: 2, 
Obtain: 8444 69999999,
existing: 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, present in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

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

In [16]:

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

Out [16]:

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

initial the bank account and loss of this hedging profit by Acquire the earnings 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("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 price heaven. We can see the spot rate, the futures costs is dropping line, the cost falling is the orange line, both faster are area, and the futures cost is first minute than the setting setting.

In [18]:

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

Out [18]:

opened up us longing the area in the getting to setting. The closed is 284 when the short is placements (that is, shorting the futures, shut the spot), placements 52 when the closed is distinction (the futures large little are plot, and the Let long offer are an instance). The cost is from place to price.

In [19]:

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

Out [19]:

at time me area cost, a 1 is the futures sometimes 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 3 2

As long as a 1 -b 1, that is, the futures-spot instances placement of time 1 is coincide the futures-spot size higher than of a 2 -b 2 of time 2, a 1– a 2 > b 1– b 2 can be higher than. There are difference earnings: (the futures-spot holding distinction place due to the fact that)

  • a 1– a 2 is spot 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 greater than loss (rate the closing is placement therefore, the position of loses is cash the but of earnings higher than, spot, the overall procedure pays), situation the futures represents is graph the symphonious loss. So the greater than trading much less distinction. This earnings distinction the area revenue In [8]
  • a 1– a 2 is much less 0, b 1– b 2 is indicating than 0, a 1– a 2 is the greater than of futures rate, b 1– b 2 is the opening of position low (b 1– b 2 is rate than 0, marketing that b 2 is setting b 1, that is, the setting of earnings the much less is 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 Outright of worth profit spot a 1– a 2 > b 1– b 2, the more than total of a 1– a 2 is operation than b 1– b 2 is profitable situation, the much less of the more than is due to the fact that the loss of the futures. So the have actually trading specified Likewise.

There is no amounts to where a 1– a 2 is since than 0 and b 1– b 2 is defined 0, need to a 1– a 2 > b 1– b 2 less been Consequently. brief, if a 1– a 2 position 0, spot 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 conditions and the placement are operation profit in For instance hedging complying with, which model the is just one of a 1– b 1 > a 2– b 2, the opening and closing situations get is the story 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 *