FAQ

DOWNLOADING & INSTALLING

See list of questions at the Download page

TROUBLESHOOTING

See list of questions at the Troubleshooting page

BUYING A LICENSE

See list of questions at the Pricing page

OPERATION

Yes.
Apart from the Deriscope Excel Add-In there is also the Deriscope executable that provides the exact same analytics as the Excel Add-In, but without the need of Excel.
More details are provided below in the Technology section.

Deriscope is designed so that even the most complicated tasks can be completed by the user without external assistance.
The most helpful tool is the wizard , a taskpane that is capable of generating spreadsheet formulas and providing information on input and output values.
Of great help is also the blog site that is regularly updated with articles featuring solutions to frequently encountered problems along with downloadable spreadsheets.
In practice, most users do receive some initial assistance before they have acquired the skills needed for autonomous spreadsheet development.
Overall, the typical user feels the need to contact Deriscope Support only during the first few weeks of using Deriscope.

Thanks to the wizard's intuitive design, you can start using Deriscope immediately, without prior introduction.
Nevertheless, your overall learning experience will be both easier and faster if you invest some time to read through the links and the introductory blog articles contained in the Quick User Guide.

All functions exported to Excel by Deriscope can be accessed in the usual way by clicking on the Insert Function button found in the Formulas ribbon group, as shown below:

Then you must select the Category "Deriscope", as shown below:

But the above is not recommended for generating and pasting a Deriscope function in the spreadsheet.
The latter task is best achieved as described in the answer to the question "How do I best generate and paste a Deriscope function in the spreadsheet?".

All functions exported to Excel by Deriscope are described at Deriscope Excel Functions.
There it is also explained how are these functions best generated and pasted in the spreadsheet.

The Deriscope Excel Functions page page contains the list of functions exported to Excel by Deriscope.
In practice though, you will be using mostly the ds() function that expects an input in the form of one or more ranges containing Key-Value pairs.
The consequence is that what you need to know is the admissible set of combinations of Keys and corresponding Values.
This set is extraordinarily large and is fully described in the online documantation.
In a practical sense though, you will get most of your questions answered in a dynamic and contextual fashion as you browse through the Deriscope Types and Functions in wizard, since, as you hover with the mouse over the various items or select them, the respective descriptions appear in the Info Area.
You also get the same descriptions on Types and Functions as soon as you select the spreadsheet cells that contain them, provided that the wizard is open when the cells are selected.

The ds() function is the most important and frequently used function exported to Excel by Deriscope.
It is described in detail here.

The Deriscope ribbon has a button named Syntax - shown below - that pastes in the spreadsheet several examples of the ds() function.

If the ds() function fails to process its input for whatever reason, it will return a special object referenced by a handle name that starts with the text &ERROR!.
This object contains diagnostic information that can be read with the help of the wizard.
Simply select the affected cell while the wizard is open and you will be able to read the diagnostic information in the wizard's Info Area.
Below is an example of a ds() function in cell A1 that fails because the cell B3 contains "Create1" rather than the expected "Create".
As soon as the cell A1 is selected, the wizard displays the shown diagnostic message:

If you cannot resolve the problem, your best option is to contact Deriscope Support.
If your spreadsheet is fairly small and simple, you may want to send the workbook so that Deriscope Support will be able to reproduce the formula.
Otherwise, you can send a special XML-formatted text file that contains only the affected formula along with all dependent data.
You can generate this file by using the Import/Export button found at the Deriscope ribbon.
Alternatively, you may follow the instructions displayed in the wizard as soon as you click on the blue-colored word "here", shown in red circle in the example below:

Depending on the data location, this is often not a problem, since the ds() function is generally smart enough to parse the data correctly, as described in the question "Where can I find examples of the different ways that the spreadsheet function ds() may be called?".
In more complex cases, the two Deriscope auxilliary functions dsMergeH() and dsMergeV() can be used to combine disconnected ranges.
More details on how to use these and other auxilliary functions for data manipulation can be found at Deriscope Excel Functions.

It is assumed here that the edited cell holds the value associated with a given key and the key-value pair is part of the input to a ds() formula.
You can get information on the type of value expected by the formula in that cell by reading the key's description.
If the formula returns no error, you can generate the description by selecting the cell holding the key, while the wizard is open.
In those cases where the expected value is one of a set of allowed values - typically of text type then - you may even force the wizard to generate a cell validation dropdown that contains the allowed values.
You can do so by selecting the cell holding the value, while the wizard is open or by clicking on the Deriscope ribbon Cell Info button .
For example, the image below shows the cell dropdown generated by the wizard at the cell E5 holding the text value "Price" associated with the key "Output", after the user selected that cell:

When that cell dropdown is clicked, the list of allowed values is offered for selection:

All numbers in Deriscope are by default in standard mathematical units, except if they are explicitly marked to be in a different unit, as explained below.
For example, an entry such as Rate= 0.04 indicates a rate of 4%.
Similarly, an entry such as Notional= 1,000,000 indicates a notional of one million.
It is possible to set a different unit by adding to the corresponding key an appropriate suffix.
For example, the above rate of 4% could be also defined as Rate(%)= 4 or Rate(bp)= 400.
Similarly, the above notional of one million could be also defined as Notional(M)= 1 or Notional(K)= 1000 and even as Notional(B)= 0.001.
Note, this feature applies also to table titles.
For example, a title #Rate(%) indicates that all numbers in the table's respective column are in percentage units.

If you are in a hurry and want to build a functioning pricing spreadsheet as quickly as possible, the wizard can generate all formulas with a few mouse clicks.
Your first step would be to use the wizard and select the appropriate asset class in the Type Selector , which is the wizard's top row, as shown below in the case of a currency swap :

Your second step would be to click on the wizard's Function Selector (3ʳᵈ row from top) and choose the function "Price", as shown below:

Your final step would be to select an empty cell, click on the Go button and select the top menu item, which would generate and paste all required formulas in the spreadsheet region at and below the currently selected cell.
If the latter were the cell A1, the upper portion of your spreadsheet would look as below:

The formula =ds(A2:B5) in cell A1 returns the number -0.000276537, which is the NPV of the currency swap under certain market assumptions. Both the swap and the market rates are defined in the rows below those visible in the above screenshot and can be edited to match the actual data pertaining to the pricing task.

The wizard is "lazy" and always creates the simplest possible structure when a default value is needed.
For this reason, when a Yield Curve is needed by a pricing formula, the wizard creates a curve with a flat rate of 4%.
If you would rather have a Yield Curve that represents actual market quotes, you must set up a formula that takes the market quotes as input and returns the handle name of the corresponding Yield Curve object.
Then you must edit all cell formulas that reference the original flat curve so that they now reference the cell that contains the new Yield Curve formula.
In order to set up the correct formula, you can use the wizard, as follows:
Your first step would be to use the wizard and select the type "Yield Curve" in the Type Selector , which is the wizard's top row, as shown below:

Your second step would be to select the types of instruments to which the market quotes refer.
For example, if you want to build a curve out of deposit rates, futures prices and swap rates, you should check the boxes next to "Use Deposits", "Use Futures" and "Use Ibor Swaps".
If you would rather build a curve out of OIS rates, you should check only the box next to "Use OIS".
Your last step could be to select an empty cell, click on the Go button and select the top menu item in order to generate and paste all required formulas in the spreadsheet region at and below the currently selected cell.
Note that the wizard-generated data pasted on the spreadsheet will still include market quotes that are defaulted to standard values - such as rates of 4% - and it will be your job to edit the respective cells so that they contain realistic values or even links to other cells where third party formulas - such as the Bloomberg's BDP() - return real-time market quotes.
Apart from the cells containing market quotes, you could also edit cells containing business conventions - such as daycounts or settlement days - and model parameters, eg interpolation types.
But you also have the option to fine tune the default data chosen by the wizard before pasting the formulas in the spreadsheet, by clicking on the pen-on-a-pad symbol shown to the right of the "Market Data=" key.
It is shown below for the OIS case:

This would make the wizard display the following:


By default the wizard displays only the mandatory parameters in the form of Key-Value pairs but the red-circled check box with the key "Show Optional Keys" can be used to display all parameters.

Most of the shown values, such as the numbers associated with the keys Obs Lag, Lookback etc, do not need to be edited here, since it is easier to be edited later on the spreadsheet.
But certain parameters - which ususally lie at the top - play a key role for what type of data is displayed below them.
For example, the highlighted key OIS Type is such a parameter.
Its current value is OI vs Fxd, which means the market rates refer to swaps that exchange the average OI against a fixed rate.
It is possible to set a different type of swaps by clicking on the red-circled button .
You would then see the list of allowed options to choose from.
After you have done all your changes, you may hit the Go button to bring the corresponding formulas to the spreadsheet.
If you want to keep only the mandatory key-value pairs in your spreadsheet, you must uncheck the "Show Optional Keys" checkbox before hitting the Go button.

As an example, consider an object, of which the Deriscope Type is Yield Curve.
Below is shown how such an object bootstrapped from OIS is created in cell A1 by the ds() formula =ds(A2:B10).
Its handle name is set as MyCurve in cell B4 for easy reference.
The numbers in column E are the OIS market rates in percentage units due to the suffix (%) in the table title #Rate(%).

The zero rates implied by this curve can be calculated and returned by the special Deriscope Local Function named Zero Rate that acts on objects of type Yield Curve and at best generated with the help of the wizard.
Your first step would be to select the cell A1 while the wizard is open. Then the latter will react by displaying the contents of the selected Yield Curve object, as shown below:

Your second step would be to move your mouse over the wizard, without yet clicking anywhere.
The wizard would then unhide its top Input Area to enable you to place your requests, as shown below.
In particular, note the red-circled Function Selector row that will allow you to choose the Zero Rate function in the next step.

Your third step would be to click on the Function Selector row and choose the Zero Rate function from the displayed list.
Then the Browse Area would react by displaying the selected function's input parameters, as shown below.

Note the highlighted row containing the key Maturity and its wizard-generated default value of 12-Sep-2023.
The red-circled button indicates that more than one values are possible for this particular key.
With the foresight that you are interested in the zero rates for several maturities, it is better to click on in order to add one more date in that row because then the generated formula will show more clearly that it expects an array of dates as input and returns an array of zero rates as output.
Then the Browse Area will appear as below:

Your final step would be to select some empty cell, click on the Go button and select the top menu item.
This would generate and paste the correct formula at and below the selected cell.
For example, when the selected cell is the G1, the formula would be generated as =ds(G3:H5,G7:G9), shown below:

It would make sense to select the output range G1:G2 and drag & drop it to the right of the range G8:G9 holding the input maturities, as follows:

Now it is easy to add as many dates in column G and edit the formula in cell H8 so that it references all added dates.

Let us assume you have already set up a spreadsheet formula that creates a specific instrument - for example a vanilla interest rate swap - and returns its handle name as shown in the cell A1 below:

Your first step would be to select the cell A1 while the wizard is open. Then the latter will react by displaying the contents of the object held in Excel memory and associated with the selected handle name.
In the example here, the wizard will display the contents of the vanilla interest rate swap, as shown below:

Your second step would be to move your mouse over the wizard, without yet clicking anywhere.
The wizard would then unhide its top Input Area to enable you to place your requests, as shown below.
In particular, note the red-circled Function Selector row that will allow you to choose a Deriscope Function in the next step.

Your third step would be to click on the Function Selector row and choose the Price function from the displayed list.
Then the Browse Area would react by displaying the selected function's input parameters, as shown below.
By default the wizard displays only the mandatory parameters in the form of Key-Value pairs but the red-circled check box with the key "Show Optional Keys" can be used to display all parameters.

Your fourth step would be to click on the red-circled check box in order to display all parameters.
The result is shown below.
This time note the red-circled check box with the key "Add Risk".

Your fifth step would be to click on the "Add Risk" check box, which would make the wizard look like as below.
Note the red-circled three extra rows that have been added below the "Add Risk" row.

Your sixth step depends on the type of risk you are interested in.
If - for example - you are interested in the interest rate risk, you should click on the Rho check box.
Then the wizard will fill the values associated with the two keys "Risk Ref" and "Risk Models" with default generated objects, as shown below:

Your final step could now be to select some empty cell, click on the Go button and select the top menu item.
This would generate and paste all needed formulas at and below the selected cell.
But since the wizard is at a state where all parameters are displayed, the pasted formulas would include all parameters as well.
Therefore, if you would rather have spreadsheet formulas with fewer input parameters, you could uncheck the wizard's "Show Optional Keys" checkbox before hitting the Go button.
Also note that the above steps lead to formulas that produce the simplest possible type of interest rate risk, which is a so called "flat risk" that represents the instrument's NPV change due to a flat shift of each underlying curve by 1 bp.
But the objects associated with the key "Risk Models" contain an optional key named "Delta Mode" that can be set by you to either "Flat" or "By Bucket".
Initially, the wizard sets that value to "Flat", but you can change it on the spreadsheet to "By Bucket" in order to generate a more detailed risk expressed as an array of values, each of which represents the instrument's NPV change due to an increase of the corresponding market rate by 1 bp.
The value for key "Delta Mode" can be set either a) within the wizard before hitting the Go button or b) by editing the corresponding cell in the spreadsheet.
In the latter case, if the key "Delta Mode" does not appear as an explicit input to the ds() spreadsheet formulas that create the "Risk Models" objects, you can add it manually and edit the formulas so that they reference the newly added key.

Assume you have a ds() spreadsheet formula in some cell that returns the NPV of some instrument.
For example, the formula in cell D1 below returns the NPV of a given vanilla interest rate swap :

Your first step would be to select the cell D1 while the wizard is open. Then the latter will react by displaying three sentences in its Info Area as shown below:

Your second step would be to click on the blue-colored word "here" shown in a red circle above.
Blue-colored text in the Info Area always act as hyperlinks that lead to further information.
In this case, the result is the display in the wizard's Browse Area of any data that are produced as a by-product of the pricing algorithm, as shown below:

Most of the displayed data are just numbers reported as Key-Value pairs , with the exception of the key "CashFlows, of which the value is a handle name preceded by the pen-on-a-pad symbol that indicates it represents an object.
The contents of that object can be seen by clicking on :

Yes.
Simply select the desired region of data shown in the Browse Area of the wizard by dragging the mouse while holding down the left mouse button.
Then do a right-click and select the desired option from the appeared menu to copy the selected data into your clipboard.
Afterward, you may paste the copied data in your spreadsheet or in any other application that supports pasting of clipboard data.

The Deriscope Function "Price" accepts an optional input parameter through a key named "Output".
If this key is not explicitly passed as input to the ds() spreadsheet formula , its assumed default value equals the text "Price", which instructs Deriscope to calculate and return only the NPV of the referenced instrument, i.e. a single number.
But you can supply this key with a different text value that instructs Deriscope to return different output values.
The list of allowed text values is context dependent.
At best, you start by making sure that the Key-Value pair "Output= Price" is present in the input data, as shown below for the price of a vanilla interest rate swap calculated in cell D1:

Then you must see a cell dropdown when you select the cell E5.
If not, make sure the wizard is open and reselect that cell or click on the Deriscope ribbon Cell Info button , as both of these actions will generate the cell dropdown.

When you then click on that cell dropdown, you will see the list of all allowed values, as shown below:

You may then choose one of the listed values - for example the "Fair Rate" - and the formula in cell D1 will return the corresponding value.
Note that some of the listed values, such as the "CashFlows", will result in the formula's output to be an object represented through a handle name.
Also very useful is the "Full" that instructs the formula to return an object that contains the full set of pricing results.
The contents of the returned objects in the last two cases can be easily displayed in the spreadsheet, as the answer to the next question explains.

Yes.
The contents of any object can be seen inside the Browse Area of the wizard, but they can also be generated and displayed on the spreadsheet be means of a special Deriscope Function named "Show".
The wizard can generate the appropriate ds() spreadsheet formula that does this job.
As an example, consider the case of the above question, where the key "Output" is set to the value "CashFlows", so that the formula in cell D1 returns the handle name of an object that holds the requested cash flows, as seen below:

Your first step would be to select the cell D1 while the wizard is open. Then the latter will react by displaying the selected object's contents in its Browse Area as shown below:

Your next and final step would be to select any empty cell, click on the Go button and select the "Paste Object Contents" menu item.
This action would paste a special array formula in the selected empty cell designed to return the cash flows as seen in the wizard.
For example, below can be seen the array formula entered by the wizard in cell G1 along with the some of the data returned by that formula. Not all of the returned data can be shown in this small screenshot.

It would be also possible to set up the formula in such a way that only a selected portion of the object's data is returned.
This could be achieved by preselecting with the mouse the desired data range inside the wizard, prior to hitting the Go button.

Yes.
There exists a Deriscope Type named Portfolio that represents a collection of - perhaps heterogeneous - instruments.
There is no limit on the number of instruments in a portfolio, but note that only the Premium license can handle portfolios consisting of more than 5 instruments.
Your first step in creating an object of type Portfolio would be to use the wizard and select the type "Portfolio" in the Type Selector , which is the wizard's top row, as shown below:

Depending on the type of static data you would like to use for defining the portfolio's instruments, there are now several ways to proceed.
The simplest case is when you have already built a spreadsheet with the ds() spreadsheet formulas that create the handle names of all the instruments that will compose the portfolio.
Then your next step would be to select any empty cell, click on the Go button and select the top menu item, which would generate and paste the required formula in the spreadsheet region at and below the currently selected cell.
If the latter were the cell A1, your spreadsheet would look as below:

The formula =ds(A2:B3,A5:A7) in cell A1 returns the handle name &Prtfl_A1:1.1 that acts as a unique identifier for the corresponding portfolio object held in Excel's memory.
The wizard has set up this default portfolio with very few dependencies so that it can be easily customized later on.
It consists of only two instruments, of which the handle names are passed as input in the cells A6 and A7.
Your final step would be to edit the formula in cell A1 so that it references the handle names of your own instruments rather than the two dummy handle names in cells A6 and A7.
Your own handle names may reside in some other spreadsheet and their number may be in the range of several thousands.
But for the purpose of this demonstration, assume there are only 10 instruments of which the handle names are stored in column D of the same sheet as the one shown above.
Then the formula in cell A1 should be adjusted to look as below:


There also exist other methods for creating portfolios that do not rely on pre-existing instrument handle names.
For example, it is often the case that hundreds or thousands of trades - such as swaps, bonds or options - are represented by tables consisting of several columns and N rows, where N is the number of trades.
Such tables are usually retrieved from a database and may exist in Excel or in some other format, eg as a specially formatted text file.
Deriscope can "read" such tables directly and create the corresponding portfolio objects, without the need of first creating the objects of the constituent instruments.
You can access all available portfolio creation methods by clicking on the checkbox next to the key named "Show Optional Keys", as shown below:

You notice the additional red-circled Key-Value pair "Spec Method= Arrays" that appears in the list of input parameters.
"Arrays" is the default value assigned to the optional key "Spec Method".
If you click on you will see the list of available methods.
You can see each method's description in the Info Area as you hover the mouse over each one and of course try them by selecting them and then using the Go Button to paste the corresponding formulas in the spreadsheet.

BUSINESS

From a legal perspective, Deriscope is currently not a company.
It is a sole proprietorship owned by Ioannis Rigopoulos in Germany and registered since 2009 with the German tax authorities.
There is a plan for establishing Deriscope in the near future as a private limited liability company.

As shown at the Clients section of the home page, currently about 40 employees of 10 companies hold a Deriscope license.
About half of these companies and the great majority of individuals use Deriscope as a front office pricing tool in trading interest rate, cross currency and inflation swaps, bonds and inflation bonds. They also use it to regularly build their discounting and forecasting yield curves out of live market quotes.
The remaining customers use Deriscope as an analytics tool in performing middle office, back office and consulting functions.
Some of them rely on Deriscope for their daily valuation of books comprising several thousands of swap trades.
Although Deriscope also supports other asset classes, such as equities, fx and hybrid, it has not been yet used in such areas by any company in production.

All user requests are currently handled personally by Deriscope's founder Ioannis Rigopoulos.
This is well manageable today due to the very small number of clients and end users so that the average response time is measured in minutes rather than days or even weeks that is the unfortunate norm with corporate competitors, whose bereaucracy and business priorities make a sensible and timely response to lower value clients practically impossible.
Nevertheless, as the business grows, Ioannis plans to hire sufficient personnel to keep up with an expanding client base.

Since the Deriscope application is accessed through a locally installed Add-In, a temporary or permanent interruption of Deriscope's normal business operations cannot have an immediate effect on your day to day activities.
The only impact would be limited to user requests for bug fixes, new features and license extensions.
Thankfully, due to its sole proprietorship status, Deriscope is shielded against most bankruptcy risk factors faced by heavily debted big organizations and is therefore more likely to survive in the current highly volatile macroeconomic environment.
Along with an anticipated growing business, Deriscope will transform itself very soon to a limited company, but with a low debt-to-asset ratio and a minimal number of employees so that it will remain dynamic, flexible and less susceptible to external risks.

In general, online validation checks are regularly performed with the servers of the license management company softworkz in order to ensure that Deriscope is used only on authorized devices.
These validation checks are strictest on licenses of the "Variable Seat" type since a given device's eligibility must be confirmed every time an Excel session starts with the Deriscope Add-In loaded.
On the contrary, licenses of the "Fixed Seat" type need to pass a successful validation check at most every 30 days and a warning is sent per email to the user if the license fails to be validated - for whatever reason - for a period of 25 days.
For this reason, it is recommended that sensitive business activities - such as trading - run on "Fixed Seat" licenses.
Perpetual licenses also run online validation checks, but remain valid in the event when the validation servers cannot be contacted. This means that a perpetual license will allow access even if there is no internet connection or the license management company discontinues its operations.

In a catastrophic event when Deriscope goes out of business, obviously technical support and general customer service will stop being available.
But since the Deriscope add-in is locally installed and bears no dependence on remote servers, all Deriscope spreadsheet formulas will still work.
A client may be affected when the next subscription period starts if the corresponding paid amount cannot be processed due to a likely discontinuation of the Deriscope's bank accounts.
This risk can be mitigated by choosing an annual rather than monthly subscription and even completely removed by purchasing a perpetual license.
In the latter case, the user's residual operating risk is reduced to that associated with the successful performance of the Deriscope license's online validation as described in the answer to the question "How does the license verification process work?" in the TECHNOLOGY section below.

After installation Deriscope will appear in the list of installed apps shown through the Apps section of the windows Settings of the device where Deriscope has been installed.
It may then be uninstalled in the same way as any other program, i.e. by selecting the Deriscope entry and choosing the Uninstall option.

TECHNOLOGY

No.
Apart from a periodical license status verification and a likely usage of live feeds, no remote servers are involved since all required Deriscope dlls are locally stored in your pc.

No.
While most users are interested in using Deriscope through Excel due to the obvious advantages of Excel's interface, there are circumstances where one would rather run the analytics in an Excel-free environment.
Deriscope's core analytics are implemented in DLLs that can be called by either an Excel interface layer or a non-Excel Windows executable.
The latter is a .exe file that can run locally on the user's device by reading a text file containing all input data in a special XML format.
The .exe file processes the input data by calling the same DLLs as the Excel Add-In and is therefore guarranteed to produce the exact same output as the Excel Add-In.
The output is in the form of an XML formatted text file.
Both the input and output XML files can be processed by Excel due to the fact that the necessary XML-Excel bidirectional translation unit is already implemented as part of the Deriscope Excel Add-In.
The processing of the XML files by some external IT system requires the prior implementation of a code that translates the Deriscope XML into the IT system's API and vice versa.
With the help of such a translation code, the Deriscope analytics can be accessed by the respective IT system directly.
On the absence of such a code, the connectivity between Deriscope analytics and an IT system ought to still be achievable through a thin and special-purpose Excel middle layer, provided that the IT system supports a suitable Excel interface.
For more information and a demo example, you may read this blog article on FX Option Portfolio Pricing without Excel.

Quite easily, provided that the other IT systems interact with Excel in a sufficient extent, since then Excel may be used as the interfacing medium joining Deriscope with those IT systems.
Otherwise, the intended interface can be achieved through the implementation of a custom translation code as described in the answer to the question "Are the analytics capabilities of Deriscope accessible only through Excel?".

When Deriscope is installed, a new folder named Deriscope is created in a location chosen by the user, which by default is the Roaming subfolder of the user's AppData folder.
Then several DLLs are stored in that folder and appropriate Registry entries are created so that these DLLs are linked to the Excel app.
If the installation is successful, Excel will load two Add-Ins at start up: A com Add-In named DeriscopeGui and an Excel Add-In named DeriscopeXLL. Both will appear in the list of active Add-Ins shown under the Options tab in Excel.
The DeriscopeGui is responsible for the wizard, and ribbon user interface while the DeriscopeXLL powers the functions exported to the Excel spreadsheet.

The code responsible for the analytics is written in C++, while the code responsible for the User Interface is written in C#.

The software code is proprietary and owned by Deriscope's founder Ioannis Rigopoulos except of the part that is sourced from the open source libraries QuantLib and ORE.

The license verification is accomplished through the License Activation and License Validation.

License Activation occurs when Deriscope is accessed for the first time on some device, during which the license's credentials entered by the user are sent to the servers managed by the license management company softworkz and - if the activation is legitimate and successfull - a special encrypted CDM License file named deriscope.cdm is created and stored in a read/write directory on the user’s device.
The CDM contains licensing information and must remain in place. If it is deleted or modified in any way by any means other than by the softworkz server, it will be rejected and the software will need to be re-activated.
All communication between the user's device and the softworkz server is encrypted using secure PKI algorithms.

License Validation is a background process triggered at random times but at most once per day.
It is a 2-step process which includes Local (offline) CDM-Validation and softworkz server-Validation.
The local (offline) CDM-Validation authenticates the CDM on the user’s device / browser (i.e. verify signature, machine ID, etc.) and verifies the license rights and conditions (such as expiry period).
The Validation process queries the softworkz Server to do a complete verification against the piracy protection rules and returns a new encrypted CDM License file.
Note that in the case of the Perpetual License, the Validation process still takes place but Deriscope remains accessible even if the softworkz server cannot be contacted.
For more details on the interaction between the Validation process and the installed Deriscope application, look up the answer to the question "Can the online license validation process make Deriscope inaccessible?" in the BUSINESS section.

During the validation process, a special locally stored file named deriscope.cdm is transmitted to the servers managed by the license management company softworkz using the standard web browsing communication port 80. Typically, if a web browser has access, then communication with the server for validations will be successful.
The CDM file is typically less than 2K Bytes. The CDM file contains information required for the softworkz service such as:
License Activation or Evaluation Code
activation dates and other dates used for the protection rules
protection level and specific counters
a <machine_ID> which is a hash (created locally) of several elements of information from the user’s computer, and is used as one part of the protection solution
the Computer Name
There is no possibility of deriving any specific information about the user’s computer from the <machine_ID> Hash code or reconstructing any such information. Aside from the Computer Name, no private information about the computer or the user is communicated at any time to the softworkz Server during the validation process.