ArcSine
systemic:core-arcsinMathfunction1 crInputs
| Name | Type | Description |
|---|---|---|
| Data | floatarray | The input data series for the arcsine calculation. |
Outputs
| Name | Type | Description |
|---|---|---|
| ArcSin | floatarray | The arcsine of each input value, expressed in **radians**. |
The Arcsine module computes the inverse sine of each value in a data series, returning the angle in radians whose sine equals that value. With its symmetric output centered on zero, arcsine is particularly powerful for analyzing oscillating indicators and extracting cycle phase information.
Mathematical Foundation
Domain and Range
flowchart LR
subgraph Domain["Input Domain"]
D["-1 ≤ x ≤ 1"]
end
subgraph Transform["ARCSIN"]
F["arcsin(x)"]
end
subgraph Range["Output Range"]
R["-π/2 to +π/2 radians<br/>(-90° to +90°)"]
end
D --> F --> R
| Property | Value |
|---|---|
| Domain | |
| Range | radians (-90° to 90°) |
Key Advantage: Unlike arccos, arcsine output is symmetric around zero. This makes it ideal for indicators where zero-crossings are meaningful.
Key Values Reference
| Input | Output (radians) | Output (degrees) | Oscillator Interpretation |
|---|---|---|---|
| 1 | 1.571 | 90° | Maximum bullish extreme |
| 0.5 | 0.524 | 30° | Moderately bullish |
| 0 | 0 | 0° | Neutral / zero-crossing |
| -0.5 | -0.524 | -30° | Moderately bearish |
| -1 | -1.571 | -90° | Maximum bearish extreme |
Financial Application: Oscillator Phase Extraction
Many technical oscillators produce values that oscillate between -1 and 1 (when normalized). Arcsine can extract the phase angle of these oscillations, revealing where you are in the cycle.
Cycle Phase Trading
flowchart TD
subgraph Input["Normalized Oscillator"]
OSC["RSI normalized to [-1, 1]<br/>or Stochastic"]
end
subgraph Transform["Phase Extraction"]
ARCSIN["ARCSIN Module"]
end
subgraph Phase["Cycle Position"]
P90["+90° = Peak"]
P0["0° = Midpoint"]
N90["-90° = Trough"]
end
OSC --> ARCSIN
ARCSIN --> P90 & P0 & N90
Interpretation:
- Phase near +90°: Oscillator at maximum, possible exhaustion
- Phase near 0°: Oscillator crossing equilibrium, momentum shift
- Phase near -90°: Oscillator at minimum, possible reversal
Creative Use Case: Momentum Angle Indicator
Create an "angular momentum" indicator that emphasizes changes near the extremes:
flowchart LR
subgraph System["Angular Momentum System"]
RSI["RSI (0-100)"] --> NORM["Normalize to [-1, 1]"]
NORM --> ARCSIN["ARCSIN"]
ARCSIN --> DEG["Convert to Degrees"]
DEG --> ROC["Rate of Change"]
ROC --> Signal["Angular Velocity"]
end
Why This Works
The arcsine transformation:
- Compresses the middle — Small moves near 50 RSI create small angle changes
- Expands the extremes — Small moves near 0 or 100 RSI create large angle changes
- Highlights exhaustion — Slowing angular velocity at extremes signals potential reversals
Example Interpretation
| RSI | Normalized | Arcsin (degrees) | Meaning |
|---|---|---|---|
| 95 | 0.9 | 64° | Near peak, slowing |
| 50 | 0 | 0° | Neutral momentum |
| 5 | -0.9 | -64° | Near trough |
Variance Stabilization: The Arcsine Transformation
In statistics, the arcsine transformation is used to stabilize variance in proportion data. In finance, this applies to:
- Win rate percentages — Transform to stabilize analysis
- Allocation weights — Analyze portfolio proportion changes
- Market share data — Compare proportional changes fairly
Where is a proportion between 0 and 1.
Handling Invalid Inputs
Arcsine is only defined for values between -1 and 1. If an input value falls outside , the output at that position is null — the math is undefined there, and the module never substitutes a fake number. To avoid null outputs from out-of-range data:
- Pre-normalize data to ensure valid range
- Use CLAMP module to bound inputs before transformation
Missing Data
When an input position is missing (null) — for example a data gap or a closed-market day — the output at that same position is null. The module never fills in a value for data it does not have, so every non-null output is real math on real data.
Note the distinction: a null input means no datapoint exists here, while an out-of-range input means a datapoint exists but arcsine is undefined for it. Both surface as null in the output.
In live execution the module returns exactly one datapoint — the newest position — which is null when that position is missing or out of range.
Converting Radians to Degrees
The output is in radians. To convert to degrees:
Use a Multiply module with a constant of 57.2958 to convert.