mypo package

Submodules

mypo.common module

Utility functions.

A collection of utlities by using in Runner class.

mypo.common.calc_capital_gain_tax(average_asset_prices: Union[int, float, complex, str, bytes, numpy.generic, Sequence[Union[int, float, complex, str, bytes, numpy.generic]], Sequence[Sequence[Any]], numpy.typing._array_like._SupportsArray], prices: Union[int, float, complex, str, bytes, numpy.generic, Sequence[Union[int, float, complex, str, bytes, numpy.generic]], Sequence[Sequence[Any]], numpy.typing._array_like._SupportsArray], diff: Union[int, float, complex, str, bytes, numpy.generic, Sequence[Union[int, float, complex, str, bytes, numpy.generic]], Sequence[Sequence[Any]], numpy.typing._array_like._SupportsArray], settings: mypo.settings.Settings)numpy.float64

Calculate capital gain from market data and assets.

Parameters
  • average_asset_prices – average assets from investment started.

  • prices – Current assets.

  • diff – Deal.

  • settings – Ratio of tax for capital gain.

Returns

capital_gain_tax

mypo.common.calc_fee(diff: Union[int, float, complex, str, bytes, numpy.generic, Sequence[Union[int, float, complex, str, bytes, numpy.generic]], Sequence[Sequence[Any]], numpy.typing._array_like._SupportsArray], settings: mypo.settings.Settings)numpy.float64

Calculate fee for dealing.

Parameters
  • diff – Deal.

  • settings – Ratio of fee for trading.

Returns

fee

mypo.common.calc_income_gain_tax(assets: Union[int, float, complex, str, bytes, numpy.generic, Sequence[Union[int, float, complex, str, bytes, numpy.generic]], Sequence[Sequence[Any]], numpy.typing._array_like._SupportsArray], price_dividends_yield: Union[int, float, complex, str, bytes, numpy.generic, Sequence[Union[int, float, complex, str, bytes, numpy.generic]], Sequence[Sequence[Any]], numpy.typing._array_like._SupportsArray], settings: mypo.settings.Settings)numpy.float64

Calculate income gain from market data and assets.

Parameters
  • assets – Current assets.

  • price_dividends_yield – Price dividends yield.

  • settings – Ratio of tax for capital gain.

Returns

income_gain_tax

mypo.common.covariance(prices: numpy.ndarray)numpy.ndarray

Calculate covariance matrix.

Parameters

prices – Prices of market data.

Returns

Covariance matrix.

mypo.common.safe_cast(value: Any)numpy.ndarray

Cast array like type to numpy array.

Parameters

value – target value

Returns

casted_value

mypo.common.semi_covariance(prices: numpy.ndarray)numpy.ndarray

Calculate semi-covariance matrix.

Parameters

prices – Prices of market data.

Returns

Semi-covariance matrix.

mypo.common.sharpe_ratio(prices: numpy.ndarray, risk_free_rate: numpy.float64 = 0.02)numpy.float64

Calculate Sharpe ratio.

Parameters
  • prices – Prices

  • risk_free_rate – Risk free rate

Returns

Sharpe ratio.

mypo.loader module

Loader class for downloading stock data.

Download stock data from yahoo finance.

class mypo.loader.Loader(tickers: Optional[Dict[str, pandas.core.frame.DataFrame]] = None, names: Optional[Dict[str, str]] = None, expense_ratio: Optional[Dict[str, float]] = None, total_assets: Optional[Dict[str, int]] = None, daily_volume_10_days: Optional[Dict[str, int]] = None)

Bases: object

Loader class for downloading stock.

filter(tickers: List[str])mypo.loader.Loader

Filter market data.

Parameters

tickers – to remain tickers.

Returns

Filtered data.

get(ticker: str, expense_ratio: float = 0.0)None

Get stock data of specified ticker.

Parameters
  • ticker – Ticker that you want to download stock data.

  • expense_ratio – Expense ratio of ticker. The default value is 0.0.

Returns

Nothing

get_market()mypo.market.Market

Get market data.

Returns

Market data

static load(filepath: str)mypo.loader.Loader

Load market data from file.

Parameters

filepath – Path to file for loading data.

Returns

Market object

save(filepath: str)None

Save market data to file.

Parameters

filepath – Path to file for storing data.

since(since: datetime.datetime)mypo.loader.Loader

Filter market data.

Parameters

since – Established date.

Returns

Filtered data.

summary()pandas.core.frame.DataFrame

Get summary.

Returns

Summary.

total_assets_than(total: int)mypo.loader.Loader

Filter market data.

Parameters

total – Total assets for comparing.

Returns

Filtered data.

volume_than(volume: int)mypo.loader.Loader

Filter market data.

Parameters

volume – Volume for comparing.

Returns

Filtered data.

mypo.market module

Market object for store and loading stock prices data.

class mypo.market.Market(names: Dict[str, str], closes: pandas.core.frame.DataFrame, price_dividends_yield: pandas.core.frame.DataFrame, expense_ratio: Dict[str, float])

Bases: object

Market class for store and loading stock prices data.

static calc_price_dividends_yield(tickers: Dict[str, pandas.core.frame.DataFrame])pandas.core.frame.DataFrame

Get price dividends yield.

Returns

price dividends yield data

static calc_raw(tickers: Dict[str, pandas.core.frame.DataFrame])pandas.core.frame.DataFrame

Get price data from stored market data.

Parameters

tickers – Tickers

Returns

Prices

static create(start_date: str, end_date: str, yearly_gain: float, ticker: str = 'None', n_assets: int = 1)mypo.market.Market

Load market data from file.

Parameters
  • ticker – Ticker.

  • start_date – Start date.

  • end_date – End date.

  • yearly_gain – Yearly gain.

  • n_assets – Number of assets

Returns

Market object

static create_from_ticker(names: Dict[str, str], tickers: Dict[str, pandas.core.frame.DataFrame], expense_ratio: Dict[str, float])mypo.market.Market

Construct this object.

Parameters
  • names – Names.

  • tickers – Tickers.

  • expense_ratio – Expense ratio.

extract(index: pandas.core.series.Series)mypo.market.Market

Extract market data.

Parameters

index – Index what you want to extract.

Returns

Extracted Data

filter(tickers: List[str])mypo.market.Market

Filter tickers.

Parameters

tickers – Remaining tickers.

Returns

Filtered market data.

get_expense_ratio()numpy.ndarray

Get expense ratio.

Returns

Expense ratio

get_first_date()datetime.datetime

Get first date.

Returns

First date.

get_index()pandas.core.indexes.base.Index

Get index date from stored market data.

Returns

index date

get_last_date()datetime.datetime

Get Last date.

Returns

Last date.

get_length()int

Get length.

Returns

length.

get_normalized_prices()pandas.core.frame.DataFrame

Get normalized prices.

Returns

Normalized prices

get_price_dividends_yield()pandas.core.frame.DataFrame

Get price dividends yield.

Returns

price dividends yield data

get_rate_of_change()pandas.core.frame.DataFrame

Get rate of change of prices.

Returns

Rate of change

get_raw()pandas.core.frame.DataFrame

Get price data from stored market data.

Returns

Prices

get_relative(ticker: str, n: int = 10)pandas.core.frame.DataFrame

Get relative ticker.

Parameters

ticker – Ticker.

Returns

Relative tickers.

get_summary()pandas.core.frame.DataFrame

Get summary.

Returns

Summary

get_tickers()List[str]

Get tickers.

Returns

Tickers.

head(n: int)mypo.market.Market

Extract market data.

Parameters

n – First n records.

Returns

Extracted Data

static load(filepath: str)mypo.market.Market

Load market data from file.

Parameters

filepath – Path to file for loading data.

Returns

Market object

resample(method: mypo.market.SamplingMethod)mypo.market.Market

Resample market data.

Parameters

method – Frequency of sampling.

Returns

Resampled data.

save(filepath: str)None

Save market data to file.

Parameters

filepath – Path to file for storing data.

tail(n: int)mypo.market.Market

Extract market data.

Parameters

n – Last n records.

Returns

Extracted Data

trim(method: mypo.market.SamplingMethod)mypo.market.Market

Trim market data.

Parameters

method – Frequency of sampling.

Returns

Trim data.

class mypo.market.SamplingMethod(value)

Bases: enum.Enum

Enum of method for resampling.

MONTH = 'M'
YEAR = 'Y'

mypo.model_selection module

Utility functions for model selection.

class mypo.model_selection.Fold(market: mypo.market.Market, train_span: int)

Bases: object

filter(tickers: List[str])mypo.model_selection.Fold

Filter tickers.

Parameters

tickers – Remaining tickers.

Returns

Filtered Fold.

get_train()mypo.market.Market

Get train.

Returns

Train.

get_train_span()int

Get train span.

Returns

Train span.

get_valid()mypo.market.Market

Get validation.

Returns

Validation.

mypo.model_selection.clustering_tickers(market: mypo.market.Market, n: int, seed: int = 32)pandas.core.frame.DataFrame

Enumerate tickers.

Parameters
  • market – Market.

  • n – Count of tickers.

  • seed – Seed.

Returns

Clustered tickers.

mypo.model_selection.evaluate_combinations(market: mypo.market.Market, cluster: pandas.core.frame.DataFrame, optimizer: mypo.optimizer.base_optimizer.BaseOptimizer, verbose: bool = False)pandas.core.frame.DataFrame

Evaluate combinations.

Parameters
  • market – Market.

  • cluster – Cluster data.

  • verbose – Verbose mode.

Returns

Result.

mypo.model_selection.select_by_correlation(market: mypo.market.Market, threshold: float)List[str]

Select ticker by correlation.

Parameters
  • market – Market.

  • threshold – Threshold.

Returns

Selected tickers.

mypo.model_selection.select_by_regression(market: mypo.market.Market, threshold: float, verbose: bool = False)List[str]

Select ticker by correlation.

Parameters
  • market – Market.

  • threshold – Threshold.

Returns

Selected tickers.

mypo.model_selection.split_k_folds(market: mypo.market.Market, k: int, train_span: int)List[mypo.model_selection.Fold]

Split market to n periods.

Parameters
  • market – Market data

  • k – Count of split

  • train_span – Train span if you want to specify.

Returns

Split market data

mypo.reporter module

mypo.runner module

Simulation.

class mypo.runner.Runner(rebalancer: mypo.rebalancer.base_rebalancer.BaseRebalancer = <mypo.rebalancer.no_rebalancer.NoRebalancer object>, settings: mypo.settings.Settings = Settings(tax_rate=0.2, fee_rate=0.005))

Bases: object

Runner of simulation.

apply(market: mypo.market.Market, i: int)None

Apply current market situation.

Parameters
  • market – Market data.

  • i – Index.

report()mypo.reporter.reporter.Reporter

Report simulation.

Returns

result

run(assets: Optional[List[float]] = None, cash: float = 0.0, withdraw: float = 0.0, market: Optional[mypo.market.Market] = None, train_span: int = 1, fold: Optional[mypo.model_selection.Fold] = None, verbose: bool = False)None

Run simulation.

Parameters
  • assets – Initial asset.

  • cash – Initial cash.

  • withdraw – Withdraw.

  • market – Market data.

  • train_span – Periods of training span.

  • fold – Fold.

  • verbose – Show progress.

mypo.settings module

Parameters for runner.

class mypo.settings.Settings(tax_rate: numpy.float64, fee_rate: numpy.float64)

Bases: object

Settings for runner.

fee_rate: numpy.float64
tax_rate: numpy.float64

Module contents