Exemplo n.º 1
0
def snapshot(save=True):
    stocks = polling()
    from portfolio.models import Portfolio
    portfolio = Portfolio(stocks)
    if save:
        portfolio.save()
    return portfolio
Exemplo n.º 2
0
    def post(self, request):
        form = self.form_class(request.POST)

        if form.is_valid():

            user = form.save(commit=False)  #storing user info locally

            # cleaning data
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            #change password
            user.set_password(password)
            user.save()

            #returns User objects if credentials are correct

            user = authenticate(username=username, password=password)

            if user is not None:
                if user.is_active:
                    login(request, user)
                    # also need to make them a portfolio
                    portfolio = Portfolio(user=User.objects.get(
                        username=username))
                    portfolio.save()
                    return redirect(
                        'index')  # redirecting you back to the home page

        return render(request, self.template_name, {'form': form})
Exemplo n.º 3
0
def snapshot():
    stocks = polling()
    print(stocks)
    stock_list = []
    for stock in stocks:
        stock_list.append({'code': stock['code'], 'name': stock['name'],
                           'amount': stock['amount'],
                           'current': stock['current'], 'percentage': stock['percentage'],
                           'change': stock['change'] or 0})

    from portfolio.models import Portfolio
    from datetime import date
    date = get_date(str(date.today()))
    print('date***{}'.format(date))
    p = Portfolio(list=stock_list)
    p.compute()
    Portfolio.objects(date=date).update_one(list=p.list, market_value=p.market_value, total=p.total,
                                            net_asset=p.net_asset, cost=p.cost, cost_history=p.cost_history,
                                            cost_zs=p.cost_zs, cost_ht1=p.cost_ht1, cost_ht2=p.cost_ht2,
                                            cost_ht1_real=p.cost_ht1_real, cost_ht2_real=p.cost_ht2_real,
                                            position_ratio=p.position_ratio, financing=p.financing,
                                            lever=p.lever, cash=p.cash, profit=p.profit,
                                            profit_ratio=p.profit_ratio, profit_today=p.profit_today,
                                            profit_ratio_today=p.profit_ratio_today,
                                            upsert=True)
    result = Portfolio.objects.get(date=date)
    if result:
        print('result list***{}'.format(result.list))
        return result
    else:
        return None
Exemplo n.º 4
0
    def get_context_data(self, **kwargs):
        context_data = super(InnerView, self).get_context_data(**kwargs)

        portfolio = Portfolio(settings.FLICKR_USER_ID)
        portfolio.setSections(settings.PORTFOLIO_SECTIONS)
        context_data['portfolio'] = portfolio
        context_data['snippets'] = self.get_snippets()
        return context_data
Exemplo n.º 5
0
 def post(self, request, *args, **kw):
     print('post****{}'.format(request.data))
     method = request.data.get('method')
     code = request.data.get('code')
     amount = request.data.get('amount')
     #  mongoengine pull/push operator
     latest_portfolio = Portfolio.objects().order_by('-date').first()
     date = latest_portfolio.date
     Portfolio.objects(date=date).update_one(pull__list={'code': code})
     Portfolio.objects(date=date).update_one(push__list={'code': code, 'amount': int(amount)}, upsert=True)
     return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 6
0
def signup(request):

    # 기로그인 -> redirect
    if request.user.is_anonymous:
        pass
    elif request.user:
        # return HttpResponseRedirect('/portfolios/')
        return HttpResponseRedirect('/')

    template = 'registration/signup.html'
    signupForm = UserCreationForm()
    message = ""

    # form 작성 후 post 액션 시
    if request.method == "POST":
        signupForm = UserCreationForm(request.POST, request.FILES or None)
        if signupForm.is_valid():
            user = signupForm.save(commit=False)
            user.save()
            """Create a portfolio for this user"""
            Portfolio.make_portfolio(user)

            # 계정 활성화를 위한 이메일 인증
            current_site = get_current_site(request)

            mail_subject = render_to_string(
                'registration/activation_email_subject.txt')
            mail_message = render_to_string(
                'registration/activation_email.html', {
                    'user': user,
                    'domain': current_site.domain,
                    'uid': urlsafe_base64_encode(force_bytes(user.pk)),
                    'token': account_activation_token.make_token(user),
                    'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
                })
            to_email = signupForm.cleaned_data.get('email')

            email = EmailMessage(mail_subject, mail_message, to=[to_email])
            email.send()
            return HttpResponse(
                'Please confirm your email address to complete the registration'
            )
        else:
            message = "패스워드 미일치"

    elif request.method == "GET":
        pass

    context = {"signupForm": signupForm, "message": message}
    return render(request, template, context)
Exemplo n.º 7
0
 def post(self, request, *args, **kw):
     print('post****{}'.format(request.data))
     method = request.data.get('method')
     code = request.data.get('code')
     amount = request.data.get('amount')
     #  mongoengine pull/push operator
     latest_portfolio = Portfolio.objects().order_by('-date').first()
     date = latest_portfolio.date
     Portfolio.objects(date=date).update_one(pull__list={'code': code})
     Portfolio.objects(date=date).update_one(push__list={
         'code': code,
         'amount': int(amount)
     },
                                             upsert=True)
     return Response(status=status.HTTP_204_NO_CONTENT)
Exemplo n.º 8
0
    def create(self, validated_data):
        """
        Overwrites the create() method to return a ``Portfolio`` object
        after the POSTED ``Transaction`` has occured
        (instead of a ``Transaction`` object).

        Note that the validation for the posted transaction
        is done in the .save() method of the model, not here.
        (Model raises ValidationError on errors.)
        """
        transaction = Transaction(
            user=validated_data["user"],
            symbol=validated_data["symbol"],
            amount=validated_data["amount"],
            date_posted=validated_data["date_posted"],
            simulation=None,
        )
        # this automatically adds to / substracts from
        # the user's Portfolio for given <symbol>
        # (see Portfolio's .save() method overwrite)
        transaction.save()
        try:
            portfolio = Portfolio.objects.get(
                user=validated_data["user"],
                symbol=validated_data["symbol"],
                simulation=None,
            )
            return portfolio
        except Portfolio.DoesNotExist:
            # user sold all his stocks
            #  > user's portfolio for given <symbol> was deleted
            #  > return a dummy portfolio
            return Portfolio(symbol=validated_data["symbol"], amount=0)
def get_user(request):
    '''used by front end app to get initial data on page load'''
    session = request.session
    portfolio = Portfolio.initialize_session(session)
    return HttpResponse(json.dumps(dict(cash_balance=portfolio.cash_balance, 
                                        id=portfolio.pk, 
                                        purchases=[dict(ticker=p.ticker, units=p.units, purchase_price=p.purchase_price, id=p.pk) for p in portfolio.stockpurchase_set.all()])))
Exemplo n.º 10
0
 def test_portfolio_creation(self):
     # create a portfolio
     port = Portfolio(
         title="My title",
         author=self.staffUser
     )
     port.save()
     # assert slug is correctly generated
     self.assertEqual(port.slug, "my-title")
     # assert portfolio is in published manager
     n_port = Portfolio.published.all().count()
     self.assertEqual(n_port, 4)
     # assert published manager delivers last portfolio first
     ports = Portfolio.published.all()
     self.assertEqual(port, ports[0])
     # create a new portfolio with same title
     port2 = Portfolio(
         title="My title",
         order=2,
         author=self.staffUser
     )
     port2.save()
     # assert slugs are unique
     self.assertTrue(port.slug != port2.slug)
     # assert it's last in published manager
     ports = Portfolio.published.all()
     self.assertEqual(port2, ports[4])
Exemplo n.º 11
0
    def get(self, request, *args, **kw):
        # Process any get params that you may need
        # If you don't need to process get params,
        # you can skip this part
        items = Portfolio.objects().order_by('date')
        # portfolio_col = db.portfolio.find()
        # df = pd.DataFrame(list(portfolio_col))
        # print(df)
        serializer = PortfolioListSerializer({'items': items})
        # print(items)
        # print(serializer)
        result = get_portfolio_result(serializer)
        response = Response(result, status=status.HTTP_200_OK)

        return get_response_cors(response)
Exemplo n.º 12
0
def new_transaction(request):
    '''used by front end app to send both BUY and SELL orders'''
    if request.method == 'POST':
        try:
            order = json.loads(request.body)
        except ValueError:
            order = request.POST
        portfolio = Portfolio.initialize_session(request.session)
        order = portfolio.process_order(order, True if order['type'] == 'sell' else False) 
        return HttpResponse(json.dumps(dict(success=order,
                                        cash_balance=portfolio.cash_balance, 
                                        id=portfolio.pk, 
                                        purchases=[dict(ticker=p.ticker, units=p.units, purchase_price=p.purchase_price, id=p.pk) for p in portfolio.stockpurchase_set.all()])))
    else:
        return HttpResponse('Sorry post only')
Exemplo n.º 13
0
    def get(self, request, *args, **kw):
        # Process any get params that you may need
        # If you don't need to process get params,
        # you can skip this part
        items = Portfolio.objects().order_by('date')
        # portfolio_col = db.portfolio.find()
        # df = pd.DataFrame(list(portfolio_col))
        # print(df)
        serializer = PortfolioListSerializer({'items': items})
        # print(items)
        # print(serializer)
        result = get_portfolio_result(serializer)
        response = Response(result, status=status.HTTP_200_OK)

        return get_response_cors(response)
Exemplo n.º 14
0
def snapshot():
    stocks = polling()
    print(stocks)
    stock_list = []
    for stock in stocks:
        stock_list.append({
            'code': stock['code'],
            'name': stock['name'],
            'amount': stock['amount'],
            'current': stock['current'],
            'percentage': stock['percentage'],
            'change': stock['change'] or 0
        })

    from portfolio.models import Portfolio
    from datetime import date
    date = get_date(str(date.today()))
    print('date***{}'.format(date))
    p = Portfolio(list=stock_list)
    p.compute()
    Portfolio.objects(date=date).update_one(
        list=p.list,
        market_value=p.market_value,
        total=p.total,
        net_asset=p.net_asset,
        cost=p.cost,
        cost_history=p.cost_history,
        cost_zs=p.cost_zs,
        cost_ht1=p.cost_ht1,
        cost_ht2=p.cost_ht2,
        cost_ht1_real=p.cost_ht1_real,
        cost_ht2_real=p.cost_ht2_real,
        position_ratio=p.position_ratio,
        financing=p.financing,
        lever=p.lever,
        cash=p.cash,
        profit=p.profit,
        profit_ratio=p.profit_ratio,
        profit_today=p.profit_today,
        profit_ratio_today=p.profit_ratio_today,
        upsert=True)
    result = Portfolio.objects.get(date=date)
    if result:
        print('result list***{}'.format(result.list))
        return result
    else:
        return None
def create_portfolios(loan_number_list):
    print('Portfolio started....')
    for loan_number in loan_number_list:
        loan_number_str = str(loan_number)
        portfolio_name = loan_number_str + ' Sample Loans'
        new_portfolio = Portfolio(name=portfolio_name)
        new_portfolio.save()

        bank_loan_id = random.randint(500000, 600000)

        loans = []
        # file_name = loan_number_str + '_sample_loans.csv'

        while len(loans) < loan_number:
            start_row = random.randint(0, 3000)

            real_world_file_number_str = str(random.randint(1, 7))
            real_world_file_name = 'real_world_data/5000_real_world_loans_' + real_world_file_number_str + '.csv'
            with open(real_world_file_name) as real_world_csv_file:
                reader = csv.DictReader(real_world_csv_file)
                for row in reader:
                    if start_row == 0 and len(loans) < loan_number:
                        bank_loan_id = next_bank_loan_id(bank_loan_id)
                        loans.append(
                            Loan(
                                portfolio=new_portfolio,
                                bank_loan_id=bank_loan_id,
                                deferred_balance=is_set(row['DEFERRED_BAL']),
                                pmi_insurance=is_set(row['PMI']),
                                first_payment_date=convert_date_string(
                                    row['First_Payment_Date']),
                                junior_lien_balance=is_set(
                                    row['Junior Lien Bal']),
                                senior_lien_balance=is_set(
                                    row['Senior Lien Bal']),
                                mortgage_type=is_set(row['Mortgagetype']),
                                gross_margin=is_set(row['Gross_Margin']),
                                original_amount=is_set(row['Original_Amount']),
                                current_value_date=convert_date_string(
                                    row['Current_Value_Date']),
                                us_state=is_set(row['STATE']),
                                BK_flag=is_set(row['BK_FLAG']),
                                negam_initial_minimum_payment_period=is_set(
                                    row['Negam_Initial_Minimum_Payment_Period']
                                ),
                                product_type=is_set(row['Product_Type']),
                                remaining_term=is_set(row['Remaining_Term']),
                                first_recast_or_next_recast=is_set(
                                    row['First_Recast/Next_Recast']),
                                amortized_term=is_set(row['Amor_Term']),
                                recast_cap=is_set(row['Recast_Cap']),
                                occupancy_code=is_set(row['Occupancy']),
                                modification_date=convert_date_string(
                                    row['Modification_Date']),
                                negam_payment_reset_frequency=is_set(
                                    row['Negam_Payment_Reset_Frequency']),
                                IO_term=is_set(row['IO_Term']),
                                senior_lien_balance_date=convert_date_string(
                                    row['Senior Lien Bal Date']),
                                icap=is_set(row['ICAP']),
                                current_interest_rate=is_set(
                                    row['Current_Interest_Rate']),
                                SF=is_set(row['SF']),
                                fico=is_set(row['FICO']),
                                pcap=is_set(row['PCAP']),
                                interest_reset_interval=is_set(
                                    row['Interest_Reset_Interval']),
                                recast_frequency=is_set(
                                    row['Recast_Frequency']),
                                original_term=is_set(row['Original_Term']),
                                as_of_date=convert_date_string(
                                    row['AS_OF_DATE']),
                                lcap=is_set(row['LCAP']),
                                status=is_set(row['STATUS']),
                                MSR=is_set(row['MSR']),
                                original_appraisal_amount=is_set(
                                    row['Original_Appraisal_Amount']),
                                lfloor=is_set(row['LFLOOR']),
                                purpose=is_set(row['Purpose']),
                                reset_index=is_set(row['Reset_Index']),
                                zipcode=is_set(row['ZIP']),
                                property_type_code=is_set(row['Property']),
                                lien_position=is_set(row['Lien_Position']),
                                current_FICO_score=is_set(
                                    row['Current_FICO_Score']),
                                current_property_value=is_set(
                                    row['Current_Property_Value']),
                                foreclosure_referral_date=convert_date_string(
                                    row['Foreclosure_Referral_Date']),
                                current_principal_balance=is_set(
                                    row['Current_Principal_Balance']),
                                last_payment_received=convert_date_string(
                                    row['LAST_PMT_RECD']),
                                original_rate=is_set(row['ORATE']),
                                original_date=convert_date_string(
                                    row['Origination_Date']),
                                city=is_set(row['CITY']),
                                second_lien_piggyback_flag=is_set(
                                    row['2nd Lien Piggyback Flag']),
                                junior_lien_balance_date=convert_date_string(
                                    row['Junior Lien Bal Date']),
                                first_index_rate_adjustment_date=
                                convert_date_string(
                                    row['First_Interest_Rate_Adjustment_Date']
                                )))
                    else:
                        start_row -= 1

        Loan.objects.bulk_create(loans)

        saved_loans = Loan.objects.filter(portfolio=new_portfolio).values()
        portfolio_loans_calculations = calculate_aggregate_portfolio_data(
            saved_loans)

        new_portfolio.total_loan_balance = portfolio_loans_calculations[
            'total_loan_balance']
        new_portfolio.total_loan_count = portfolio_loans_calculations[
            'total_loan_count']
        new_portfolio.average_loan_balance = portfolio_loans_calculations[
            'avg_loan_balance']
        new_portfolio.weighted_average_coupon = portfolio_loans_calculations[
            'weighted_avg_coupon']
        new_portfolio.weighted_average_life_to_maturity = portfolio_loans_calculations[
            'weighted_avg_life_to_maturity']

        # Loan status summary data
        loan_status_summary = loans_status_summary(saved_loans)
        new_portfolio.current_balance = loan_status_summary["CURRENT"][
            "balance"]
        new_portfolio.current_count = loan_status_summary["CURRENT"]["count"]
        new_portfolio.dpd90_balance = loan_status_summary["90 DPD"]["balance"]
        new_portfolio.dpd90_count = loan_status_summary["90 DPD"]["count"]
        new_portfolio.fc_balance = loan_status_summary["FC"]["balance"]
        new_portfolio.fc_count = loan_status_summary["FC"]["count"]
        new_portfolio.dpd60_balance = loan_status_summary["60 DPD"]["balance"]
        new_portfolio.dpd60_count = loan_status_summary["60 DPD"]["count"]
        new_portfolio.reo_balance = loan_status_summary["REO"]["balance"]
        new_portfolio.reo_count = loan_status_summary["REO"]["count"]
        new_portfolio.reperf_balance = loan_status_summary["REPERF"]["balance"]
        new_portfolio.reperf_count = loan_status_summary["REPERF"]["count"]
        new_portfolio.dpd30_balance = loan_status_summary["30 DPD"]["balance"]
        new_portfolio.dpd30_count = loan_status_summary["30 DPD"]["count"]
        new_portfolio.rem_balance = loan_status_summary["REM"]["balance"]
        new_portfolio.rem_count = loan_status_summary["REM"]["count"]
        new_portfolio.claim_balance = loan_status_summary["CLAIM"]["balance"]
        new_portfolio.claim_count = loan_status_summary["CLAIM"]["count"]

        # FICO summary data
        fico_results = fico_summary(saved_loans)
        new_portfolio.max_fico = fico_results["max_fico"]
        new_portfolio.min_fico = fico_results["min_fico"]
        new_portfolio.weighted_average_fico = fico_results["wa_fico"]
        print('Portfolio created...')
        new_portfolio.save()
def create_portfolios(loan_number_list):
    print('Portfolio started....')
    for loan_number in loan_number_list:
        loan_number_str = str(loan_number)
        portfolio_name = loan_number_str + ' Sample Loans'
        new_portfolio = Portfolio(
            name=portfolio_name
        )
        new_portfolio.save()

        bank_loan_id = random.randint(500000, 600000)

        loans = []
        # file_name = loan_number_str + '_sample_loans.csv'

        while len(loans) < loan_number:
            start_row = random.randint(0, 3000)

            real_world_file_number_str = str(random.randint(1, 7))
            real_world_file_name = 'real_world_data/5000_real_world_loans_' + real_world_file_number_str + '.csv'
            with open(real_world_file_name) as real_world_csv_file:
                reader = csv.DictReader(real_world_csv_file)
                for row in reader:
                    if start_row == 0 and len(loans) < loan_number:
                        bank_loan_id = next_bank_loan_id(bank_loan_id)
                        loans.append(Loan(
                            portfolio=new_portfolio,
                            bank_loan_id=bank_loan_id,
                            deferred_balance=is_set(row['DEFERRED_BAL']),
                            pmi_insurance=is_set(row['PMI']),
                            first_payment_date=convert_date_string(row['First_Payment_Date']),
                            junior_lien_balance=is_set(row['Junior Lien Bal']),
                            senior_lien_balance=is_set(row['Senior Lien Bal']),
                            mortgage_type=is_set(row['Mortgagetype']),
                            gross_margin=is_set(row['Gross_Margin']),
                            original_amount=is_set(row['Original_Amount']),
                            current_value_date=convert_date_string(row['Current_Value_Date']),
                            us_state=is_set(row['STATE']),
                            BK_flag=is_set(row['BK_FLAG']),
                            negam_initial_minimum_payment_period=is_set(row['Negam_Initial_Minimum_Payment_Period']),
                            product_type=is_set(row['Product_Type']),
                            remaining_term=is_set(row['Remaining_Term']),
                            first_recast_or_next_recast=is_set(row['First_Recast/Next_Recast']),
                            amortized_term=is_set(row['Amor_Term']),
                            recast_cap=is_set(row['Recast_Cap']),
                            occupancy_code=is_set(row['Occupancy']),
                            modification_date=convert_date_string(row['Modification_Date']),
                            negam_payment_reset_frequency=is_set(row['Negam_Payment_Reset_Frequency']),
                            IO_term=is_set(row['IO_Term']),
                            senior_lien_balance_date=convert_date_string(row['Senior Lien Bal Date']),
                            icap=is_set(row['ICAP']),
                            current_interest_rate=is_set(row['Current_Interest_Rate']),
                            SF=is_set(row['SF']),
                            fico=is_set(row['FICO']),
                            pcap=is_set(row['PCAP']),
                            interest_reset_interval=is_set(row['Interest_Reset_Interval']),
                            recast_frequency=is_set(row['Recast_Frequency']),
                            original_term=is_set(row['Original_Term']),
                            as_of_date=convert_date_string(row['AS_OF_DATE']),
                            lcap=is_set(row['LCAP']),
                            status=is_set(row['STATUS']),
                            MSR=is_set(row['MSR']),
                            original_appraisal_amount=is_set(row['Original_Appraisal_Amount']),
                            lfloor=is_set(row['LFLOOR']),
                            purpose=is_set(row['Purpose']),
                            reset_index=is_set(row['Reset_Index']),
                            zipcode=is_set(row['ZIP']),
                            property_type_code=is_set(row['Property']),
                            lien_position=is_set(row['Lien_Position']),
                            current_FICO_score=is_set(row['Current_FICO_Score']),
                            current_property_value=is_set(row['Current_Property_Value']),
                            foreclosure_referral_date=convert_date_string(row['Foreclosure_Referral_Date']),
                            current_principal_balance=is_set(row['Current_Principal_Balance']),
                            last_payment_received=convert_date_string(row['LAST_PMT_RECD']),
                            original_rate=is_set(row['ORATE']),
                            original_date=convert_date_string(row['Origination_Date']),
                            city=is_set(row['CITY']),
                            second_lien_piggyback_flag=is_set(row['2nd Lien Piggyback Flag']),
                            junior_lien_balance_date=convert_date_string(row['Junior Lien Bal Date']),
                            first_index_rate_adjustment_date=convert_date_string(
                                row['First_Interest_Rate_Adjustment_Date']
                            )
                        ))
                    else:
                        start_row -= 1

        Loan.objects.bulk_create(loans)

        saved_loans = Loan.objects.filter(portfolio=new_portfolio).values()
        portfolio_loans_calculations = calculate_aggregate_portfolio_data(saved_loans)

        new_portfolio.total_loan_balance = portfolio_loans_calculations['total_loan_balance']
        new_portfolio.total_loan_count = portfolio_loans_calculations['total_loan_count']
        new_portfolio.average_loan_balance = portfolio_loans_calculations['avg_loan_balance']
        new_portfolio.weighted_average_coupon = portfolio_loans_calculations['weighted_avg_coupon']
        new_portfolio.weighted_average_life_to_maturity = portfolio_loans_calculations[
            'weighted_avg_life_to_maturity']

        # Loan status summary data
        loan_status_summary = loans_status_summary(saved_loans)
        new_portfolio.current_balance = loan_status_summary["CURRENT"]["balance"]
        new_portfolio.current_count = loan_status_summary["CURRENT"]["count"]
        new_portfolio.dpd90_balance = loan_status_summary["90 DPD"]["balance"]
        new_portfolio.dpd90_count = loan_status_summary["90 DPD"]["count"]
        new_portfolio.fc_balance = loan_status_summary["FC"]["balance"]
        new_portfolio.fc_count = loan_status_summary["FC"]["count"]
        new_portfolio.dpd60_balance = loan_status_summary["60 DPD"]["balance"]
        new_portfolio.dpd60_count = loan_status_summary["60 DPD"]["count"]
        new_portfolio.reo_balance = loan_status_summary["REO"]["balance"]
        new_portfolio.reo_count = loan_status_summary["REO"]["count"]
        new_portfolio.reperf_balance = loan_status_summary["REPERF"]["balance"]
        new_portfolio.reperf_count = loan_status_summary["REPERF"]["count"]
        new_portfolio.dpd30_balance = loan_status_summary["30 DPD"]["balance"]
        new_portfolio.dpd30_count = loan_status_summary["30 DPD"]["count"]
        new_portfolio.rem_balance = loan_status_summary["REM"]["balance"]
        new_portfolio.rem_count = loan_status_summary["REM"]["count"]
        new_portfolio.claim_balance = loan_status_summary["CLAIM"]["balance"]
        new_portfolio.claim_count = loan_status_summary["CLAIM"]["count"]

        # FICO summary data
        fico_results = fico_summary(saved_loans)
        new_portfolio.max_fico = fico_results["max_fico"]
        new_portfolio.min_fico = fico_results["min_fico"]
        new_portfolio.weighted_average_fico = fico_results["wa_fico"]
        print('Portfolio created...')
        new_portfolio.save()