openseries 1.9.5__py3-none-any.whl → 1.9.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openseries/_common_model.py +596 -509
- openseries/datefixer.py +4 -2
- openseries/frame.py +122 -165
- openseries/owntypes.py +48 -47
- openseries/portfoliotools.py +16 -32
- openseries/py.typed +0 -0
- openseries/report.py +15 -16
- openseries/series.py +43 -40
- openseries/simulation.py +95 -23
- {openseries-1.9.5.dist-info → openseries-1.9.7.dist-info}/METADATA +17 -20
- openseries-1.9.7.dist-info/RECORD +18 -0
- {openseries-1.9.5.dist-info → openseries-1.9.7.dist-info}/WHEEL +1 -1
- openseries-1.9.5.dist-info/RECORD +0 -17
- {openseries-1.9.5.dist-info → openseries-1.9.7.dist-info/licenses}/LICENSE.md +0 -0
openseries/simulation.py
CHANGED
@@ -9,7 +9,13 @@ SPDX-License-Identifier: BSD-3-Clause
|
|
9
9
|
|
10
10
|
from __future__ import annotations
|
11
11
|
|
12
|
-
from
|
12
|
+
from functools import cached_property
|
13
|
+
from typing import TYPE_CHECKING, TypedDict, cast
|
14
|
+
|
15
|
+
try:
|
16
|
+
from typing import Unpack
|
17
|
+
except ImportError:
|
18
|
+
from typing_extensions import Unpack
|
13
19
|
|
14
20
|
if TYPE_CHECKING:
|
15
21
|
import datetime as dt # pragma: no cover
|
@@ -41,6 +47,14 @@ from .owntypes import (
|
|
41
47
|
__all__ = ["ReturnSimulation"]
|
42
48
|
|
43
49
|
|
50
|
+
class _JumpParams(TypedDict, total=False):
|
51
|
+
"""TypedDict for jump diffusion parameters."""
|
52
|
+
|
53
|
+
jumps_lamda: NonNegativeFloat
|
54
|
+
jumps_sigma: NonNegativeFloat
|
55
|
+
jumps_mu: float
|
56
|
+
|
57
|
+
|
44
58
|
def _random_generator(seed: int | None) -> Generator:
|
45
59
|
"""Make a Numpy Random Generator object.
|
46
60
|
|
@@ -60,7 +74,59 @@ def _random_generator(seed: int | None) -> Generator:
|
|
60
74
|
return Generator(bit_generator=bg)
|
61
75
|
|
62
76
|
|
63
|
-
|
77
|
+
def _create_base_simulation(
|
78
|
+
cls: type[ReturnSimulation],
|
79
|
+
returns: DataFrame,
|
80
|
+
number_of_sims: PositiveInt,
|
81
|
+
trading_days: PositiveInt,
|
82
|
+
trading_days_in_year: DaysInYearType,
|
83
|
+
mean_annual_return: float,
|
84
|
+
mean_annual_vol: PositiveFloat,
|
85
|
+
seed: int | None = None,
|
86
|
+
**kwargs: Unpack[_JumpParams],
|
87
|
+
) -> ReturnSimulation:
|
88
|
+
"""Common logic for creating simulations.
|
89
|
+
|
90
|
+
Parameters
|
91
|
+
----------
|
92
|
+
cls: type[ReturnSimulation]
|
93
|
+
The ReturnSimulation class
|
94
|
+
returns: pandas.DataFrame
|
95
|
+
The calculated returns data
|
96
|
+
number_of_sims: PositiveInt
|
97
|
+
Number of simulations to generate
|
98
|
+
trading_days: PositiveInt
|
99
|
+
Number of trading days to simulate
|
100
|
+
trading_days_in_year: DaysInYearType
|
101
|
+
Number of trading days used to annualize
|
102
|
+
mean_annual_return: float
|
103
|
+
Mean annual return
|
104
|
+
mean_annual_vol: PositiveFloat
|
105
|
+
Mean annual volatility
|
106
|
+
seed: int, optional
|
107
|
+
Seed for random process initiation
|
108
|
+
**kwargs
|
109
|
+
Additional keyword arguments for jump parameters
|
110
|
+
|
111
|
+
Returns:
|
112
|
+
-------
|
113
|
+
ReturnSimulation
|
114
|
+
A ReturnSimulation instance
|
115
|
+
|
116
|
+
"""
|
117
|
+
return cls(
|
118
|
+
number_of_sims=number_of_sims,
|
119
|
+
trading_days=trading_days,
|
120
|
+
trading_days_in_year=trading_days_in_year,
|
121
|
+
mean_annual_return=mean_annual_return,
|
122
|
+
mean_annual_vol=mean_annual_vol,
|
123
|
+
dframe=returns,
|
124
|
+
seed=seed,
|
125
|
+
**kwargs,
|
126
|
+
)
|
127
|
+
|
128
|
+
|
129
|
+
class ReturnSimulation(BaseModel):
|
64
130
|
"""The class ReturnSimulation allows for simulating financial timeseries.
|
65
131
|
|
66
132
|
Parameters
|
@@ -105,7 +171,7 @@ class ReturnSimulation(BaseModel): # type: ignore[misc]
|
|
105
171
|
revalidate_instances="always",
|
106
172
|
)
|
107
173
|
|
108
|
-
@
|
174
|
+
@cached_property
|
109
175
|
def results(self: Self) -> DataFrame:
|
110
176
|
"""Simulation data.
|
111
177
|
|
@@ -197,13 +263,14 @@ class ReturnSimulation(BaseModel): # type: ignore[misc]
|
|
197
263
|
size=(number_of_sims, trading_days),
|
198
264
|
)
|
199
265
|
|
200
|
-
return
|
266
|
+
return _create_base_simulation(
|
267
|
+
cls=cls,
|
268
|
+
returns=DataFrame(data=returns, dtype="float64"),
|
201
269
|
number_of_sims=number_of_sims,
|
202
270
|
trading_days=trading_days,
|
203
271
|
trading_days_in_year=trading_days_in_year,
|
204
272
|
mean_annual_return=mean_annual_return,
|
205
273
|
mean_annual_vol=mean_annual_vol,
|
206
|
-
dframe=DataFrame(data=returns, dtype="float64"),
|
207
274
|
seed=seed,
|
208
275
|
)
|
209
276
|
|
@@ -255,13 +322,14 @@ class ReturnSimulation(BaseModel): # type: ignore[misc]
|
|
255
322
|
- 1
|
256
323
|
)
|
257
324
|
|
258
|
-
return
|
325
|
+
return _create_base_simulation(
|
326
|
+
cls=cls,
|
327
|
+
returns=DataFrame(data=returns, dtype="float64"),
|
259
328
|
number_of_sims=number_of_sims,
|
260
329
|
trading_days=trading_days,
|
261
330
|
trading_days_in_year=trading_days_in_year,
|
262
331
|
mean_annual_return=mean_annual_return,
|
263
332
|
mean_annual_vol=mean_annual_vol,
|
264
|
-
dframe=DataFrame(data=returns, dtype="float64"),
|
265
333
|
seed=seed,
|
266
334
|
)
|
267
335
|
|
@@ -317,13 +385,14 @@ class ReturnSimulation(BaseModel): # type: ignore[misc]
|
|
317
385
|
|
318
386
|
returns = drift + wiener
|
319
387
|
|
320
|
-
return
|
388
|
+
return _create_base_simulation(
|
389
|
+
cls=cls,
|
390
|
+
returns=DataFrame(data=returns, dtype="float64"),
|
321
391
|
number_of_sims=number_of_sims,
|
322
392
|
trading_days=trading_days,
|
323
393
|
trading_days_in_year=trading_days_in_year,
|
324
394
|
mean_annual_return=mean_annual_return,
|
325
395
|
mean_annual_vol=mean_annual_vol,
|
326
|
-
dframe=DataFrame(data=returns, dtype="float64"),
|
327
396
|
seed=seed,
|
328
397
|
)
|
329
398
|
|
@@ -404,17 +473,18 @@ class ReturnSimulation(BaseModel): # type: ignore[misc]
|
|
404
473
|
|
405
474
|
returns[:, 0] = 0.0
|
406
475
|
|
407
|
-
return
|
476
|
+
return _create_base_simulation(
|
477
|
+
cls=cls,
|
478
|
+
returns=DataFrame(data=returns, dtype="float64"),
|
408
479
|
number_of_sims=number_of_sims,
|
409
480
|
trading_days=trading_days,
|
410
481
|
trading_days_in_year=trading_days_in_year,
|
411
482
|
mean_annual_return=mean_annual_return,
|
412
483
|
mean_annual_vol=mean_annual_vol,
|
484
|
+
seed=seed,
|
413
485
|
jumps_lamda=jumps_lamda,
|
414
486
|
jumps_sigma=jumps_sigma,
|
415
487
|
jumps_mu=jumps_mu,
|
416
|
-
dframe=DataFrame(data=returns, dtype="float64"),
|
417
|
-
seed=seed,
|
418
488
|
)
|
419
489
|
|
420
490
|
def to_dataframe(
|
@@ -465,15 +535,17 @@ class ReturnSimulation(BaseModel): # type: ignore[misc]
|
|
465
535
|
)
|
466
536
|
return sdf
|
467
537
|
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
538
|
+
df_list = [
|
539
|
+
DataFrame(
|
540
|
+
data=self.dframe.iloc[item].values,
|
541
|
+
index=Index(d_range),
|
542
|
+
columns=MultiIndex.from_arrays(
|
543
|
+
[
|
544
|
+
[f"{name}_{item}"],
|
545
|
+
[ValueType.RTRN],
|
546
|
+
],
|
547
|
+
),
|
477
548
|
)
|
478
|
-
|
479
|
-
|
549
|
+
for item in range(self.number_of_sims)
|
550
|
+
]
|
551
|
+
return concat(df_list, axis="columns", sort=True)
|
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: openseries
|
3
|
-
Version: 1.9.
|
3
|
+
Version: 1.9.7
|
4
4
|
Summary: Tools for analyzing financial timeseries.
|
5
5
|
License: # BSD 3-Clause License
|
6
6
|
|
@@ -29,6 +29,7 @@ License: # BSD 3-Clause License
|
|
29
29
|
however caused and on any theory of liability, whether in contract, strict liability,
|
30
30
|
or tort (including negligence or otherwise) arising in any way out of the use of this
|
31
31
|
software, even if advised of the possibility of such damage.
|
32
|
+
License-File: LICENSE.md
|
32
33
|
Keywords: python,finance,fintech,data-science,timeseries,timeseries-data,timeseries-analysis,investment,investment-analysis,investing
|
33
34
|
Author: Martin Karrin
|
34
35
|
Author-email: martin.karrin@captor.se
|
@@ -117,9 +118,9 @@ _,_=series.plot_series()
|
|
117
118
|
|
118
119
|
```
|
119
120
|
|
120
|
-
### Sample output using the report_html() function
|
121
|
+
### Sample output using the report_html() function
|
121
122
|
|
122
|
-
<img src="https://raw.githubusercontent.com/CaptorAB/openseries/master/
|
123
|
+
<img src="https://raw.githubusercontent.com/CaptorAB/openseries/master/openseries_plot.png" alt="Two Assets Compared" width="1000" />
|
123
124
|
|
124
125
|
## Development Instructions
|
125
126
|
|
@@ -151,10 +152,7 @@ source source_me
|
|
151
152
|
|
152
153
|
## Testing and Linting / Type-checking
|
153
154
|
|
154
|
-
Ruff and
|
155
|
-
are also used in the project's GitHub workflows and are run when the `lint`
|
156
|
-
alternative is chosen in the below commands.
|
157
|
-
Any silenced error codes can be found in the
|
155
|
+
[Ruff](https://docs.astral.sh/ruff/) and [mypy](https://mypy-lang.org/) checking is embedded in the pre-commit hook. Both are also used in the project's GitHub workflows and are run when the `lint` alternative is chosen in the below commands. Any silenced error codes can be found in the
|
158
156
|
[pyproject.toml](https://github.com/CaptorAB/openseries/blob/master/pyproject.toml)
|
159
157
|
file or in in-line comments.
|
160
158
|
|
@@ -200,7 +198,7 @@ make lint
|
|
200
198
|
| [report.py](https://github.com/CaptorAB/openseries/blob/master/openseries/report.py) | Defines the _report_html_ function that is used to create a landscape orientation report on at least two assets. All preceding assets will be measured against the last asset in the input OpenFrame. |
|
201
199
|
| [simulation.py](https://github.com/CaptorAB/openseries/blob/master/openseries/simulation.py) | Defines the class _ReturnSimulation_ to create simulated financial timeseries. Used in the project's test suite |
|
202
200
|
|
203
|
-
### Class methods used to construct objects
|
201
|
+
### Class methods used to construct objects
|
204
202
|
|
205
203
|
| Method | Applies to | Description |
|
206
204
|
|:------------------|:------------------------------|:---------------------------------------------------------------------------------------------------|
|
@@ -209,7 +207,7 @@ make lint
|
|
209
207
|
| `from_fixed_rate` | `OpenTimeSeries` | Class method to create an OpenTimeSeries object from a fixed rate, number of days and an end date. |
|
210
208
|
| `from_deepcopy` | `OpenTimeSeries`, `OpenFrame` | Creates a copy of an OpenTimeSeries object. |
|
211
209
|
|
212
|
-
### Non-numerical or "helper" properties that apply only to the [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) class
|
210
|
+
### Non-numerical or "helper" properties that apply only to the [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) class
|
213
211
|
|
214
212
|
| Property | type | Applies to | Description |
|
215
213
|
|:----------------|:---------------------|:-----------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
@@ -227,7 +225,7 @@ make lint
|
|
227
225
|
| `markets` | `list[str]` or `str` | `OpenTimeSeries` | (List of) markets code(s) according to market code(s) input for the [pandas-market-calendars](https://pandas-market-calendars.readthedocs.io/en/latest/) package. |
|
228
226
|
| `valuetype` | `ValueType` | `OpenTimeSeries` | Field identifies the type of values in the series. ValueType is an Enum. |
|
229
227
|
|
230
|
-
### Non-numerical or "helper" properties that apply only to the [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py) class
|
228
|
+
### Non-numerical or "helper" properties that apply only to the [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py) class
|
231
229
|
|
232
230
|
| Property | type | Applies to | Description |
|
233
231
|
|:-------------------|:---------------------------------|:------------|:-------------------------------------------------------------------------|
|
@@ -241,7 +239,7 @@ make lint
|
|
241
239
|
| `lengths_of_items` | `pandas.Series[int]` | `OpenFrame` | Number of items in each of the series in the OpenFrame. |
|
242
240
|
| `span_of_days_all` | `pandas.Series[int]` | `OpenFrame` | Number of days from the first to the last in each of the series. |
|
243
241
|
|
244
|
-
### Non-numerical or "helper" properties that apply to both the [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) and the [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py) class
|
242
|
+
### Non-numerical or "helper" properties that apply to both the [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) and the [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py) class
|
245
243
|
|
246
244
|
| Property | type | Applies to | Description |
|
247
245
|
|:--------------------|:---------------------------------|:------------------------------|:----------------------------------------------------------------------------------|
|
@@ -254,7 +252,7 @@ make lint
|
|
254
252
|
| `periods_in_a_year` | `float` | `OpenTimeSeries`, `OpenFrame` | The number of observations in an average year for all days in the data. |
|
255
253
|
| `yearfrac` | `float` | `OpenTimeSeries`, `OpenFrame` | Length of timeseries expressed as np.float64 fraction of a year with 365.25 days. |
|
256
254
|
|
257
|
-
### Methods that apply only to the [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) class
|
255
|
+
### Methods that apply only to the [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) class
|
258
256
|
|
259
257
|
| Method | Applies to | Description |
|
260
258
|
|:-------------------------|:-----------------|:-----------------------------------------------------------------------------------------------------------------------------------------------|
|
@@ -262,10 +260,9 @@ make lint
|
|
262
260
|
| `set_new_label` | `OpenTimeSeries` | Method to change the pandas.DataFrame column MultiIndex. |
|
263
261
|
| `running_adjustment` | `OpenTimeSeries` | Adjusts the series performance with a `float` factor. |
|
264
262
|
| `ewma_vol_func` | `OpenTimeSeries` | Returns a `pandas.Series` with volatility based on [Exponentially Weighted Moving Average](https://www.investopedia.com/articles/07/ewma.asp). |
|
265
|
-
| `from_1d_rate_to_cumret` | `OpenTimeSeries` | Converts a series of 1-day rates into a cumulative valueseries.
|
266
|
-
|
|
263
|
+
| `from_1d_rate_to_cumret` | `OpenTimeSeries` | Converts a series of 1-day rates into a cumulative valueseries. |
|
267
264
|
|
268
|
-
### Methods that apply only to the [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py) class
|
265
|
+
### Methods that apply only to the [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py) class
|
269
266
|
|
270
267
|
| Method | Applies to | Description |
|
271
268
|
|:---------------------------------|:------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
@@ -274,7 +271,7 @@ make lint
|
|
274
271
|
| `add_timeseries` | `OpenFrame` | Adds a given OpenTimeSeries to the OpenFrame. |
|
275
272
|
| `delete_timeseries` | `OpenFrame` | Deletes an OpenTimeSeries from the OpenFrame. |
|
276
273
|
| `relative` | `OpenFrame` | Calculates a new series that is the relative performance of two others. |
|
277
|
-
| `make_portfolio` | `OpenFrame` | Calculates a portfolio timeseries based on the series and weights. Weights
|
274
|
+
| `make_portfolio` | `OpenFrame` | Calculates a portfolio timeseries based on the series and weights. Weights an be provided as a list, or a weight strategy can be set as _equal weights_ or _inverted volatility_. |
|
278
275
|
| `ord_least_squares_fit` | `OpenFrame` | Performs a regression and an [Ordinary Least Squares](https://www.statsmodels.org/stable/examples/notebooks/generated/ols.html) fit. |
|
279
276
|
| `beta` | `OpenFrame` | Calculates [Beta](https://www.investopedia.com/terms/b/beta.asp) of an asset relative a market. |
|
280
277
|
| `jensen_alpha` | `OpenFrame` | Calculates [Jensen's Alpha](https://www.investopedia.com/terms/j/jensensmeasure.asp) of an asset relative a market. |
|
@@ -288,7 +285,7 @@ make lint
|
|
288
285
|
| `ewma_risk` | `OpenFrame` | Returns a `pandas.DataFrame` with volatility and correlation based on [Exponentially Weighted Moving Average](https://www.investopedia.com/articles/07/ewma.asp). |
|
289
286
|
| `multi_factor_linear_regression` | `OpenFrame` | Treats one specified series as the dependent variable (y) and uses all remaining series as independent variables (X) in a linear regression and returns a DataFrame with summary output and a series of predicted values. |
|
290
287
|
|
291
|
-
### Methods that apply to both the [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) and the [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py) class
|
288
|
+
### Methods that apply to both the [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) and the [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py) class
|
292
289
|
|
293
290
|
| Method | Applies to | Description |
|
294
291
|
|:-----------------------------------|:------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------|
|
@@ -314,7 +311,7 @@ make lint
|
|
314
311
|
| `rolling_cvar_down` | `OpenTimeSeries`, `OpenFrame` | Returns a pandas.DataFrame with rolling CVaR figures. |
|
315
312
|
| `calc_range` | `OpenTimeSeries`, `OpenFrame` | Returns the start and end dates of a range from specific period definitions. Used by the below numerical methods and not meant to be used independently. |
|
316
313
|
|
317
|
-
### Numerical properties available for individual [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) or on all series in an [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py)
|
314
|
+
### Numerical properties available for individual [OpenTimeSeries](https://github.com/CaptorAB/openseries/blob/master/openseries/series.py) or on all series in an [OpenFrame](https://github.com/CaptorAB/openseries/blob/master/openseries/frame.py)
|
318
315
|
|
319
316
|
| Property | type | Applies to | Description |
|
320
317
|
|:------------------------|:-------------------------|:------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
@@ -340,7 +337,7 @@ make lint
|
|
340
337
|
| `kurtosis` | `float`, `pandas.Series` | `OpenTimeSeries`, `OpenFrame` | [Kurtosis](https://www.investopedia.com/terms/k/kurtosis.asp) of the return distribution. |
|
341
338
|
| `z_score` | `float`, `pandas.Series` | `OpenTimeSeries`, `OpenFrame` | [Z-score](https://www.investopedia.com/terms/z/zscore.asp) as (last return - mean return) / standard deviation of returns. |
|
342
339
|
|
343
|
-
### Methods below are identical to the Numerical Properties above
|
340
|
+
### Methods below are identical to the Numerical Properties above
|
344
341
|
|
345
342
|
_They are simply methods that take different date or length inputs to return the
|
346
343
|
properties for subset periods._
|
@@ -0,0 +1,18 @@
|
|
1
|
+
openseries/__init__.py,sha256=WAh79oE-ceGG_yl4nBukkp3UPvmLk4u_GySL2xOKbxE,1375
|
2
|
+
openseries/_common_model.py,sha256=BTWXpXkKrvihVdHF4HsnIwd1tH_YgAnoxMz940qoy-8,89569
|
3
|
+
openseries/_risk.py,sha256=8XKZWWXrECo0Vd9r2kbcn4dzyPuo93DAEO8eSkv4w20,2357
|
4
|
+
openseries/datefixer.py,sha256=eVhxaFj_la_XZQuPQHvinTWEzCCn8ct_AnZEYPOpY6U,15775
|
5
|
+
openseries/frame.py,sha256=PGtcxCTmkKO42IYhovxZoCccTF97Ls_4Ru7ovIUETOU,56529
|
6
|
+
openseries/load_plotly.py,sha256=C6iQyabfi5ubSONuis3yRHb3bUktBtTDlovsDIaeHNQ,2266
|
7
|
+
openseries/owntypes.py,sha256=3n3IgqRjIvUfYD-37Bedilgx0UDGA-RPU0IC7wujMWg,9681
|
8
|
+
openseries/plotly_captor_logo.json,sha256=F5nhMzEyxKywtjvQqMTKgKRCJQYMDIiBgDSxdte8Clo,178
|
9
|
+
openseries/plotly_layouts.json,sha256=MvDEQuiqIhMBXBelXb1sedTOlTPheizv6NZRLeE9YS4,1431
|
10
|
+
openseries/portfoliotools.py,sha256=zXnKiPoKQ691Qq_o7cg_fBRIPaj55r52OEanjBw8jOA,19339
|
11
|
+
openseries/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
|
+
openseries/report.py,sha256=FKnOMrTc9Ofe_I_eBdBnmIaWluAYvGPCZ16VjbzwF10,14375
|
13
|
+
openseries/series.py,sha256=dQh7dAosFxJqiUdj8Cf7A19vv-w4hTAkU4_O_WnvxA4,28617
|
14
|
+
openseries/simulation.py,sha256=LRg7hx5iWuoosESgKzaEnj5XkEv5bTNjRAj3SDMo4kM,16321
|
15
|
+
openseries-1.9.7.dist-info/METADATA,sha256=rR7bJ3SWtXHL82WBxvW3FUrCkNIsGF31XX3n8kpiYYI,48251
|
16
|
+
openseries-1.9.7.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
17
|
+
openseries-1.9.7.dist-info/licenses/LICENSE.md,sha256=wNupG-KLsG0aTncb_SMNDh1ExtrKXlpxSJ6RC-g-SWs,1516
|
18
|
+
openseries-1.9.7.dist-info/RECORD,,
|
@@ -1,17 +0,0 @@
|
|
1
|
-
openseries/__init__.py,sha256=WAh79oE-ceGG_yl4nBukkp3UPvmLk4u_GySL2xOKbxE,1375
|
2
|
-
openseries/_common_model.py,sha256=Nug9DIp54q7tt0yHFEQKAZPrG9c1Oy6VpyqoRWKOC4I,85499
|
3
|
-
openseries/_risk.py,sha256=8XKZWWXrECo0Vd9r2kbcn4dzyPuo93DAEO8eSkv4w20,2357
|
4
|
-
openseries/datefixer.py,sha256=Z3AKLvULzy9MPQOndKhay0nGx2EgYcjVFNjT9qReoHk,15727
|
5
|
-
openseries/frame.py,sha256=a3TPLdvapnvHU_wbhPO0G95UHaHlJLXnsSmm-Ti_2sw,58579
|
6
|
-
openseries/load_plotly.py,sha256=C6iQyabfi5ubSONuis3yRHb3bUktBtTDlovsDIaeHNQ,2266
|
7
|
-
openseries/owntypes.py,sha256=P9CKoLtjUaFiktLb_axihrlVR5bJfdDbSFJC72kQG2o,9584
|
8
|
-
openseries/plotly_captor_logo.json,sha256=F5nhMzEyxKywtjvQqMTKgKRCJQYMDIiBgDSxdte8Clo,178
|
9
|
-
openseries/plotly_layouts.json,sha256=MvDEQuiqIhMBXBelXb1sedTOlTPheizv6NZRLeE9YS4,1431
|
10
|
-
openseries/portfoliotools.py,sha256=NMSp-dYjPRjBJpZ9W20IKDrQmBDk7e4qkTPT4QFx6io,19721
|
11
|
-
openseries/report.py,sha256=iWe68o883EIU9B_t-61fl41wzTY2e6p_ZHgST2uoH3g,14393
|
12
|
-
openseries/series.py,sha256=HT2U_gUhiZMhvt7hzpUPakKBEXI64Ur2WqoaUhXV11k,28925
|
13
|
-
openseries/simulation.py,sha256=t2LFlAT9lcfPqqGEXOUoEgIG2gDEuGps3Qd3IgN_GLk,14359
|
14
|
-
openseries-1.9.5.dist-info/LICENSE.md,sha256=wNupG-KLsG0aTncb_SMNDh1ExtrKXlpxSJ6RC-g-SWs,1516
|
15
|
-
openseries-1.9.5.dist-info/METADATA,sha256=XYz8k9ujPY_MuwGjyHEyxyCgjKppszQJfmFq3tZ67U4,48301
|
16
|
-
openseries-1.9.5.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
17
|
-
openseries-1.9.5.dist-info/RECORD,,
|
File without changes
|