コード例 #1
0
ファイル: test_market_data.py プロジェクト: neverbreaks/pfo
def test_download_csv_warn_1():
    d = d_warn_csv[1]
    with pytest.warns(UserWarning):
        data = download(**d)

    print(data.head())
    isinstance(data, pd.DataFrame)
コード例 #2
0
ファイル: test_portfolio.py プロジェクト: neverbreaks/pfo
def test_portfolio_yfinance_pass_1():
    d = d_pass_yfinance[0]
    data = download(**d)
    data = clean_data(data)
    pf = Portfolio(data=data, risk_free_rate=0.001, freq=252)
    pf.mc_simulation()
    pf.plot_mc_simulation()
    pf.print_mc_results()
コード例 #3
0
ファイル: test_portfolio.py プロジェクト: neverbreaks/pfo
def test_portfolio_moex_pass_0():
    d = d_pass_moex[0]
    data = download(**d)
    data = clean_data(data)
    pf = Portfolio(data=data)
    pf.mc_simulation()
    pf.plot_mc_simulation()
    pf.print_mc_results()
コード例 #4
0
ファイル: test_market_data.py プロジェクト: neverbreaks/pfo
def test_download_moex_pass_4():
    d = d_pass_moex[4]
    data = download(**d)
    print(data.head())
    isinstance(data, pd.DataFrame)
    data = clean_data(data)
    tickers = data.columns.tolist()
    print(tickers)
    assert sorted(tickers) == sorted(tickers_pass_moex[4])
コード例 #5
0
ファイル: test_market_data.py プロジェクト: neverbreaks/pfo
def test_download_moex_pass_3():
    d = d_pass_moex[3]
    data = download(**d)
    print(data.head())
    isinstance(data, pd.DataFrame)
コード例 #6
0
ファイル: test_market_data.py プロジェクト: neverbreaks/pfo
def test_download_yfinance_pass_1():
    d = d_pass_yfinance[1]
    data = download(**d)
    print(data.head())
    isinstance(data, pd.DataFrame)
コード例 #7
0
ファイル: test_market_data.py プロジェクト: neverbreaks/pfo
def test_download_csv_pass_0():
    d = d_pass_csv[0]
    data = download(**d)
    print(data.head())
    isinstance(data, pd.DataFrame)
コード例 #8
0
ファイル: example04.py プロジェクト: neverbreaks/pfo
import pandas as pd
from pfo.stocks.cluster import cluster_stocks
from pfo.stocks.stock import Stock
from pathlib import Path, WindowsPath

from pfo.utils.market_data import download, Source
from pfo.utils.data_utils import clean_data

path = (Path.cwd() / ".." / "cache" / "moex_all.csv").resolve()
data = download(
    Source.MOEX,
    tickers=[],
    boards=[
        {
            "board": "TQBR",
            "shares": "shares"
        },
        {
            "board": "TQTF",
            "shares": "shares"
        },
        {
            "board": "FQBR",
            "shares": "foreignshares"
        },
    ],
)

data = clean_data(data)
data.to_csv(path)
コード例 #9
0
import datetime
import matplotlib.pyplot as plt
from pfo.pf.portfolio import Portfolio
import numpy as np
from pfo.utils.market_data import download, Source
from pfo.utils.data_utils import clean_data

start_date = datetime.datetime(2019, 1, 1)
end_date = "2020-11-20"

tickers = [
    "GM",
    "WMT",
    "NVDA",
    "TSLA",
    "GE",
    "AAL",
    "AMD",
    "ADBE",
    "AMZN",
]

data = download(
    source=Source.YFINANCE, tickers=tickers, start_date=start_date, end_date=end_date
)
data = clean_data(data)
pf = Portfolio(data=data, risk_free_rate=0.001, freq=252)
pf.discrete_allocation()
コード例 #10
0
ファイル: example02.py プロジェクト: neverbreaks/pfo
from pfo.stocks.stock import Stock

pd.set_option("display.max_rows", None)
pd.set_option("display.max_columns", None)
pd.set_option("display.width", None)
pd.set_option("display.max_colwidth", None)
pd.set_option("display.width", 150)

start_date = datetime.datetime(2020, 8, 27)
end_date = datetime.datetime(2020, 11, 27)

data = download(
    source=Source.MOEX,
    tickers=["AFKS", "APTK", "LNZL", "MAGEP", "MRKS", "PLZL", "ROLO", "SELG"],
    board={
        "board": "TQBR",
        "shares": "shares"
    },
    start_date=start_date,
    end_date=end_date,
)
data = clean_data(data)

pf_stocks = []
for ticker in data.columns:
    stk = Stock(ticker=ticker, data=data)
    stk.plot_prices()
    stk.plot_daily_returns()
    pf_stocks.append(ticker)

pf1 = Portfolio(data=data, risk_free_rate=0.01, freq=252)
pf1.mc_simulation(10000)
コード例 #11
0
ファイル: example01.py プロジェクト: neverbreaks/pfo
import datetime
import matplotlib.pyplot as plt
import pandas as pd
from pfo.stocks.cluster import cluster_stocks
from pfo.stocks.stock import Stock
from pfo.utils.market_data import download, Source
from pfo.utils.data_utils import clean_data

start_date = datetime.datetime(2018, 11, 20)
end_date = datetime.datetime(2020, 11, 20)

data = download(source=Source.MOEX,
                tickers=[],
                boards=[{
                    "board": "TQBR",
                    "shares": "shares"
                }])
data = clean_data(data)
data = data[start_date:end_date]
isnull = data.isnull().sum()
for ticker in data.columns:
    try:
        if isnull[ticker] > 50:
            data.drop(ticker, axis=1, inplace=True)
    except:
        pass

pf_stocks = []
for ticker in data.columns:
    stk = Stock(ticker=ticker, data=data)
    if stk.sharp >= 1.0 or stk.sortino >= 1.0:
コード例 #12
0
def test_cluster_stocks_pass_0():
    d = d_pass_csv[0]
    data = download(**d)
    data = clean_data(data)
    data.dropna(how="all").replace([np.inf, -np.inf], np.nan)
    cluster_stocks(data, n_clusters=4, verbose=True)