Version History
26 May 2023 version 14.6.3
Bug Fixes:
- The roll and carry advanced pricing outputs for ATM
Vanilla IRS failed with unintelligible error message.
05 May 2023 version 14.6.2
Bug Fixes:
- The
Live Feeds service fromYahoo Finance stopped working on 5 May 2023 due to a change to the required URL. This version uses the correct URL and has also made it configurable under the wizard's Live Feeds Settings so that the user can adjust it as needed in the future.
03 May 2023 version 14.6.1
New Features:
- The
Bond functionsAsset Swap Spread andAsset Swap Equiv have been updated to support forward looking overnight index term rates.
02 May 2023 version 14.6.0
New Features:
- Now the
Asset Swap supports forward looking overnight index term rates.
Improvements:
- Improved the functionality of the
Export Formula ribbon button. Now it can properly process spreadsheet formulas of which the arguments may contain algebraic expressions and functions of other ranges. For example, an argument may equal the expression OFFSET(D1,1,0)+F1 and still be correctly exported. - Renamed the OIS pricing extra data output
Other Leg NPV andOther Leg BPS toFxd Leg NPV andFxd Leg BPS respectively.
20 Apr 2023 version 14.5.2
Bug Fixes:
- Pricing of
OIS with positiveLookback failed even if aModel[OI Term Rate] object withBuild Approx CA= None was supplied as input. Schedule objects constructed with explicit dates and non-trivial calendar were processed based on their unadjusted dates. Now the adjusted dates are considered.
05 Apr 2023 version 14.5.1
New Features:
- In the Price function in the wizard, the new key
-Known Resets Threshold Date= can be used to set a specific threshold date, which is then used by the wizard to generate the respectiveKnown Resets Model object and - most importantly - the respective series of historical dates and rates up to that threshold date.
04 Apr 2023 version 14.5.0
New Features:
- Added the type
Known Resets Model that represents a very covenient way of defining a threshold date in the future so that all rates destined to be fixed before that date are assigned user-supplied fixed reset values rather than values implied by the provided curves. In practice, during setting up the Price function in the wizard, the newly introduced flag-Add Known Resets Date= can be used to instruct the wizard to generate the appropriate input.
23 Mar 2023 version 14.4.1
Bug Fixes:
- The recently introduced
Fast Mode facility did not work as expected for ATM swaps.
Improvements:
- The
Pause/Resume Bloomberg ribbon button is renamed toPause/Resume Feeds and applies on the extended set of live feeds formulasBDP, TR andRtGet .
20 Mar 2023 version 14.4.0
New Features:
- Added the choice
Fast Mode in the list of possible inputs to the keyOutput= of theTradable::Price function. This is a very powerful input that can speed up pricing calculations by 17 times if used correctly and is thus particularly suitable to trading environments. - Added the optional key
Shown Data= in theTradable::Price function that works together with the choiceFast Mode . - Added the optional key
Store Deltas= in the creation ofYield Curve objects that should be used together with the choiceFast Mode if flat DV01 needs to be calculated in an efficient fashion.
Improvements:
- Redesigned the
Yield Curve to hold a QuantLib RelinkableHandle rather than a QuantLib Handle. This change seems to increase the effciency of several pricing operations by a factor of 3. - The ribbon button
Pause Bloomberg now works correctly also with BDP formulas returning dates.
21 Feb 2023 version 14.3.2
Bug Fixes:
- Failed to create Yield Curve out of overnight index futures when
Input Method= By Calendar was used.
08 Feb 2023 version 14.3.1
Improvements:
- Now the market vol input needed for the pricing of fx derivatives may be supplied in terms of either the underlying fx rate or its inverse without loss of efficiency.
26 Jan 2023 version 14.3.0
New Features:
- Now the
OI Term Rate type can represent both forward and backward looking overnight term rates through the optional keyLooking= .
Bug Fixes:
- The historical fixings for the overnight rate defined in
Yield Curve Fut and the inflation index defined inYield Curve Bnd were reset unexpectedly in certain operations and caused errors. - The
Fixing Days= input inTerm Rate was ignored in swap pricing.
Improvements:
- Several enhancement pertaining to fx options.
04 Jan 2023 version 14.2.0
New Features:
- Added in
Vol Curve the capability to bootstrap interest rate caps and floors on OI term rates - such as SOFR - and create vol surfaces of those rates. The vol type can be normal, lognormal or shifted lognormal so that negative interest rates can be also handled. - Now the
CapFloor instrument can also represent interest rate caps and floors on OI term rates - such as SOFR.
Bug Fixes:
- When the function
Vol Curve::Create Implied Vol Table acted on market prices ofcaps did not process correctly the data of the given representative cap.
22 Dec 2022 version 14.1.0
New Features:
- Added the optional keys
Notional= andPmt Date= in all types inheriting fromVanilla Option . The latter can be used to set the settlement date of the option's payoff to any custom date later than the option's expiry. - Added the unit
H forHundred that can be useful in entering fx forward basis quotes on currency pairs such as USD/JPY or USD/INR. For example, the title#Quote(H) in the table ofYield Curve Fxf would instruct Deriscope to convert all entered quotes to their multiples by 100.
Bug Fixes:
Live Feeds Historical Data fromYahoo Finance stopped working on 17 Dec 2022 because Yahoo stopped requiring credentials during each web service request. This has now been fixed and a flag has been added on the YF configuration section calledUse Credentials that is set to FALSE by default, but can be changed by the user to TRUE if Yahoo changes its credentials policy in the future.
Improvements:
- Improved the user interface of the types
FX Option andIssuer .
Other:
- Now objects of type
FX Value are created by using as input an object of typeFX that defines the currencies and all involved conventions.(This change is not backward compatible. All FX Value instances must be edited!)
12 Dec 2022 version 14.0.0
New Features:
- Introduced a new type of volatility surface for
FX Options where the strikes are expressed in delta terms. This is achieved in typeVol Curve by settingVol Input= ATM-RR-BF and supplying as input a 4-column table containing market ATM (At The Money), RR (Risk Reversal) and BF (Butterfly) vol quotes for various expiries. - Now the wizard reacts when the user selects cells containing #-prefixed labels that represent table titles, such as
#Rate , by displaying the respective description. This is a new feature that currently applies to a few titles, but expected to cover all titles in forthcoming versions. Yield Curve Fxb now supports all index type combinations between Libor and OI. Also aPayment Lag can be now specified.- The market swaps in
Yield Curve Ois can be now specified by start and end dates in optional columns titled#StartDate and#EndDate respectively, in addition to time intervals. Also the#FwdStart title has been renamed to#StartDelay to better capture its meaning.(This last renaming is not backward compatible) - The new key
Leg2 Pmt Lag has been added inYield Curve Ois that makes it possible for the two legs of the supplied market OIS to differ on their payment lag with regard to the respective number of business days. Note, the two lags must still agree on their calendar and date bump conventions. - The new keys
Flt Pmt Lag andFxd Pmt Lag have been added inYield Curve Swp andVanilla IRS that make it possible for the two legs of vanilla IRS to differ on their payment lag with regard to the respective number of business days. This addition necessitated the removal of the keyPmt Date Bump inVanilla IRS since the respective information is now captured by the new keys.(This last key removal is not backward compatible) - Added the interpolation types
Mxd FwdFlat Cubic ,Mxd BwdFlat Cubic and their Log equivalents that may be used in building curves that imply flat overnight forward rates between central bank meeting dates at the front end and cubic interpolated rates at longer maturities. - Added the optional key
Trade Date Fixings= to the input of thePrice function, which, if set to TRUE, causes the pricing routine to treat all trade date fixings to be regarded as fixed inputs rather than curve-implied quantities.
Bug Fixes:
- The values associated with the newly introduced keys
ON Quote= andTN Quote= in the typeYield Curve Fxf assumed wrongly that theQuote Tgt/Src= was TRUE, even if it were set to FALSE. - Blotter creation based on
Parse Method= RatesMatCpDate ignored the Coupon Dates entered in the column titled#Cp Date . - In
Live Feeds , tickers containing the symbol & - such as the Indian stock GET&D.NS - caused a failure on the live feeds of all tickers referenced by the dsGet function. Now tickers are allowed to contain the symbol &
Improvements:
- Added list of exact holidays for the
United Arab Emirates andSaudi Arabia calendars until the end of year 2053. - Now the
Pause / Resume Bloomberg Excel ribbon button works with all spreadsheet formulas containing the BloombergBDP function regardless of how complex they might be.
Other:
- Linked to the latest libraries: QuantLib version 1.28 and ORE release 8.
- Renamed the types
Vol Spec andCor Spec toVol Ref andCor Ref respectively. Also did the same with the keysVol Spec= andCor Spec= .(This change is not backward compatible) - Renamed the optional key
Holiday= ofSingle Period toCalendar= .(This change is not backward compatible) - Renamed the optional key
Forward Start= ofYield Curve Swp toStart Delay= .(This change is not backward compatible) - Removed the optional key
Settlement= from the creation of objects of typeOI Term Rate since it is not used in the case of oi term rates.(This change is not backward compatible) - Changed the default for the key
Pillar Choice= fromLast Date toMaturity .
02 Oct 2022 version 13.4.3
Bug Fixes:
- Changed the newly introduced
United Arab Emirates calendarAE so that it treats the Saturdays and Sundays occurring after 1 Jan 2022 as weekends.
01 Oct 2022 version 13.4.2
New Features:
- Added the optional keys
ON Quote= andTN Quote= in the typeYield Curve Fxf that allows the specification of the ON (OverNight) and TN (Tomorrow-to-Next) fx rates, thus making the keySpot Settle Quotes= unnecessary for the purpose of specifying the ON and TN tenors. - In the past, tenors like
%2B entered in the market data table of the typeYield Curve Fxf were treated like calendar days. Now they are processed correctly like business days.(This change is not backward compatible) - Added the
Eibor rate for theUnited Arab Emirates . It references the also newly added calendarAE , although the latter is still implemented to have the same holidays as the Saudi Arabian calendarSA .
19 Sep 2022 version 13.4.1
Bug Fixes:
- Due to a recent change, the descriptions of several keys could not be generated in the wizard.
06 Sep 2022 version 13.4.0
New Features:
- In a yield curve construction, the cross currency swaps used as input in
Yield Curve Fxb can now be OI versus OI.
- Added the interpolation method
Log Mxd Lin Cubic as the log counterpart of the existingMxd Lin Cubic .
- Added the optional key
Notional= to tradables of typeFwd Contract . This also affects the typesFX Forward andFxd Rate Bond Fwd that derive fromFwd Contract .
30 Aug 2022 version 13.3.9
Bug Fixes:
- Due to a recent change, the lists contained in a few of the cell dropdowns in the wizard consisted of entirely greyed out items. For example, the dropdowns associated with the keys ModelledQty= and InterpMethod= in Yield Curve.
30 Jul 2022 version 13.3.8
New Features:
- Now implied ois discounting curves in local currencies lacking a domestic ois market (such as MXN) can be implied by market quotes on cross currency basis swaps involving a foreign oi, such as SOFR, even if the basis spread is paid on the local currency leg. Technically this is achieved by improving the object of type
ImpYC XCCY Disc so that the entry to its keyCcy Swap Crv= is a Yield Curve of which the element of typeYield Curve Fxb is now allowed to haveSpread On Src = FALSE .
Bug Fixes:
- The
_Synthesized Curve element of implied curves built using input of typeImpYC could not be viewed in the wizard if the global valuation date did not match that of the curve.
29 Jul 2022 version 13.3.7
Improvements:
- Extended the referenced QuantLib code by adding the currency
AED .
19 Jul 2022 version 13.3.6
New Features:
- Now the
Ref Values= key in the functionsTradable::Price andValuation::Revalue can be an array with K rows holding K separate input values associated with the affected keys specified inRef Keys= that are processed iteratively to produce K corresponding output values that are all returned by the hosting function.
18 Jul 2022 version 13.3.5
Bug Fixes:
- The MonteCarlo pricing method on asian options returned error due to a failure to incorporate the time grid as part of the extra output data.
17 Jul 2022 version 13.3.4
New Features:
- Added a new ribbon button that when being clicked toggles between
Pause Bloomberg andResume Bloomberg . It can be used to stop temporarily the action of the Bloomberg live feeds function=BDP(...) that seems to cause stability problems to the Deriscope wizard.
13 Jul 2022 version 13.3.3
Bug Fixes:
- Several changes relating to the special context where an explicit valuation date is specified through either the key
Trade Date= orAs Of= .
Other:
- Renamed the optional key
Use Par Index= ofYield Curve Swp toIndexed Coupon= so that it is symmetrical to the same named key ofVanilla IRS . In order to produce the same results as before, the boolean value entered in association with the new key must be the opposite of that used originally.(This change is not backward compatible)
08 Jul 2022 version 13.3.2
Other:
- Renamed the
Diagnostics ribbon button toAudit and added a status text in theFunction Run Recorder popup dialog.
06 Jul 2022 version 13.3.1
Improvements:
- Added a column titled
#Index in the table produced by theFunction Run Recorder . Also added a top row with totals for the Gap and Duration columns.
05 Jul 2022 version 13.3.0
New Features:
- Added a diagnostics facility accessible through a new ribbon button named
Diagnostics and its menu itemFunction Run Recorder that can be used to trace all spreadsheet function calls at runtime and generate a report containing the sequence of these calls and their time durations.
28 Jun 2022 version 13.2.1
Bug Fixes:
- Carry calculation failed on ois of which the maturity fell on a non-business end of month day.
25 Jun 2022 version 13.2.0
New Features:
- Added the
Lagrange Cubic andLagrange Log Cubic curve interpolation types that provide for more stable and smooth forward rates, but at the cost of increased bootstrapping times.
Other:
- Reverted the previous changes on
Cubic, Fin Cubic, Nat Cubic and their log counterparts. They are now all non-monotonic cubic splines, since being monotonic resulted in big forward rate swings.
21 Jun 2022 version 13.1.1
New Features:
- Added the new optional key
Keep Reset Dates= in the functionsCarry andRolldown that is useful when the horizon date lies in the middle of a floating leg's accrual period. It determines the reset date of the first floating period of the forward swap. Setting its value to false in the case of OIS results in values that match those in Bloomberg.
Bug Fixes:
- Wrong calculation of Carry and Rolldown of forward swaps starting after the horizon date.
Improvements:
- Changed the definitions of the yield curve interpolation methods
Cubic, Fin Cubic, Nat Cubic and their log counterparts so that are more in line with their usage in ORE. Also theCubic interpolation method is now by default monotonic as this seems to enhance stability and speed of bootstrapping.
16 Jun 2022 version 13.1.0
New Features:
- All overnight swap types - i.e.
OIS , OiIbor Swap andOiOi Swap - can now accept an array of oi term rates as input so that the overnight index or any related conventions may vary accross the periods of the overnight leg. - Now the
Carry andRolldown functions apply also on objects of typeOIS . - Enhanced the type
Term Rate with the keyFixing Days that allows the custom setting of the reset date of any term rate and therefore also of anyIbor orOi Term rate.
07 Jun 2022 version 13.0.1
Bug Fixes:
- Changed the default output
IRS::Change Dates so that it corresponds to the usual interpretation of a code input for the swap tenor, so that a code like "6M2Y" means a swap starting in 6M and extending for 2Y.
02 Jun 2022 version 13.0.0
New Features:
- Introduced the new type
Task underUtil , the objects of which define sequences of functions to be executed in a consecutive fashion and according to specified criteria. The defined functions are executed as soon as the new type's local functionRun is invoked. This new type is pivotal in streamlining calculations that have a repeated character, such as the calculation of the yield of each bond that is part of a portfolio of bonds. - Added a new
Portfolio construction method that is useful when all constituents are tradables of the same type. It is implemented through the addition of the new itemParameters in the list associated with the keySpec Method= in thePortfolio::Create function. Then the portfolio can be constructed by specifying a) the type that is common to all the constituent tradables, eg "Fxd Rate Bond", b) a set of key-value pairs that apply to all tradables and c) a set of key-value pairs that supply those values that happen to vary among the tradables. - Added the local functions
Carry andRolldown that act on objects of typeIRS . - Added the local functions
Period Counter andPeriod Value that act on objects of typeIRS and return information pertaining to a specific accrual period of the referenced swap. - Now the functions
Clean Price andDirty Price acting on objects of typeBond accept aRef Date input even when the calculation is based on discounting the bond coupons using a given discounting yield curve. - Enhanced the type
FxdIbor Swap with the keyFixing Days that allows the custom setting of the reset dates of the ibor index accross the swap. - Enhanced the type
Vanilla IRS with the keyIndexed Coupon that allows choosing between par and not-par ibor rates. - Added the optional input key
Ref Date in theBond::KRD function.
Bug Fixes:
- Due to improper memory management the function
Price Simple returned wrong results. It is also likely that this bug may have affected several other areas to a lesser or greater degree. The fix here is therefore expected to provide enhanced stability and accuracy in all calculations. - A few daycounts, such as 30E/360 produced errors.
Live Feeds failed to update if the dsGet function was on a non-active sheet.
Improvements:
- The local function
Shift acting on objects of typeIRS has been renamed toChange Dates that better captures what this function does. It has been also enhanced to support a wide range of possible swap date schedule alterations.(This change is not backward compatible) - The key
Ignore Accrual in modelAdvanced Pricing has been renamed toAccr Before Hor that better captures the key's meaning.(This change is not backward compatible) - Now all functions exported to
Visual Basic return a boolean. True on success and False on failure. If a failure occurs, a diagnostic message is always displayed. A few of these functions have thus been altered. The new interface of all functions is listed at Deriscope VBA - In
Live Feeds made the third argument to thedsGet function optional.
Other:
- The key
Shorten Bond= in the local functionRolldown is renamed toDefinition= . The previous boolean values TRUE, FALSE correspond to the text tokensShorten Spot ,Roll Crv to Fwd respectively.(This change is not backward compatible if the mentioned key is explicitly used) - Disabled the
Live Chat ribbon button by default. It can still be reinstated through Settings.
30 Apr 2022 version 12.6.4
Bug Fixes:
Historical data feeds fromYahoo failed because of a technical change on the credentials required by the Yahoo server. This is now fixed.- The wizard failed to display the contents of objects when the user selected the cells containing their handle name if these cells were part of an array output of a Deriscope formula.
Other:
- Renamed the seldom used global input key
OBJECTASHANDLE= toASHANDLE= .(This change is not backward compatible)
06 Apr 2022 version 12.6.3
New Features:
- Various descriptions displayed in the Info Area of the wizard may now include images.
- Now the first argument of the Excel ds() formula may contain the special text
*InputAsText* or*InputAsText_OuterTrimmed* that instructs Deriscope to treat all input data as if they were pure text, at least during the initial parsing. The*InputAsText_OuterTrimmed* also results in the trimming of all leading and trailing white spaces. This special argument can be useful in functions that rely on the precise type of the input data, such as theSet::Parse function.
Bug Fixes:
- The
Set::Parse function failed to parse data as integers if they were passed as text containing leading or trailing white spaces. - Forward starting at-the-money
Vanilla IRS andOIS produced infinite carry when the horizon date was earlier than the swap effective date.
05 Apr 2022 version 12.6.2
Bug Fixes:
OIS instrument indexed with Ester (TARGET calendar) and tenor 2W failed to be created. This also produced an error in the respective yield curve creation.
31 Mar 2022 version 12.6.1
New Features:
- Added the optional key
ATM Shift= in the objects of typeVanilla IRS andOIS that works together with the recently added keyIs ATM= and can be used to designate a swap as in-the-money or out-of-the-money by setting its intrincic fixed rate to the dynamically determined atm rate plus a potentially non-zero shift defined through this new key. This key can be also used whenEdit Input= TRUE in order to tweak initial atm swaps away from their atm rate by a given shift - typically 1 bp - so that the pricing output equals the DV01 of the referenced atm swaps.
Bug Fixes:
- The
Edit Input= TRUE applied on at-the-money swaps did not work as expected. - The
Set::Parse failed unexpectedly when data were integers with the form YYYYMMDD with MM not being between 1 and 12.
Other:
- Renamed the recently introduced key
Ref Value as Shift= toEdit Methods= and made it to accept as value one of the types labelled asReplace orShift .
29 Mar 2022 version 12.6.0
New Features:
- The objects associated with the key
Ref Objects= in the functionsTradable::Price ,Tradable::PriceSimple andValuation::Revalue whenEdit Input= TRUE can now be of typePortfolio , in which case the modified input values affect all portfolio constituents. - Added the optional key
Ref Value as Shift= in the functionsTradable::Price ,Tradable::PriceSimple andValuation::Revalue that act as boolean flags the allow to treat the value(s) entered inRef Values= as shifts rather than absolute values. This, together with the Portfolio treatment above, allow the calculation of the DV01 of a portfolio of swaps defined as the change in price due to a shift by 1 bp of each swap's fixed rate. - Creating a portfolio of swaps out of Blotter data led to atm swaps if the representative swap were atm, even if the Blotter data specified explicit, i.e. non-atm, fixed rates.
- Added the optional keys
Date Format= ,Date Format Sep1= ,Date Format Sep2= in theSet::Parse function that aply a certain assumption regarding the format of dates in the raw data. - Added at-the-money
OIS products that can be defined like their Vanilla IRS counterparts, i.e. by setting their rate input to N/A. - The processing of portfolios containing atm swaps produced wrong prices and also wrong carry and roll amounts.
- Improved the
Date::Parse Date function so that it can process an array of text labels at once. - Added a Live Chat button at the Deriscope ribbon that allows an Excel-integrated chat between the user and Deriscope Support.
- The wizard failed to display descriptions associated with spreadsheet cells that were part of the output range of dynamic array Deriscope formulas.
- The recent introduction of the
Use Par Index= key caused the market swaps in the creation of aYield Curve to reference a par ibor index by default. Now the default index is non-par again. - Incorrect calculation of the
P&L Breakdown and theCarry & Roll= results whenIgnore Accrual= was kept at its default value of FALSE. - Due to a recent change, the wizard failed to build certain types.
- Added the optional keys
EOM= andUse Par Index= in the typeYield Curve Swp that allows to build aYield Curve object out of swaps that have a user-defined End-Of-Month convention and an index that is optionally adjusted so that its maturoty matches the end of the corresponding accrual period, an adjustment that turns the floating leg into a par leg. - Added the ability to define custom Libor rates, i.e. objects of type
Ibor Rate that have a user-defined financial calendar in addition to the standard Libor UK calendar. This is now done by setting Ibor Type= CustomLibor and adding the new optional keyLibor Calendar= to supply the financial calendar associated with the given currency. For example, a custom USD Libor could be defined by settingLibor Calendar= %US , in which case the index value date would be determined by first shifting the fixing date by 2 business days according to the %GB calendar and then adjusting that date according to the union of the %GB and %US calendars. - Changed the type of the value associated with the key
Settlement of object of typeTerm Rate fromSingle Period toPeriod . This was needed to capture more accurately the settlement of certain rates such as Libor of currencies other than EUR or GBP. These rates (for example the USD Libor) are settled by shifting the fixing date forward by N business days (N = 2) according to a certain calendar (UK), but then the produced date is further bumped according to some other calendar (joint UK + US). While this had been treated correctly in QuantLib, Deriscope assumed only the first calendar in various operations and led to inaccurate results. - Added the optional key
Calendar inYield Curve Swp that defines the calendar used in the determination of the accrual period dates of both the fixed and floating legs. If omitted the default is set equal to the calendar of the supplied index. Due to the change above, the latter will be the union of two calendars if the index is a Libor of a currency other than EUR or GBP. - Sometimes, during user interaction with the wizard, a new sheet was suddenly inserted in the active workbook followed by a popup asking the user to confirm its impending deletion. This bug has now been fixed.
- Now the
Date Sequence function can return a specified maximum number of dates and respect a given optional End of Month convention. - Renamed the optional key
End of Month ofTerm Rate toEOM .(This change is not backward compatible when the renamed key is explicitly used in the creation of Term Rate objects) - The payment lag specified in
Yield Curve Ois applied only on the fixed legs of the swaps. - Removed the key
Past Fixings from theYield Curve type and added it to theYield Curve Fut type.(This change is not backward compatible when the removed key is explicitly used in the creation of Yield Curve objects) - All functions returned #NUM on the absence of a license.
- Wizard-only flags did not work as expected.
This is a minor technical change, but it may cause serious side effects! Alertness is required. - The function
Settle Value in typeBond failed when no clean price was given as input. - In the types
Currency Swap replaced the keyAmort with the two new keysSrc Amort andTgt Amort so that the two currency legs can have different amortization schedules. This is necessary when the amortization schedule is defined through a custom array of notional balances since the two legs generally have different notionals.(This change is not backward compatible when the Amort key is explicitly used) - In the types
Inflation Swap andInflation Bond replaced the keyImply Base withBase Value so that the base value of the inflation index is defined explicitly rather than being inferred from the supplied historical data. This has been necessary to fix bugs related to the base value estimation on the absence of historical data.(This change is not backward compatible) - Excel crashed when
Yield Curve Infl was built with inappropriate observation lag. - The
carry androll outputs of the Price function whenAdvanced Pricing is used as input incorporate now also the accrual amounts due to any partial accrual periods that arise when the horizon date an accrual period of the underlying contract. This treatment reflects better the economic impact associated with unwinding a trade at the horizon date. The previous treatment is still accessible by using the new optional keyIgnore Accrual= with a value set toTRUE . The absence of this key leads to the new behavior described here.(This change is not backward compatible) - Zero risk was calculated wrt market rates of FX forwards defined in
Yield Curve Fxf . - Improved the error messages reported during the calculation of risk wrt a
Dividend Curve . - Added the read-only key
Cash Flows in objects of typeCredit Curve that allows inspection of the cash flows of the CDSs used in building a credit curve. - Added
Inflation Curve construction out ofInflation Bonds . - Enhanced the type
Yield Curve Bnd so that the bond instruments can be fed to it as an object of typeBonds . - The
Bond functionsFwd Clean Price andCarry can now take as input an array of repo rates. - Added the
Bond functionFwd Dirty Price . - Impoved the spreadsheet functions
dsReplace ,dsSort ,dsSubRange . - Impoved functions
Fwd Clean Price andCarry so that they account for coupons paid before horizon. - Redesigned the descriptions of all types to include a standard header with the supported functions and subtypes.
- Added local functions
Fwd Clean Price ,Carry andRolldown in typeBond . - Added local function
Roll Curve in typeYield Curve . - Added input parameter in function
Asset Swap Equiv that sets the date bump convention for the swap maturity. - The local functions
Asset Swap Spread andAsset Swap Equiv in typeBond now set the date bump convention of the last floating leg cash flow to equal that of the bond schedule. This helps to ensure that the terminal payments on the two legs fall at the same time. - Bugs related to the
Fallback functionality. - Introduced the new type
Fallback Model . When an object of that type is passed as input to thePrice function, the pricing routine references a converted tradable of which all affected indices are replaced with their fallback equivalents as prescribed by the supplied model object. - Due to the new model type mentioned above, the
Fallback function expects now as input an object of that type instead of two objects of typesFallback Table andFallback Mkt .(This change is not backward compatible) - The
Fxd Rate Bond blotter is enhanced with the new column#Start . - The
Asset Swap blotter is enhanced with the new columns bearing the titles#Start and#BondStart . Also the titles of all existing columns have been renamed with the prefixBond added to them.(This change is not backward compatible) - Sometimes, when necessary historical index fixings were missing in a pricing context, the produced error text was misleading and did not refer to the real cause.
- Sometimes, setting the first boolean argument to the ds function to false did not have the expected effect of preserving the display of the existing output values.
- Introduced the two new types
Bonds andInflation Bonds that represent collections of generic bonds and inflation bonds respectively. These types inherit respectively fromBond andInflation Bond so that all functions that apply on the latter types also apply on the new types. For example, the functionYield can act on an object of typeBonds and the functionYield Real on an object of typeInflation Bonds . - Added
Blotter construction forAsset Swap . - Now the
Asset Swap can contain any type ofBond and not just aFxd Rate Bond . For example, the type of the referenced bond can beIbor Rate Bond orCMS Rate Bond or evenInflation Bond . - Made the
Ibor Schedule= entry inAsset Swap optional. If missing, the schedule of the floating leg is generated according to the referenced bond and index. In the latter case, the new optional keyStart= can be used to set the start date of the swap to differ from the start date of the referenced bond. - The type
Model[Asset Swap] is not used anymore for selecting which curves are used for discounting and forecasting. The curve selection is now done through the typeYldCrvPickModel , as with the pricing of IRS. - Added the local function
Fair Spread to objects of typeAsset Swap . - Added the local functions
Asset Swap Spread andAsset Swap Equiv to objects of typeBond . - Bug affecting the carry, roll and P&L calculation.
- The curves to be used in the course of pricing are now specified by objects of type
YldCrvPickModel that contain information previously encoded in objects of typeModel[X] , whereX is some tradable type such asIRS . This change is backward compatible as long as no such explicit curve specification is used,but is not backward compatible if the curves are specified through Model[X] . In the latter case, the textModel[X] must be replaced withYld Crv Pick Model . - Similar to the above, a new type called
Vol Crv Pick Model has been introduced that allows selecting the types of vol curves being used in a given pricing context. - Introduced time-dependent indices in
IRS objects. - Added a new optional key named
Stub Indices= in objects of typeVanilla IRS . Its associated value is an array ofIbor Rate objects that define the additional reference ibor indices used to construct the interpolated index that applies exclusively to the first period of the floating leg if that period is a short stub period. - In
Fallback Ibor Oi Table added two new columns titledTenor andCessation that provide the tenors and cessation dates of the listed ibor indices. This allows distinguishing between indices that differ only on tenor, such as USD Libor 1M and USD Libor 3M. - In the context of
Advanced Pricing a separately defined funding curve could not be found even if it were supplied as input. - Portfolio creation out of a
Blotter ofOIS objects failed to process the dates properly. - Corrected the
#FixingStart and#FixingEnd columns of the cash flow table in the case ofOI Term index (i.e. composite overnight index). - The
Deriscope taskpane does not flicker anymore if it happens to be visible while Excel runs various calculations. This improvement is also expected to enhance overall Excel stability when the taskpane is visible in a trading environment where several other third party addins are also loaded. - Now all currency swaps are treated as sub-types of
IRS and are priced with the same unified algorithm. In particlular the typesCurrency Swap andFX Swap are now direct children of the typeIRS . The original types are still accessible underMulti Leg Swap , but have been renamed toCurrency Swap Old andFX Swap Old and will be kept for a while as legacy. The revamped types treat a likely fx reset differently in that they require an input object of typeFX Reset Spec . Also they do not require the keysSrc Leg Type= andTgt Leg Type= . Also note that the revamped typeCurrency Swap does not support the functionFair Spread .Note these changes are not backward compatible if the referred keys are explicitly used. - The type
Model[Yield Curve] that is optionally used in risk calculations has been renamed toYld Crv Risk Model . This change is backward compatible as long as this type is not explicitly used,but is not backward compatible if this type is explicitly used. In the latter case, the text Model[Yield Curve] must be replaced withYld Crv Risk Model . - The
Pillar Choice setting ofLast Relevant Date in various curve constructions has been renamed toLast Date .(This change is not backward compatible) - The at-the-money strike of a
Vanilla IRS cannot be anymore specified by entering a blank cell as a value for the keyFxd Rate= . Now the special textN/A must be entered.(This change is not backward compatible) - The key
Fxd Rate= inOIS has been renamed toFxd Rates= .(This change is not backward compatible) - Added seasonality in the construction of inflation curves. This is achieved by the addition of the optional key
Seasonality= in the construction of objects of typeInfl Crv , which expects an object of typeSeasonality . Currently theMultiplicative andKerkhof seasonality types are supported. - In the cash flow table added two extra columns titled
#ValueStart and#ValueEnd that are meaningful in the case of cash flows linked to a compounded overnight index that carry a non trivial observation lag, in which case contain dates that differ from those in the columns titled#IndexStart and#IndexEnd . - Added the column
#FixingStart in the table with the cash flows. In particlar, Ibor and OI Term rates now display their start and end dates of their accruing intervals in the columns titled#FixingStart and#FixingEnd . - Added custom pillar dates in the construction of
Yield Curves out of deposit rates and futures prices. - Now the
Implied Values function accepts time periods that contain calendars and bump conventions. - Bug affecting the construction of the overnight accrual periods of fallback IRS objects.
- Added the local function
Fallback that acts on objects of typeIRS and produces new IRS objects that have their Ibor rates L replaced by fallback rates F = mR+s, where R, m, s are appropriately constructed Overnight Index term rates, multipliers and adjustment spreads. The construction rules are based on Bloomberg. Both rules and adjustment spreads are supplied as objects of the new typesFallback Table andFallback Mkt respectively. - All
OI Term Rate objects now contain an optional sub-object of typeFallback Def under the keyPre Fallback . If this sub-object exists, the hostOI Term Rate is considered to be the fallback rate of an original ibor rate that is defined in the sub-object. The latter also contains the rules for setting up the term accrual period in any pricing context. - Now
asset swaps can be priced using distinct curves for discounting and forecasting. The Price function accepts as input an object of typeModel[Asset Swap] that specifies the two curves. - A few spreadsheet cells conbtaining N/A were not interpreted properly. For example, the value for the
Stub Rate key inYield Curve Dep . - Portfolio creation out of blotter objects led to wrong tenors that affected the itemized DV01.
- Due to a recent code change, the creation of a few types of curves - such as those from discount factors - failed.
- Added
custom pillar dates in the construction of aYield Curve out of forwards or OIS. This can have a big effect in the successful curve bootstrapping, especially with regard to the short term market quotes. - Bug affecting the creation of special curves - such as spreaded curves - when they reference flat curves.
- Bug affecting the creation of blotter objects.
- Added the optional keys
Obs Lag= andLookback in all types relating to theOvernight Index . The first key specifies an observation lag in business days and sets the period where the daily overnight index is "observed" for the purpose of calculating its average value. The second key defines the number of business days between each observation date and the prior date when the observed index had been set. - Redesigned the
Inflation Bond type so that it contains an explicit link to the corresponding real bond structure. - Added the following local functions to the
Inflation Bond type:Dirty Price RY ,Clean Price RY ,Yield Real ,Duration Real ,Convexity Real . - The
Recalc All button sometimes failed to recalculate all formulas in the spreadsheet. - Creation of
Blotter containingOIS failed. - Creation of
Portfolio withVirtual= TRUE failed. - Creation of
Yield Curve out of bonds withUse Curve Fit= TRUE failed. - Changed the meaning of the
Rate Cutoff inOIS so that it is at par with its conventional usage as the number of business days prior to the end of the accrual period that marks the last date on which the actually observed overnight index is used. According to the new definition, the default cutoff value assumed in the absence of the corresponding key is 1 rather than the previously used 0. This change is backward compatible as long as the key is not explicitly used,but is not backward compatible if the key is explicitly used. In the latter case, the corresponding value must be increased by 1. For example, a spreadsheet setting with Rate Cutoff= 2 must be now replaced with Rate Cutoff= 3. - Now the
Model[Bond] used as input in thePrice function of aBond contains the optional keyIgnore Settle , which when set to FALSE, the NPV calculation takes into account the bond's settlement and ex coupon period and returns a number comparable with that returned by theDirty Price function. When set to TRUE, the older approach is used, whereby all coupons paid after the referenced trade date are considered. Due to the fact the default value is FALSE, this changeis not backward compatible if the Model[Bond] is not explicitly used as input. - Now all
Yield Curves can be created with an optional input object of the newly introduced typeCurve Booster that speeds all subsequent curve constructions as the market feeds change. The increased efficiency can reduce by a factor of three the time needed for the calculation of dV01s. The cost of this increased efficiency is that the implied rates are approximated and somewhat off the exact ones. The functionCheck Accuracy is introduced to assist with the determination of the approximation quality of a given curve and booster. The booster implementation is based on first and second degree Taylor expansion and must be used with care as it is still in testing phase. - Introduced a read-only element in all
tradables with the keyDynamic= that is automatically set by Deriscope mostly to FALSE. When set to TRUE, the corresponding tradable is considered to be "dynamic" in the sense that one or more of the contractual details of the corresponding financial contract are left unspecified and assume context-dependent concrete values as soon as they are used in a specific context comprised of market data and modelling assumptions. - The
Vanilla IRS can now accept a blank cell as input for theFxd Rate= key. Then the swap becomesdynamic and assumes a concrete rate equal to the at-the-money rate implied by the applicable market environment. The most recently generated at-the-money rate is stored under the new read-only keyFxd Rate Used= . - A few
IRS subtypes, such as theVanilla IRS produced errors as soon as swaps referencing different currencies were created on the same spreadsheet. - In the
OIS case, a positiveRate Cutoff input was considered in the pricing result but the displayed projected daily overnight index fixings failed to take it into account. - The
Advanced pricing of prortfolios now reports itemized data as well. - The
Single Day Blotter treated all boolean entries in the column titled#Receiver as TRUE. - In
Yield Curve Ois it is now possible to use swaps that exchange the overnight index against either ibor or another overnight index. - Creation of
Fxd Rate Bond withSouth Africa government issuer failed due to incompatible daycount conentions. - In
Yield Curve Bnd it is now possible to usebond yields as input market quotes. - Creation of
Fxd Rate Bond withSouth Africa government issuer failed due to incompatible daycount conentions. - Added the overnight indices
BRLCdi, CHFSaron, CLPCamara, COPIbr, DKKOis, Ester, INRMiborOis, Nowa, PrimeIndex, SEKSior . - Added the ibor indices
IDRJibor, ILSTelbor, KRWCd, PHPPhiref, SAibor, THBBibor . - In
Yield Curve Ois it is now possible to setPmt Freq= Other and add an extra column titled#PmtFreq in the table with the ois rates so that the quoted ois contracts can have different payment frequencies. - In
Yield Curve Ois made the keysRate Cutoff andFxd DC available even whenBuild Rule= Compound . - Some elements of the original object were not replicated in the output object returned by the
Clone function. - Changed the default for the key
Standard Dates ofYield Curve Fut::Create fromIMM toAny so that no error is issued if the input dates do not match those from IMM. - In
Yield Curve Fut set theASX dates so that their underlying contract span a 90 day period. - In
Live Feeds the output of thedsGet formula failed for all tickers below one containing the character &, such as the L&TFH.NS. Now an error message is displayed that notifies the user of the problematic ticker. - Yield curve failed to build when setting
Standard Dates= ASX inYield Curve Fut . - Added the ability to create custom calendars out of an existing referenced calendar by adding and/or removing specifed dates regarded as holidays or business days.
- Added the new function
Modify that acts on objects of typeCalendar - such on the object%US - and modifies these objects by changing their related set of holidays and business days. - Changed the
UK calendar so that the holiday of30 May 2022 is replaced with2 June 2022 and3 June 2022 . - Added the four new keys
Nominal CF Dates=, Stepwise Disc=, Front Stub=, Back Stub= in the creation of objects of typeInt Rate Spec that allows the definition of interest rates equipped with special rules in contexts where these rates are used to discount series of cash flows, such as bond coupons. Among else, these rules allow the definition of bond yields with complex characteristics, such as those prevailing in the South African government bond market. - Added the new key
Accrued Rate Def= in the creation of objects of typeFxd Rate Bond that allows the specification of special conventions that apply exclusively on the calculation of the accrued interest over stub periods. This is necessary for bonds where the accrued interest over partial periods is calculated differently than the coupon, like for example in the South African government bond market. - Added the new key
EOM= in the creation of objects of typeYield Curve Ois that allows the construction of yield curves out of OIS rates with specified End-Of-Month convention. OIS curves assumed EOM convention for the end date of the periods in the swaps linked to the input market rates. This may have led to wrong date generation for certain valuation dates, such as that of 26 Feb 2021.- Added the four new keys
Nominal CF Dates=, Stepwise Disc=, Front Stub=, Back Stub= in the creation of objects of typeInt Rate Spec that allows the definition of interest rates equipped with special rules in contexts where these rates are used to discount series of cash flows, such as bond coupons. Among else, these rules allow the definition of bond yields with complex characteristics, such as those prevailing in the South African government bond market. - Added the new key
Accrued Rate Def= in the creation of objects of typeFxd Rate Bond that allows the specification of special conventions that apply exclusively on the calculation of the accrued interest over stub periods. This is necessary for bonds where the accrued interest over partial periods is calculated differently than the coupon, like for example in the South African government bond market. - Added the new key
EOM= in the creation of objects of typeYield Curve Ois that allows the construction of yield curves out of OIS rates with specified End-Of-Month convention. - Added a new function under the
Date type calledParse Date that reads a text and returns the corresponding date in accordance with given parsing rules. This function effectively extends the built-in Excel functionDateValue by allowing the user to specify the override the default parsing format with a custom one. - Added the new optional key
Spot Settle Quotes in the creation of objects of typeYield Curve Fxf andYield Curve Fxb that allows a few front end quotes to refer exceptionally to spot instruments with immediate settlement. - OIS curves assumed EOM convention for the end date of the periods in the swaps linked to the input market rates. This may have led to wrong date generation for certain valuation dates, such as that of 26 Feb 2021.
- The pricing of
cross currency basis swaps was wrong if the referenced Tradable was set to the target currency of the swap. - No description was diplayed in the wizard for certain wizard-only keys.
- Replaced the words
Discount, Forecast, Curve found in all keys withDisc, Forc, Crv .(This change is not backward compatible) - Optional keys of
Local Functions of which the value was modified by the user within the wizard were (wrongly) not been kept displayed after the user had clicked to hide all optional inputs. - Doubleclicking in the wizard a cell containing
[No Date] and then editing the presented today's date into a new date resulted in a cell containing today's date rather than the new date. - The
Shift function of objects of type inherited fromIRS failed to produce the expected swap. This version is not available in 64 bit due to technical reasons! - Using the Show function to generate spreadsheet objects containing cash flows led to Excel crash.
- Added the optional key
Stub Rate= in the creation ofYield Curve Dep objects so that the related yield curve implies short term zero rates of a specified level. - Αll
Model[X] types, whereX is any subtype ofIRS , have been replaced withModel .(This change is not backward compatible) - In the definition of products of type
IRS added support for interest rate indices that are the difference (spread) of two swap rates. - Added the new function
Shift that applies to swaps and swaptions and creates corresponding forward structures based on a text specification such as "6m2y" for a 6 month to a 2 year swap or swaption. - Reinstated the
Deriv Approx choicesSplineOM1, SplineOM2, Akima in the definition ofInterpolation objects that are utilized in the construction ofYield, Credit andInflation curves . - Added the new interpolation choices
Kruger Cubic andKruger Log Cubic in the construction ofYield, Credit andInflation curves . They provide for a more stable built under a wider range of input data. - Now composite periods with up to two subperiods can be represented in the spreadsheet through shortcut trivial handles, such as
%1M5D for a period representing 1 month followed by 5 days or%1M{US|MF}3B{DE} for a period representing 1 month under the US calendar with Modified Following convention followed by 3 business days under the Gernan calendar - During the creation of
Yield Curve inside the wizard, several interpolation methods appeared disabled. - Bug related to the interpolation method
Comp Linear and all methods involvingLog in theYield Curve creation. - The numerical suffix of handle names of objects of type
Yield Curve kept increasing even when the respective objects do not change. - Any
Yield Curve that hasIssuer= %Risky Issuer is now automatically selected as the forecasting curve in any pricing context so that there may be no need to supply a Model for defining which curve should play that role. - Simplified the wizard-based user interface of objects of type
Issuer . - The description of the pricing algorithm that appears in the wizard through the message
To display the pricing steps click here has become more readable. - Added ribbon item that allows setting the
local country that is used by Deriscope to build the various default parameters. - Improved the transfer of data from the browser area of the wizard to the spreadsheet. Now the created
Show has a more intelligent syntax that identifies those elements that lie at the boundary of the initial grid and tags them in such a way so that if the grid later becomes bigger or smaller, the same boundary data will still be returned. For example, using the wizard to paste in the spreadsheet the last element appearing on the grid will now create a formula that will always return the last grid element even if the grid size changes in subsequent invocations. - Trying to inspect the cash flows of certain instruments led to Excel crash.
- Added optional key
Rule= in typeYield Curve Fxb that allows setting the direction of the date generation of thecross currency basis swaps referenced by the entered market basis spreads in the corresponding yield curve construction. Even though a curve is usually built out of swaps without broken periods, this new flag can be useful in the construction of curves implied by implied (i.e. not traded) cross currency basis spreads. - Linked to the newest QuantLib version 1.22
- Fixes related to
FX Swap::Fair Fwd Rate andCurrency Swap::Fair Spread . The latter function replaced the olderFair Tgt Spread andFair Src Spread - Added the new live feeds provider
Marketstack . - It is now possible to return
historical data with a custom set and orderring of columns.(This change is not backward compatible) - Excel crashed when trying to edit any
Currency value inside the wizard. - Several important user interface improvements.
- Reduced the Excel crashes relating to the wizard by hiding the latter when file operations (opening, closing, saving workbooks) are involved.
- Made the text displayed on the Info area of the wizard more intelligible through a more representative appearance of embedded objects and dates.
- Changed the default
Range Spec= value for thehistorical data received fromYahoo Finance fromFrom-To toRange . You would therefore need to add the key/value pairRange Spec= From-To as explicit input in the ds formula that creates the corresponding handles.(This change is not backward compatible) Critical Fix: The previous version10.1.0 failed during loading in several Windows systems.- Added a ribbon switch that enables the
dsGet function to fetch live feeds in two different modes: A regular one where the function inputs are inspected each time new feeds arrive and a fast one where no such inspection takes place. - Now the wizard pastes new formulas in accordance with the Excel's support for dynamic arrays. No unnecessary @ prexixes are thus created in the newest Office 365 where dynamic arrays are supported.
- Links from other worksheets to cells of the output range of the dsGet function are now updated automatically when Excel is in Automatic Calculation mode.
- Substantially simplified the
Live Feeds interface by replacing thedsLiveGet anddsLiveStartEngine functions with the newdsGet , which expects three arguments as input: The provider code, the array of tickers and the array of fields. This function works under either Manual or Automatic Calculation mode. The refresh frequency is controlled by a ribbon button.(This change is not backward compatible) - Added the new live feeds provider
Finnhub and removed theWTD andBarchart since they have stopped delivering feeds. - Added the additional output
PnL Nominal in the PnL report of thePrice function. - In
Live Feeds fromYahoo Finance added four fields related to pre-market trading when the latter is available. - Added a menu item called
Dynamic Arrays in the menu linked to theSettings button at the Deriscope ribbon. This button allows the user to control whether the wizard-generated formulas are pasted as regular or dynamic arrays. - The prefix symbol
@ does not appear anymore in the formulas pasted by the wizard. - In
Live Feeds fromYahoo Finance added four fields related to after hours trading when the latter is available. - Few fixes involving the
PnL calculation, among else. - Key names that contained the word
Payment have been renamed by replacing it withPmt .(This change is not backward compatible) - This release contains two major additions:
Major addition 1: ThePnL functionality has been revamped to address time-varying portfolios. i.e. portfolios where certain tradables are acquired and/or disposed within the time window referenced by the PnL calculation. Now thePnL Explain table includes the two new numerical outputs:PnL Gross andCash Flows from Fees . The oldPnL output is retained, but it refers to a notion of "Intrinsic PnL", by treating correctly tradables of which the lifetime intersects with the PnL time window. For example, any tradables that are disposed prior to horizon are deemed as having a zero value at horizon, at least for the purposes of calculating the "Intrinsic PnL". If the disposal fees of such tradables are known, the respective corrections to the PnL become part of the reportedCash Flows from Fees and affect the reportedPnL Gross , which represents a notion of "exogenous PnL" defined as the sum ofPnL andCash Flows from Fees .
This more accurate PnL breakdown has been achieved by equipping all Tradable objects with optional information on exogenous transactions unrelated to their contractual payoff specifications. This information is represented as an embedded object of the new typeLedger Entry , which contains the acquisition and disposal dates along with any associated transaction fees. This transactional information is normally supplied by objects of typeBlotter , out of which the tradables are created. Now allBlotter objects are of one of the three subtypes:Day Blotter ,MultiDay Blotter orLifetime Blotter . TheMultiDay Blotter type is a rename of the oldPeriod Blotter type. TheLifetime Blotter is a new type that can give rise to a time-varying portfolio. ALifetime Blotter object can be created automatically out of an array of dates and correspondingMultiDay Blotter objects. The created object can be made to contain a fee structure by reading an input object of the new typeLedger that supplies the data pertaining to lifetime dates and fees.Major addition 2: All interest rate swaps have been revamped into a new inheritance paradigm, whereby all inherit from a common ancestor namedIRS . The newIRS type is not abstract. It represents a swap consisting of two legs that are treated in a completely symmetrical way. Each leg is linked to a generic interest rate index that may represent a regular term rate, such as Libor, or an averaged overnight index term rate like the one referenced in OIS. A leg may also represent a fixed rate leg. It turns out that anIRS is capable of representing several combinations, such as an exchange between Libor and an averaged overnight index term rate. For convenience, severalIRS subtypes (some of them mentioned below) exist that represent commonly used specializations.- The new type
Oi Term Rate represents an interest rate that equals the compounded or arithmetic average of overnight rates over a given period. This rate may be used to define the interest rate index in instruments, such as swaps. - The new types
OiIbor Swap andOiOi Swap represent swaps exchanging the above rate (Oi Term Rate) against ibor and another Oi Term Rate, respectively. - The time varying notional in amortizing swaps can be now specified through an object of type
Amortization . This replaces the old method of specifying arrays of notional amounts. - Function
Set::Parse has been completely revamped with several new filters that allow for the inclusion/exclusion of selected columns and rows of the input raw data. These filters can lead to an outputSet object that has the exact format expected by theBlotter::Create function. - The type
HistYF now supports setting up requests forhistorical data fromYahoo Finance that span a user-specified time interval, such as 5 days or one month. - The
PnL could fail with unknown error if the horizon date were changed and only a full forced recalculation of all spreadsheets could lead to a correct result. - The amortization cash flows of a product of type
BondExt were wrongly timed. - Removed the wizard
Optional Parameters button that was used to show/hide the optional input keys to the selected Deriscope function. Now a special key namedShow Optional Keys appears at the top of the other regular input keys, as long as at least one optional input key exists. It is accompanied by a check box that allows the user to toggle between showing and hiding all optional inputs. - Improved support for
Dynamic Arrays in Excel. - Several type and key names that contained the word
Fixed have been renamed by replacing it withFxd . Also keys in plural form have been replaced with their singular form, as for exampleRates -> Rate .(This change is not backward compatible) - Bug related to Yield Curve creation out of futures.
- When the index in type
Yield Curve Ois is set toSOFR , the default swap conventions generated by the wizard now match the corresponding market conventions. - It is now possible to build a yield curve out of futures on a cumulative overnight index, such as SOFR futures. This new capability is achieved by the introduction of an optional key named
Futures Type= in typeYield Curve Fut that can be set to eitherIbor orOvernight . - The
Overnight Index Swaps may now have their floating leg index calculated as the arithmetic average of the overnight rates observed over each accrual period. Arate cut-off number of days is also supported. Such swaps may also be used as market instruments in building a yield curve. This latter capability is useful when long term FedFunds vs USD Libor basis swaps are considered. - In type
Yield Curve Fut added3rd Wed to the list of possible values associated withStandard Dates= . - In type
Yield Curve Fut renamed the title#ID of the table with the market futures prices to#Counter and changed its meaning so that the respective column may now hold increasing - but not necessarily consecutive - positive integers with the following interpretation: The number 1 refers to the first possible futures contract and so on. The enhancement is that gaps in the sequence of referenced futures expiries are now allowed.(This change is not backward compatible) .
Also 1-month and 3-month futures may now coexist in the same table, a useful feature in the case of futures on an overnight index. - In type
Yield Curve Fut renamed the keysIbor Index= ,Dates= ,IMM Start Delay= ,IMM Date Shift= toIndex= ,Standard Dates= ,Min Mat Prd= ,Date Shift= respectively. Also renamed theInput Method settingBy IMM toBy Calendar .(This change is not backward compatible) - In type
Yield Curve Fut renamed the functionIMM Dates toFutures Dates and its keysSecond Date Lower Bound= andIMM Start Delay= toMat Later Than= andStart Delay= respectively.(This change is not backward compatible) - In type
Yield Curve Ois replaced the optional keyTel Dates= withAvg Method= that accepts text values out of an allowed list.(This change is not backward compatible) - Added the mandatory key
Add Hist Obj= in functionHistorical Values::Add Values . - Added the function
ObjectTools::Bare Handle that returns the bare handle name (without suffix/prefix) of the referenced object. - Added the function
Market::Lookup Markets that returns the embedded Valuation objects corresponding to given IDs. This allows the user to reference specific embedded Valuation objects without the need to apply spreadsheet lookup functions on the output ofMarket::Embedded Markets . - Now the key
Values in functionHistorical Values::Add Values can also accept an object of typeHistorical Values . - Fixed a few bugs introduced by the recent big changes.
- Added an alternative user-specific storage path for the Deriscope license file in the rare cases when the user has no write access to the ProgramData windows directory.
- Several fixes related to recently introduced
Advanced Pricing model. - Made the keys
Modelled Qty= andInterp Method= of the typeYield Curve mandatory. - Renamed the key
Payment Date Bump= toPmt Date Bump= , the keyForecasting Curve Issuer toForc Crv Issuer , the keyDiscounting Curve Issuer toDisc Crv Issuer - Now portfolio pricing is capable of producing additional implied quantities for the constituent tradables - such as fair rates or leg NPVs - and display them in the breakdown table in new columns next to those containing the prices. The exact implied quantities are defined in an object of type
Model[Portfolio] - Added the Frequencies
26 Weeks, 26 Weeks(360) and26 Weeks(365) that represent a repetitive event occurence every 26 weeks. The respective numberf in the standard interest rate compounding factor expression(1+r/f)^(ft) is assumed to be2, 182/360 and182/365 respectively. - In the
Price function, introduced the input keyHorizon Market that is used whenOutput= Advanced . Also removed all Market entries from the Create function of the typeAdvanced Pricing . - This is a new major release that primarily enhances the
Price function of objects of typeTradable by allowing itsOutput= input to be set to the textAdvanced . Then Deriscope looks in the supplied collection ofModel objects for a special object of typeAdvanced Pricing . If found, rather than calculating the price and/or risk of the referenced tradable, a sequence of calculations are undertaken as specified in that special object. As of now, theAdvanced Pricing object allows the undertaking of the following calculations:
1) Spot price
2) Carry until some future horizon date based on projected floating rate resets
3) Income between the specified spot date and some future horizon date based on realized floating rate resets
4) Forward price as of some future horizon date
5) Roll-Down calculation as of some future horizon date
6) PnL between the specified spot date and a later horizon date
All above calculations, except the Income and PnL, can be optionally carried out under the assumption that a certain user-specified subset of the future floating rate fixings equal given fixed values.
In the case of PnL, in addition to the single number result, a table with its breakdown into explaining components is also produced. - The second major enhancement is the addition of an optional Date element in all objects the type of which inherits from
Market , such as - for example - objects of typeYield Curve, Vol Curve orStock Price . This new element can be specified with the optional keyTrade Date= . If it is set to some specific date, the respective object can be used only in a pricing context where the specified global valuation date matches that date. Functions that do not reference a global valuation date - such as theDF function - assume a valuation date that equals the date in this new element. For backward compatibility, all Market objects that have been generated without theTrade Date= key, can be freely used in any pricing context, whereby their internal trade date is assumed to equal the valuation date that happens to be in effect in that pricing context. Essentially, such Market objects carry a "dynamic" trade date, in contrast with Market objects created with an explicitTrade Date= value, which are deemed to carry a "fixed" trade date. - Added the local function
Has Dynamic Trade Date that acts on all objects the type of which inherits fromMarket and returns a boolean, which indicates if the above mentionedTrade Date element is set to some specific date or not. - Another important enhancement in this release concerns the generation and display of cash flows. Now this cash flow generation process is largely controlled by a user-specified object of type
CF Model that has been extended to handle smart filtering of columns and conditional merging of rows with optional summation of their contained values. For ease of use, several predefined cash flow manipulation rules are available. For example, thePmtDt-NetAmt rule produces a cash flow table consisting of only two columns containing the payment date and the corresponding total (net) paid amount. - If a user-specified handle name ends with the underscore character
_ , it is interpreted as custom prefix rather than full handle name. In that case, the object's final handle name starts with that prefix and ends with a unique Deriscope-generated identifier. The major advantage of this practice is the elimination of handle name conflicts when the same object-producing function appears in more than one places in the currently open spreadsheets. - Added the two new functions
Add Values andCollate that act on objects of typeHistorical Values . They are useful in creating newHistorical Values objects out of old ones. - Enhanced the special Deriscope spreadsheet functions
dsTrimCols anddsTrimRows so that they can manipulate the input range by applying smart filtering criteria on the values of the source range. Useful when only selected subsets of a big range - such as the cash flows table - need to be displayed. - Wrong discount factors were generated by
Yield Curve objects produced by horizontal shifting - for example through theShift Curve function - of a reference yield curve. - Changed the format of all dates generated by Deriscope so that they look like
04-MMM-2020 whereMMM is the 3-letter month code in the local language. This format is immune to misinterpretations that often lead to hard-to-diagnose errors. - With regard to objects of type
Yield Curve made the followingnot backward compatible changes:
Renamed the keyAccuracy toTolerance .
In the functionsZero Rate andZero Rate At Time , renamed the keyMaturity toMaturities .
In the functionForward Rate , renamed the keysStart Date, End Date toStart Dates, End Dates .
In the functionForward Rate At Time , renamed the keysStart Time, End Time toStart Times, End Times .
In the functionForward DF , renamed the keysFix Dates, Maturities toStart Dates, End Dates .
In the functionForward DF At Time , renamed the keysFix Times, Maturities toStart Times, End Times . - Added an optional numerical argument in the Date function
Add Period that acts as a multiplier on the supplied Period input. - Added the local functions
Fixing Date, Start Date andMaturity Date on objects of typeIbor Rate . - Deriscope now checks at startup if Excel supports
dynamic arrays , in which case any generated array formulas are pasted using the newspill range feature. - Information on selected cells is now displayed in the wizard even when the arguments in the deriscope formula contain functions such as
INDIRECT ,dsMergeH ,dsMergeV etc. - The
Src (Tgt) Past Fixing of objects of typeYield Curve Fxb was used only when the trade date happened to be a non business day with respect to the corresponding index. Now it is used when the settlement date of the corresponding index is in the past. - Added the VBA functions
IsAutoRefresh andIsFlash . - Low and High fx rates coming from the TFX provider appeared swapped due to a change in the TrueFX json stream.
- Now pricing of fx forwards or cross currency basis swaps, as well as yield curve building out of such instruments, takes into account the settlement period of the supplied spot fx rate.
- Suppressed the annoying display of the popup error window that often occurred during various user operations, such as closing and saving workbooks.
- Various fixes relating to the functionality of the ribbon DeriLive buttons.
- Now dates entered in objects of type
Historical Values can be in any order. - Opening spreadsheets under Automatic Calculation mode will now cause their forced recalculation as this ought to be the expected behavior.
- The Enabled/Disabled status of the wizard is now remembered for the next Excel session: Quiting Excel with the wizard enabled/disabled determines if the wizard appears when Deriscope DLLs are loaded in the subsequent session.
- When the
Load when Excel Starts= in the wizard's Settings was checked, the Deriscope DLLs were loaded at startup but the Deriscope ribbon tab was still shown as if Deriscope was not loaded. - Now the input range in association with the key
Market Data= inYieldCurve::Create can contain blank cells. - When
Auto Refresh isON andExcel Calculation is inAutomatic state, opening a workbook with Engine-based live feeds automatically starts all engines defined in that workbook. - Improved the reported error merssages.
- Renamed the type
Fixed Rate MM toFixed Rate CD . - Sometimes, error messages referred to QuantLib failures where - in reality - these failures were caused by missing keys in the input data. Now these error messages inform the user about the missing keys, as they should.
- Renamed all
Constraint types by removing the word "Constraint" from their end.(This change is not backward compatible) - In the
Live Feeds - Historical Data functionality of Deriscope, theFilter= settingsBlock All Zeros andBlock First Zero failed to block empty feeds, although they ought to be regarded as "zeros". - Selecting cells containing listed values while the wizard was displayed caused the creation of a cell dropdown even when the cell contained formula.
- Now cell flashing during live feeds display does not interfere with the old colors.
- The retaining and displaying on the spreadsheet of the most recent
Live Feeds can now handle any number of tickers and fields simultaneously. - The optional first boolean argument in the
ds anddsLive spreadsheet funcions that has been acting as a switcher that controls whether the respective function runs or not, can now be any non-boolean value that is either a number or a text that starts with the hash sign# . Then the function still does not run its intended routine, but returns the supplied first argument rather than its previous output value. - In the construction of a
yield curve out of fx forward rates, enhanced the typeYield Curve Fxf with the optional boolean keyQuote Tgt/Src= that allows the user to choose whether the input fx forward rates refer to the standard or inverted currency pair. - In the construction of a discounting
yield curve implied from a foreign currency discounting curve, enhanced the typeImpYC XCCY Disc with the optional boolean keyUse FX Forwards= that allows the consideration of fx forward rates in the building of the domestic curve discount factors. When set to TRUE, a separate entry namedFX Fwd Crv introduces the yield curve object that supplies the FX forward rates. - Keys containing the following text tokens have been renamed as indicated:
(This change is not backward compatible) :
1) Curve -> Crv
2) Definition -> Def
3) Reference -> Ref
4) Discount -> Disc
5) Forecast -> Forc
6) Inflation -> Infl
7) Source -> Src
8) Target -> Tgt - Added the new optional key
Bootstrap Spec in the creation of objects of typeYield Curve that allow the user to customize both the iterative and local bootstrapping algorithms. The associated optional value must be an object, the type of which derives from the newly introduced abstract typeBootstrap . These customizations may help in resolving bootstrapping failures. In particular, the sub-typeIterative Bootstrap supports theNo Failure key, which, when set toNo true , it results in the creation of a validYield Curve object under all circumstances by employing a fallback mechanism further controlled by theNo Failure Steps key. - Added the new type
Global Bootstrap that corresponds to the QuantLib template classGlobalBootstrap . The objects of this type can be used as the value to the keyBootstrap Spec described above in order to introduce additional constraints in the yield curve bootstrapping process. For now, theGlobal Bootstrap type supports the methodsFixImplQuotAsShift andFixImplQuotAsAvg . The former allows the imposition of specific shifts (jumps) on the implied quotes of certain instruments that are not necessarily included in the set of market instruments. The latter adds the requirement that the weighted average of implied quotes of certain defined instruments equals the implied quotes of other defined instruments. All such instruments can be independently defined and need not be part of the set of market instruments. This type of averaging constraint is also used by Bloomberg in order to infer the implied quotes of missing forward contracts, for example those maturing between 18 months and 2 years in the construction of the USD curve. - Added the modelled quantity type
Zero Yield Annual as an additional choice to the keyModelled Qty= in the creation of objects of typeYield Curve . It differs from the existingZero Yield choice in that the zero yield is defined as being annually instead of continuously compounded. - Added the interpolation methods
Nat Log Cubic andFin Log Cubic as possible values to the keyInterp Method= in the creation of objects of typeYield Curve ,Credit Curve andInflation Curve . They applyNatural andFinancial cubic interpolation on the logarithm of the modelled quantity specified in keyModelled Qty= . - Now objects of type
Yield Curve contain detailed cash flows with respect to all types of market instruments. - Now objects of type
Yield Curve can be created out of swaps that differ on their fixed leg period and/or their index. This is important in certain markets, like that of AUD swaps that are quarterly and linked to the 3 month BBSW when their maturity is less than 4 years, but are semiannual and linked to the 6 month BBSW otherwise. - The
Cash Flows function ofTradable objects returned an empty table. - Reintroduced a missing optional constraint input in the yield curve parametric fitting to bond prices using models such as
Nelson-Siegel orSvensson . The constraint can be used to limit the allowed range of selected model parameters during the fitting process. - In the
Live Feeds functionality of Deriscope,Historical data included dates that did not exactly matched those implied by theFrom= andTo= settings of the request object. - Linked to the latest
QuantLib version 1.18 andORE version 1.8.5.0 . - Renamed the default value
Iterative Bootstrap for the default keyBuild Method in the creation ofYield Curve objects toIterative BS .(This change is not backward compatible if the mentioned default value has been explicitly used) - Added new build method of objects of type
Yield Curve out of a single column of discount factors of which the maturities are assumed to be consecutive calendar days. - Added new build method of objects of type
Yield Curve out of two columns containing discount factors and their maturities as calendar day offsets from today. - Various bugs related to the creation and pricing of objects of type
Portfolio . - The yield curve implied by fx forward rates, i.e. by market data of type
Yield Curve Fxf was built incorrectly due to a mismatch with a QuantLib boolean flag. - Added the following VBA functions:
IsDeriscopeAnalyticsLoaded ,IsDeriscopeWizardEnabled ,StopAllLiveFeedsEngines ,SetAutoCalc andSetManualCalc . - Added the new key
Check Only= as optional input in the creation of objects of type deriving fromHist Request , such asHist YF . Its default value isFalse , but when set toTrue , it instructs the fetching process to only return a diagnostic boolean about the existence of historical data, rather than the data themselves. This is useful in complex spreadsheets where several trials with different request settings may be needed before deciding on the final request setting to be used for the data retrieval. - The display of
historical data of several symbols failed altogether when the first symbol failed, even if the remaining symbols were valid. - Removed the constraint of a maximum number of
27 tickers in the acquisition ofhistorical data . Now any number of tickers may be processed by a single request to the live feeds provider server. - Changed the behavior of the
light bulb button in the DeriLive ribbon tab so that it only reignites the existing engines but does not paste any spreadsheet formulas. It also sets other Excel environment features to guarantee the live feeds will be refreshed as expected. - Improved the display of auto-refreshed
live feeds so that any missed feeds do not replace the previous values with zeros. - For the sake of user's convenience, forced the wizard-generation of the keys
Column List= andBase Value= during the creation of objects of type deriving fromHist Request , such asHist YF , even when these keys are ignored due to previous entries. - A new optional global key, i.e. a key that can be used as input to any function, has been introduced. It is named
ObjectAsHandle= and determines the type of returned data in the case when the function returns an object. The default value isTrue , which means the object is stored permanently in memory and its handle name is returned. Setting the value toFalse instructs Deriscope to return the object's contents and not keep the object in memory. This is handy with returned objects of typeSet that contain the cash flows of large portfolios and easily consume hundreds of megabytes of memory. - Now the first argument to the spreadsheet functions
dsLive anddsLivev can be optionally a boolean value that plays the same role as the first argument added in the functionsds, dsv anddsi in the previous release. - Added the function
Cash Flows that applies on any object of typeTradable and returns the cash flows associated with that tradable in the form of an object of typeSet . It accepts as input an optional object of typeCF Model that specifies the subset of cash flows that must be generated and returned. - Cash flows may now be generated for objects of type
Portfolio when their constituent tradables are of the same type. They are composed by the constituent cash flows sorted by their payment date. In the case of portfolio pricing withOutput= Full the cash flows are generated only if an object of typeCF Model is used as input that specifically instructs the generation of cash flows. - A few minor side-effects occuring when the first boolean argument introduced in the previous version is present.
- In a few cases the last input argument of certain functions was not displayed in the wizard.
- Made the generation of the cash flows linked to any tradable
on-demand , meaning they are generated as soon as their presence is necessary in some operation. - Made the wizard aware of the new Excel feature of
dynamic arrays so that it does not interfere destructively with cells that happen to be part of thespill range of a dynamic array. - Now the first argument to the spreadsheet functions
ds, dsv anddsi can be optionally a boolean value that controls if the function should be evaluated when the user pressesF9 orShift-F9 or selects one of the wizardRecalc utilities except that of theSelected Range . When this boolean argument equalstrue or is missing, the functions is calculated in the normal fashion. Otherwise the function generally returns the value that pre-existed in its output range without any additional computation. It only returns0 if the function is forcefully calculated by entering it in the formula bar. - Removed the global
Block key since its intended functionality is now better served by the first input boolean argument described above.(This change is not backward compatible) - Small fix related to the function
Set::Parse . - Small fix related to historical fixings.
- Added expected overnight rate jumps in the yield curve creation by introducing the new type
Yield Curve Jmp , which derives fromYield Curve Input and designed to represent a series of jump dates with corresponding overnight rate jumps. Two types of jumps are supported:Permanent andTransient . The former is suitable for expected rate changes due to scheduled central bank policy meetings. The latter is suitable for temporary jumps, like those occurring at year end. - Changed the default daycount used in Yield Curve construction from
ACT_ACT_ISDA toACT_365F .(This change is not backward compatible) - The interpolation types
Nat Cubic andFin Cubic were wrongly linked to theKruger method, which resulted to identical results. They are now linked to theSpline method. - Certain objects of type
Portfolio failed to be created. - The
Fair Value output of thePrice function could fail when the referenced parameter was part of an implied yield curve or a Tradable object. - Renamed the type
ImpYC Disc toImpYC XCCY Disc so that its name reflects the fact that it deals with two currencies.(This change is not backward compatible) - In certain contexts where a numerical entry is expected, the text entry
N/A can be valid and means that no number is supplied. In the past, this type of information was handled with a blank cell.(This change is not backward compatible) - Changed the construction of a yield curve out of tenor basis swaps so that the short index and its associated spread is paid according to the Flat Compounding convention which is the market standard in most currencies. For example, in a 1v3 tenor swap exchanging 1M vs 3M Libor, the 1M Libor is compounded three times over each 3-month period and paid once at the end of that period. This is the new default on the absence of other optional input that may specify otherwise.
- Due to a recent change, portfolio elements with a zero associated weight were kept as part of the portfolio. Now such elements are trimmed away, thus restoring backward compatibility.
- Added the Excel functions
dsTrimCols anddsTrimRows that take as input any range and return the array of values corresponding to the sub-range that results after selected columns or rows have been removed. - Added the optional key
Virtual in thePortfolio construction out of aBlotter . Default isfalse for backward compatibility. Whentrue , theTradable constituents are created only if and when their presence is needed by some operation, such as pricing. This allows the processing of very big portfolios comprising tens of thousands of tradables in a 32 bit Excel environment where the construction of so many objects could exceed the allocated memory limits. - Added the function
Get Tradable that acts on objects of typePortfolio orBlotter and returns theTradable object corresponding to a supplied trade ID. - Substantially increased the calculation speed of pricing of portfolios under
Output= Full mode, i.e. when extra data are requested. - If the wizard is open and a cell is selected, Deriscope runs a pre-check on the time needed to process that cell. If the time is deemed too long, the processing is aborted so that Excel does not hang.
- Added the key
Explicit Types in the functionDataSet::Parse . DataSet creation could result in issuing unknown error when certain integers happened to be part of the input data.- All objects now contain the optional key
ID , which may contain a text value and is empty by default. Objects of typeYield Curve ,FX Value orHistorical Values can be created with a customID value. This new key can be used to distinguish between objects that have otherwise equal contents. - Added the global optional key
BLOCK that acts as a switcher to all Deriscope functions. It can be added as input to theds formula and takes a boolean value, which by default equals FALSE. When set to TRUE, theds formula returns#N/A and the routine associated with the referenced function is completely skipped.
This new key becomes visible in the wizard if theGlobal Parameters Visibility button to the left of theFunction Selector is set toShown . The visibility of the latter button is controlled by theHide/Show Rarely Used Buttons menu item of theTools button. - Added the local function
Embedded Markets that applies on any object of typeMarket and returns allMarket objects embedded in the calling object. - Made several changes that affect how itemized data relating to
Portfolio objects are incorporated in various pricing and risk results. Itemized prices and risks are now stored in vertical fashion in order to handle more efficiently portfolios consisting of several thousand tradables.(This change is not backward compatible) - Renamed the
Product Props Group key of object of typePeriod Blotter toProps Group .(This change is not backward compatible) - Made the type
Schedule accessible in the wizard regardless of theType Viewing Filter setting. - The
Implied Values function of objects of typeYield Curve failed due to a recently introduced bug. - Re-introduced the two keys
Tradables andWeights of objects of typePortfolio that had been replaced by the new keyItems in version3.0.0 . Now aPortfolio can be created in the original way by supplying these two keys or alternatively through the keyItems . This change also reinstates the backward compatibility with regard toPortfolio object creation. - Changing the default currency of a yield curve in the wizard grid did not cause the anticipated currency adjustment in those groups of market instruments (eg swaps or bonds) that depended on that currency. This lack of synchronicity led to a failure that effectively made the currency change in the wizard impossible.
- In Live Feeds, added symbol lists for stocks traded in various exchanges around the world. Also removed the lists related to specific indices such as AMEX, S&P500, CAC40, DAX etc
- The two keys
Tradables andWeights of objects of typePortfolio have been replaced by the new keyItems that links to an object of typeSet containing the tradables and weights of the portfolio constituents. This has been necessary because the previous treatment caused a significant time delay when the wizard attempted to display the portfolio contents in the case of too many constituents.(This change is not backward compatible) - Selecting a cell in the output range of the
ObjectTools::Show function (which also is the output range created clickingGo -> Paste Object Contents ) that happens to contain a handle name, causes the wizard to display the contents of the related object. This works even if the handle name points to an expired system object because that object is then recreated on demand. - The local function
Get Matched Trades called by objects of typeBlotter can now also return an object of typeBlotter - Discrete dividends in objects of type
Dividend Curve must be now supplied with strictly increasing payment dates. Otherwise an error is issued.(This change is not backward compatible) - Introduced two new license payment schemes:
Annual subscription andOne-off payment for one year access . - Increased the time period of the free evaluation license from
one week totwo weeks . - Added the type
Period Blotter that is capable of containing trades executed on different dates. - Added boolean flag
Allow in theExport andImport functions. - Pricing of option on underlying paying discrete dividends failed if any of the dividends was paid after the option's expiry.
- Added
Daily Blotter support to tradables of typeFixed Rate Bond andVanilla IRS . - Added a menu item in both the ribbon and the Settings that allows the evaluation of any inferior license by temporarily downgrading the license that applies in the currently running Excel session.
- Changed the access to time limited evaluation licenses so that any interested user must supply an email address to which a trial license code is delivered.
- Added the
Daily Blotter local functionsGet Matched Trades andGet Matched Portfolio that filter a given daily blotter based on custom parameter criteria and create a sub-blotter or portfolio respectively, consisting of the matched trades. - The phrase
To display extra pricing data click here did not show up in theInfo Area of the wizard as soon as the user selected a cell containing the pricing output of theds formula, if the formula happened to contain blank characters. - During the display of the main introductory tutorial, when the user clicked on
Do not show any tip or tutorial again! resulted in not displaying other tutorials that had nothing to do with the main tutorial. Now the above has been rephrased toDo not show this tutorial again! and affects solely the currently processed tutorial. - Attempted to fix a bug affecting Excel versions of 2010 or earlier where a window with an error message appears after saving a workbook if the wizard is displayed.
- Experimental introduction of a trade blotter represented as object of the new type
Blotter that derives from the typeData . - Simplified the taskpane by hiding several buttons that are rarely used.
- Simplified the introductory tutorial.
- Added a few new controls to the Deriscope Ribbons.
- Added a new control to the Live Feeds DeriLive Ribbon that enables the memory retention and display of the most recently received live feeds.
- Added new controls to the Live Feeds DeriLive Ribbon that enable a) the pasting of all available fields per provider, b) the automatic storage of incoming live feeds to a local user-designated CSV file, c) the setting of the colors employed by Deriscope in various operations, such as formula pasting and cell flashing, and d) the setting of the time duration of flashing.
- Ribbon enhancements plus the addition of an online manual on all Deriscope Excel functions reachable through a corresponding ribbon button.
- Introduced new license scheme with the same grades (although the
Student grade has been renamed toBasic ), and four different types of access. All licenses can now support any number of users and may be paid once or through a monthly subscription. They may be also defined to apply on either a fixed or a variable set of devices. - Added a new ribbon tab named
DeriLive that contains controls specialized to Live Feeds. - Added a few useful controls to the
Deriscope ribbon tab. - Creating a Deriscope object in Excel by importing an xml file sometimes failed.
- Repaired the erratic behavior observed during Excel editing when live feeds had been updated automatically. Now Excel stays stable and the user can edit the spreadsheet without the need to pause the live feeds.
- Added the new static functions
Export andImport under the typeObject Tools . The former creates a text file that contains the contents of a given Deriscope Excel object in xml format. The latter creates a Deriscope Excel object by reading the contents of a given text file, which text file has been previously created by theExport function. - If a required fx rate is missing from the input market data during pricing, an attempt is made to use the rate implied by other existing rates through a first degree linkage. For example, if the required fx rate
GBP/EUR is missing, but the two ratesEUR/USD, GBP/USD are available, the impliedGBP/EUR rate is calculated and used as a valid proxy of the missing rate. - If a required volatility curve of a certain fx rate is missing from the input market data during pricing, an attempt is made to use the volatility curve of the inverse rate if that latter curve exists. For example, if the required volatility curve of the fx rate
GBP/EUR is missing, but the volatility curve of the rateEUR/GBP is available, the latter curve is used - perhaps with its strike coordinates appropriately transformed if it is in the form of a maturity-strike vol table - as a valid proxy of the missing curve. - Corrected a bug related to the type
Ibor Rate introduced by the previous release. - Added the interest rate indices
Mosprime, Pribor, Robor, Sofr, THBFIX, Wibor used in the creation of objects of typeIbor Rate orOvernight Rate . - Minor bug that made the ribbon button
Use Wizard appear when the wizard was already used and the ribbon buttonQuit Wizard appear when the wizard was already quitted. This bug carried no practical consequences since clicking upon the appeared button would reinstate the correct appearance. - Fixed a rare but catastrophic bug: Closing a workbook immediately and within one or two seconds after another workbook was saved, caused Excel and other open application windows, such as Windows Explorer or Chrome, to crash.
- The fix introduced in the previous
6.11.1 version concerning the DLL loading failure was not properly implemented. Now a new correct fix has been added. - Now a live feeds engine keeps receiving and displaying feeds in asynchronous mode even when the wizard is fully disabled after the user has clicked on the
Disable and Hide Wizard Excel ribbon button. - Replaced the two ribbon buttons
Enable and Show Wizard andDisable and Hide Wizard with the three buttonsUse Wizard, Quit Wizard andLoad Deriscope . - Introduced the new configuration setting
Use Wizard after Loading that is set toTRUE by default. Changing it toFALSE can be a convenient choice for bringing Excel automatically to a wizard-free but still Deriscope-enabled state immediately after Excel starts. - Renamed the VBA procedure
StartWizard toUseWizard and modified slightly its functionality so that it matches that of the same named ribbon button.(This change is not backward compatible) - Introduced the VBA procedure
LoadDeriscope that acts exactly like the same named ribbon button, i.e. it loads the Deriscope DLLs and enables the wizard. - Added a new instrument representing a money market loan or deposit as the new type
Fixed Rate MM that is equivalent to aFixed Rate Bond with one accrual period. - Objects of type
Payoff created with inputPayoff Type= SuperFund orSuperShare ended up havingPayoff Type= Vanilla . - Dll loading failed when the wizard was enabled after the Deriscope spreadsheet function dsLive was calculated. This situation often arose when a spreadsheet containing live feeds formulas was opened in auto calculation mode and the wizard was enabled afterward.
- Further improved overall stability during workbook saving and closing as well as Excel exiting.
- Added new yield curve construction whereby the produced curve has instantaneous forward rates and continuously compounded zero rates that are higher than the corresponding rates of a given reference curve by some given fixed spread. This construction is achieved through the introduction of the new type
ImpYC Fwd Spreaded that derives from theImpYC Fwd . - Added a new local function called
Add Fwd Spread that acts on any object of typeYield Curve and outputs a new object of typeYield Curve that represents a curve with a spead as described above. - Added a new local function called
Discount Margin that acts on any object of typeIbor Rate Bond and outputs the approximate discount margin of the referenced bond. - Enhanced the existing local function
Fair Value that acts on any object of typeValuation so that it can process not only a single key, but a chain of keys that references the complete path down to the numerical element, which element is perturbed by the root finding solver during the search for the fair solution. For example, theFair Value function can now process a reference object of typeVanilla Option with the reference key being the chainPayoff , Strike . The function's output will then be the "fair" strike. This works because the keyPayoff points to a different sub-object that in turn contains the keyStrike . Previously one had to supply the sub-object directly as reference object to the input of theFair Value function. Now one may also supply the container object as input and specify the path to the strike through the key chainPayoff , Strike . Note this second approach is the only one applicable in the case when the sub-object is created on-the-fly by Deriscope and is not accessible through a handle name. - Added an optional key named
Discounting Curve Issuer in the creation of objects the types of which are Models of :IborRateBond ,FixedRateBondForward ,FixedFloatIRS ,OvernightIndexSwap ,CapFloor
This key enables the user to choose a specific yield curve that can be used solely for discounting purposes. - Added a column with the end date of the respective ibor index in the cash flows table. This is very helpful in identifying non-par ibor rate coupons, i.e. coupons for which the interval spanned by the ibor index does not match the accrual interval. Note that the presence of such non-par coupons makes the npv of a floating leg different from the par value.
- Added a new menu item under the wizard
Tools button namedDelete All Objects , which can be used to delete all Deriscope objects that have been created through the current Excel session and stored in memory. This can be useful if creation of new objects is thwarted due to naming conflict with earlier objects. - Function
Show ofObject Tools failed to process deeper level of keys, i.e. keys that were part of sub-objects associated with other keys. This bug also affected the wizard's ability to transfer to the spreadsheet data that were part of sub-objects, i.e. objects that were themselves part of other objects. - Failure of pricing of cash flows in a context involving more than two currencies.
- The
Settle Days element of an object of typeFX Value was wrongly treated as if it were 0 in the conversion of a spot cash flow to another currency denomination. - The settlement period of the
Base Ccy andQuote Ccy elements of an object of typeFX Value is now properly taken into account in the conversion of a spot cash flow to another currency denomination. - Excel crashed under certain rare circumstances. For example, when the trading simulator spreadsheet was saved.
- The annoying popup window appearing sometimes when a workbook was saved.
- Minor bug introduced with the previous release that obstructed the display of certain informational text in the wizard.
- Added detailed information on the various bond analytics functions that include the exact mathematical formulas being used.
- Did the following renames:
Yield Curve Imp -> ImpYC Yield Curve Imp Disc -> ImpYC Disc Yield Curve Imp Forc -> ImpYC Forc Yield Curve Imp Shifted -> ImpYC Shifted (This change is not backward compatible) - Small fixes relating to
VaR and thePrice Simple function. - Modified the license scheme so that the free upgrades period is
6 months for all license types except theProfessional where it is only3 months . - The
VaR (Value at Risk) calculation has been revamped so that it takes as input an object of typeModel Sim .An array of quantile probabilities may be requested so that the VaR may be calculated for many different confidence levels. Most importantly theLow Discrepancy (Sobol) quasi random number generator is fully supported and an estimate of the standard deviation is reported when the technique of randomized simulation is used. This has a dramatic effect on efficiency, which is now increased by a factor of 100 bringing down the VaR calculation time to under one second. - An annoying popup window with long error information sometimes appeared when a workbook was saved.
- Creation of objects of type
VaR Spec failed when a proper correlation matrix was supplied, with the error message complaining about the supplied matrix. VaR computation failed, with the error message complaining that a certain market element could not be found.- Substantially reduced the interference with the Excel events that occur when
a) an existing regular workbook file is opened,b) an existing workbook file in protected view is opened,c) before a workbook is saved,d) after a workbook is saved ande) before a workbook is closed. Hopefully this would make Deriscope more stable when the user saves or closes workbooks, especially in the presence of other add-ins. Interference with other Excel events, such as opening new workbooks or switching windows, is retained in order to facilitate the simultaneous wizard display over several windows. - Removed the
Always Save As Dirty flag from the configuration screen inSettings . Now all workbooks are saved without any alteration of the "dirty" state of their cells. - Introduced monthly subscriptions in the offered license scheme.
- The value entered by the user in the
Tickers Per Request entry in the wizard's settings section of WTD and BC live feeds was ignored. - Substantially enhanced the
Model[Simulation] type that is a required input when the pricing involvesMonte Carlo . It now supports theQuasi Monte Carlo (Low Discrepancy) of theSobol type with two additional options:1) Running aRandomized Monte Carlo that is capable of estimating thestandard error associated with a Sobol simulation of any given sample size and2) Running the simulation inparallel processing mode, when amultithreading environment is in place. - Introduced the new type
Exec Policy dedicated toMonte Carlo multithreading . It covers two different types of parallel processing, that differ from each other with regard to their support for vectorization. - Introduced the new type
Simulation Report designed to hold detailed data concerning the full run of aMonte Carlo simulation. Fo example, it contains averages and standard deviations but also the full array of values and paths generated during the course of the simulation. - Descriptions of fields in Yahoo Finance live feeds appeared shuffled. Some of them were inaccurate too.
- When the wizard
Tools button is clicked, in the group of menu items associated with each live feeds provider underInsert Function -> Live Feeds , added the menu itemPaste All Fields that pastes in the spreadsheet the full list of fields supported by the respective provider along with their descriptions. - Added the menu item
Refresh Selection & Copy Allowed Values accessible through a right-mouse-click when any spreadsheet range is selected. It performs the same actions invoked by the same named taskpane menu item. In particular, it recalculates the selected range, refreshes any cell validation dropdowns that happen to be part of the selected range and also copies the items listed in those dropdowns to the clipboard. - Risk (delta) calculation failed when it was related to more than two market objects of the same type. For example, when the DV01 risk was requested with respect to three different yield curves.
- In seldom situations - actually observed in the course of a vba Auto_close() routine - the closing of a last workbook could cause Excel to not quit properly and stay alive in a zombie state, necesitating the user to kill the Excel process through the task manager.
- Relinked to the
IEX live feeds provider after the discontinuation of part of its service last June. The new linkage requires that the user acquires a license key from the IEX web site, which can be free or subscription-based, depending on usage volume. - Removed the
Basic andBasic Enhanced Deriscope licenses. For backward compatibility, upon installation of the latest Deriscope version by an existing Basic license holder, all Deriscope features pertaining to the currentStudent license become accessible. - Added a new creation method of a
Yield Curve object out of discount factors. This new curve can be created within the wizard by setting~Use Discount Factors = TRUE . Then the wizard creates a curve that is linked to an object of the newly introduced typeYield Curve Dis , which is a subtype ofYield Curve Input . Particularly useful in producing curves within Deriscope that exactly match those from external systems, such as Bloomberg, that publish their implied discount factors. - Added a new creation method of a
Yield Curve object that is implied from a given "spot" yield curve. The produced forward discount factors have the exact same shape as that of the given "spot" curve, apart from the fact that they are parallel shifted on the time axis by a given shift interval. This new curve can be created within the wizard by setting~Implied Curve = TRUE and then~Curve Type = Implied Shifted . Then the wizard creates a curve that is linked to an object of the newly introduced typeYield Curve Imp Shifted , which is a subtype ofYield Curve Imp . The latter type comes with a few switches that allow the further modification of the shifted discount factors, such as multiplying them with a constant number or forcing some of them to equal zero. These switches are useful in tweaking a given discounting curve so that the implied price of any financial product equals either its carry or roll value as of the carry & roll horizon date. - Added the new local function
Shift Curve that can be called by objects of typeYield Curve , which builds and returns the shifted curve as described above. - Enhanced the
Cash Flows table about the dates and rates of the market instruments used in the - successful or unsuccessful - building of objects of typeYield Curve so that it can handle all types of instruments. Also three more date columns have been added with titlesEarliest, Pillar andLatest . - Removed the previously introduced optional boolean flag
Use IMM Dates in the creation of objects of typeYield Curve Fut , but kept its funcionality through the addition of the new itemBy IMM in the list of options associated with theInput Method key. - In association with the above mentioned
By IMM item, introduced the optional keys namedIMM Start Delay andIMM Date Shift that give more control over the exact dates being used in the construction of the futures contracts. - In the creation of a
yield curve the input object of typeYield Curve Fut that holds the futures prices can now accept an optional boolean flag namedUse IMM Dates . If this flag is set toTRUE , the input table should contain no dates, but only the futures prices and convexities. Nevertheless, when the object is created and its table is displayed, it includes the dates as these are implied by the forthcoming IMM dates in relation to the trade date. The usage of this flag is practically necessary when one wants to calculate the price of a given tradable under different trade date choices without the need to adjust the dates in the yield curve input. - Pricing failed when cash flows were encountered that depended on a past-setting floating index, even if they were paid in the past and were thus irrelevant.
- The wizard failed to display information on keys that carried an optional unit suffix. For example, selecting a cell containing the key
Rate=(%) meaning that the associated numerical value is interpreted in percentage terms, did not produce the corresponding key information in theInfo Area of the wizard. - Renamed the optional key
Trade Date Cash Flows expected by thePrice function toTrade Date CFs for brevity purposes. Also renamed the keyTotal expected by the staticIMM Dates function of theDate type toNumber of Dates .(These changes are not backward compatible) - When the model object that carries the specification of the risk calculation has the setting
Delta Mode= By Bucket the risk part of the pricing output has been enhanced to include the flat risk as well, i.e. the risk due to a simulatneous parallel shift of all rates contained in the referenced market element. So now one may useDelta Mode= By Bucket to calculate in one step both the by-bucket deltas (key rate durations in the interest rate case) and the flat delta.Note this change breaks backward compatibility in those spreadsheets that use the Show function to display the by-bucket deltas. Use the wizard to regenerate the correct formulas. - Added the optional keys
Src Past Fixing andTgt Past Fixing in objects of typeYield Curve Fxb . These are only required when the trade date is a non business day with respect to the corresponding ibor index, in which case they provide the index value that applies on the first accrual period of the corresponding leg of the supplied xccy basis swaps. - Added a new menu item labeled
Boost Error Detection in the menu popup that appears when theTools button inside the wizard is clicked. It causes Deriscope to execute certain spreadsheet formulas with increased awareness for faulty input arguments and output useful diagnostic messages as needed. In particular, it causes theClone function to return an error message if any of the supplied keys is not recognized. This setting can be used to diagnose hard-to-catch user input errors by simply recalculating the spreadsheet. It applies only on the current Excel session - until it is reset by the user - because it has the negative side effect of prolonging the execution time of certain functions by up to 50%. - Under certain circumstances, clicking on any menu item under
Tools -> Force Recalc in the wizard could cause Excel to hang. - Linked to the newest
QuantLib version 1.16 andORE version 4 . - Added the local function
Fair Rate applicable on objects of typeInflation Swap . It takes as input an inflation curve and optional historical index fixings. It returns the rate that the fixed leg needs to have so that the price of the referenced swap becomes zero. - The local functions
Fair Rate andFair Spread applicable on objects of typeVanilla IRS andOvernight Index Swap did not accept historical index fixings as input. In fact, the calculation made use of historical fixings that may had been registered with the respective indices during prior runs of thePrice function. The consequence of this hidden, implied reliance on historical fixings used elsewhere was that the output of these two functions depended on the order by which the spreadsheet formulas were calculated. Thus the output was often an error message, which would be replaced with the correct number after a recalculation attempt.
Now historical index fixings are an optional input to these functions, defaulting to no fixings if this input is absent.Note this change might break backward compatibility in those spreadsheets that rely on historical fixings but happened to work properly due to a coincidental order of the involved calculations. - The
dsPipe failed if any one cell in its input range contained an error. - Added the utility spreadsheet functions
dsSubRange, dsReplace, dsSort under theInsert Function menu item of the wizard's Tools button.dsSubRange extracts a specified subset of the input range and can be used in constructing the input range to ads formula when the exact size of that range is not fixed. It has the major advantage over other approaches based on the built-in ExcelINDIRECT formula in that it is not volatile.dsReplace returns the data of the input range, but with a specified subset replaced with new data. It can be used in constructing the input range with modified data to ads formula out of an existing range that contains the initial data, without the need to create a separate range that holds the modified data.dsSort returns the data of the input range, but reordered according to specified criteria. - Modifying the trade date on the wizard or calling the
Price function with a modified trade date input had a sticking effect on the historical fixings registered with QuantLib that resulted in wrong output in subsequent calculations. - Extended the
Price function so that it can run with respect toa) a supplied valuation date that may differ from today's date and b) a subset of the original input data replaced with new temporary values. This allows, for example, to compute the DV01 array of a tradable product with respect to a future valuation date and under the condition that part of the input market rates have certain values. - Excel crash occured when the live data section of a Stock object was pasted as a formula in the spreadsheet.
- Further improved the efficiency of the flat and non-flat delta risk generation.
- Sped up the execution of the generic
Fair Value function by a factor of 10. Restricted the access to the non-flat delta risk generation (such as the by-bucket or tenor-based yield curve DV01) to users holding a professional Deriscope license. In effect, this change breaks backward compatibility for all users who hold a standard license and use non-flat delta risk. Such users should either purchase a professional license or refrain from upgrading to this version. - Added the optional key
Delta Def in the model objects that control the delta risk calculation. This new key can be set to eitherNPV Change orRatio , with the default beingNPV Change .(This change is not backward compatible) - Now the functions that calculate the price and risk of a
Portfolio also return the prices and risks of its constituents. - Substantially improved the error message generated when the Create function fails due to unrecognized key input. It now includes a clickable element that resets the wizard to contain the default form of the Create function with its correct set of input keys.
- Optimized the calculation of the flat and by-bucket delta risk of all tradables with respect to any input of type inheriting from
Valuation . A typical example is the flat and by-bucket DV01 of any tradable with respect to the market rates of a particular yield curve, when the latter is part of the pricing input. - Made the execution time (in seconds) always part of the returned
Valuation object, regardless of the setting of the inputExtra Data parameter. - Memory leak observed during risk calculation when implied yield curves are involved.
- Optimized the by-bucket risk calculation so that only the affected market elements are recomputed for each bucket rate shift. Depending on context, the efficiency gained in terms of execution time may exceed 50%.
- Added the generic ability to create a yield curve implied from other given yield curves and various market data. Now the wizard presents a choice called
Implied when a new curve is created.
The first implemented case concerns the creation of animplied discounting curve - typically representing a riskless (OIS) curve - as implied by a given discounting curve in another currency plus cross currency basis swaps. Such an implied curve is the appropriate discounting curve that should be used in the pricing of instruments (eg swaps) denominated in a given currency that are collateralized in a different currency.
The second implemented case concerns the creation of animplied forecasting curve as implied by a given market curve without an embedded discounting curve plus a given separate discounting curve. This implied curve takes no input market rates and relies solely on the two pre-built input curves.
In all cases, the resulting implied curve is based on a curve that is being synthesized from the inputs. The thus synthesized curve is displayed as a read-only component of the returned Yield Curve object under the keySynthesized Curve . - In parallel to the existing
%Riskless Issuer , introduced the%Risky Issuer trivial handle name that represents a default object of typeIssuer . This is particularly handy in the context of dual curve pricing, since it allows the user to "mark" any curve as "risky" by simply adding the key-value pairIssuer= %Riskless Issuer in the input data of itsCreate function. - Added optional unit specifier in keys and table titles, as follows: Any key labeled "KeyName=" or table title labeled "#TitleName" can be optionally replaced by "KeyName(x)=" and "#TitleName(x)", where x can be one of
N, %, bp, K, M, B . Then any input numerical value associated with that key or title will be interpreted as number of x units. For example, the key-value pairRate(%)= 2.3 will mean a rate of 0.023 or 2.3%. Similarly the key-value pairNotional(M)= 10 will mean a notional of 10,000,000. The specifierN meansNatural and has no effect on the associated value. It is the default in the sense thatRate(N)= 0.023 is the same asRate= 0.023 The changes below are not backward compatible. Please use the wizard to create the correct formulas. - Renamed the keys
Dom Ccy, For Ccy used inFX andFX Value toQuote Ccy, Base Ccy respectively, as these are the standard references to the currencies in a traded currency pair. - Replaced all traces of
Dom andFor in keys where no domestic or foreign context is apparent withSrc andTgt respectively. Those domestic and foreign quantities are now understood as source and target quantities respectively. - Renamed the keys
Overnight Index, Payment Lag, Payment Frequency, Tel Value Dates used in yield curve creation from OIS rates toON Index, Pmt Lag, Pmt Freq, Tel Dates respectively. - Renamed the key
Discounting Curve used in certain yield curve creation contexts toDisc Curve . - Several key renamings affecting the optional
Interpolation input object in yield curve creation. IMPORTANT: All Deriscope licensed users are strongly advised to download and install this or a later version before their free Deriscope upgrade status expires! The reason is that all previous versions carry a bug that may manifest itself after a windows 10 upgrade and results in treating the existing Deriscope assembly as having been installed when the windows upgrade took place. The consequence is fatal as the license then refuses to load the assembly, with the consequence that Deriscope becomes inaccessible! - Added yield curve bootstrapping capability out of interest rate
tenor basis swaps - Added yield curve bootstrapping capability out of forward starting
cross currency basis swaps . - Added yield curve bootstrapping capability out of non-standard
cross currency basis swaps , whereby one or both of the legs may carry an index multiplier and/or a spread. In particular, setting one or both of the index multipliers to zero allows for yield curve generation out of fixed-to-fixed and fixed-to-floating cross currency basis swaps. - Added the new interpolation methods
Compounded Linear andCompounded Cubic in yield curve construction that respectively apply linear and cubic interpolation on a rate (typically zero rate) that is discretely rather than continuously compounded. - Significantly enhanced yield curve diagnostics by reporting full cash flow information regarding the input market rates.
In particular, whenN market rates are used in a yield curve construction, this new information is presented as an array ofN tables, where theith table contains the detailed cash flows associated with theith market instrument.
Importantly, this information is made available even if the yield curve fails to be built so that the user can easier investigate the source of failure. A few instrument types, such as deposit rates, are not supported. This new functionality does not incur any efficiency loss because the tables are populated on demand, only when the user decides to inspect their contents. - Added a function in
Vanilla IRS that calculates and returns the fair spread on the floating leg. - Added functions in
Currency Swap that calculate and return the fair domestic and foreign spreads on the domestic and foreign Ibor index respectively. These functions obviously apply on currency swaps that are of Ibor vs Ibor type. - Added functions in
Overnight Index Swap that calculate and return the fair rate and spread. - Added the time unit
L that represents a time period of four weeks, sometimes also referred asLunar month orLunar period . It follows that a time period ofxL is fully equivalent to4xW for any integerx . This unit is useful in markets - such as the Mexican - where swaps roll on a four-week cycle. - Added the currency-specific ibor indices with custom defined tenor:
AUDbbsw, CZKPribor, DKKCibor, HKDHibor, HUFBubor, IDRIdrfix, INRMifor, KRWKoribor, MXNTiie, NOKNibor, NZDBKBM, PLNWibor, SEKStibor, SGDSibor, SGDSor, SKKBribor, TWDTaibor - Added the currency-specific overnight indices:
CHFTois, CORRA, Tonar - Added the function
Get Holidays that returns all dates between two given dates that are regarded as holidays by a given calendar. - The yield curve interpolation methods
Log Linear andLog Cubic always failed, when used with a modelled quantity of typeZero Yield . - Incorrect construction of
Ibor Rate objects with custom conventions. - The forward starting, pre-defined overnight rates
CADLibor, CHFLibor, EURLibor, GBPLibor, JPYLibor, USDLibor were not correctly implemented. - Several yield curve interpolation methods led to failure, due to not being compatible with the input interpolator object. This made the respective items in the local cell validation dropdown to appear with the (na) prefix. Now an incompatible interpolator object is ignored and the curve stripping proceeds based on a default interpolator object that is compatible with the specified interpolation method.
The big advantage is that the user may now switch through the various interpolation methods and immediately see the results, without having to modify the input interpolator object. - Substituted the entry of calendar daily deposit tenors with business daily tenors in the yield curve construction because QuantLib interpretes daily deposit tenors in business day sense. So an entry like
%3D is not any more allowed and should be replaced with%3B .(This change is not backward compatible) - Lowered the criteria according to which a yield curve is regarded as a valid input in any pricing context. Now only its currency - and not its issuer - needs to match the currency being applicable in the given context, as long as only one yield curve with that currency is present. If more than one curves with the same currency are present, the issuer of those curves becomes relevant to curve selection.
- Renamed the keys
Quote Ccy, Base Ccy, Quote Calendar, Base Calendar within the typesFX andFX Value intoDom Ccy, For Ccy, Dom Calendar, For Calendar respectively in order to match the naming used in other related types.(This change is not backward compatible) - Renamed the keys
Settlement Days andSettlement Rule intoSettle Days andSettle Rule respectively in order to make them shorter.(This change is not backward compatible) - Various fixes relating to the new
Price Simple function. - Enhanced the
Revalue function of theValuation type and thePrice Simple function of theTradable type in that the edited parameter value can now be either a number or a date. - Added a category of products called
Structured under thePortfolio group. Inside that category added the first product calledAsset2 Linked , the payout of which resembles that of a European option on an underlying being the minimum of the prices of two assets as observed on maturity. In addition,a) a leverage factor is in effect under the condition that the total return does not exceed a specified threshold andb) a loss is realized if the minimum falls below a certain trigger. - Various fixes relating to the new
Price Simple function. - Several of the
Price Simple function inputs are now allowed to also be handles of already created objects. For example, theInt Rate input can be a single number such as0.01 , but it can also equal the handle name of an object of typeYield Curve that has been created elsewhere in the spreadsheet. - Introduced the new local function
Price Simple applicable to mostTradable objects. It acts similar to thePrice function, but it has the advantage that all market data are supplied in a much more compact form as elements of a single object. It also contains optional flags that allow for the calculation of the fair value of any given parameter, the repricing based on modified input data and the repricing based on a modified trade date. It conveys therefore similar benefits to those of theFair Value andRevalue functions introduced in the previous version. - In
5.1.0 a fix was introduced that involved the forced termination of Excel in those cases when the user quit Excel after live feeds had been running in asynchronous mode. That fix had the drawback of potentially interfering with the terminating behavior of other installed addins. Now that fix has been fixed - i.e. removed - so that Excel quits normally without forced termination. - Introduced the new local function
Revalue applicable to all objects of typeValuation that happen to contain the result of either aTradable pricing orQuotable valuation. Such objects can be created by applying the usualPrice function on anyTradable with theOutput parameter set as described below. TheRevalue function takes as input any array ofN reference objects along withN reference keys andN numerical values . It outputs a number that results from the revaluation of the callerValuation object based on the specified input. In the case where the caller represents the price of some tradable, the output number is typically the price of that tradable, but it can also be specified to equal any other related output, such as a greek or a leg npv. This function can process anyreference objects on which the caller depends, regardless of recursive depth. It is particularly useful in creating spreadsheet tables that show the price dependence on any variable set of input parameters, making thus obsolete the older approach of creating intermediate objects by means of theClone function.
TheRevalue function takes also an optional date input that is used to reset thetrade date , also known asvaluation date . It can thus be used without anyreference objects input in order to calculate the price of a tradable on a certain future date without the need to change the global trade date in the wizard. - Introduced the new local function
Fair Value applicable to all objects of typeValuation as defined above. TheFair Value function takes as input anyreference object - regardless of type - on which the callerValuation object depends. It also requiresa) the naming of areference key that is part of thereference object andb) thetarget type and specifictarget number that must be produced when the value associated with the givenreference key is set to the found solution. In the case where the caller represents the price of some tradable, thetarget type is typically the price of that tradable, but it can also be any other related output, such as a greek or a leg npv. This function can process anyreference object on which the caller depends, regardless of recursive depth. - Added three more choices in the
Output setting of thePrice function. These are theFull ,Price+Input andFull+Input . TheFull choice results in the pricing output containing any additional data that might be generated during the pricing routine. The remaining two choices turn the pricing output into an object of typeValuation that includes the input data so that it can be reused as input in other functions, such as theRevalue andFair Value described above. These additions have made the earlier optional input keysAdd Input andAdd Extras redundant and therefore have been removed.(The removal of these two keys is not backward compatible) - Introduced the new menu item
Include Trade Date Events in theTools button of the wizard that affects the pricing result in the case when events - such as cash flows - relevant to the undertaken pricing occur on trade date. For example, the price of a zero bond maturing on trade date will equal zero in the default case when trade date events are not included, but will be non-zero when trade date events are included. As a visual hint, the trade date displayed at the top-left of the wizard will always appear in a dark red background when trade date events are included. The most recently used setting remains valid when Excel restarts. - Added custom pricing code that can evaluate the price of a
MinMax Option when the payoff isCash or Nothing because it could not be handled by QuantLib. - Renamed the key
Tradable Price of thePrice Value::Create function toReference since this new name better indicates that it refers to an object rather than just a number. In the same function, also renamed the keySpot Price that refers to the quoted numerical price of the referenced tradable toQuote in order to avoid any semantics overlap with the existing quotable typeSpot Price .(This change is not backward compatible) - Performed the same key changes as above with regard to
Stock Price Value::Create andStock Index Value::Create .(This change is not backward compatible) - Combined the types
Option on Minimum andOption on Maximum into the new typeMinMax Option .(This change is not backward compatible) - Renamed the type
No Underlying Option toBase Option .(This change is not backward compatible) - Renamed the key
Reference Option that appears in multi-asset and exotic options toBase Option .(This change is not backward compatible) - Introduced the new local function
Implied Value that can be called by any object of typeVol Curve . This is a particularly powerful function that returns thevol andtotal variance on every point of the time-strike underlying space, the dimensionality of which becomes 3 in the case of swaption volatility curves. Exceptionally for volatility curves pertaining to asset options, the respective forward quantities are also reported. This function may be employed to construct 2d, 3d and 4d charts of the implied volatility - Under
Data -> Math -> Function -> Real Function added the new typesNormal ,Normal2d MinMax andIntegral . The first returns the cumulative probability and the probability density of a normal distribution with specified mean and standard deviation. The second returns the cumulative probability of the minimum or maximum of a bivariate normal distribution. The third returns the integral of any supplied real function of a single real variable. - Under
Data -> Math -> Function -> MultiReal Function added the new typeNormal2d that returns the cumulative probability of a bivariate normal distribution with specified means, standard deviations and correlation. - All types that inherit from
Real Function are equipped with the new local functionIntegrate , which returns their integral. - Renamed the quotable type
Price that represents the quotient of two tradables to the most appropriate nameSpot Price since its value at time t represents the spot price at time t of the numerator tradable denominated in units of the denominator tradable.(This change is not backward compatible) - Made quite a lot of changes in the interface of
Currency Swap . Please use the wizard to create the correct formulas.(This change is not backward compatible) - In certain environments, an Excel remained active in a zombie state after it was quit by the user after live feeds had been started in asynchronous mode. The noticable effect was the lack of the Deriscope ribbon item when the user started Excel again. The provided fix involves the forced termination of the Excel application in these particular circumstances. Note this fix may interfere with other addins, if they rely on Excel's termination event.
- Wizard permanently failed to create a yield curve under certain circumstances after the task pane had been refreshed with the only remedy being an Excel restart.
- Descriptions and lists of possible fields and tickers could not be displayed when the cells containing the respective keys in the
Live Engine::Create function were selected. - A few non-frequently used keys in
Schedule have been renamed.(This change is not backward compatible) - Renamed the two
FX Swap direction typesReceiver, Payer intoBorrower, Lender respectively.(This change is not backward compatible) - Renamed the two keys
Currency 1, Currency 2 inFX Swap::Create intoDom Ccy, For Ccy .(This change is not backward compatible) - Replaced the two keys
Notional 1, Notional 2 inFX Swap::Create with the four keysStart Dom Not, End Dom Not, Start For Not, End For Not .(This change is not backward compatible) . The extra notionals allow the specification of fx swaps where the notional exchanged at maturity is linked to the forward fx rate observed when the swap is entered. - Renamed the two keys
Domestic Currency, Foreign Currency inFX Forward::Create intoDom Ccy, For Ccy .(This change is not backward compatible) - Expanded the analytics support beyond QuantLib to the new open source library ORE.
The new flagship product is calledMulti Leg Swap and represents an extended swap with an unlimited number of legs, where each leg represents a stream of cash flows that may be fixed or linked to an interest rate or inflation index. The legs can be denominated in different currencies. - Added the new product
Currency Swap , which is a child ofMulti Leg Swap and represents a regular cross currency two-leg swap, where each leg may be fixed or floating. In the latter case the linked index may be ibor, cms or cpi. It turns out this product is capable of representing regular currency basis swaps as well. - Added the new product
FX Swap , which is a child ofMulti Leg Swap and represents a regular fx swap, whereby two currencies are exchanged at some initial time and then again - but with the opposite direction - at some time later. - Added the new product
FX Forward , which is a child ofForward Contract and represents a forward contract where the underlying is a currency, which is exchanged by another currency at some future time. Effectively it is anFX Swap with its initial notional exchange stripped away. - Added the ability to store incoming live feeds in one or more local text files. The new menu item
Store Feeds in File accessible in the wizard underTools->Insert Function->Live Feeds pastes the necessary functions in the spreadsheet. - Added the interpolator types
Natural Cubic andFinancial Cubic in the bootstrapping of the various curves. - Failure to retrieve historical data and/or time stamps from various live feed providers.
- Linked to the
1.14 version of QuantLib. - Revamped the construction of
YieldCurve objects so that market prices associated with a particular instrument type - eg swaps - are supplied through separate objects of a respective type - eg YieldCurveSwp.(This change is not backward compatible) - During flat curve construction, the key
Use Flat Rate is not needed and its presence produces error. - Introduced a new key called
CashFlows that is part of all objects of typeTradable . Its associated read-only value displays the non market-linked cash flows of the linked tradable as a table with at most 18 columns. The table's structure is standardized accross all tradables that support such cash flow reporting. Currently these are:- All types of bonds
- All types of swaps
- Caps, floors and collars on both interest rate and inflation index
- All types of interest rate swaptions
The older functionCash Flows and several product-specific cash flow keys have been removed, since they are no longer needed after this new unified cash flow reporting.(This change is not backward compatible) All changes below break backward compatibility! - Renamed the type
Forward Rate Agreement toFRA - Removed the
Parameter Constraint input from theYield Curve::Create function due to its removal from the 1.14 version of QuantLib. - Removed the
Flat Payoff Extrapolation input from theGaussian 1d Swaption Model::Create function due to its removal from the 1.14 version of QuantLib. - Renamed the key
Interpolation Method in theCreate function ofCredit Curve andInflation Curve toInterp Method . - Renamed the key
Coupon Payment Delay ofBond toPayment Delay - Removed the
Full Cash Flow Details input from theBMA Swap::Create function due to the new unified cash flow treatment. - Changed the read-only key prefix
¬ to_ . - Added the static function
Date::IMM Dates that returns an array of future IMM dates. - Added several new local functions under the type
Bond that return various properties of the calling Bond object. - Removed the types
SplineOM1 andSplineOM2 as valied values for theDerivative Approximation= key of objects of typeInterpolation because it can lead to Excel crash when used to build theInterpolator input in yield curve construction.(This change is not backward compatible) - Changed the default compounding convention from
Simple toContinuous in the localYield Curve functionsImplied Values ,Zero Rate andForward Rate . Also did the same change in theYield Curve construction out of a flat rate.(This change is not backward compatible) - Improved the local
Bond::KRD function so that its output exactly matches the bond's modified duration when the rate shift becomes arbitrarily small. - Changed the function
DayCount::Time Length fromstatic tolocal .(This change is not backward compatible) - Most of live feeds functions returning historical time series failed due to coding error.
- Added three more ibor types: The Australian Bank Bill Swap Rate
Bbsw , the New Zealand Bank Bill Benchmark RateBkbm and the Shanghai Interbank Offered RateShibor . - Added two more overnight rate types: The Australia Overnight Index Average
Aonia and the New Zealand Official Cash RateNzocr . - Empty cells supplied as input for mandatory keys resulted in "unexpected error" message. Now a proper diagnostic message is issued.
- Reintroduced the default feature of user notification about the availability of a new Deriscope release when Excel starts. This behavior can be shut off in Settings.
- Substantially improved the process of upgrading to a new Deriscope release from within Excel. The new process is seamless and effective because it also performs a deinstallation prior to the final installation.
- Restricted the allowed maximum number of scenarios employed in the VaR calculation to 1,000 under all licenses below the Professional.
- Added the
KRD (Key Rate Duration) function underBond Barchart historical data were displayed in wrong columns. Also volume data were missing.- Various bond function enhancements.
- Fixed minor bugs relating to
TrueFX . - Introduced
intraday time series fromWorld Trading Data . One minute intraday time interval and range up to last 30 days. - Re-enabled the
Enable when Excel Starts feature in the wizardSettings . - Deriscope loading failure after certain spreadsheets have been opened directly through the file manager.
- The
spreads column in the swap rate table input ofYield Curve is now optional. - The keys
Rate DayCount andRate Frequency in the local functionsZero Rate andForward Rate ofYield Curve objects have been renamed toDayCount andFrequency respectively.(Note this change break backward compatibility with regard to the spreadsheet formula ds , when its input references one of these functions.) - Various enhancements in the output produced by the local
VaR function of Tradable objects. - Descriptions for wizard-only keys could not be displayed.
- Made inflation curve generation available to no-license.
- OIS pricing failed on non-flat, non-USD curves
- Small license scheme readjustments.
- The license dialog failed to show when Deriscope was installed under insufficient security privileges.
- Changed the license scheme.
- The live data portion of the contents of an object of type
Stock failed to display in the wizard. - Changed the license scheme.
- Added the
dsSort spreadsheet function that can sort the data of any input range, even when the range contains formulas. - Added search function from
World Trading Data . - Display of historical data extending beyond 30 years failed due to a date representation bug.
- Added historical data feeds from
IEX concerning US stocks and ETFs.
A demo is accessible underTools -> Insert Function -> Live Feeds -> (IEX) -> Time Series . - All output fields in historical data are now alphabetically sorted.
- The order of output columns in intraday historical data from
Yahoo Finance was not stable over time. - Added synchronous and asynchronous real time feeds and historical data from
Barchart concerning global stocks, indices, mutual funds, options, futures and forex rates (both fiat and crypto) supported by this provider.
A demo set of live prices and historical time series is produced by the wizard menu items available underTools -> Insert Function -> Live Feeds -> (Barchart) . - Various stability enhancements.
- Increased the maximum granularity of the historical data received from
Yahoo Finance fromdaily down toone minute . Intermediate intervals such as5 minutes orone hour also apply. In technical terms, the keyInterval of an object of typeHistYF can now also accept the intra-day values:Minute, 2 Min, 5 Min, 15 Min, 30 Min, 60 Min, Hout, 90 Min - Two separate api calls were sent to the live feeds server for each single request. This had the negative side-effects of doubling the overall feed acquisition time delay and the much faster exhaustion of the api call quotas associated with the user's data feed license.
- Deriscope loading failure after opening certain workbooks.
- Occasional unwarranted display of error messages by the wizard when switching between open workbooks.
- Technical changes related to license management.
No need to update to this version if you have already installed the previous one! - Added synchronous and asynchronous real time feeds and historical data from
World Trading Data concerning several global stocks, indices, US mutual funds and forex rates supported by this provider.
A demo set of live prices and historical time series is produced by the wizard menu items available underTools -> Insert Function -> Live Feeds -> (World Trading Data)
The successful operation requires a special code that can be obtained for free here.
Higher feed rates are also supported byWorld Trading Data on a paid basis. - Deriscope failed to load if spreadsheet cells containing Deriscope formulas have been calculated before clicking on the "Enable and Show Wizard" button.
- Contents of objects containing tables could fail to be displayed in wizard for certain types of table data.
- Calculations involving the daycount convention
ACT/ACT(ICMA) could lead to Excel crash if the related time interval had zero length. - In live data acquisition, changed the names of several fields returns by the various live feed providers. So for example the IEX field
latest Price , the Alpha Vantage fieldclose and the Yahoo Finace fieldregularMarketPrice have been all renamed toprice .(Note this fix breaks backward compatibility with regard to various functions that rely on these field names. Read the produced error messages for details on the new valid names) - In Historical Data requests, changed the name of the key
Reverse Order to the more intuitiveDescending .(Note this fix breaks backward compatibility with regard to Create functions ofHistDataRequest , when this key is explicitly used) - The following special Deriscope functions are now exported to Excel VBA:
StartWizard
QuitWizard
ShowWizard
MinimizeWizard
HideWizard
ForceRecalc
SetTimeOut
SetAutoRefresh
SetFlash
ToggleFlash
GetTradeDate
SetTradeDate - Added synchronous and asynchronous real time feeds from
Yahoo Finance concerning all securities supported by this provider. In particular international stocks, indices, currencies, commodities and certain options are supported.
A demo set of live prices is produced by the wizard menu itemsSynchronous (extended) andAsynchronous (extended) accessible throughTools -> Insert Function -> Live Feeds -> (Yahoo Finance)
The involved time delays are between 0 and 30 minutes as described here.
For each ticker, not only the last traded price is returned, but also several more quantities as described below. - Reactivated the
~Live Data item contained in each object of typeStock so that it displays the pertinent live data reported by Yahoo Finance. These are the following:
ask askSize averageDailyVolume10Day averageDailyVolume3Month bid bidSize bookValue currency earningsTimestamp epsTrailingTwelveMonths exchange exchangeDataDelayedBy exchangeTimezoneName exchangeTimezoneShortName fiftyDayAverage fiftyDayAverageChange fiftyDayAverageChangePercent fiftyTwoWeekHigh fiftyTwoWeekHighChange fiftyTwoWeekHighChangePercent fiftyTwoWeekLow fiftyTwoWeekLowChange fiftyTwoWeekLowChangePercent fiftyTwoWeekRange financialCurrency fullExchangeName gmtOffSetMilliseconds longName market marketCap marketState priceHint priceToBook quoteSourceName quoteType region regularMarketChange regularMarketChangePercent regularMarketDayHigh regularMarketDayLow regularMarketDayRange regularMarketOpen regularMarketPreviousClose regularMarketPrice regularMarketTime regularMarketVolume sharesOutstanding shortName sourceInterval symbol trailingAnnualDividendRate trailingAnnualDividendYield trailingPE twoHundredDayAverage twoHundredDayAverageChange twoHundredDayAverageChangePercent - Significantly increased the run-time efficiency of live data acquisition on the presence of failed feeds. Now Excel never freezes, even when hundreds of failing feeds are requested per second.
- Fixed a small but annoying bug, whereby Deriscope failed to load if the user clicked on
Enable and Show Wizard after one minute had lapsed since Excel start. - Due to a change to the feeds format received from Alpha Vantage (received 5 min chain although requested 1 min), Dericope could not parse the price quote associated with indices such as
^DJI . - Introduced the new configuration entry
Alpha Vantage Fetch Interval inSettings -> INTERNET that allows you to customize the time delay between successive api calls to Alpha Vantage. This is an important addition that enables receiving live feeds on several symbols without violating the limit imposed by Alpha Vantage on the number of api calls per minute.
Note this entry is different from the takt input in the live feeds engine that determines how often the whole set of tickers is processed.
The default value is set to 20 seconds because testing indicates it is best compatible with the current Alpha Vantage free version policy of allowing only up to 5 api calls per minute.
You should set it to an appropriate custom value if you possess a commercial Alpha Vantage license that grants you a higher feed rate. - Changed the default value of the
Alpha Vantage Time Out entry inSettings -> INTERNET from 3 to 12 seconds, since the free version of Alpha Vantage allows only up to 5 api calls per minute, which means there will be no discernible time delay even when the time out interval is occasionally used up. - Removed the
Alpha Vantage Time Out 2 entry fromSettings -> INTERNET because now only a single api call is made to the Alpha Vantage server per live quote request, in order to reduce the overall rate of api calls. - Granted non-licensed Deriscope users a 7-day grace period with 30 minutes per Excel session for evaluation purposes.
Do not upgrade to this version if you already have the 4.0.0
The only change introduced here is improved diagnostic messages during non-licensed Deriscope access.- The main change that affects this release
4.0.0 is the fact that Deriscope assumes a semi-commercial character by levying a small one-time fee for its unrestricted usage. The application may still be downloaded and installed anonymously without any registration or payment, but the lack of a user license imposes certain usage restrictions. - The second major addition in this release is the local function
VaR that applies to all objects the types of which inherit fromTradable . This function is capable of calculating theValue at Risk of the associated tradable instrument. In particular, the tradable instrument can be of typePortfolio , which represents a weighted collection of various other tradable instruments, some of which may be portfolios themselves. With regard to portfolios, theVaR function imposes an upper limit of5 elementary constituent products. A special commercial Deriscope license that lifts this limit is available. - Added the payoff type
RSO in the definition of European options on any underlying. The nameRSO derives fromRisk Scaling Options , which are European options with payoff at expiry given by the formulamax{ ε(βS(T)-λK(1-α)S(T)α) , 0 } , whereβ, λ, K, α are all constants andS(T) is the price of a specified underlying at the option expiry timeT . The pricing of these options is done outside of the QuantLib library and is based on an analytical formula derived byLloyd Blenman andSteven Clark as described here. Several risk figures (greeks) are also reported. - Added the tradable instrument with type
Power Exchange Option that represents a combination of a spread and power option. It is a European option with payoff at expiry given by the formulamax{ λ1*S1(T)α1-λ2*S2(T)α2 , 0 } , whereλ1, α1, λ2, α2 are all constants andS1(T), S2(T) are the prices of two specified underlyings at the option expiry timeT . The pricing of this option is done outside of the QuantLib library and is based on an analytical formula derived byLloyd Blenman andSteven Clark as described here. - Setting
Add Risk = TRUE and selecting at least one of theDelta ,Vega orRho in the input parameters of thePrice function within the wizard, followed by a click on theOptional Parameters Visibility button to hide all unchanged optional inputs, resulted in a pasted formula that lacked the important inputsRisk Ref andRisk Models and thus returning error. The resolution has been to redefine theRisk Ref andRisk Models inputs as mandatory ifAdd Risk = TRUE .(Note this fix breaks backward compatibility with regard to the spreadsheet formula ds , when it is used to process aPrice function taking the explicit inputAdd Risk = FALSE in combination with theRisk Ref andRisk Models entries. Please edit all such spreadsheet occurrences by following the instructions in the produced error message. A simple resolution for example would be to change the name of the affected formulas fromds todsi .) - Renamed the keys
Cash Payoff andSecond Strike in the creation of objects of typePayoff toCash andStrike2 respectively.(Note this fix breaks backward compatibility with regard to the spreadsheet formula ds , when it is used to createPayoff objects with explicit reference to any of these two keys. Please edit all such spreadsheet occurrences by renaming the affected keys.) - In order to allow custom filtering of the rows in the historical data coming from
Alpha Vantage orYahoo Finance , added the optional entryFilter in the creation of objects of typeHistAV andHistYF that can be set to one of:NoFilter : No filter is appliedBlockFirstZero : Blocks the rows of which the first data element (after the initial date element) is zeroBlockAllZeros : Blocks the rows of which all data elements (after the initial date element) are zero.BlockDates : Blocks the rows of which the left date element is part of a supplied list of dates. This option requires the additional entryBlocked Dates that supplies the array of excluded dates. - Added four new output fields in the Alpha Vantage live feeds for stock prices:
open ,high ,low andvolume . - In
Yield Curve construction, futures maturities can now follow the australian ASX schedule, in addition to the more common IMM schedule. This is achieved by adding the optional inputFutures Dates that may be set to eitherIMM orASX . - When the
Pricing Method of aModel[CDS] object was set toIsda Cds a wrong price ofCDS was produced during the first calculation attempt. - The yield curve creation out of BMA rates failed when the valuation date was different from Wednesday or Tuesday due to a missing historical BMA index fixing as of the prior Wednesday. This is now resolved by supplying an additional mandatory entry called
Previous Wednesday Fixing that supplies the missing fixing.(Note this fix breaks backward compatibility with regard to the spreadsheet formula ds , when it is used to create a yield curve out of BMA rates. Please edit all such spreadsheet occurrences by adding the new mandatory key/value input.) - Added the stochastic processes:
Geometric Brownian ,Ornstein Uhlenbeck ,Exponential Ornstein Uhlenbeck with Jumps ,Square Root ,Heston . - Added the function
Simulated Values that takes as input an array of stochastic processes and a time grid and returns the simulation-generated paths attained by the stochastic processes on the given time grid. - Added the following functions that apply on any stochastic process:
Initial Value ,Drift ,Diffusion ,Expectation ,Std Deviation ,Covariance ,Evolve . In particular theExpectation ,Std Deviation ,Covariance ,Evolve functions take as input a time interval. - Added three new Heston model discretization types:
Broadie Kaya Exact Scheme Lobatto ,Broadie Kaya Exact Scheme Laguerre andBroadie Kaya Exact Scheme Trapezoidal . - The stand alone creation of a
SABR Model contained anOptimization element that was set with defaultMax Iterations andMax State Iters values that were too low for a successful SABR calibration. - Added the read-only elements
¬Sparse SABR Params ,¬Dense SABR Params ,¬Market Vol Cube and¬Vol Cube ATM Calibrated as part of aVol Curve object that are visible only when theVol Input is set toSwaption Cube . These elements contain valuable information about the SABR calibration. In case the SABR calibration fails, then a new read-only element called¬Calibration Failure Info appears that contains diagnostics about the failure. - Removed the item
SABR from the listVol Type that lives within the typeVol Spec . It is not needed because now the SABR model is automatically used when theVol Input element within aVol Curve object is set toSwaption Cube . - Added the volatility specification types
Normal andShifted Lognormal - Added the pricing methods
Bachelier andBlack Displaced to the instrumentsVanilla Swaption andCapFloor - Added the optional input
Reverse Order in the creation ofHistYF andHistAV , which controls the chronological ordering of the historical data received from Yahoo Finance and Alpha Vantage. - Enhanced the
Yield Curve constructor out of bond prices in the parametric fit case by adding a new optional key calledParameter Constraint that expects an object of typeConstraint . The later object defines the constraint applied on the parametric model parameters, which may be one ofNo Constraint ,Positive Constraint ,Boundary Constraint ,Nonflat Boundary Constraint andComposite Constraint - Added several new wizard menu items under
Tools -> Insert Function -> Live Feeds -> xyz that insert a minimal version ofdsLiveGetSync anddsLiveGetAsync in the currently selected single cell. - Excel was hanging for a few seconds as it was trying to locate dependencies. This bug appeared when a big subset of an object's contents were displayed in the spreadsheet through the Show function and became worse the bigger the displayed subset was.
- Failure of the rescaling of historical data in certain cases where the last row in the live feeds contained only the date but no values.
- Enhanced the output of the wizard menu item
Paste Demo Formulas underTools -> Insert Function so that it includes usage demos of the special Deriscope functionsdsMergeH anddsMergeV . - Added the wizard menu item
Paste All Currency Pairs underTools -> Insert Function -> Live Feeds -> TrueFX that simply pastes all currency pair symbols supported by the TrueFX live feeds provider. - The spreadsheet formula
=dsLiveGetSync("TrueFX","XYZ/ABC") failed when it was applied on a single cell. - Wrong calculation of the target price presented as default input parameter within the wizard when the
Implied Vol function was selected. - The automatic creation of the default bond referenced by a CDS during its construction in the wizard resulted in a maturity extending beyond the end of the swap.
- Enhanced the
Clean Price function of theBond type so that it can handle a Z-spread input. -
Added the following 22 Bond functions:
Is Tradable Previous Cash Flow Date Next Cash Flow Date Previous Cash Flow Amount Next Cash Flow Amount Previous Coupon Rate Next Coupon Rate Accrual Start Date Accrual End Date Reference Period Start Reference Period End Accrual Period Accrual Days Accrued Period Accrued Days BPS ATM Rate Duration Convexity Basis Point Value Yield Value Basis Point Z-spread
- The wizard's Browse Area consumed unnecessarily space by showing up as an empty rectangle when new information was displayed in the Info Area, even though it was supposed to be collapsed due to an earlier user action.
- Changed the names of the Bond functions
Get Start Date andGet Maturity toStart Date andMaturity Date respectively. Changed the names of a few input keys to various Bond functions. Changed the names of the Schedule functionsGet Start Date andGet Last Date toStart Date andLast Date respectively.(Note these changes break backward compatibility with regard to the spreadsheet formula ds , when its input references one of these functions. Please replace all spreadsheet occurrences with the correct function syntax, which you can create using the wizard.) - Added the date bump conventions
Half Month Modified Following andNearest . - Added the day count conventions
ACTUAL/365 for Canadian bonds ,ACTUAL/365 no leap andBus/252BR for Brazilian bonds . - Introduced two optional input parameters to the
Time Length function of theDayCount type, so that the reference dates required by certain day counts can be specified. - Creation of Yield Curve failed when a mixture of zero and fixed rate bonds was used as input data.
- Changed the hierarchy with regard to zero bonds so that the
Zero Bond type inherits from theFixed Rate Bond type. This has the advantage that now aZero Bond object can be used wherever aFixed Rate Bond object is required. - In the case of the yield curve creation out of a flat rate, added the optional
Compounding andFrequency inputs that specify the respective rate conventions. - Added
Compounded Then Simple interest rate compounding convention that is essentially the reverse of the existingSimple Then Compounded convention. - Added the United States calendars
US_LiborImpact andUS_FederalReserve . - Added the Chinese calendar
CN_IB for Interbank calendar. - Added the Israelish calendars
TASE andTASE_GENERIC . - Changed the Icelandish calendar name from
IS toICEX . - Minor wizard-level improvement concerning the display ordering of the keys used as input to the
Create function of the typeYield Curve . More specifically the keysModelled Qty, Interpolation Method, Build Method andAccuracy have been shifted to the bottom of the Browse Area screen. - Introduced the spreadsheet function
dsReplace that takes input a) a source range with dimensions NxM containing any data, b) the coordinates of an orthogonal subset of that range with dimensions nxm, c) a target range with dimensions nxm and returns an array with dimensions NxM, the data of which match those of the source range except of the nxm subset, which is replaced with the data of the target range. This function is particularly useful in cloning objects that contain array data - such as Yield Curve objects containing a table of deposit rates -, whereby only a subset of the original array data needs to be replaced with new data. - Serious bug that caused severe Excel sluggishness (almost freeze) as soon as the contents of an object containing an array were displayed in the taskpane.
- Linked to the recently released QuantLib version 1.12. The QuantLib list of changes for this release is here.
- Failure to report the latest available Deriscope version during startup, which was caused by the host server's Transport Layer Security (TLS) upgrade to the latest TLS 1.2
- Small bug introduced in version 3.0.0
- Added a new version of the Stock Trading Simulator spreadsheet that is capable of retaining the received live feeds for further processing by the user. Available for download here. Video tutorials available: Stock Trading Simulator and Stock Trading Simulator - version 2.
- Added a new Forex Trading Simulator spreadsheet that is capable of retaining the received live feeds for further processing by the user. It handles most important currency pairs and powered by the TrueFX live feeds provider. Available for download here. Video tutorial available: Forex Trading Simulator.
- Introduced real time FX rates in Excel on the most important currency pairs powered by the TrueFX live feeds provider. The respective formulas can be generated under
Tools -> Insert Function -> Live Feeds -> (TrueFX) . Video tutorial at Real Time forex rates in Excel from TrueFX Demo spreadsheet at ExcelRealTimeTrueFX.xlsx - Enhanced the Live Feeds Engine so that it can retain in a memory buffer a specified number of incoming live feeds. This can be achieved by starting the Engine through a new spreadsheet formula called
dsLive that takes as input a single handle name. If that handle name points to an object of typeLive Engine , thendsLive starts the Engine according to the specifications in that object. Among else, theLive Engine object determines the number and type of the received live feeds that need to be retained in memory. Note thedsLiveStartEngine spreadsheet formula is still retained because of its simplicity, but it cannot be used to start an Engine with buffer capabilities. Video tutorial at Real Time data in Excel with retention of the received feeds Demo spreadsheet at ExcelRealTimeAdvanced.xlsx - The buffered feeds can be displayed on the spreadsheet through the
dsLiveGetAsync formula, by setting a newly introduced last optional parameter to true. Alternatively they may be displayed through thedsLive formula, provided that its input is the handle name of an object of the new typeLive Display Async . - The
dsHist formula has been replaced by thedsLive formula.(Note this change breaks backward compatibility with regard to the spreadsheet formula "dsHist"! You must replace all occurrences of . Note also that the second inputdsHist in your spreadsheets withdsLive )GoToURL argument to the originaldsHist formula does not exist in the newdsLive formula. TheGoToURL boolean still exists, but is now part of the object that is fed as input to thedsLive formula. - The strategy is to elevate
dsLive as an all-in-one formula that can do various live data related jobs according to the specs in some object being fed to it as its single input argument. - Changed the names of the types
HistRequestAV, HistRequestYF, HistRequestComp toHistAV, HistYF, HistComp respectively, in order to reduce their length and thus the width of the Excel columns containing these names.(Note this change breaks backward compatibility with regard to the spreadsheet formula ds , when its input references one of these types! Please replace all spreadsheet occurrences as suggested here!) - Introduced new Yield Curve calibration to bond prices based on non-linear optimization. The popular
Nelson-Siegel andSvensson parametric fitting methods are supported. Additional supported methods are:Exponential Splines ,CubicB Splines ,Simple Polynomial andSpread . Video tutorial at Bond Curve Fitting in Excel using the QuantLib Nelson-Siegel and Svensson methods Demo spreadsheet at YieldCurveNelsonSiegelSvensson.xlsx - Bug that seemed to affect primarily the fx and cryptocurrency rates received from Alpha Vantage but had the potential to affect all feeds that are received in decimal format.
- Bug that caused the suppression of the "Loading Values, Please wait!" alert meant to appear when the user clicked on a cell in the taskpane that contained a large number of possible values, such as the value cell for the "Name" of an Issuer object with country set to "United States", which contains over 35,000 possible values.
- Related to first call of dsLiveHist
- (A)synchronous live data from
IEX (Investors Exchange) include now the top section of the IEX Order Book. In other words, live quotes on the best bid and ask prices and sizes are (a)synchronously reported. This is achieved through a new provider code named "IEX Tops". For demonstration purposes the wizard generates the complete set of formulas underTools -> Insert Function -> Live Feeds -> (IEX Tops) . - Introduced the new Deriscope formula
dsAny that is capable of producing in Excel anything that IEX delivers in json format! This new formula works like dsLiveHist, i.e. it expects as input an object of typeAnyRequestIEX , the role of which is to specify the details of the request to be sent to the server of the live feeds provider. For demonstration purposes the wizard generates the complete set of formulas underTools -> Insert Function -> Live Feeds -> (IEX) -> Any . - Changed the name of the Deriscope spreadsheet formula
dsHist todsLiveHist in order to make it clear that it retrieves live feeds.(Note this change breaks backward compatibility with regard to this spreadsheet formula!) - Removed the Deriscope spreadsheet formulas
dsStats, dsFin because their output is now produced by the new spreadsheet formuladsAny that references a Request object of typeAnyRequestIEX that has itsService property set to one ofstats, financials, earnings .(Note this change breaks backward compatibility with regard to these spreadsheet formulas!) - Removed from wizard the menu items
Stats, Financials underTools -> Insert Function -> Live Feeds -> (IEX) due to the change above. - Live data from
IEX (Investors Exchange) are now available. They cover true real time (sub-second time delay) prices of over8,000 US stocks and ETFs . Both synchronous and asynchronous requests are supported. Also several statistical indicators - called stats by IEX - and company quarterly financial data are reported. - The synchronous and asynchronous live data from IEX are accessed through the same functions as those used for AlphaVantage by setting the feeds provider code to
"IEX" . - The statistical indicators are accessed through the new Deriscope formula
dsStats . - The quarterly financial data are accessed through the new Deriscope formula
dsFin . - No Deriscope taskpane is any more loaded when Excel starts. This allows the user to work with Excel without any interference with Deriscope. It is nevertheless possible to configure Deriscope so that it loads automatically.
- A new ribbon group item called
Deriscope - a top menu item in versions earlier than Excel 2007 - appears that allow the user to switch on and off the Deriscope taskpane. A similar option is made available through the Tools button and Excel's context menu appearing after a mouse right-click. - About overall taskpane stability in Excel 2013 and later by redesigning the taskpane manager. Also about third party Add-Ins loaded together with Deriscope.
- Now Deriscope works fine in Excel 2013 when Excel starts after the user opens a spreadsheet directly through the Windows Explorer.
- Removed the Deriscope-managed workbook saving dialog introduced in version 2.5.0 and re-enabled Excel's native dialog.
- When the number of tickers processed by
Hist Request AV orHist Request YF exceeded 27, a failure was caused by a built-in Excel limitation. A similar restriction was also imposed onHist Request Comp , this time with regard to the total number of individual requests. - Related to
Hist Request Comp or when several tickers were processed byHist Request AV orHist Request YF , whereby the whole report failed even if only one of the constituent requests failed. - Enhanced the type
Hist Request Comp to also accept individual requests that happen to share the sameFunction Name . Now, for example, a composite request may comprise twoSMA requests differing on theirtime_period property. - Added the optional key
Function Label in theHist Request AV andHist Request YF types so that the user can customize the label under which the respective data are reported in the combined (composite) report. - Failure of the wizard menu option
TimeSeries (Composite) underTools -> Insert Function -> Live Feeds - About the dsHist formula: Ticker inputs containing blanks (invisible characters) caused url failures. Now such blanks are trimmed away.
- Introduced live fx rates for physical and digital currencies (cryptocurrencies) from the Alpha Vantage provider. A total of 165 physical and 392 digital currencies are supported. All possible cross fx rates can be requested.
- Introduced historical bitcoin fx rates from the Alpha Vantage provider. The intraday series is updated in real time every 5 minutes. Available are also daily, weekly and monthly time series.
- Added an optional input parameter to the special Excel formulas dsHist and dsLiveGetSync called GoToUrl. It takes a boolean value. If set to true, each produced url will be also visited through the default browser. If omitted it is set to false. It enables the user to run diagnostics by examining the raw data as they produced by the feeds provider before they are intercepted, processed and relayed to the spreadsheet by Deriscope.
- Released API for Visual Basic. This Programming Interface allows the user to interact with Deriscope through Visual Basic code.
- Replaced Excel's native dialog appearing when a workbook is closing with a Deriscope-managed dialog. This protects Deriscope's stability under various scenarios of user actions, such as cancelling the closing operation or saving the workbook before closing.
- Problem relating to starting Deriscope from workbooks that have been opened in protected view, such as workbooks that were email attachments at the time of their opening. In particular, this affected only Excel 2013 as well as Excel 2016 64 bit. Notably Excel 2016 32 bit was not affected! In addition the problem appeared only when the user attempted to open a protected view workbook from within Excel and only if at least one other workbook was already open!
- Time series properties were displayed in a non-constant order.
- Problem relating to saving and reopening a workbook that has been repaired by Excel due to the existence of validation dropdowns with too many items.
- Interference problem with external objects that happened to have the BackgroundQuery property set to true. These objects were refreshed as a side-effect of the tutorials with sometimes disastrous consequences.
- This version is a pure bug fix release that addresses a
very serious issue confronting the Excel 64 bit users. The Excel 32 bit users who are already in possession of the previous 2.4.0 release, do need to download this version! The bug fixed in this release was the inability to enter the Settings area of Deriscope, which rendered the registration of the Alpha Vantage User key impossible, thus incapacitating the acquisition of live feeds from the Alpha Vantage provider! - Added support for historical data from the Yahoo Finance provider. Now the special dsHist Excel formula accepts also input objects of the new type
HistRequestYF . - Added two additional menu items called
Time Series andTime Series (Composite) underTools -> Insert Function -> Live Feeds -> (Yahoo Finance) that demonstrate the new feature above. - Added an additional menu item called
Refresh Yahoo Credentials underTools that enables the user - when the link to the Yahoo Finance web service fails - to rebuild the security tokens that Deriscope uses internally in order to execute the web service call. - Added an additional permanent configuration setting called
Yahoo Finance Auto Refresh Credentials underTools -> Settings -> Internet that instructs Deriscope to automatically rebuild the Yahoo Finance security tokens mentioned above before each and every web service call. - Added an additional menu item called
Copy Allowed Parameter Values underTools that (re)creates all Deriscope validation dropdowns in those cells within the currently selected range, where such dropdowns are applicable and also copies the values associated with these dropdowns into the clipboard so that the user may paste them afterward in the spreadsheet or anywhere else. - Removed the
Force Recalc menu item underTools and replaced it with a submenu consisting of 6 options that provide for fine-tuned forced recalculation of one of:Everything, active workbook, active worksheet, selected range , as well as targeted recalculation of only the error-containing cells found in either the active worksheet or the selected range. The latter is particularly useful when sparse errors have occurred, but a full Excel recalculation is not desired, due to either a) processing time considerations or b) the risk of replacing healthy formula outputs with newly introduced errors. - Bug that was responsible for an alert display when the user quit Excel. This fix seems to also have a positive effect on the ability to open an Excel spreadsheet directly from the File Manager before having started Excel. The latter issue still persists though in Excel 2013.
- Introduced a special storage procedure specifically for the
Alpha Vantage User Key entered by the user so that it is permanently stored and is automatically available at a subsequent Excel session, even if the rest of the configuration settings are reset to their default values. - Changed the names of the types
HistDataRequest, HistDataRequestAV, HistDataRequestComp toHistRequest, HistRequestAV, HistRequestComp respectively, in order to reduce their length and thus the width of the Excel columns containing these names.(Note this change breaks backward compatibility with regard to the spreadsheet formula ds , when its input references one of these types!) - Problems relating to starting Deriscope from workbooks that have been opened in protected view, such as workbooks that were email attachments at the time of their opening.
- Substantially stopped the very annoying taskpane flickering by removing an unnecessary highlighting feature. Now the taskpane reacts much faster and more smoothly as the user hovers the mouse over and out of its area.
- Improved the TaskPane Reactivity High setting so that Excel's undo history is not deleted as the user select various cells.
- Improved the TaskPane Reactivity High setting so that Excel does not hang for a few seconds as text-containing cells referenced by special formulas, such as dsHist or dsLive, get selected. These functions contain no key-value pairs so there is no reason for the taskpane to waste resources analyzing these functions.
- Introduced integrated Excel tutorials, tips and warnings that appear automatically when and if a need arises.
- Added multi-ticker and composite request support to the Alpha Vantage Historical data through the new
HistDataRequest type. Also thedsHist Excel formula now takes only one argument that is expected to be a handle name of an object of typeHistDataRequest .(Note this new feature breaks backward compatibility with regard to the spreadsheet formula "dsHist"!) - Added a new
timeout property in the HistDataRequest type that takes precedence over the respective timeout definitions under Settings. - Bug observed in the stand-alone Excel version 2016 (not the 365 one!), whereby the opening of a spreadsheet directly from the File Manager before Excel had started, led to taskpane corruption.
Note that a similar attempt to open a workbook in 365 results to the taskpane being completely absent. Users of 365 are therefore advised to start Excel prior to opening workbooks from the file manager. - The ISDA pricing method has been added in the pricing of Credit Default Swaps
- The Analytic Heston method has been added in the pricing of european options, which includes the Andersen Piterbarg engine for the representation of the complex logarithm.
- Any cell-bound validation dropdowns that are created by Deriscope with data exceeding 255 characters are now removed before a workbook is saved. This solves an existing bug, whereby the message "Excel found unreadable content" appeared when the user attempted to open a previously saved workbook that happened to contain such validation items.
- Date parsing bug, whereby a certain type of text (eg "193.2000") was wrongly interpreted as date (19.03.2000)
- Several bugs that led to task pane corruption during workbook saving in Excel 2016
- Made dsHist - the function that retrieves historical time series from a live feeds provider, such as Yahoo Finance or Alpha Vantage - persistent, in the sense that it keeps trying - up to a certain number of repetitions - until the feeds are received. This resolves the frequent "timeout error" appearing after dsHist was executed for the first time.
- Changed the default setting that controls Excel's calculation state when Deriscope starts, from Manual to Inherited. Under the new setting, the default behaviour will be so that Excel's calculation state will not change when a user presses the Start button in order to load Deriscope analytics into Excel. As before, that default behaviour can still be changed in the Settings.
- Enhanced the diagnostic message "Object named xyz does not exist!" with a suggestion that the user ensures that the responsible formula has been calculated.
- Integration with the latest
QuantLib version 1.11
The QuantLib version history is available here - Complete revamp of the the live feeds interface. The synchronous method is now accomplished through the new function dsLiveGetSync. The asynchronous method now requires a) a live feeds engine initiated through dsLiveStartEngine and b) the display of the latest acquired data through the function dsLiveGetAsync.
- Now getting live feeds does not erase Excel's undo history, provided that flashing has been switched off. Also several other user actions, such as selecting cells containing keys, does not necessarily interfere with either the clipboard or the undo history.
- A warning is issued before an action is undertaken that is accompanied with a negative sideeffect, such as clipboard or undo history deletion.
- The grid data entry dialog appears now with the right size and position with respect to all grid cells and various windows text size settings
- The "About" option in wizard now returns correct operation system information in the cases of
Windows 8.1, Windows Server 2012 R2, Windows 10 andWindows Server 2016 - Integration with the latest
QuantLib version 1.10.1
The QuantLib version history is available here -
On Yield Curve construction:
- Implementation of
Dual Curve Bootstrapping through an additional exogenous Discounting Yield Curve input in the swap market data - Optional specification of the
Forward Start andPillar Choice in the market swap rates input - New mandatory
Spread column in the table of market swap rates, where the floating leg spread for each swap is specified.(Note this new feature breaks backward compatibility with regard to function "Create" of type "Yield Curve"!) - New mandatory
Pillar Date column in the table of market swap rates in case the Pillar Choice is set to Custom Date - Two more Yield Curve building market instrument choices:
a) OIS rates andb) BMA Ibor fractions , both with exogenous Discounting Yield Curve input capability
- Implementation of
-
On Real Time Data:
- Addition of
Alpha Vantage as aReal Time Data provider . The spreadsheet functionsdsLive anddsQuote have been slightly modified so that they can request live data from either Yahoo Finance or Alpha Vantage.
Note the big current advantage of Alpha Vantage in relation to Yahoo Finance is the delivery of prices with only up to one minute delay. It also supplies quotes, such as DJI, that are not made available by Yahoo(Note this new feature breaks backward compatibility with regard to the spreadsheet functions "dsLive" and "dsQuote"!) - Addition of Alpha Vantage as a
Historical Data provider . ThedsHist spreadsheet function has been slightly modified so that it can request historical data from either Yahoo Finance or Alpha Vantage. Whereas Yahoo Finance historical data service is currently completely broken, Alpha Vantage delivers time series of intraday and daily quotes as well as several statistical indicators that can go back to 20 years(Note this new feature breaks backward compatibility with regard to the spreadsheet function "dsHist"!) - Improvement of the information returned to the user by the spreadsheet function
dsLive . Instead of long cell-bound sentences and flashing text appearing temporarily in the task pane, an object is now returned that contains all relevant information in a persistent fashion
- Addition of
-
Data Entry change (see below under Bug Fixes)
- A major user interface issue affecting Excel 2016 users has been addressed. With the previous version users of Excel 2016 were unable to enter data in the task pane using the keyboard. That was due to Excel 2016 resisting to release the focus away from the spreadsheet, which resulted in keyboard-generated user input flowing to the wrong destination.
The solution required a dramatic change of user input interface towards a new data entry screen, at least in those cases where keyboard is required. This new interface actually is more stable and leads to fewer surprises than the older one.
As a useful byproduct, users now have the additional option to select a custom date from a calendar pop-up window, while they edit the date inside a grid cell. - The mouse right-click context menu choice “Copy selected cells preserving grid structure” has been fixed to work as intended, namely to transfer the selected grid cells to the spreadsheet respecting their original geometric location on the grid
- Reduction of the noticeable flickering of various task pane elements during user interaction
Bug Fixes:
28 Mar 2022 version 12.5.15
New Features:
Bug Fixes:
24 Mar 2022 version 12.5.14
Improvements:
21 Mar 2022 version 12.5.13
New Features:
Bug Fixes:
04 Mar 2022 version 12.5.12
Bug Fixes:
27 Feb 2022 version 12.5.11
Bug Fixes:
25 Feb 2022 version 12.5.10
New Features:
23 Feb 2022 version 12.5.9
Bug Fixes:
15 Feb 2022 version 12.5.8
Bug Fixes:
11 Feb 2022 version 12.5.7
Improvements:
Bug Fixes:
10 Feb 2022 version 12.5.6
Bug Fixes:
09 Feb 2022 version 12.5.5
Bug Fixes:
31 Jan 2022 version 12.5.4
Bug Fixes:
27 Jan 2022 version 12.5.3
Bug Fixes:
25 Jan 2022 version 12.5.2
Bug Fixes:
20 Jan 2022 version 12.5.1
Bug Fixes:
18 Jan 2022 version 12.5.0
New Features:
Bug Fixes:
Improvements:
19 Dec 2021 version 12.4.1
Improvements:
16 Dec 2021 version 12.4.0
New Features:
Improvements:
23 Nov 2021 version 12.3.2
Bug Fixes:
22 Nov 2021 version 12.3.1
Other:
09 Nov 2021 version 12.3.0
New Features:
Bug Fixes:
29 Oct 2021 version 12.2.1
Bug Fixes:
28 Oct 2021 version 12.2.0
New Features:
Improvements:
24 Oct 2021 version 12.1.1
Bug Fixes:
19 Oct 2021 version 12.1.0
New Features:
10 Oct 2021 version 12.0.1
Bug Fixes:
05 Oct 2021 version 12.0.0
New Features:
Bug Fixes:
Improvements:
Other:
15 Sep 2021 version 11.5.0
New Features:
12 Sep 2021 version 11.4.2
New Features:
Improvements:
09 Sep 2021 version 11.4.1
Bug Fixes:
07 Sep 2021 version 11.4.0
New Features:
Bug Fixes:
13 Aug 2021 version 11.3.0
New Features:
06 Aug 2021 version 11.2.1
Bug Fixes:
05 Aug 2021 version 11.2.0
New Features:
02 Aug 2021 version 11.1.0
New Features:
Bug Fixes:
Other:
21 Jul 2021 version 11.0.0
New Features:
Bug Fixes:
25 Jun 2021 version 10.6.2
New Features:
21 Jun 2021 version 10.6.1
Bug Fixes:
17 Jun 2021 version 10.6.0
New Features:
Bug Fixes:
08 Jun 2021 version 10.5.1
New Features:
Bug Fixes:
07 Jun 2021 version 10.5.0
New Features:
Bug Fixes:
Other:
04 Jun 2021 version 10.4.4
Bug Fixes:
02 Jun 2021 version 10.4.3
Bug Fixes:
30 May 2021 version 10.4.2
New Features:
Bug Fixes:
27 May 2021 version 10.4.1
New Features:
Bug Fixes:
20 May 2021 version 10.4.0
New Features:
Bug Fixes:
Other:
07 May 2021 version 10.3.2
Bug Fixes:
Other:
06 May 2021 version 10.3.1
Bug Fixes:
Improvements:
Other:
03 May 2021 version 10.3.0
New Features:
Bug Fixes:
Improvements:
22 Apr 2021 version 10.2.3
New Features:
Bug Fixes:
20 Apr 2021 version 10.2.2
New Features:
Other:
19 Apr 2021 version 10.2.1
Bug Fixes:
14 Apr 2021 version 10.2.0
New Features:
Bug Fixes:
Improvements:
Other:
16 Mar 2021 version 10.1.1
Bug Fixes:
15 Mar 2021 version 10.1.0
New Features:
Bug Fixes:
08 Mar 2021 version 10.0.0
New Features:
13 Feb 2021 version 9.4.3
New Features:
Improvements:
10 Feb 2021 version 9.4.2
New Features:
09 Feb 2021 version 9.4.1
Bug Fixes:
Other:
04 Feb 2021 version 9.4.0
New Features:
Bug Fixes:
Improvements:
Other:
18 Nov 2020 version 9.3.2
Bug Fixes:
13 Nov 2020 version 9.3.1
Improvements:
09 Oct 2020 version 9.3.0
New Features:
Other:
27 Oct 2020 version 9.2.2
Improvements:
22 Oct 2020 version 9.2.1
Bug Fixes:
Other:
14 Oct 2020 version 9.2.0
Bug Fixes:
Other:
05 Oct 2020 version 9.1.0
New Features:
29 Sep 2020 version 9.0.0
New Features:
Bug Fixes:
Improvements:
Other:
02 Sep 2020 version 8.3.1
New Features:
01 Sep 2020 version 8.3.0
New Features:
Improvements:
31 Aug 2020 version 8.2.2
Bug Fixes:
07 Aug 2020 version 8.2.1
Improvements:
04 Aug 2020 version 8.2.0
Bug Fixes:
Improvements:
30 Jul 2020 version 8.1.5
New Features:
Bug Fixes:
Improvements:
29 Jul 2020 version 8.1.4
Bug Fixes:
Improvements:
27 Jul 2020 version 8.1.3
Bug Fixes:
Improvements:
Other:
24 Jul 2020 version 8.1.2
Bug Fixes:
Other:
21 Jul 2020 version 8.1.1
Bug Fixes:
Improvements:
20 Jul 2020 version 8.1.0
New Features:
Other:
14 Jul 2020 version 8.0.0
New Features:
Bug Fixes:
Improvements:
Other:
24 Jun 2020 version 7.9.3
New Features:
22 Jun 2020 version 7.9.2
New Features:
Bug Fixes:
16 Jun 2020 version 7.9.1
Bug Fixes:
15 Jun 2020 version 7.9.0
New Features:
Bug Fixes:
Improvements:
12 Jun 2020 version 7.8.0
New Features:
Bug Fixes:
Improvements:
29 May 2020 version 7.7.0
New Features:
Improvements:
28 May 2020 version 7.6.2
Bug Fixes:
27 May 2020 version 7.6.1
Bug Fixes:
25 May 2020 version 7.6.0
New Features:
Other:
20 May 2020 version 7.5.5
Bug Fixes:
17 May 2020 version 7.5.4
Bug Fixes:
06 May 2020 version 7.5.3
Improvements:
30 Apr 2020 version 7.5.2
Improvements:
20 Apr 2020 version 7.5.1
Bug Fixes:
08 Apr 2020 version 7.5.0
New Features:
Improvements:
01 Apr 2020 version 7.4.1
New Features:
Bug Fixes:
31 Mar 2020 version 7.4.0
New Features:
Other:
26 Mar 2020 version 7.3.3
Improvements:
23 Mar 2020 version 7.3.2
Bug Fixes:
Improvements:
18 Mar 2020 version 7.3.1
Bug Fixes:
Improvements:
08 March 2020 version 7.3.0
New Features:
Improvements:
Other:
27 Feb 2020 version 7.2.0
New Features:
Bug Fixes:
17 Feb 2020 version 7.1.0
New Features:
Other:
10 Feb 2020 version 7.0.7
New Features:
Bug Fixes:
31 Jan 2020 version 7.0.6
New Features:
28 Jan 2020 version 7.0.5
Improvements:
21 Jan 2020 version 7.0.4
Improvements:
19 Jan 2020 version 7.0.3
Improvements:
16 Jan 2020 version 7.0.2
Improvements:
14 Jan 2020 version 7.0.1
Other:
10 Jan 2020 version 7.0.0
New Features:
Bug Fixes:
Improvements:
19 Dec 2019 version 6.12.4
New Features:
Improvements:
11 Dec 2019 version 6.12.3
Bug Fixes:
11 Dec 2019 version 6.12.2
New Features:
10 Dec 2019 version 6.12.1
Bug Fixes:
09 Dec 2019 version 6.12.0
Bug Fixes:
Improvements:
05 Dec 2019 version 6.11.1
New Features:
Bug Fixes:
Improvements:
26 Nov 2019 version 6.11.0
New Features:
Bug Fixes:
Improvements:
Other:
13 Nov 2019 version 6.10.1
Bug Fixes:
Other:
11 Nov 2019 version 6.10.0
New Features:
Bug Fixes:
02 Nov 2019 version 6.9.0
Improvements:
30 Oct 2019 version 6.8.2
Other:
25 Oct 2019 version 6.8.1
Bug Fixes:
23 Oct 2019 version 6.8.0
New Features:
Bug Fixes:
06 Oct 2019 version 6.7.0
New Features:
Bug Fixes:
28 Sep 2019 version 6.6.0
Other:
24 Sep 2019 version 6.5.0
New Features:
Improvements:
Other:
09 Sep 2019 version 6.4.0
New Features:
Bug Fixes:
Other:
29 Aug 2019 version 6.3.1
Improvements:
28 Aug 2019 version 6.3.0
New Features:
Bug Fixes:
Other:
18 Aug 2019 version 6.2.0
New Features:
Bug Fixes:
16 Aug 2019 version 6.1.0
New Features:
Bug Fixes:
07 Aug 2019 version 6.0.0
New Features:
Bug Fixes:
Improvements:
Other:
17 Jul 2019 version 5.10.0
New Features:
Improvements:
17 Jun 2019 version 5.9.1
Bug Fixes:
Improvements:
11 Jun 2019 version 5.9.0
New Features:
Improvements:
Other:
27 May 2019 version 5.8.0
New Features:
Bug Fixes:
Improvements:
Other:
17 Apr 2019 version 5.7.0
Bug Fixes:
Improvements:
11 Apr 2019 version 5.6.0
New Features:
Bug Fixes:
Improvements:
05 Apr 2019 version 5.5.0
New Features:
Bug Fixes:
28 Mar 2019 version 5.4.0
New Features:
18 Mar 2019 version 5.3.0
New Features:
Improvements:
14 Mar 2019 version 5.2.0
New Features:
Improvements:
06 Mar 2019 version 5.1.0
Bug Fixes:
Improvements:
23 Feb 2019 version 5.0.0
New Features:
Bug Fixes:
Improvements:
Several of the keys that were originally part of