mypo package¶
Subpackages¶
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.
-
static
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.