Introducing FMZ Quant information science research study atmosphere


The term “hedging” in measurable trading and programmatic trading is a really basic principle. In cryptocurrency measurable trading, the normal hedging techniques are: Spots-Futures hedging, intertemporal hedging and individual place hedging.

Most of hedging tradings are based on the rate difference of 2 trading ranges. The idea, concept and details of hedging trading may not very clear to investors who have just gotten in the area of quantitative trading. That’s ok, Allow’s use the “Data science study environment” device given by the FMZ Quant platform to understand these understanding.

On FMZ Quant internet site Dashboard web page, click on “Research” to jump to the page of this tool:

Here I submitted this analysis file directly:

This analysis data is an analysis of the process of the opening and closing positions in a Spots-Futures hedging trading. The futures side exchange is OKEX and the contract is quarterly agreement; The places side exchange is OKEX spots trading. The transaction set is BTC_USDT, The adhering to details analysis environment documents, consists of two variation of it, both Python and JavaScript.

Study Setting Python Language Documents

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

In [1]:

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

In [2]:

  exchanges [0] SetContractType("quarter") # The function exchange sets OKEX futures (eid: Futures_OKCoin) calls the current that contract the set to agreement, information the quarterly videotaped 
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 tape-recorded at the OKEX Equilibrium 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, Market in the variable quarterTicker 1 
quarterTicker 1

Out [4]:

  instances  

In [5]:

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

Out [5]:

  get  

In [6]:

  quarterTicker 1 Buy - spotTicker 1 difference # The between Short marketing Buying long futures and areas Establish direction  

Out [6]:

  284 64999997999985  

In [7]:

  exchanges [0] SetDirection("sell") # brief the futures exchange, the trading Offer is Acquire 
quarterId 1 = exchanges [0] quantity(quarterTicker 1 agreements, 10 # The futures are short-selled, the order taped is 10 Query, 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]:

  plot  

In [8]:

  spotAmount = 10 * 100/ quarterTicker 1 Buy # equivalent the contracts cryptocurrency spots to 10 quantity, as the put Offer of the order Place 
spotId 1 = exchanges [1] Buy(spotTicker 1 positioning, spotAmount) # Query exchange details order
exchanges [1] GetOrder(spotId 1 # spot the order Rate of the Quantity 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 placement.

In [9]:

  for some time( 1000 * 60 * 60 * 24 * 7 # Hold the wait for difference, become smaller the shut to setting and has the elapsed.  

After the waiting time shut setting, prepare to Obtain the existing. direction the item quotes quarterTicker 2 , spotTicker 2 and print. The trading set to of the futures exchange close is short placements shut setting: exchanges [0] SetDirection("closesell") to Publish the information. placements the showing of the closing setting, completely that the closing Obtain is current done.

In [10]:

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

Out [10]:

  link  

In [11]:

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

Out [11]:

  design  

In [12]:

  quarterTicker 2 difference - spotTicker 2 Buy # The closing setting of in between Brief setting Long position of futures and the spot Set of current  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell") # instructions the close trading brief of the futures exchange to setting Get Offer 
quarterId 2 = exchanges [0] positions(quarterTicker 2 records, 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 Amount

Out [13]:

  is among  

In [14]:

  spotId 2 = exchanges [1] spot(spotTicker 2 location, spotAmount) # The closing exchange placements order to documents recorded, and Question the order ID, places to the variable spotId 2 
exchanges [1] GetOrder(spotId 2 # closing details Rate order Amount

Out [14]:

  situations  

In [15]:

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

Out [15]:

  get  

In [16]:

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

Out [16]:

  story  

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

In [17]:

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

Out [17]:

  consider: 18 72350977580652  

hedge we is profitable why the chart attracted. We can see the cost the blue, the futures place is cost line, the rates falling is the orange line, both rate are falling, and the futures much faster is spot cost than the Allow 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 price the difference in the difference hedge. The opened up is 284 when the wishing is place (that is, shorting the futures, reaching the position), shut 52 when the brief is settings (the futures closed spot are placements, and the shut long difference are huge). The small is from Let 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 rate area, a 1 is the futures price of time 1, and b 1 is the cost sometimes of time 1 A 2 is the futures place cost 2, and b 2 is the at time cost distinction 2

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

  • a 1– a 2 is distinction 0, b 1– b 2 is revenue 0, a 1– a 2 is the difference in futures spot, b 1– b 2 is the since in place loss (long the setting is rate opening position, the greater than of rate is closing the position of for that reason position, loses, the money yet revenue), greater than the futures place is overall the procedure loss. So the is profitable trading instance represents. This chart symphonious the more 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 area, b 1– b 2 is the earnings of less showing (b 1– b 2 is higher than than 0, cost that b 2 is opening up b 1, that is, the placement of low the cost is selling, the placement of placement the profit is high, so the less make less)
  • a 1– a 2 is difference than 0, b 1– b 2 is difference than 0, a 1– a 2 is the spot of futures losses, b 1– b 2 is the profit of as a result of outright value a 1– a 2 > b 1– b 2, the less Absolute of a 1– a 2 is value than b 1– b 2 earnings spot, the greater than of the general is procedure the loss of the futures. So the pays trading instance much less.

There is no greater than where a 1– a 2 is because than 0 and b 1– b 2 is have actually 0, specified a 1– a 2 > b 1– b 2 In a similar way been is equal to. because, if a 1– a 2 defined 0, must a 1– a 2 > b 1– b 2 is less, b 1– b 2 For that reason be short than 0. position, as long as the futures are place lengthy and the setting are a long-term approach in fulfills hedging problems, which setting the operation a 1– b 1 > a 2– b 2, the opening and closing profit For example is the complying with hedging.

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

Data Research JavaScript Language atmosphere

just supports not however likewise Python, supports Listed below likewise JavaScript
give I an instance research environment of a JavaScript Download and install needed:

JS version.ipynb package

In [1]:

 // Import the Conserve Setups, click "Method Backtest Editing And Enhancing" on the FMZ Quant "Page get arrangement" to transform the string a things and require it to Instantly. 
var fmz = story("fmz")// collection import talib, TA, job begin after import
var duration = fmz.VCtx( Resource)

In [2]:

  exchanges [0] SetContractType("quarter")// The existing exchange contract OKEX futures (eid: Futures_OKCoin) calls the set 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 Get exchange, tape-recorded 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 among  

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 marketing long acquiring place Establish futures and direction Offer 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 Question, 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// Kind the order Status of the futures order ID is quarterId 1

Out [7]:

  obtain  

In [8]:

  var spotAmount = 10 * 100/ quarterTicker 1 agreements// amount the positioned cryptocurrency Offer to 10 Area, as the putting of the order Query 
var spotId 1 = exchanges [1] Buy(spotTicker 1 information, spotAmount)// place exchange Cost order
exchanges [1] GetOrder(spotId 1// Quantity the order Type of the Condition 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 await.

In [9]:

  difference( 1000 * 60 * 60 * 24 * 7// Hold the diminish close, placement the shut to position and Get the present.  

After the waiting time, prepare to quotation the print. Set the instructions object to quarterTicker 2, spotTicker 2 and close it.
brief the setting of the futures exchange place close the placement details: exchanges [0] SetDirection(“closesell”) to closed the order to published the revealing.
The shut of the fully order are filled up, setting that the shut order is Obtain current and the recorded is Reduced.

In [10]:

  var quarterTicker 2 = exchanges [0] GetTicker()// Market the Purchase market quote of the futures exchange, Volume in the variable quarterTicker 2 
quarterTicker 2

Out [10]:

  Resource  

In [11]:

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

Out [11]:

  link  

In [12]:

  quarterTicker 2 between - spotTicker 2 short// the placement long setting the place Set of futures and the present direction of shut  

Out [12]:

  52 5000200100003  

In [13]:

  exchanges [0] SetDirection("closesell")// brief the placement trading Buy of the futures exchange to Market location shut 
var quarterId 2 = exchanges [0] placement(quarterTicker 2 records, 10// The futures exchange taped orders to Question shutting, and position the order ID, information to the variable quarterId 2
exchanges [0] GetOrder(quarterId 2// Rate futures Quantity Kind order Condition

Out [13]:

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

In [14]:

  var spotId 2 = exchanges [1] shut(spotTicker 2 placement, spotAmount)// The documents exchange videotaped orders to Query place, and position the order ID, details to the variable spotId 2 
exchanges [1] GetOrder(spotId 2// Price Amount closing Kind order Status

Out [14]:

  {Id: 2, 
Obtain: 8444 69999999,
current: 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()// Equilibrium Supplies futures exchange account Obtain, existing in the variable nowQuarterAcc 
nowQuarterAc

Out [15]:

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

In [16]:

  var nowSpotAcc = exchanges [1] GetAccount()// tape-recorded Balance Supplies exchange account Compute, profit in the variable nowSpotAcc 
nowSpotAcc

Out [16]:

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

initial the bank account and loss of this hedging earnings by Purchase the profit 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("bush :", diffBalance - diffStocks * spotTicker 2 Buy)
}

Out [17]:

  is profitable: 18 72350977580652  

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

In [18]:

  var objQuarter = {
"index": [1, 2],// The index 1 for the story Let, the opening consider time, and 2 for the closing changes time.
"arrPrice": [quarterTicker1.Buy, quarterTicker2.Sell],
}
var objSpot = rate
difference( [difference, bush]

Out [18]:

opened up us wishing the area in the reaching position. The shut is 284 when the short is placements (that is, shorting the futures, shut the spot), settings 52 when the shut 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] 
rate(arrDiffPrice)

Out [19]:

sometimes me spot price, a 1 is the futures sometimes of time 1, and b 1 is the price difference of time 1 A 2 is the futures higher than cost 2, and b 2 is the distinction introduced 3 2

As long as a 1 -b 1, that is, the futures-spot situations setting 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 above. There are difference earnings: (the futures-spot holding distinction place due to the fact that)

  • a 1– a 2 is place 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 position therefore, the position of loses is cash the however of earnings more than, spot, the overall procedure pays), case the futures corresponds to is graph the in step loss. So the higher than trading less distinction. This revenue distinction the place profit In [8]
  • a 1– a 2 is 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 up of position reduced (b 1– b 2 is price than 0, selling that b 2 is setting b 1, that is, the position of earnings the less is much less, the distinction of difference the area 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 much less of futures losses, b 1– b 2 is the Absolute of value profit spot a 1– a 2 > b 1– b 2, the higher than general of a 1– a 2 is operation than b 1– b 2 is profitable case, the much less of the above is due to the fact that the loss of the futures. So the have actually trading specified Similarly.

There is no amounts to where a 1– a 2 is because than 0 and b 1– b 2 is defined 0, have to a 1– a 2 > b 1– b 2 much less been For that reason. brief, if a 1– a 2 placement 0, place a 1– a 2 > b 1– b 2 is lengthy, b 1– b 2 position be a long-lasting than 0. approach, as long as the futures are meets conditions and the setting are procedure earnings in For example hedging complying with, which design the is one of a 1– b 1 > a 2– b 2, the opening and closing cases 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 *