OPT_TOUCH in LibreOffice: Touch, No-Touch and Currency Conventions
Use LibreOffice OPT_TOUCH with eight checked model examples. Distinguish touch from no-touch, currency conventions, continuous monitoring and rho.
Verification status: Seven ordinary prices and one rho expression recalculated through documented ODF identities in LibreOfficeDev 26.8.0.0.alpha0, headlessly. Exact identities, values and controls match independent model checks. Numerical helper unavailable; 26.8.1.1 source only, with no stable or GUI test. How formula examples are checked
Quick answer: =OPT_TOUCH(50;0.25;0.05;0;1;0;55;"d";"i";"c") returned 0.687637887461 in the checked development build. It matches the independent option-model calculation and the rounded official Help example.
Availability and version history
- Introduced: LibreOffice 4.0, explicitly stated in function-specific Help.
- Supported in: 26.8 Help and 26.8.1.1 registration; no retirement is established.
- Scope: Desktop Calc’s Pricing add-in. English names are source-mapped to documented ODF service names.
- Checked: October 14, 2026. Seven ordinary prices and one rho expression recalculated through documented ODF identities in LibreOfficeDev 26.8.0.0.alpha0, headlessly. Stable releases, GUI entry and 26.8.1.1 execution remain untested.
What OPT_TOUCH returns
OPT_TOUCH returns a touch or no-touch option model value, or a selected price sensitivity. InOut "i" selects the touch/knock-in event and "o" selects the no-touch/knock-out event. Continuous monitoring and maturity-only monitoring describe different events.
The output is a price or sensitivity, not simply a probability. A discounted domestic payout and a foreign-denominated payout have different scales. In the checked examples, the foreign-denominated price can be much larger than one without being an invalid probability, because it is not a probability output. Function-specific Help.
Syntax and arguments
OPT_TOUCH(Spot; Volatility; Rate; ForeignRate; Maturity; LowerBarrier; UpperBarrier; ForeignDomestic; InOut; BarrierMonitoring [; Greek])
The first ten arguments are required. Spot is a positive underlying price; Volatility is a positive annual decimal volatility. Rate and ForeignRate are continuously compounded annual decimal rates. Maturity is the time in years. LowerBarrier and UpperBarrier are price levels, with zero disabling a barrier.
ForeignDomestic is "d" for the domestic denomination or "f" for the foreign denomination. InOut is "i" for touch/knock-in or "o" for no-touch/knock-out. BarrierMonitoring is "c" for continuous monitoring or "e" for maturity-only monitoring. Use these lowercase codes in their correct argument positions.
Greek is optional. Omitting it, or using "value", "v", "price" or "p", requests the price. The documented sensitivity options are delta/d, gamma/g, theta/t, vega/e, volga/o, vanna/a, rho/r and rhof/f. The final row below tests rho using "r"; it is not another price row.
There is no Strike or Rebate argument in this function. Do not copy the longer OPT_BARRIER argument list into OPT_TOUCH. Complete wrapper.
Eight ordinary price and sensitivity examples
Each expression below was evaluated using its documented qualified ODF service identity. The table shows the corresponding English function spelling. The independent values were computed to 90 decimal digits and cross-checked by discounted-payoff integration or a five-point derivative of that independent integral; both columns are displayed to twelve decimal places. All inputs are illustrative model parameters.
| Formula | Output | Independent model reference | LibreOfficeDev result |
|---|---|---|---|
=OPT_TOUCH(50;0.25;0.05;0;1;0;55;"d";"i";"c") |
Price | 0.687637887461 |
0.687637887461 |
=OPT_TOUCH(50;0.25;0.05;0;1;0;55;"d";"o";"c") |
Price | 0.263591537039 |
0.263591537039 |
=OPT_TOUCH(50;0.25;0.05;0;1;0;55;"f";"i";"c") |
Price | 39.25452613076 |
39.25452613076 |
=OPT_TOUCH(50;0.25;0.05;0;1;0;55;"f";"o";"c") |
Price | 10.74547386924 |
10.74547386924 |
=OPT_TOUCH(50;0.25;0.05;0;1;0;55;"d";"i";"e") |
Price | 0.36119197698 |
0.36119197698 |
=OPT_TOUCH(50;0.25;0.05;0;1;0;55;"d";"o";"e") |
Price | 0.59003744752 |
0.59003744752 |
=OPT_TOUCH(50;0.25;0.05;0;1;0;55;"f";"i";"e") |
Price | 23.878751080848 |
23.878751080848 |
=OPT_TOUCH(80;0.2;0.05;0;0.5;60;0;"f";"o";"c";"r") |
Rho | 15.551642309166 |
15.551642309166 |
Practical worksheet
Use Spot 50, Volatility 0.25, Rate 0.05, ForeignRate 0, Maturity 1, LowerBarrier 0 and UpperBarrier 55. With "d";"i";"c", the checked domestic touch value is 0.687637887461. Changing only InOut to "o" gives the no-touch value 0.263591537039.
Their unrounded sum is 0.951229424501, the independent discounted value exp(−0.05×1) of a unit domestic maturity payout. The corresponding foreign-denomination continuous pair is 39.254526130760 and 10.745473869240; its unrounded sum is 50, equal to Spot×exp(−ForeignRate×Maturity) for these inputs.
These paired checks explain why one should not compare the raw domestic and foreign results as if both were percentages. Label the denomination and payout convention as well as the barrier and monitoring rule.
Advanced interpretation and independent checks
The domestic one-touch reference discounts a barrier-hit probability under the pricing-model drift Rate − ForeignRate. The foreign-denomination reference uses the corresponding asset-weighted expectation, which changes both the scale and the probability weighting. It is not obtained merely by multiplying every domestic touch result by Spot.
For the same upper barrier 55, switching domestic monitoring from continuous to maturity-only changes the touch value from 0.687637887461 to 0.361191976980. A path can hit 55 and then finish below it; continuous monitoring counts it, while maturity-only monitoring does not. The maturity-only domestic no-touch value is 0.590037447520, and the two maturity-only prices again sum to the discounted unit payout.
The last table row is the official lower-barrier foreign-denomination example with Greek "r". Its checked value, 15.551642309166, is rho: the derivative with respect to the decimal domestic Rate input. It is not a 15.55 price or a 15.55% probability. A small change in Rate can be multiplied by this derivative for a local first-order estimate; a finite rate change also has nonlinear effects.
Independent references were constructed from discounted payoff integrals and the single-barrier reflection calculation. The rho value was separately checked with a symmetric five-point difference of independently integrated prices. The domestic/foreign in-out totals were checked for both monitoring conventions, without extending those checks to untested two-barrier or zero-time configurations.
Boundaries and model assumptions
The complete wrapper rejects nonpositive Spot or Volatility, negative Maturity, invalid denomination/in-out/monitoring strings and an unrecognized Greek. It calls bs::touch and rejects a nonfinite returned result. Precise spreadsheet error displays were not tested.
Every observed case has one initially unhit barrier and positive maturity. The numerical helper was unavailable; zero time, already-hit barriers, both active barriers, unusual barrier ordering, extreme inputs and other Greek outputs remain untested. The wrapper has no separate barrier-order guard, so it cannot establish all such outcomes on its own.
Keep the interpretation bounded to the chosen model and contract. The formulas use illustrative inputs and continuous-compounding conventions; they do not retrieve live quotes, estimate parameters from a market series or certify a quoted contract’s payoff terms. Inspected wrapper.
Related functions
Official evidence and checking scope
- Function-specific Help, introduction and ODF namespace
- Native registration
- Complete function wrapper
- Contract and optional-Greek parsers
The saved application is LibreOfficeDev 26.8.0.0.alpha0, build 2c87e51eeaa2b413ff4ae097b2705eea1995d8e5, on Linux. A stale cached control changed to 3 and an uncached control returned 7. Exact ODF identities, numeric result types and all sixteen price/sensitivity expressions were checked across the two related guides. Each guide’s claim covers its own eight examples. The 26.8.1.1 wrapper and input parsers were source-checked, but the underlying Black-Scholes numerical helper was unavailable. No direct English GUI entry, stable-release execution, market calibration or unlisted boundary case is claimed.